36
SS専攻 経営情報システム学講座 客員 石川 冬樹 [email protected] 経営情報システム学特論2 2.数理論理学の活用

経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

SS専攻経営情報システム学講座客員石川冬樹

[email protected]

経営情報システム学特論22.数理論理学の活用

Page 2: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

イントロダクション数理論理学とプログラム検証形式仕様記述テスト手法事例・動向紹介

2f-ishikawa @ MI特論2

講義計画

Page 3: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

数理論理学の基礎を概観(復習?)し,仕様記述やプログラム検証における役割を議論する命題論理一階述語論理集合論証明・帰納法

3f-ishikawa @ MI特論2

今日の内容

Page 4: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

数理論理学をどう使うのか命題論理一階述語論理集合論証明・帰納法

4f-ishikawa @ MI特論2

目次

Page 5: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

真か偽かという議論の対象になる「命題」を記述すること複数の命題を部品としてより大きな命題を記述することある対象範囲に対する命題の普遍性を記述すること

「満たすか,満たさないか」という条件を,厳密に記述するための考え方・技術要求・仕様(真となることが保証されるべき命題)要求・仕様や設計,プログラムの記述における,仮定や分岐条件など(真偽が結果に影響を与えるような命題)

5f-ishikawa @ MI特論2

数理論理学をどう使うのか(1)

Page 6: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

要素(データ)の集まりや関連を記述すること要素の集まりやそれらの様々な組み合わせなどを記述すること要素間の関連や,その多重度,関連同士の様々な組み合わせなどを記述すること

システムの様々な構成要素について,詳細を捨象して表現し,論じるための考え方・技術要求・仕様や設計,プログラムの記述における,データ構造や機能部品(関数・メソッド)など

6f-ishikawa @ MI特論2

数理論理学をどう使うのか(2)

Page 7: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

命題の真偽判定を正確に行うこと特定の規則や与えられた知識のみを用いて,命題の真偽を判定し,理由を説明すること不特定の回数の繰り返しを含むような構造においても,一般論を論じること

正確な方法で,一般論としての真偽を,理屈を通して論じるための考え方・技術プログラムが仕様を満たすことの保証など

7f-ishikawa @ MI特論2

数理論理学をどう使うのか(3)

Page 8: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

詳細を捨てての表現・議論なので,要求・仕様や,設計を論じるのに向いているプログラムから「重要な情報」だけ抜き出して,論じることもできる

テストとは異なり,一般的な結論を導くような検証手段(証明)の構成要素となるこれは最も基礎的な「プリミティブ」であり,システム・プログラムを論じるための枠組みとしたものが,形式手法などの技術

8f-ishikawa @ MI特論2

論理・集合の基礎理論

Page 9: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

数理論理学をどう使うのか命題論理一階述語論理集合論証明・帰納法

9f-ishikawa @ MI特論2

目次

Page 10: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

命題:真偽が一意に判定できる記述真(true,T,T)・偽(false,F,⊥)例9は3の倍数である(真)15は4で割り切れる(偽)4で割り切れる自然数はすべて2でも割り切れる(真)メソッドm1を実行して得られる戻り値は,その引数aを2倍にした値である(m1の記述が与えられれば真偽が判定できる)

10f-ishikawa @ MI特論2

命題

システムの満たすべき性質等を,明確に定義し,その真偽を判定(真となるのか検査)したい

Page 11: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

既存の命題から新しい命題を作る『「9は3の倍数である」かつ「12は3の倍数である」』(両方とも成り立つか?→ 真)『「6は3の倍数である」または「8は3の倍数である」』(少なくとも片方成り立つか?→ 真)『「7は3の倍数である」は成り立たない』(真)『「xが4の倍数である」ならば「xは偶数である」』(前者が真のとき必ず後者が真となるか→ 真)注:『「7が4の倍数である」ならば「7は偶数である」』(これは真)(前者が真なのに後者が偽となってしまう可能性があるときだけ「ならば」が偽となる,という決まりになっている)

11f-ishikawa @ MI特論2

複合命題

Page 12: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

12f-ishikawa @ MI特論2

命題論理の記号

演算 名称 読み方 真となる条件

¬A 否定 Aでない Aが偽

A∧B 論理積 AかつB AとBがともに真

A∨B 論理和 AまたはB AとBの少なくとも片方が真

A⇒B 含意 AならばB AとBがともに真であるか,Aが偽

A⇔B 同値 AとBは同値 AとBの真偽が一致

明確に一つに定まった記号を用いて,既存の命題から新たな命題を構成できる

Page 13: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

例:命題A,Bについて下記2つの命題を考える¬(A∧B) ¬A∨¬BAがTでBがTのとき,A∧BがTなので,¬(A∧B)は⊥¬Aが⊥,¬Bが⊥なので,¬A∨¬Bは⊥

AがTでBが⊥のとき(中略)ともにTAが⊥でBがTのとき(中略)ともにTAが⊥でBが⊥のとき(中略)ともにT

よってA,Bがどんな命題でも2つの命題の真偽は一致¬(A∧B)≡ ¬A∨¬B と書く

13f-ishikawa @ MI特論2

論理演算の法則

Page 14: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

A∧B≡ B∧A A∨B≡ B∨A 交換法則A∨(A∧B)≡ AA∧(A∨B)≡ A 吸収法則A∧(B∧C)≡ (A∧B)∧CA∨(B∨C)≡ (A∨B)∨C 結合法則A∨(B∧C)≡ (A∨B)∧(A∨C)A∧(B∨C)≡ (A∧B)∨(A∧C)分配法則¬(A∧B)≡ ¬A∨¬B¬(A∨B)≡ ¬A∧¬B ド・モルガンの法則

14f-ishikawa @ MI特論2

論理演算の法則(の一部)

見た目が違う命題の意味(真偽)が同じと判定したり意味を保って命題の形を変えたりしたい

Page 15: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

A⇒B≡ ¬A∨B(「ならば」の意味)

A⇒B≡ ¬B⇒¬A

なお用語としてはA⇒B の逆は B⇒AA⇒B の裏は ¬A⇒¬BA⇒B の対偶は ¬B⇒¬A(元の命題とその対偶の真偽は一致するが,基の命題とその逆や裏の真偽は一致するとは限らない)

15f-ishikawa @ MI特論2

論理演算の法則(の一部)

Page 16: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

例:あるシステムのフラグf1,f2に関する性質どんな状況でメソッドm1を実行しても,その実行が完了した時点で f1=1⇒ f2=0 が成り立つ(常にこれが真であることを,理屈上説明(証明)したり,個々のテストケースで確認したりする)例:以下も同じ意味であることがすぐわかるどんな状況でメソッドm1を実行しても,その実行が完了した時点で ¬(f1=1)∨(f2=0) が成り立つ例:m1の実行完了時点で f1=1 ではないときについては何も言及していないことがすぐわかるf1=1 にする処理が抜けていてもこの性質は真

16f-ishikawa @ MI特論2

補足:実際の分析にて

Page 17: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

数理論理学をどう使うのか命題論理一階述語論理集合論証明・帰納法

17f-ishikawa @ MI特論2

目次

Page 18: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

述語:変数に関する性質の記述xは3の倍数であるyを2倍した値はxと等しい

変数の値を1つに決めれば真偽が定まる7は3の倍数である(偽)

複数の変数値に関する性質も考えられる集合{2, 4, 6}に含まれるxについて,x+5 > 10 となるようなxが2つ以上存在する(偽)自然数xがどの値でも2xは偶数である(真)

18f-ishikawa @ MI特論2

述語

状況によって変わるような様々な値について,一般論としての分析を行いたい

Page 19: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

一階述語論理:複数の変数値に関する性質として,下記のような命題を構成することができる「どの値でも述語を満たす」全称記号(∀)「述語を満たす値が少なくとも一つ存在する」存在記号(∃)

(合わせて量化記号という)

19f-ishikawa @ MI特論2

一階述語論理

これら(の組み合わせ)があれば多くの場合を扱うことができる

Page 20: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

xが整数のとき∀x (xが9の倍数⇒ xが3の倍数) 真∀x (xが3の倍数⇒ xが9の倍数) 偽成り立たないxの値の例(反例) x = 3

x,yが1以上6以下の整数のとき∃x x + 5 > 10 真∀x∀y ( x + y ≦ 11) 偽反例 x = 6,y = 6

∀x∃y ( x + y = 7) 真(どのxについても,少なくとも1つは x+y=7 となるようなyの値が存在する)

20f-ishikawa @ MI特論2

一階述語論理

Page 21: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

例:イベントの座席予約システムが保持しているデータについてあるイベントの同一座席に複数のユーザを割り当ててしまっていることはない

∀ 予約伝票DBに含まれる予約エントリr1∀ 予約伝票集合に含まれる予約エントリr2(r1.event = r2.event ∧ r1.user != r2.user)⇒ r1.seat != r2.seat

(同じイベントに対する違うユーザの予約は,必ず違う座席に割り当てられている)

21f-ishikawa @ MI特論2

補足:実際の分析にて

Page 22: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

数理論理学をどう使うのか命題論理一階述語論理集合論証明・帰納法

22f-ishikawa @ MI特論2

目次

Page 23: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

集合:区別可能な「もの」(元)を集めたもの集合の外延型定義:要素を列挙して定義{1, 2, 3}{“Tokyo”, “Osaka”}{} (空集合)

23f-ishikawa @ MI特論2

集合

複数のデータの性質について議論したい(そのための統一された基盤が欲しい)

Page 24: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

その他基本集合Sに元aが含まれることを a ∈ S と書く集合の相等:含む元が一致(順序や個数は無視){1, 2, 3} = {2, 3, 1, 2, 2}せっかくなので論理式で:

集合A,Bについて,A = B ⇔ ∀x ( (x∈A ⇒ x∈B)∧(x∈B ⇒ x∈A) )

24f-ishikawa @ MI特論2

集合

Page 25: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

集合の内包型定義:要素が満たす条件(述語)を定めて定義{ f(x) | P(x) }述語P(x)を満たすxの値を用いて式f(x)の値を定めたものを元とする集合

例{ x | xは整数∧ x > 0 ∧ x < 10 ∧ xは3の倍数 }( = {3, 6, 9} ){ x + 10 | x∈{1, 2, 3, 4, 5, 6} ∧ xは3の倍数 }( = {13, 16} ){ x + y | x∈{1, 2, 3} ∧ y∈{1, 2, 3} }( = {2, 3, 4, 5, 6} )

25f-ishikawa @ MI特論2

集合

Page 26: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

せっかくなので論理式での定義(例)A ー B = { x | x∈A ∧ ¬( x∈B ) }

26f-ishikawa @ MI特論2

集合に関する演算(一部)

記号 意味 例A∪ B AとBの和集合 {1,2,3} ∪ {2,4} = {1,2,3,4}A ∩ B AとBの共通部分(積集合) {1,2,3} ∩ {2,4} = {2}A ー B AとBの差集合

(Bの要素をAから除いたもの){1,2,3} ー {2,4} = {1,3}

AC Aの補集合(今対象として考えている全ての元を含む全体集合UからAの要素を除いたもの)

U={1,2,3,4,5,6}とすると,{1,2,4}C = {3,5,6}

A ⊆ B AがBの部分集合(等しくてもよい) {2,3} ⊆ {1,2,3} は真A ⊂ B AがBの真部分集合(等しくはない) {2,3} ⊂ {2,3} は偽

Page 27: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

A∩B≡ B∩A A∪B≡ B∪A 交換法則A∪(A∩B)≡ AA∩(A∪B)≡ A 吸収法則A∩(B∩C)≡ (A∩B)∩CA∪(B∪C)≡ (A∪B)∪C 結合法則A∪(B∩C)≡ (A∪B)∩(A∪C)A∩(B∪C)≡ (A∩B)∪(A∩C)分配法則(A∩B)C≡ AC∪¬BC (A∪B)C≡ AC∩¬BC ド・モルガンの法則

(命題論理のものと同じ形!)

27f-ishikawa @ MI特論2

集合演算の法則(の一部)

Page 28: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

一階述語論理において変数の取り得る値先ほどは「x,yが1以上6以下の整数のとき」など日本語で書いていた

これを集合で明記することが多い∃x ∈ {1,2,3,4,5,6} x > 5∀x ∈ {1,2,3,4,5,6}∃ y ∈ {1,2,3,4,5,6}x + y = 7

28f-ishikawa @ MI特論2

一階述語論理と集合

計算機システムの話では通常,このように有限個数の集合の性質を考える

Page 29: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

関数(写像ともいう):Aのある値に対応するBの値があるならば,それはちょうど1つ(一意)そのうち,単射かどうか:Bのある値に対応するAの値があるならば,それはちょうど1つ(一意)かどうか全域か部分か:Aのすべての値に対し,対応するBの値があるかどうか全射かどうか:Bのすべての値に対し,対応するAの値があるかどうか

部分関数,全域単射,全域全単射など

29f-ishikawa @ MI特論2

関係

Page 30: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

30f-ishikawa @ MI特論2

補足:集合・関係による構造表現

x : INT

x : POWER(INT)

x ∈

x ∈

1-3

2

0

141…

{0, 1}{ }

{1, -1, 2}

{-13, -4}…

(べき集合power set)

Page 31: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

例:会員IDから,会員種別(ゴールドメンバーなど)への対応づけ全域関数青点から出る矢印は高々1つ(関数)紫点1つに入る矢印は複数ありうる(単射でない)すべての青点から矢印が出る(全域)すべての紫点に矢印が入るとは限らない(全射でない)

31f-ishikawa @ MI特論2

補足:集合・関係による構造表現

Page 32: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

数理論理学をどう使うのか命題論理一階述語論理集合論証明・帰納法

32f-ishikawa @ MI特論2

目次

Page 33: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

命題の真偽に関する既知の知識を基に,ある命題が成り立つ(成り立たない)ことを示す定義として正しいとされる公理すでに証明された定理問題設定において導入された仮定

仕様や設計,プログラムの正しさの厳密な検証に活用することもできる

※ 命題論理,一階述語論理に関する注意深い公理系の定義は本講義では省略している

33f-ishikawa @ MI特論2

証明

Page 34: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

自然数や,不特定回数の繰り返し構造などに対し,一般論を論じる方法例:数学的帰納法P(0)が成り立つあるkに対しP(k)が成り立つならばP(k+1)も成り立つ⇔ P(n) は自然数 n≧0 に対して成り立つプログラム検証にも様々な活用Whileループリスト構造任意回数の操作呼び出し再帰呼び出し

34f-ishikawa @ MI特論2

帰納法

Page 35: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

次の式の真偽を述べよ∀ x ∈ {1,2,3} x + 3 < 6∃ x ∈ {1,2,3} x + 3 < 6∀ x ∈ {1,2,3} ∀ y ∈ {4,5,6} x + y < 10∀ x ∈ {{1,2,3}, {4,5,6}, {7,8}}∃ y ∈ x y mod 3 = 1

次の集合を,要素を列挙する形で書き出せ{ x | x ∈ {1, ..., 6} ∧ x × x > 20}{ x + y | x ∈ {1, 2, 3, 4} ∧ y ∈ {1, 2, 3, 4}

∧ xは偶数∧ yは奇数}

35f-ishikawa @ MI特論2

課題

Page 36: 経営情報システム学特論2 2.数理論理学の活用research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2-02-mathlogic.pdf数理論理学の基礎を概観(復習?)し,仕様記

数理論理学抽象的に,正確に構造や命題を表現する道具として,ソフトウェア工学の基礎を構成する特に,仕様記述やプログラム検証においては,直接的に用いられる

次回プログラム検証の様々な考え方を逐次プログラム・並行プログラムのそれぞれについて学ぶ

36f-ishikawa @ MI特論2

まとめ