情報数学 I
第十二回: 述語論理
Martin J. Dürst
duerst@it.aoyama.ac.jp
O 棟 529号室
http://www.sw.it.aoyama.ac.jp/2007/Math1/lecture12.html
© 2005-2008 Martin J. Dürst 青山学院大学
今日の予定
- これからの予定
- 先回の復習
- 述語論理
- 全称限量子、存在限量子
- 証明の方法
これからの予定
- 1月18日 (金): 最後の授業
- 1月25日 (金)、11:10-12:35: 期末試験
- 過去の試験の例: 2006年度
(一部図など欠落)
先回の復習
- 基数変換
- ビット毎演算
- 記号論理の種類: 命題論理、述語論理など
- 述語は命題と違って、引数を取る
- 述語では命題より一般的な記述、推論が可能
述語の例
晴 (今日)、 晴 (明日) 、偶数 (2)、偶数 (5) 等
述語によって以前書けなかったものが書けるようになる:
晴 (x) → 晴 (x の次の日)
偶数 (x) → 偶数 (x+2)
述語は性質とか関係を表す
述語は命題と同じように真か偽であることもあるが、命題と違って未定であることもありうる。
一個の述語が未定であってもそれを含む論理式は未定ではないこともある。
述語と関数・関係
関数の例: father (x) = y
述語の例: father (y, x) (y は
x の父)
関係と述語は非常に近い概念で、内容より分野の違いが強い
一項述語はあるが、一項関係はない
一階述語論理
first order predicate logic
- 述語の値には変数、関数、式などが使える
- しかし、述語の中に述語が使えない
反例: says(z, father (y, x))
(z は「y が x
の父である」と言う)
- 高階述語論理は一階述語と違って、述語の中に述語を許す
(全称記号、universal quantifier)
ある論理式がある変数の対象とする全ての値 (個体)
に対して記述したいときに使う。
記号の由来: "for All" の A を逆さまにした
例: ∀x: P (x); ∀n∈ℕ: even
(n) → even(n+2)
読み方:
- For all x, P(x)
- 全ての x において、P(x)
- 任意の x において、P(x)
存在限量子
(存在記号、existential quantifier)
ある論理式がある変数の少なくとも一つの値 (個体)
について記述したいときに使う。
記号の由来: "there Exists" の E
を逆さまにした
例: ∃y: P (y); ∃y∈ℕ: odd
(y)
読み方:
- There exists a y so that P(y)
- P(y) が成立する y が存在する
- ある y について P(y)
応用例
father(x, y) が「x が y
の父である」と同じように、mother, parent, grandparent,
grandfather, grandmother
等の述語を使って、次のことを記述してください:
- 誰にも親がいる: ∀x: ∃y:
parent(y, x)
- 全ての人間において、誰かの父であるならその人の親である:
∀x: (father(x, y) →
parent(x, y))
- 全ての人間において、同じ人は父と母ではありえない:
∀x: ∀y: (¬father(x, y)
∨ ¬mother(x, y))
- 父の母は祖母である: ∀x: ∀y:
∀z: (mother(x, y) ∧
father(y, z) →grandmother(x,
z))
変数の使い方
- 束縛変数 (bound variable):
- 量記号を伴っている変数
例: ∀x: (P(x) ∧ Q(y)) の
x
- 自由変数 (free variable):
- 量記号を伴っていない変数
例: ∀x: (P(x) ∧ Q(y)) の
y
- 閉論理式 (closed formula):
- 自由変数を含まない論理式
- 作用領域 (スコープ、scope)
- 束縛変数 (やその量記号) の影響範囲
束縛変数はスコープ内に書き換えてもよい
束縛変数はスコープ外に現れると間違い
量記号の組み合わせ
素数の数が無限である:
∀x: ∃y: (y > x ∧
素数 (y))
順番を入れ替えると意味が変わる:
∃y: ∀x: (y > x ∧
素数 (y))
述語論理式と量記号の性質
- ¬∀x: P(x) = ∃x: ¬P
(x)
- ¬∃x: P(x) = ∀x: ¬P
(x)
- ∀x: P(x) → ∃x: P
(x)
- (∀x: P(x)) ∧ Q(y) =
∀x: (P(x) ∧ Q(y))
- (∃x: P(x)) ∧ Q(y) =
∃x: (P(x) ∧ Q(y))
- (∀x: P(x)) ∨ Q(y) =
∀x: (P(x) ∨ Q(y))
- (∃x: P(x)) ∨ Q(y) =
∃x: (P(x) ∨ Q(y))
- ∀x: P(x) ∧ ∀x: R(x) =
∀x: (P(x) ∧ R(x))
- ∀x: P(x) ∨ ∀x: R(x) →
∀x: (P(x) ∨ R(x))
- ∃x: P(x) ∨ ∃x: R(x) =
∃x: (P(x) ∨ R(x))
- ∃x: P(x) ∧ ∃x: R(x) ←
∃x: (P(x) ∧ R(x))
- P(x) が恒真 ↔∀x: P(x) が恒真
証明の大切さ
- 数学の中心的道具
- 情報テクノロジー
- データ構造の性質の証明
- アルゴリズムの正しさや性質の証明
- プログラムの正しさや性質の証明
- プログラムの変換の正しさの証明
どこまで証明すればよいか
証明の方法
- 演繹的証明 (deductive proof, proof by deduction)
- 帰納的証明 (inductive proof, proof by induction)
- 背理法 (proof by contradiction)
- 反例による証明 (proof by counterexample)
- 集合についての証明 (proof about sets)
- 列挙による「証明」(proof by enumeration)