resolution(命題論理)
論理体系のシステムとして、Gentzen流やHilbert流(なぜ「流」というのかは謎)がある。J.A.Robinsonは Resolutionという推論規則を持つ論理体系を考案した。ここではそれをRobinson流と呼ぶことにする。
(Gentzen流やHilbert流については教科書やWikipediaの説明を見てください)
まず、命題論理でのResolution推論規則について説明する。述語論理のResolutionはこれの上に成り立っている。
命題論理のResolutionで対象とする論理式は次のようなものになる。
1) literal: atomicな論理式かその否定の形をしたもの。「リテラル」と書くことも。
「atomicな論理式」と言っているのは、論理記号(¬、∨、∧、⇒、⇔などを使っていない論理式)のこと。
例 Pを命題変数(記号)として +Pや-P
以下では、否定と否定でないものを区別したいので、+と-をつけている。普通はPと¬Pのようにaffirmativeな方は符号をつけないで書く。
ただし、+/-をつける表記はliteralを具体的に書くときの方法で、一般的に論理式について考えている場合、否定を¬で表し、「命題Aの否定は¬A」のように書く。混乱することはないと思う。
また、このリテラルに対して、符号(+/-)を除いた命題変数の部分は「リテラルのアトミックな部分」と呼ぶことにする。(ここは普通の教科書などと違うように思う)
2) clause: literalの集合
例 {+P, -R, +S}
これは∨で繋げられているとみなす。つまりこの例は次の論理式と同じ。
+P∨-R∨+S
集合としてのclauseの{}は略すことが多く、上の例は、
+P-R+S
とも書く。足したり引いたりしているようにも見えるが、間違うことはないだろう。
3) clause集合: clauseの集合
例{+P-R+S, -P, -R+Q}
clause集合は、∧でつなげた論理式とみなす。つまり例の集合は
(+P-R+S)∧-P∧(-R+Q)
を表す。
古典論理では、任意の論理式をそれと同値な冠頭標準形(ド・モルガン則、二重否定の除去などを使用)に変換できるが、この冠頭標準形はclause集合と1対1対応すると解釈できる。
* clauseでは+、-、∨と∧しかでてこないが、話の都合ででてくるかもしれない論理記号は、次のような記号を用いる。
A ⇒ B AならばB
A ⇔ B AはBと同値
[その他の記法]
- A ⊢ Bで、Aを仮定してBが正しいということの証明を表すことにする。
- □で矛盾を表すことにする。
- resolutionでは、clauseとしての矛盾は∅であり、0個のリテラルを持つclauseである。∅-clauseと書いてもよいかもしれないと思う。empty clauseという言い方はあるのでこの言い方も間違いではないだろう。
[Resolution]
[推論規則]
Pを命題変数、α、 βをliteralの並びとして、Resolution規則は、次のようなルールである。
+P∨α -P∨β
—-----------------
α∨β
上の二つの論理式が真なら下の式も真になることは、命題論理の場合、真偽表などで確認できる。古典論理を知っている人なら、直感的には、¬P∨QとP⇒Qが同値であることからもわかる。
resolutionを適用して得られたclause α∨βをresolventと呼ぶ。
ちなみに、clauseは集合なので、resolventが{+P, +P, -R}という形になることはなく、同じ要素は削除し、{+P, -R}となる。自動証明のようにプログラムで実行する場合、推論規則とは別に集合としての処理が必要になり、推論規則としては扱われない。
[証明]
clauseの集合Σと定理Zについて、resolutionを用いた証明Σ⊢Zとは、大雑把にいってΣからZにいたるresolutionの連鎖のことになる。
もうすこし説明を試みると、まず、次のようなclauseの並びを考える。
この並びは、Σの要素のclauseから出発し、この並びの要素同志のresolventが得られたらそれを列に追加する。というように生成される。そして、列にZが追加されたら、完成とする。
この列にはZを証明するために必要のないclauseも含まれるので、Σの要素clauseからresolventZに至るに必要なclauseとresolventだけを取り出したものを「ΣからZの証明」と呼ぶ。
厳密な定義は教科書などを参照してください。