IV. 命題論理の意味論(その2)

この章では連言標準形・選言標準形(あるいは論理積標準形・論理和標準形) と呼ばれる二種類の特別な形の論理式について考える. 真理値についての考察から,任意の論理式に対して それと同値な二種類の標準形の論理式が存在することがわかる. また,論理式の同値変形によって標準形を導くこともできる. 標準形がわかれば論理式の恒真性や充足可能性はただちに判定できる. 同値変形とは異なる原理に基づく判定方法として「導出原理」の考え方も 紹介する.

目次

1. 論理式の標準形
2. 標準形への同値変形
3. 恒真性・充足可能性との関係
4. 導出原理の考え方

付記:4節の内容に誤りがあったので書き直した(2024年8月)

総目次に戻る


1. 論理式の標準形

ここで扱う論理式の標準形は数式を単項式の和

a11*a12*… + a21*a22*… + …

の形に表わしたものに似ている.分配律などを見れば わかるように,もともと選言(論理和)と連言(論理積) を通常の数の和と積に対応させて考えることは不自然 ではない.実際,上のような数式の表示で積 * を連言∧に, 和 + を選言∨に読み替えれば,得られるものは 選言標準形と呼ばれるものに他ならない.

ただし,数式と論理式では大きな違いが一つある. すなわち,和・積と違って選言と連言の役割は完全に対等で, それを入れ替えてもさまざまな性質は変わらない (ド・モルガンの法則や分配律を思い出してみられたい). このことを双対性(そうついせい)という. この双対性があるために,上のような数式の表示で積を 選言に,和を連言に読み替えた形の表現も可能になる. それが連言標準形である.

1.1 連言標準形

原子式(あるいは原子命題)とは, 単一の命題変数・命題定数からなる論理式のことだった. 原子式から出発して次のように得られるものが 連言標準形の論理式である.

【定義】

  1. 原子式または原子式の否定 をリテラルという.
  2. 有限個のリテラル L1, ..., Lk を ∨で結んだ形の論理式 L1∨…∨Lk(あるいは∨節)という.
  3. 有限個の節 C1, ..., Cn を∧で結んだ形 C1∧…∧Cn連言標準形(あるいは論理積標準形)と呼ぶ.

要するに,連言標準形の論理式は

(L11∨L12∨…)∧ (L21∨L22∨…)∧…

(L11, L12, ... はリテラル) という形をしている.

【例】a1, a2, a3 を原子論理式とするとき, (a1∨¬a2)∧(a1∨¬a3) は連言標準形の論理式である.

【注意】

  1. 標準形を考えるときには原子式に命題定数を含めない, という流儀もある.

  2. 命題変数と言わずに敢えて「原子式」と言うのは, 原子式の定義を適当に変えれば,この定義が述語論理でも 通用するからである.同じことは後で述べる選言標準形に ついても言える.

1.2 選言標準形

【定義】連言標準形の定義で∧と∨を入れ替えた形を 選言標準形(あるいは論理和標準形) と呼ぶ.

すなわち,リテラルを∧で結んだもの (双対節あるいは∧節と呼ぶ) をさらに∨で結んで得られる形

(L11∧L12∧…)∨ (L21∧L22∧…)∨…

(L11, L12, ... はリテラル) が選言標準形である.

【注意】ここでいう双対節を「節」と呼ぶこともある. より一般には,有限個のリテラルの集合 {L1, ..., Lk} を 「節」と呼び,状況に応じてそれを∧あるいは∨で結合する, という流儀もある.

1.3 双対性定理

連言標準形と選言標準形は,単に似ているだけでなく, ¬によって一方から他方へ移ることができる. これは前述の「双対性」の顕れである. このことを正確に説明するために いくつか補助的な記号を導入しよう.

【定義】論理式φが原子式から∧,∨,¬のみによって 構成されているとする.このときφに含まれる∧を∨に, ∨を∧に置き換えて得られる論理式をφDと表わす (D は「双対」にあたる英単語の「dual」の頭文字である).

【例】a, b, c, d を原子式とするとき, φ = (¬(a∧b)∨¬(c∧d))∧(a∨c) に対して φD = (¬(a∨b)∧¬(c∨d))∨(a∧c) となる.

【定義】 原子式 a1,... , anを含む論理式φに対して, それらを別の論理式 ψ1,... , ψn に置き換えて得られる論理式を

φ[ψ1/a1,... , ψn/an]

とあらわす.

【注意】 この場合に限らず,記号論理学や計算機科学では このように斜線で置き換えを表わす記法が一般的に用いられている.

連言標準形と選言標準形が¬によって互いに移り合うことは, 次のより一般的な結果からの帰結である.

【定理】 論理式φは原子式 a1, ..., an から∧,∨,¬のみで構成されているとする.このとき

¬φ ≡ φD[¬a1/a1, ..., ¬an/an]

となる.

【標準形との関係】論理式φが連言標準形のとき

φD[¬a1/a1, ..., ¬an/an]

は選言標準形の論理式であるが,上の定理によれば これは¬φと同値である.このようにして,φに対する 連言標準形と¬φに対する選言標準形は1対1に対応する.

次の小節でこの定理の証明を行う.証明は数学的帰納法の一種である 構造帰納法による.これは論理式の「帰納的定義」 に基づく帰納法で,この場合に限らず数理論理学や計算機科学では 至るところで用いられる基本的な論法である.

論理式が具体的に与えられれば,ド・モルガンの法則を 反復適用し,最後に原子式の二重否定を除去する,という 同値変形によって,定理の主張を確かめることができる.

【例】

¬((a∧b)∨¬(c∧¬d∧e))
¬(a∧b)∧¬¬(c∧¬d∧e) (全体にド・モルガンの法則を適用)
(¬a∨¬b)∧¬(¬c∨¬¬d∨¬e) (¬(a∧b)と¬(c∧¬d∧e)にド・モルガン)
(¬a∨¬b)∧¬(¬c∨d∨¬e) (原子式の二重否定の除去)

1.4 双対性定理の証明

「構造帰納法」による上の定理の証明を示そう.基本的な戦略は, φ に含まれる論理結合子∧,∨,¬の総数(すなわち, それぞれの個数の総和)に注目して,それに関する 数学的帰納法に持ち込む,というものである.

論理結合子を含まない場合にはφ は原子論理式なので, 定理の主張はすぐに確かめられる.そこで,φ における 論理結合子の総数が n 未満の場合に定理が成り立つと仮定して, 論理結合子の総数が n (> 0) の場合を考える. φ は φ1∧φ2,φ1∨φ2,¬ψ(φ1, φ2, ψは部分論理式) のいずれかの形に表せる(ここで論理式の帰納的定義を用いる). φ に含まれる原子式は a1, ..., an である とする.

1.φ = φ1∧φ2 の場合

ド・モルガンの法則と双対論理式の定義によって

¬φ ≡ (¬φ1)∨(¬φ2),   φD = φ1D∧φ2D

となるが,φ1とφ2では論理結合子の数がφよりも 少なくとも1だけ少ないので,帰納法の仮定が使えて

¬φ1 ≡ φ1D[¬a1/a1, ..., ¬an/an],
¬φ2 ≡ φ2D[¬a1/a1, ..., ¬an/an]

となる.これを上の式に代入すると

.
¬φ φ1D[¬a1/a1, ..., ¬an/an] ∨ φ2D[¬a1/a1, ..., ¬an/an]
  (φ1∧φ2)D[¬a1/a1, ..., ¬an/an]
  φD[¬a1/a1, ..., ¬an/an]
となって,φについても定理の主張が成り立つことがわかる.

2.φ = φ1∨φ2 の場合

1 とまったく同様である(各自確認のため自分でやり直して みよ).

3.φ = ¬ψ の場合

定義に戻って考えれば φD = ¬(ψD) なので

φD[¬a1/a1, ..., ¬an/an] = ¬(ψD[¬a1/a1, ..., ¬an/an])

となるが,ψには帰納法の仮定が使えて

¬ψ = ψD[¬a1/a1, ..., ¬an/an]

であるから,

φD[¬a1/a1, ..., ¬an/an] ≡ ¬(¬ψ) ≡ ψ ≡ ¬φ

となって,φ に対して定理の主張が成り立つ.

いずれの場合も帰納法の仮定の下でφ自身に対して 定理の主張が成立することがわかる.これで 帰納法による証明が完結した.

1.4 ブール函数との関係

n 変数のブール函数 f(x1, ..., xn) とは写像 f:{0,1}n --> {0,1}のことであり, 見方を変えれば {0,1}n の部分集合(f が 1 の 値をとるところ)の特性函数でもあった.また,ブール函数は 論理回路の数学的表現に他ならなかった.

任意のブール函数は論理式として表現することができる. このことを示す際に選言・連言標準形が現れる.

【定理】0, 1 を F, T と同一視するとき,任意のブール 函数は x1, ..., xn を命題変数 とする論理式で表現できる.正確に言えば, {0,1}n の部分集合 I, J を

I = {(b1, ..., bn)∈{0,1}n | f(b1, ..., bn) = 1},
J = {(b1, ..., bn)∈{0,1}n | f(b1, ..., bn) = 0},

で定義するとき(したがって f = χI, ¬f = 1 - f = χJとなる),f は次のような 標準形の論理式で表現できる:

  1. 連言標準形による表示

    f(x1, ..., xn) = ∨(b1,...,bn)∈I (L1(b1)∧ ... ∧Ln(bn))

  2. 連言標準形による表示

    f(x1, ..., xn) = ∧(b1,...,bn)∈J (¬L1(b1)∨ ... ∨¬Ln(bn))

ただしここで Li(b) (b = 0,1) は xi を 命題変数とみなして

Li(1) = xi,   Li(0) = ¬xi

というように定めたリテラルである.また, ∧(b1,...,bn)∈J は J の要素全体にわたって,対応する論理式の連言を とることを意味する. ∨(b1,...,bn)∈I も同様の意味である.

【証明】選言標準形の場合がわかりやすいので,そちらを 説明する.選言標準形については,¬f を選言標準形で 表わしてから, 双対により f に戻せばよい. L1(b1)∧ ... ∧Ln(bn)) という論理式の 真理値は (x1, ..., xn) = (b1, ..., bn) のときのみ T, それ以外では F である.したがってそれらの (b1, ..., bn) ∈J にわたる選言は (x1, ..., xn) の値が I に属するとき値 T,そうでないとき値 F をとる. これは f の真理値と一致するので, 両者は {0,1}n の函数として一致する (証明終わり).

【例】次のような表で定義されるブール函数 f(x1,x2,x3) を考える.

函数 f: {0,1}3 --> {0,1}

x1x2x3 f(x1, x2, x3)
1110
1101
1011
1001
0110
0100
0010
0001

この函数は次のように表示できる:

f(x1, x2,x3) = (x1∧x2∧¬x3)∨(x1∧¬x2∧x3)∨ (x1∧¬x2∧¬x3)∨(¬x1∧¬x2∧¬x3)
(選言標準形による表示)
= (¬x1∨¬x2∨¬x3)∧(x1∨¬x2∨¬x3)∧ (x1∨¬x2∨x3)∧(x1∨x2∨¬x3)
(連言標準形による表示)

命題論理の任意の論理式 φ が与えられたとき, 命題変数をブール変数と読み替えることによって ブール函数 f が決まる.上の定理を適用すれば, このブール函数を連言・選言標準形に表わせる. 論理式に戻って考えれば,これは φ と論理的に同値な 連言・選言標準形の論理式を求めたことに他ならない. こうして,上の定理の系として,任意の論理式に対する 同値な標準形の論理式の存在がわかる:

【系】任意の論理式φに対して, それと同値な連言・選言標準形の論理式が存在する.

ブール函数の標準形の存在定理は三種類の基本的な演算 ∧,∨,¬ の組み合わせによってどのようなブール函数も表現できるということを 示している.これは論理回路の物理的設計という観点から見ても 極めて重要な結果である.この定理のおかげで,三種類の演算に対応する 論理素子(ゲート)とそれを組み合わせる方法さえ用意しておけば, どのような論理回路も実現することができるのである.

ただし,なるべく少ない論理素子で回路を実現したい, という効率上の観点から見れば,このような標準形は無駄が多い. 効率の良い論理回路の設計にはまったく別の考え方が必要になる.

なお,この三種類の基本演算をさらに

  1. ¬(x∧y) (NAND
  2. ¬(x∨y) (NOR
という演算のいずれか一方だけで表わすこともできる. したがって,任意のブール函数は実は一種類の演算で表現する こともできる.

【演習問題】x∧y, x∨y, ¬x を NAND(あるいは NOR)で表わせ (ヒント:まず ¬x を実現することから考えてみよ).


2. 標準形への同値変形

命題変数の真理値を調べて標準形を求める方法は (論理式が n 個の命題変数を含むときには 全部で 2n 個の真理値割り当てに対する真理値を 調べなければならないから)決して効率的な方法とは言えない. ここでは,同値変形によって標準形を求める手続きを考える. これは基本的には数式を展開して単項式の和の形にする計算と 同じ考え方に基づく.

2.1 連言標準形への同値変形

連言標準形への同値変形は次の三段階からなる:
第一段階

与えられた論理式に対して→と↔の書き換え公式
φ1→φ2(¬φ1)∨φ2
φ1↔φ2(φ1→φ2)∧(φ2→φ1)
を適用し,∧と∨と¬のみ含む論理式に同値変形する.

第二段階

第一段階で得られた論理式に対してド・モルガンの法則と 二重否定の除去の公式を適用し,リテラルを∧と∨で結んだ形の 論理式に同値変形する.正確に言えば, という操作を,与えら得た論理式から出発して,部分論理式に 対して繰り返す.

第三段階

第二段階で得られた論理式に対して分配律
φ1∨(φ2∧φ3)(φ1∨φ2)∧(φ1∧φ3)
(φ1∧φ2)∨φ3(φ1∨φ3)∧(φ2∨φ3)
を反復適用し,すべての∨をリテラルの直前に移動する. ただし,分配律の基本形を反復して使うのは煩わしいので, それを複合して得られる公式

1∧…∧φm)∨ (ψ1∧…∧ψn) ≡ (φ1∨ψ1)∧…∧ (φ1∨ψn)∧…∧ (φn∨ψ1)∧…∧ (φn∨ψm)
= ∧1≦i≦m, 1≦j≦ni∨ψj)

などで一気に処理してもよい.ただし最後の記号は 1 ≦ i ≦ m, 1 ≦ j ≦ n という mn 個の添字対 (i,j) にわたって∧をとることを意味する. 慣れないうちは

∧ ----> +,  ∨ ----> *

という読み替えで数式に翻訳し,数式の単項式への 展開と思って計算するのがわかりやすい.

2.2 連言標準形への同値変形の例

標準形への同値変形の例をいくつか示す.変形の各段階で 用いる公式を示しているが,可換律や結合律は明らかなので, 特に強調する必要がなければ断らないで使う.

【例】¬a1→¬(a2∨a3)(a1, a2, a3 は原子式) を連言標準形に同値変形する:

¬a1→¬(a2∨a3)
¬¬a1∨¬(a2∨a3) (→の書き換え)
a1∨¬(a2∨a3) (二重否定の除去)
a1∨(¬a2∧¬a3) (ド・モルガンの法則)
(a1∨¬a2)∧(a1∨¬a3) (分配律)

この計算例ではほとんどの部分が→と¬の処理で, 最後に1回だけ分配律を使っている.

【例】(a1∧a2)∨(a3∧(a4∨(a5∧a6))) (a1, ..., a5 は原子式)を連言標準形に同値変形する:

(a1∧a2)∨(a3∧(a4∨(a5∧a6)))
(a1∧a2)∨(a3∧( (a4∨a5)∧(a4∨a6) )) (a4∨(a5∧a6)に分配律を適用)
(a1∧a2)∨( a3∧(a4∨a5)∧(a4∨a6) ) (結合律によって整理)
(a1∨a3)∧(a1∨a4∨a5)∧(a1∨a4∨a6) ∨(a2∨a3)∧(a2∨a4∨a5)∧(a2∨a4∨a6)
(直前の行全体に分配律を適用)

この例では前述の「第三段階」のみが問題である. 計算例に示したように,一番内側の括弧 (...) から外側へ 向かって連言標準形を順次成長させて行けば,自然に同値変形 が完成する.

よくわからない場合は ∧----> +, ∨----> * という置き換えを行って 得られる数式 (a1 + a2)*(a2 + (a4 * (a5 + a6))) の展開を参考にすること.

【例】modus ponens を表わす式 (a1∧(a1→a2))→a2(a1, a2, a3 は原子式) を連言標準形に同値変形する:

(a1∧(a1→a2))→a2
¬(a1∧(¬a1∨a2))∨a2 (→の書き換え)
¬a1∨¬(¬a1∨a2)∨a2 (ド・モルガンの法則)
¬a1∨(a1∧¬a2)∨a2 (ド・モルガンの法則と二重否定の除去)
((¬a1∨a1)∧(¬a1∨¬a2))∨a2 (分配律)
((¬a1∨a1)∨a2)∧((¬a1∨¬a2)∨a2) (分配律)
(¬a1∨a1∨a2)∧(¬a1∨¬a2∨a2) (仕上げ)

a1∨¬a1 ≡ T, a2∨¬a2 ≡ T (言い替えればa1∨¬a1, a2∨¬a2 は恒真式)なので,ここで得られた連言標準形は a1, a2, a3 の任意の真理値割り当てに対して常に真である.したがって この例(modus ponens を表わす)は恒真式であることが わかる.このように,連言標準形を見れば恒真式であるか どうかはただちに判断できる(このことはあとで一般的に 議論する).

2.3 選言標準形への同値変形

選言標準形への同値変形の手順も第一・第二段階は 同じで,段三段階のみが異なる:
第三段階

第二段階で得られた論理式に対して分配律
φ1∧(φ2∨φ3)(φ1∧φ2)∨(φ1∧φ3)
(φ1∨φ2)∧φ3(φ1∧φ3)∨(φ2∧φ3)
を反復適用し,すべての∧をリテラルの直前に移動する. ここでも分配律を複合して得られる公式

1∨…∨φm)∧ (ψ1∨…∨ψn) ≡ (φ1∧ψ1)∨…∨ (φ1∧ψn)∨…∨ (φn∧ψ1)∨…∨ (φn∧ψm)
= ∨1≦i≦m, 1≦j≦ni∧ψj)

などで一気に処理してもよい(最後の記号の 意味は連言標準形への同値変形のところで 説明したものと同様).また,ここでも

∨ ----> +,  ∧ ----> *

という読み替えで数式に翻訳し,数式の単項式への 展開と思って計算するのがわかりやすい.

【演習問題】連言標準形への同値変形の例として 採り上げた論理式を,今度は選言標準形に同値変形 すること.

2.4 標準形の存在定理

ここまで説明してきたことを次の定理にまとめられる.

【定理】任意の論理式は以上のような手続きによって 連言・選言標準形に同値変形できる.

この定理が正しいことはさまざまな計算例や 通常の数式の計算からの類推で納得できるだろう. 厳密な証明は構造帰納法によって行えばよい. これは演習問題として各自に任せる.

【演習問題】上の定理を証明せよ.第一段階の変形は明らかなので, 第二・第三段階の変形ができることを示せばよい.具体的には, 論理式に含まれる∧,∨,¬の総数についての数学的帰納法に 持ち込む.


3. 恒真性・充足可能性との関係

論理式の標準形は恒真性・充足可能性と密接に関連している. 実際,与えられた論理式を標準形に同値変形できれば, 恒真性や充足可能性はそこからただちに読みとれる.

3.1 連言標準形と恒真性

連言標準形が論理式の恒真性の判定に使えることを示そう.

与えられた論理式が連言標準形

φ= C1∧…∧Cm

(C1, ..., Cm は節,すなわち リテラルの選言)に同値変形されたとする.引き続いて, 各節の中で

という操作(いずれも同値変形)を繰り返せば, 節の中から a∨a, ¬a∨¬a, a∨¬a (a は原子式) という形の部分論理式を除去することができる. この操作によって節が T だけになれば, 恒真性に関して無視できる(つまり,連言標準形から 除去してよい).そうでなければ自明でない節 Cj ≡ L1∨…∨Lk (リテラル L1,... , Lk は 共通の命題記号を含まない)が残るが,このような節は 命題記号に対する適当な真理値割り当てに対して F の値をとる. そのような節が一つでも残れば, もとの論理式は恒真式ではあり得ない.

以上の考察から,恒真性に関して次のような判定法が得られる.

【連言標準形による恒真性の判定】 論理式φを連言標準形に同値変形し,さらに 各節を a∨a, ¬a∨¬a, a∨¬a(a は原子式) という部分論理式を含まないように同値変形する. このとき

  1. φが T のみからなる論理式に帰着すれば, φ は恒真式である.

  2. そうでなければ,φは恒真式ではない.

【例】すでに示した計算例の中のmodus ponensの論理式 の連言標準形を考える:

(a1∧(a1→a2))→a2 ≡ (¬a1∨a1∨a2)∧(¬a1∨¬a2∨a2)

上に述べたような変形によって,上式右辺の連言標準形は 次のように同値変形される:

(¬a1∨a1∨a2)∧(¬a1∨¬a2∨a2) ≡ (T∨a2)∧(¬a1∨T) ≡ T∧T ≡ T

残ったものは T のみである.したがってもとの論理式が 恒真式であることがわかる.

【例】((a1∧a2)→¬(a3∧a4)∧(a1∨a3) を同値変形して 得られる連言標準形 (¬a1∨¬a2∨¬a3∨¬a4)∧(a1∨a3) を考える.適当な真理値割り当て M に対してここに現れた二つの節の いずれかが F であれば標準形は F となり,論理式が恒真でない ことがわかる.実際,(¬a1∨¬a2∨¬a3∨¬a4) と (a1∨a3) は それぞれ

M[a1] = T, M[a2] = T, M[a3] = T, M[a4] = T

および

M[a1] = F, M[a3] = F (M[a2], M[a4] は任意)

という真理値割り当て M に対して F の値をとる.

【演習問題】前章で示したさまざまな恒真式の恒真性を 上の方法で再確認せよ.

3.2 選言標準形と充足問題

選言標準形は充足問題の解法に使える.これも恒真性の 判定と同様に,次のような一般的な手順として定式化できる.

【選言標準形による充足問題の解法】 論理式を選言標準形

φ= D1∨…∨Dm

(D1, ..., Dm は双対節, すなわちリテラルの連言)に同値変形する.さらに, 各双対節を a∧a, ¬a∧¬a, a∧¬a(a は原子式) という形の部分論理式を含まない形に同値変形する. このとき

  1. φ が F のみからなる論理式に帰着すれば, φ は充足不可能である.

  2. そうでなければ,F に帰着しないで残る 双対節のそれぞれから充足問題の(少なくとも) 一つの解が得られる.
後者の場合についてもう少し詳しく説明しよう. ここに残っている双対節 D は互いに異なる原子式 p1, ..., pk のリテラルの連言

D = L1∧…∧Lk

(Lj = pj または ¬pj) である.それに対して真理値割り当て M を

M[Lj] = T  (j = i, ..., k)

というように選ぶことができる(すべての原子式がそこに 現れていれば M は一意的に定まるが,そうでなければ, そこに現れない原子式には任意の値を割り当ててよい). このような真理値割り当て M はφを充足する.

【例】「箱とボールのパズル」を選言標準形の応用として 扱ってみよう.たとえば

  1. 箱AにもBにもボールが入っていれば, 箱Cには入っていない.
  2. 箱Aにボールが入っていなければ, 箱Bか箱Cのいずれかにはボールが入っている.
という条件の下でのボールの入れ方を求めることを考える. これは論理式φ = (a∧b→¬c)∧(¬a→(b∨c)) の モデルを求める問題に他ならない.この論理式の 選言標準形を求めると
(a∧b→¬c)∧(¬a→(b∨c))
(¬(a∧b)∨¬c)∧(¬¬a∨(b∨c)) (→の書き換え)
(¬a∨¬b∨¬c)∧(a∨b∨c) (ド・モルガンの法則)
(¬a∧a)∨(¬a∧b)∨(¬a∧c)∨ (¬b∧a)∨(¬b∧b)∨(¬b∧c)∨ (¬c∧a)∨(¬c∧b)∨(¬c∧c)
(分配律)
(¬a∧b)∨(¬a∧c)∨(¬b∧a)∨ (¬b∧c)∨(¬c∧a)∨(¬c∧b)
(無駄を省く)
となる(最後の部分で a∧a, ¬a∧¬a, a∧¬aという 部分論理式を含まない形に同値変形した). こうして得られた選言標準形が真理値割り当て M に対して真理値 T をもつためには,リテラルの連言のいずれかの真理値が T であればよい.こうして次のような解(φ のモデル)が見つかる:
  1. M[a] = F, M[b] = T, M[c] = 任意
  2. M[a] = F, M[b] = 任意, M[c] = T
  3. M[a] = F, M[b] = F, M[c] = 任意
  4. M[a] = 任意, M[b] = F, M[c] = T
  5. M[a] = T, M[b] = 任意, M[c] = F
  6. M[a] = 任意, M[b] = T, M[c] = F
それぞれを満たす M は複数あるので,全体をさらに整理すれば, 要するに(M[a],M[b],M[c]) として (T,T,T) と (F,F,F) 以外の 6通りの真理値割り当てがすべて解である,という結論を得る.

【演習問題】 ある電子装置には四つの付属品 a,b,c,d が付属している. この付属品は本体に用意された端子に接続して使う.ただし, 接続するときには次の条件をすべて満たさなければならない:

  1. a を接続しないときには b と c の両方を接続しなければ ならない.
  2. b を接続しないときには c か d のいずれか(両方でもよい) を接続しなければならない.
  3. a と d を同時に接続することはできない.
以上の設定を命題論理の論理式で定式化し,それに基づいて, 可能な接続の仕方をすべて求めよ.

【注意】実際にやってみればわかることであるが, この問題を選言標準形への同値変形で解くことは 非常に手間がかかる.特に,各双対節は一般には 複数の解をもち,双対節間に解の重複があり得るが, この重複を除くには解を列挙してみるしかない. これでは何のために標準形を求めたのかわからない. 24 = 16 通りの場合から条件に該当しないものを 順次を消して行く,という原始的なやり方の方が かえって速く答が出せる.このような意味で, 標準形を利用する方法は充足問題の解法として 決して効率が良いとは言えない.


4. 導出原理の考え方

ここでは導出原理(resolution principle)の考え方で 論理式の恒真性を判定する方法を説明する. 以下ではこの方法を通常とは少し見かけの異なる形で定式化し, それを通常の定式化に翻訳する.

【注意】「resolution principle」は「導出原理」と訳されることが多いので ここでもこの訳語を採用するが,「resolution」を「導出」と訳すのは あまり適切ではない.むしろ「分解」あるいは「解消」という言葉の方が 本来の意味に近い.そこで,用語として不統一ではあるが,ここでは 「resolution」に「解消」という言葉を充てることにした.

4.1 連言標準形の論理式に対する解消操作

与えられた連言標準形の論理式に対して以下に説明する解消 (resolution)という変形操作(同値変形ではない)を考える. それを繰り返せばそれ以上変形できない論理式が得られる. その結果を見ればもとの論理式が充足不可能であるか否かがただちにわかる. 解消のやり方は一通りではないが,充足不可能性の判定には そのうちの1つを考えれば十分である.

【定義】

  1. 節 C, C' がある命題変数 p とその否定 ¬p を

    C = p∨A2∨…∨Am (A2, ..., Amはリテラル),

    C' = ¬p∨B2∨…∨Bn (B2, ..., Bnはリテラル)

    という形で含むとする.これらから

    C'' = A2∨…∨Am∨B2∨…∧Bn

    という新たな節をつくることをC∧C'から p,¬p の対を解消する という.この操作を記号的に

    C∧C' 〜> C''

    と表わす(これはここだけの記号である).ただし, C'' の中に同じリテラル L が重複して現れたら, それを一つにまとめたものを改めて C'' とする (この修正を忘れると誤った結果を生じるので注意). また,C = p, C' = ¬p の場合には何も残らないので 便宜的に C'' = F と定義する.

  2. 連言標準形の論理式 φ = C1∧…∧Cn の中の一対の節 Ci, Cj に対して 上のような解消操作 Ci∧Cj 〜> C'' を行って新たな連言標準形の論理式 φ'' が得られることを,記号的に

    φ 〜> φ''

    と表わす(これもここだけの記号である).たとえば i=1, j=2 のときには

    φ = C1∧C2∧…∧Cn 〜> φ'' = C''∧C3∧…∧Cn

    となる.ただし,φ'' の中に同じ節 C が 重複して現れたら, それらを一つにまとめたものを改めて φ'' とする. C'' = F のときには(φ'' ≡ F なので)それ以上の解消操作はしない.

連言標準形で与えられた任意の論理式φは上の操作の繰り返し

φ = φ0 〜> φ1 〜> … 〜> φN

によって,それ以上解消ができないか,あるいは F と同値な, ある論理式φNに到達する. このような解消列の選び方は一般には複数通り可能である.

【例1】φ = (p∨r)∧(¬p∨q∨s)∧(¬q∨p∨t) (p,q,r,s は命題変数)に対しては次の三通りの解消が可能である (これ以外にはない).

その1:
(p∨r)∧(¬p∨q∨s)∧(¬q∨p∨t)
〜> (r∨q∨s)∧(¬q∨p∨t) (最初の二つの双対節から p,¬p を解消)
〜> r∨s∨p∨t (q,¬q の対を解消)

その2:
(p∨r)∨(¬p∨q∨s)∧(¬q∨p∨t)
〜> (p∨r)∧(¬p∨s∨p∨t) (最後の二つの双対節から q,¬q を解消)
〜> r∨s∨p∨t  (p,¬q を解消)

その3:
(p∨r)∨(¬p∨q∨s)∧(¬q∨p∨t)
〜> (p∨r)∧(q∨s∨¬q∨t)  (最後の二つの双対節から p,¬p を解消)

【例2】φ = (p∨¬q)∧(q∨¬r)∧(r∨p)∧¬p (p,q,r は命題変数)についても同様に複数の解消の仕方が可能であるが, その中には F に到達するものがある.たとえば左から順次解消操作を行えば

(p∨¬q)∧(q∨¬r)∧(r∨p)∧¬p
〜> (p∨¬r)∧(r∨p)∧¬p (q,¬q を解消)
〜> p∧¬p (r,¬r を解消,重複して現れた p を一つにまとめる)
〜> F  (p,¬p を解消,あるいは同値な F に置き換える)

4.2 充足不可能性と恒真性の判定

充足不可能性の判定の基礎となるのは次の事実である. φを連言標準形の論理式とする.

【定理】φ〜> φ'' かつφが充足可能ならばφ''も充足可能である.

これを証明するために次の補題を用意する.

【補題】二つの節 C, C' から命題変数 p とその否定 ¬p の解消によって 節 C'' が得られるとする.また,M を C, C' に含まれる命題変数の 任意の真理値割り当てとする.このとき M[C∧C'] = T ならば M[C''] = T である.

【証明】C, C' を

C = p∨A2∨…∨Am (A2, ..., Amはリテラル),

C' = ¬p∨B2∨…∨Bn (B2, ..., Bnはリテラル)

と表せば,

C'' = A2∨…∨Am∨B2∨…∧Bn

である.M[C∧C'] = T とする.このとき M[C] = M[C'] = T となる. M[p] の値について場合分けして考える.

  1. M[p] = T のとき: M[C] = T, M[C'] = M[B2∨…∨Bn] = T となるから, M[C''] = T である.
  2. M[p] = F のとき: M[C'] = T, M[C] = M[A2∨…∨Am] = T となるから, M[C''] = T である.
こうしていずれの場合も M[C''] = T であることがわかる.(証明終わり)

【定理の証明】φからφ''に到る解消の各段階で充足可能性が伝わることを示せばよい. そのためには,φ = C1∧C2∧ψ 〜> φ'' = C3∧ψ であり,C3 が C1とC2から対 p,¬p の解消によって得られる, という場合を考えればよい(ψ がない場合には補題の設定になる). このφが充足可能であれば,ある真理値割り当て M に対して M[φ] = T, 言い換えれば M[C1] = T, M[C2] = T, M[ψ] = T が成り立つ.M[C1] = T かつ M[C2] = T であるから,補題によって M[C3] = T となる.M[ψ] = T でもあるから, M[φ''] = T となり,φ''は充足可能である.こうしてφからφ''に充足可能性が伝わる. (証明終わり)

この定理の対偶として,次のような充足不可能性の判定方法が得られる.

【系】連言標準形の論理式 φ から F に至る解消操作

φ = φ0 〜> φ1 〜> … 〜> φN ≡ F

が存在すれば,φは充足不可能である.

この充足不可能性の判定法を与えられた論理式の否定に適用すれば, 恒真性の判定方法になる.

【系】選言標準形の論理式に対して,その否定の連言標準形から F に至る解消操作

¬φ = φ0 〜> φ1 〜> … 〜> φN ≡ F

が存在すれば,φは恒真である.

【注意】これらの系の逆も成立する.それは「導出原理の完全性」と呼ばれる (証明は省略する).

【例3】φ = (¬p∧q)∨(¬q∧r)∨(¬r∧¬p)∨p (p,q,r は命題変数)に対して

¬φ ≡ (p∨¬q)∧(q∨¬r)∧(r∨p)∧¬p

である.例2に示したようにこれは解消操作によって F に到達するので, φ は恒真である.

4.2 通常の定式化との関係

導出原理の通常の定式化では {L1,…, Ln} というリテラルの集合を「節」と呼び,このような意味での節の集合に対して 解消操作を定義する.たとえば,例2で取り上げた (p∨¬q)∧(q∨¬r)∧(r∨p)∧¬p の場合には,節集合に対する解消操作は
{{p,¬q}, {q,¬r}, {r,p}, {¬p}}
〜> {{p,¬r}, {r,p}, {¬p}} (q,¬q を解消)
〜> {{p},{¬p}} (r,¬r を解消)
〜> {{ }}  (p,¬p を解消)
となる.最後の段階では「空節」{ } が1個だけ残る, とみなすことに注意されたい.ちなみに,このように定式化すれば, 重複して現れるリテラルをまとめる,という処理を明示的に述べる必要はない. 空節 { } を F と解釈すれば,この解消操作は連言標準形の論理式の 充足不可能性を判定する手続きにほかならない.ちなみに, 後者の解釈で最後に F と同値な論理式に到達することは 「矛盾」が導かれることに相当する.その意味でこれは背理法に似ている.

論理式φが選言標準形の形で与えられていれば,その否定¬φの連言標準形は 機械的に求められる(例3参照).それを上のような節の集合にばらして 解消操作を行えば,¬φの充足不可能性すなわちφの恒真性が判定できる. この方法の一般化として,与えられた節の集合

Γ = {C1, …, Cm}

と論理式 φ に対して,φ が Γの 意味論的帰結 Γ |= φ であるかどうか を問う問題(Γが空集合ならば,φの恒真性を問う問題になる)を扱うこともできる. 実際,Γ に ¬φ の連言標準形

¬φ = Cm+1∧…∧Cn

の節を加えた節集合

Γ∪{Cm+1, …, Cn} = {C1, …, Cm, Cm+1, …, Cn}

に対して解消操作を行って,それが {{ }} に到達すれば,Γ |= φ であることがわかる.


キーワード

原子式(原子命題),リテラル,節(∨節),双対節(∧節), 連言標準形(論理積標準形),選言標準形(論理和標準形), 双対性,構造帰納法,ブール函数の標準形, 論理素子(ゲート),NAND・NOR, 標準形への同値変形,恒真性の判定,充足問題の解法, 導出原理(resolution principle),完全性, 形式的推論・演繹,形式化された論理