数理論理学 第12回
茨城大学工学部情報工学科
佐々木 稔
前回までのあらすじ
スコーレム標準形
配布資料は以下のURLからダウンロードできます
http://sas.cis.ibaraki.ac.jp/logic/
今週のお題
導出と推論
導出とは
反駁導出
述語論理と導出原理
単一化置換
単一化アルゴリズム
ファクタリング
導出とは
肯定式
P⇒Q
P
Q
もしくは、
~P ∨ Q
P
Q
導出
否定式1
P⇒Q
~Q
~P
もしくは、
~P ∨ Q
~Q
~P
導出
否定式2
P∨Q
~P
Q
導出
否定式3
P
Q
P
~Q
もしくは、
(P ∨ Q)∧(~P ∨ ~Q)
P
~Q
導出
三段論法
P⇒Q
Q⇒R
P⇒R
もしくは、
~P ∨ Q
~Q ∨ R
~P ∨ R
導出
三段論法
P⇒Q
R ⇒ ~Q
P ⇒ ~R
もしくは、
~P ∨ Q
~R ∨ ~Q
~P ∨ ~R
導出
推論規則の法則
ある述語の正のリテラルを含む選言式
その述語の負のリテラルを含む選言式
以上の2つの選言式から
その述語を削除した選言式を導くことができる
p∨Q
~p ∨ R
Q∨R
導出節
反駁導出
論理式 P
P = P1∧P2∧・・・∧Pm
論理式 P から、ある論理式 Q が導ける
P1∧P2∧・・・∧Pm ⇒ Q
背理法より、下の論理式が恒偽なのと同値
P1∧P2∧・・・∧Pm∧~Q
次の節形式が矛盾することでQの証明が可能
{P1, P2, ・・・, Pm , ~Q}
反駁導出による証明方法
節形式から以下の2つの節を取り出す
{ ・・・, p ∨ Q, ~p ∨ R, ・・・}
導出した新しい節を節形式に加える
{ ・・・, Q ∨ R, ・・・}
2つの節が同一述語で正負のリテラルの場合、
{ ・・・, p, ~p, ・・・}
導出により、何も残らない(空節)
{ ・・・, □, ・・・}
反駁導出による証明方法
反駁木
導出過程を木構造で表現
節集合 {A(a), ~A(y)∨B(a), ~B(x)∨C(x)}
∃xC(x) を証明
便宜上、x, y はすべて a と置き換える
以下の節集合を反駁導出により証明
{A(a), ~A(a)∨B(a), ~B(a)∨C(a), ~C(a)}
反駁導出による証明方法
A(a)
~A(a)∨B(a)
B(a)
~B(a)∨C(a)
C(a)
~C(a)
□
矛盾するため、 ∃xC(x) は成り立つ (証明終わり)
単一化置換
一般的に述語の引数は変数
2つの節に共通な正負のリテラルにならない
単一化
2つのリテラルが~記号を除いて一致させる
変数に適当な基礎項(または項)を割り当てる
単一化置換
各変数への割り当て方法
単一化置換
置換 σ
変数 vi を適当な項 ti (i=1, 2, ・・・, n)で置換
σ= [v1=t1, v2=t2, ・・・, vn=tn]
単一化置換の例
P(x, y, f(x)) と P(a, g(z), w) を単一化
単一化例
[x=a, y=g(z), w=f(a)]
y=g(z) に変数 z が残る
後で必要なときに基礎項に置き換えてよい
最汎単一化置換(最大単一化置換)
単一化置換
不一致集合
リテラル間の不一致部分の抽出した集合
一致する置換をすべての項で求める
最汎単一化が可能
不一致集合の例
P(a, f(g(x)), x) と P(a, f(y), g(z))
文字列 “P(a, f(” まで同じ文字列
その次の文字を含む項が不一致集合
[g(x)=y]
次の不一致部分
[x=g(z)]
よって、最汎単一化置換は
[g(g(z))=y, x=g(z)]
単一化アルゴリズム
1.
2.
L={P1, P2} を単一化する置換σを求める
アルゴリズム
同じ記号の変数を区別するように付け替える
L の不一致集合 D を求めて、
1. D が空集合の場合、それまでのσが最汎単一化
2. D に変数 vi と項 ti があり、置換可能ならば、
vi = ti をσに追加
3. 一致可能な置換がなければ、単一化できない
3. L に置換を行って、2. に戻る
単一化の例
L={P(x, f(x), y), P(a, y, g(x))}
変数名の付け替え
L={P(x1, f(x1), y1), P(a, y2, g(x2))}
不一致集合 D を求める
D = {x1, a}
x1=a をσに追加
σ = [ x1=a ]
L を置換
L={P(a, f(a), y1), P(a, y2, g(x2))}
単一化の例
L={P(a, f(a), y1), P(a, y2, g(x2))}
不一致集合 D を求める
D = {f(a), y2}
y2=f(a) をσに追加
σ = [ x1=a, y2=f(a) ]
L を置換
L={P(a, f(a), y1), P(a, f(a), g(x2))}
単一化の例
L={P(a, f(a), y1), P(a, f(a), g(x2))}
不一致集合 D を求める
D = {y1, g(x2)}
y1=g(x2) をσに追加
σ = [ x1=a, y2=f(a), y1=g(x2) ]
L を置換
L={P(a, f(a), g(x2)), P(a, f(a), g(x2))}
単一化終了
ファクタリング
ひとつの節に同じ述語が存在
{S(x)∨S(y), ~S(u)∨~S(v)}
まとめることが可能(ファクタリング)
[ x = y, u = v ] でファクタリング
{S(x) ~S(u)}
ファクタリングはあらかじめ行う
空節が導出できない場合がある
© Copyright 2026 ExpyDoc