論理と計算(2)

情報科学概論
ー論理とソフトウェアー
亀山 幸義
[email protected]
2002.04.19
今日のキーワード
ソフトウェア科学
 信頼性
 論理パズル
 形式化
 システム検証

情報システム
社会の多種多様な場面で(しばしば、無意識
のうちに)使われている; 現代社会にとって
不可欠
 単なる技術から、法律・経済・文化や社会風
俗にいたるまで影響を受ける
 情報システムの中心はソフトウェア

ソフトウェア科学


ソフトウェアそのものを対象とする学問;情報科学の
中心的話題
ソフトウェアの目指す方向性




高機能、高性能であること
使いやすいこと
安定していること、高い信頼性をもつこと
現在のソフトウェア・社会システムの弱点:信頼性



みずほ銀行
スペースシャトル:打ち上げ直前に延期
Y2K問題
(情報)システムの信頼性
システムが常に「意図した通りの動作」をする
こと
仕様 (Specification)
 システム検証:システム(の記述:プログラム)
が仕様を満たしていることを証明する
 システム検証に必要なもの

仕様の記述言語
形式的な記述が必要!
 システムの記述言語
 推論のための論理体系 (+自動推論のための
ソフトウェア etc.)

参考:システムの信頼性向上の技法


完全な検証ではなく、信頼性をある程度向上
させる技術;100%の正しさではなく、許され
るコストの範囲内で信頼性を高める技術
例:仕様を形式的に記述する(検証はしない)

早い段階でバグをとることができる(工学的に有
効)
形式化ということ
天国への扉、地獄への扉
天国、地獄(続き)

扉の先の道は以下のいずれか


天国への扉の前には天使がいる


天使はいつでも本当のことを言う
地獄への扉の前には悪魔がいる


天国へ通じる扉、地獄へ通じる扉
悪魔はいつでも嘘をつく
質問は YES/NO で回答できるもの1つ⇒ど
のような質問をすべきか?
天国と地獄の答

絶対正しいことを質問すればよい。

これは扉ですか?
天使なら YES と答える ⇒天国への扉
 悪魔なら NO と答える ⇒地獄への扉

天国への扉、地獄への扉ー2
天国、地獄-2(続き)
扉の先の道は、天国か地獄か
 中央に1人だけいる
 その人は天使か悪魔のいずれか
 質問は YES/NO で回答できるもの1つ⇒ど
のような質問をすべきか?

定義可能な自然数

日本語(数字、四則演算、空白を含む)で一
意的に定義できる自然数
100+300*2
 9999999999
 富士山の高さ(メートル単位)
 1モル(の数)
 xxの瞬間に宇宙にある分子数

定義可能な自然数(続き)

最大のものは?


いくらでも大きな自然数を定義可能
n文字で定義可能な最大の自然数は?
有限個(高々、数千、数万)の文字を、n文字並べ
てできる文字列は、有限個
 そのうち自然数を定義しているものは有限個
 最大が存在するはず

定義可能な自然数(続き)

n文字で定義可能な自
然数のうち、最大のも
のが存在する
定義可能な自然数(続き)
「26文字以内で定義可能な最大の
自然数」をNとする
「26文字以内で定義可能な最大の
自然数に1を足したもの」をMとする
⇒ M=N+1 かつ N≧M
レポート出題 のパズル

先生は、以下のいずれか1つの日に出題
する



5月1日、2日、3日、4日、5日
学生には事前に出題日はわからない
上記の条件を満たすとき、先生はいつ出
題するだろうか?
レポート出題(続き)

5日に出題できるはずがない


4日に出題できるはずがない



4日までに出題されなければ、5日に出題することがわかってし
まう
3日までに出題されなければ、上の推論により5日にも出題で
きないので、4日に出題されることがわかってしまう
これを続けたら、どの日にも出題できるはずがない
と思って安心していたら突然(たとえば5月4日に)出題
されてしまった。先生は嘘をついていない。どこがおかし
かったのか?
形式化(記号化)ー天国と地獄
LEFT 左の扉が、天国への扉
 RIGHT 右の扉が、天国への扉

LEFT ∨ RIGHT
 ~(LEFT Λ RIGHT)


〇A


質問Aにその人が YES と答える
「任意のAに対して A ⇔ 〇A」かまたは
「任意のAに対して A ⇔ ~〇A」のいずれか
一方のみ成立
問題: LEFT ⇔ 〇B となるBは?
形式化(記号化)ー天国と地獄

Bとして○LEFTをとればよい


「任意のAに対して A ⇔ 〇A」の場合でも、
「任意のAに対して A ⇔ ~〇A」の場合でも、
○B⇔LEFT が成立する
Bとして○LEFTをとるということは

「あなたは、この扉は天国への道ですか、と聞か
れたらYESと答えますか?」と質問する、というこ
と
形式化(記号化)ー天国と地獄

記号化は問題を解くのに不可欠か?


NO
記号化は問題を解くのに役に立ったか?
YES
 問題の条件を整理することができた
 解ける問題かどうかが客観的に判定できるように
なった

形式化ということ
厳密な定義
 記号列の上の機械的な操作を仮定して、
種々の概念の定義を与える。

誰が見ても正しい推論(あるいは計算規則)を
与える
⇒正しいかどうか計算機がチェックできる!

例 数
0は数である
 Nが数ならば、s(N)は数である
 M,Nが数ならば、(M+N)は数である
 M,Nが数ならば、(M*N)は数である

帰納的な定義の例
例 数の形式的体系
推論に関する規則
 等号に関する規則(N=Nなど)
 ~(0=s(N))
 s(N)=s(M) ⊃ N=M
 数学的帰納法
 足し算や掛け算に関する公理

M+0=M
 M+s(N)=s(M+N)

レポート出題のパズル

自分で考えてみてください
システム検証の技法

自動的な方法
モデル検査
 抽象実行


半自動的な方法(対話的な方法;人間が介在
する方法)

演繹による定理証明
具体例

モデル検査の技法によるシステム検証の具
体的な例(web page 版資料では具体例は削
除します)
おわりに
ソフトウェア作成(プログラミング)に論理的思
考は不可欠
 ソフトウェア検証に形式論理は(不可欠とは限
らないが)非常に有用
