情報科学概論 ー論理とソフトウェアー 亀山 幸義 [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 版資料では具体例は削 除します) おわりに ソフトウェア作成(プログラミング)に論理的思 考は不可欠 ソフトウェア検証に形式論理は(不可欠とは限 らないが)非常に有用
© Copyright 2024 ExpyDoc