情報数学 I
第十一回 (2009年12月18日)
述語論理
Martin J. Dürst
http://www.sw.it.aoyama.ac.jp/2009/Math1/lecture11.html
© 2005-09 Martin
J. Dürst 青山学院大学
今日の予定
- 2 進数とビット毎演算 (前回の残り)
- 記号論理
- 述語論
ビットごと演算だけでの足し算
- 入力 a=a0 と
b=b0 から「合計」(sum)
s0 = a0 ^
b0 と「繰越」(carry) c0 =
a0 & b0 を計算
- a1 = s0 と
b1 = c0 << 1
にし、計算をc が 0 になるまで繰り返す
- 実例: a0 = 1011101、b0 =
1101111
記号論理
(symbolic logic)
- 論理のモデルを作って、記号演算だけで論理ができるようにする。
- 論理にはいくつかの種類がある。例えば:
- 二値論理 (真と偽だけ)
- 多値論理 (真と偽以外の値がある)
- ファジィ論理 (曖昧さの計算を含む)
- 命題論理 (propositional logic, 命題だけを使う)
- 述語論理 (predicate logic, 一階 (first order) 等)
- 時間など他の要素を取り入れた論理
命題の制限と述語
命題は各々の事実は別物として表わされてる
例: 今日は晴れ、明日は晴れ、明後日は晴れ、
2 が偶数、5 が偶数
「今日は晴なら明日も晴れ」とか「2が偶数なら3が偶数ではない」とは書けますが、「ある日が晴なら次の日も晴れ」とか「x
が偶数なら x+2 も偶数」とは書けません。
述語は命題と同様、客観的に真偽が分かるものが対象
命題と違って、引数をとる (命題は引数 0 の述語)
引数が決定されない場合、述語の真偽も分からない
述語の例
晴 (今日)、 晴 (明日) 、偶数 (2)、偶数 (5) 等
一般的: 晴(x)、偶数(y) 等
述語によって以前書けなかったものが書ける:
晴 (x) → 晴 (x の次の日)
偶数 (x) → 偶数 (x+2)
述語は性質とか関係を表す
述語は命題と同じように真か偽であることがあるが、命題と違って未定であることもありうる。
一個の述語が未定であってもそれを含む論理式は未定ではないこともある。
述語と関数・関数
関数の例: father (x) = y
述語の例: Father (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) が恒真