付記:4節の内容に誤りがあったので書き直した(2024年8月)
の形に表わしたものに似ている.分配律などを見れば わかるように,もともと選言(論理和)と連言(論理積) を通常の数の和と積に対応させて考えることは不自然 ではない.実際,上のような数式の表示で積 * を連言∧に, 和 + を選言∨に読み替えれば,得られるものは 選言標準形と呼ばれるものに他ならない.
ただし,数式と論理式では大きな違いが一つある. すなわち,和・積と違って選言と連言の役割は完全に対等で, それを入れ替えてもさまざまな性質は変わらない (ド・モルガンの法則や分配律を思い出してみられたい). このことを双対性(そうついせい)という. この双対性があるために,上のような数式の表示で積を 選言に,和を連言に読み替えた形の表現も可能になる. それが連言標準形である.
【定義】
要するに,連言標準形の論理式は
(L11, L12, ... はリテラル) という形をしている.
【例】a1, a2, a3 を原子論理式とするとき, (a1∨¬a2)∧(a1∨¬a3) は連言標準形の論理式である.
【注意】
すなわち,リテラルを∧で結んだもの (双対節あるいは∧節と呼ぶ) をさらに∨で結んで得られる形
(L11, L12, ... はリテラル) が選言標準形である.
【注意】ここでいう双対節を「節」と呼ぶこともある. より一般には,有限個のリテラルの集合 {L1, ..., Lk} を 「節」と呼び,状況に応じてそれを∧あるいは∨で結合する, という流儀もある.
【定義】論理式φが原子式から∧,∨,¬のみによって 構成されているとする.このときφに含まれる∧を∨に, ∨を∧に置き換えて得られる論理式をφDと表わす (D は「双対」にあたる英単語の「dual」の頭文字である).
【例】a, b, c, d を原子式とするとき, φ = (¬(a∧b)∨¬(c∧d))∧(a∨c) に対して φD = (¬(a∨b)∧¬(c∨d))∨(a∧c) となる.
【定義】 原子式 a1,... , anを含む論理式φに対して, それらを別の論理式 ψ1,... , ψn に置き換えて得られる論理式を
とあらわす.
【注意】 この場合に限らず,記号論理学や計算機科学では このように斜線で置き換えを表わす記法が一般的に用いられている.
連言標準形と選言標準形が¬によって互いに移り合うことは, 次のより一般的な結果からの帰結である.
【定理】 論理式φは原子式 a1, ..., 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) | (原子式の二重否定の除去) |
論理結合子を含まない場合にはφ は原子論理式なので, 定理の主張はすぐに確かめられる.そこで,φ における 論理結合子の総数が n 未満の場合に定理が成り立つと仮定して, 論理結合子の総数が n (> 0) の場合を考える. φ は φ1∧φ2,φ1∨φ2,¬ψ(φ1, φ2, ψは部分論理式) のいずれかの形に表せる(ここで論理式の帰納的定義を用いる). φ に含まれる原子式は a1, ..., an である とする.
となるが,φ1とφ2では論理結合子の数がφよりも 少なくとも1だけ少ないので,帰納法の仮定が使えて
となる.これを上の式に代入すると
¬φ | ≡ | φ1D[¬a1/a1, ..., ¬an/an] ∨ φ2D[¬a1/a1, ..., ¬an/an] |
≡ | (φ1∧φ2)D[¬a1/a1, ..., ¬an/an] | |
≡ | φD[¬a1/a1, ..., ¬an/an] |
となるが,ψには帰納法の仮定が使えて
であるから,
となって,φ に対して定理の主張が成り立つ.
任意のブール函数は論理式として表現することができる. このことを示す際に選言・連言標準形が現れる.
【定理】0, 1 を F, T と同一視するとき,任意のブール 函数は x1, ..., xn を命題変数 とする論理式で表現できる.正確に言えば, {0,1}n の部分集合 I, J を
で定義するとき(したがって f = χI, ¬f = 1 - f = χJとなる),f は次のような 標準形の論理式で表現できる:
というように定めたリテラルである.また, ∧(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) を考える.
x1 | x2 | x3 | f(x1, x2, x3) |
---|---|---|---|
1 | 1 | 1 | 0 |
1 | 1 | 0 | 1 |
1 | 0 | 1 | 1 |
1 | 0 | 0 | 1 |
0 | 1 | 1 | 0 |
0 | 1 | 0 | 0 |
0 | 0 | 1 | 0 |
0 | 0 | 0 | 1 |
この函数は次のように表示できる:
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 が決まる.上の定理を適用すれば, このブール函数を連言・選言標準形に表わせる. 論理式に戻って考えれば,これは φ と論理的に同値な 連言・選言標準形の論理式を求めたことに他ならない. こうして,上の定理の系として,任意の論理式に対する 同値な標準形の論理式の存在がわかる:
【系】任意の論理式φに対して, それと同値な連言・選言標準形の論理式が存在する.
ブール函数の標準形の存在定理は三種類の基本的な演算 ∧,∨,¬ の組み合わせによってどのようなブール函数も表現できるということを 示している.これは論理回路の物理的設計という観点から見ても 極めて重要な結果である.この定理のおかげで,三種類の演算に対応する 論理素子(ゲート)とそれを組み合わせる方法さえ用意しておけば, どのような論理回路も実現することができるのである.
ただし,なるべく少ない論理素子で回路を実現したい, という効率上の観点から見れば,このような標準形は無駄が多い. 効率の良い論理回路の設計にはまったく別の考え方が必要になる.
なお,この三種類の基本演算をさらに
【演習問題】x∧y, x∨y, ¬x を NAND(あるいは NOR)で表わせ (ヒント:まず ¬x を実現することから考えてみよ).
φ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 ≦ i ≦ m, 1 ≦ j ≦ n という mn 個の添字対 (i,j) にわたって∧をとることを意味する. 慣れないうちは
という読み替えで数式に翻訳し,数式の単項式への 展開と思って計算するのがわかりやすい.
【例】¬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 を表わす)は恒真式であることが わかる.このように,連言標準形を見れば恒真式であるか どうかはただちに判断できる(このことはあとで一般的に 議論する).
φ1∧(φ2∨φ3) | ≡ | (φ1∧φ2)∨(φ1∧φ3) |
(φ1∨φ2)∧φ3 | ≡ | (φ1∧φ3)∨(φ2∧φ3) |
などで一気に処理してもよい(最後の記号の 意味は連言標準形への同値変形のところで 説明したものと同様).また,ここでも
という読み替えで数式に翻訳し,数式の単項式への 展開と思って計算するのがわかりやすい.
【演習問題】連言標準形への同値変形の例として 採り上げた論理式を,今度は選言標準形に同値変形 すること.
【定理】任意の論理式は以上のような手続きによって 連言・選言標準形に同値変形できる.
この定理が正しいことはさまざまな計算例や 通常の数式の計算からの類推で納得できるだろう. 厳密な証明は構造帰納法によって行えばよい. これは演習問題として各自に任せる.
【演習問題】上の定理を証明せよ.第一段階の変形は明らかなので, 第二・第三段階の変形ができることを示せばよい.具体的には, 論理式に含まれる∧,∨,¬の総数についての数学的帰納法に 持ち込む.
与えられた論理式が連言標準形
(C1, ..., Cm は節,すなわち リテラルの選言)に同値変形されたとする.引き続いて, 各節の中で
以上の考察から,恒真性に関して次のような判定法が得られる.
【連言標準形による恒真性の判定】 論理式φを連言標準形に同値変形し,さらに 各節を a∨a, ¬a∨¬a, a∨¬a(a は原子式) という部分論理式を含まないように同値変形する. このとき
【例】すでに示した計算例の中のmodus ponensの論理式 の連言標準形を考える:
上に述べたような変形によって,上式右辺の連言標準形は 次のように同値変形される:
残ったものは T のみである.したがってもとの論理式が 恒真式であることがわかる.
【例】((a1∧a2)→¬(a3∧a4)∧(a1∨a3) を同値変形して 得られる連言標準形 (¬a1∨¬a2∨¬a3∨¬a4)∧(a1∨a3) を考える.適当な真理値割り当て M に対してここに現れた二つの節の いずれかが F であれば標準形は F となり,論理式が恒真でない ことがわかる.実際,(¬a1∨¬a2∨¬a3∨¬a4) と (a1∨a3) は それぞれ
および
という真理値割り当て M に対して F の値をとる.
【演習問題】前章で示したさまざまな恒真式の恒真性を 上の方法で再確認せよ.
【選言標準形による充足問題の解法】 論理式を選言標準形
(D1, ..., Dm は双対節, すなわちリテラルの連言)に同値変形する.さらに, 各双対節を a∧a, ¬a∧¬a, a∧¬a(a は原子式) という形の部分論理式を含まない形に同値変形する. このとき
(Lj = pj または ¬pj) である.それに対して真理値割り当て M を
というように選ぶことができる(すべての原子式がそこに 現れていれば M は一意的に定まるが,そうでなければ, そこに現れない原子式には任意の値を割り当ててよい). このような真理値割り当て M はφを充足する.
【例】「箱とボールのパズル」を選言標準形の応用として 扱ってみよう.たとえば
(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,b,c,d が付属している. この付属品は本体に用意された端子に接続して使う.ただし, 接続するときには次の条件をすべて満たさなければならない:
【注意】実際にやってみればわかることであるが, この問題を選言標準形への同値変形で解くことは 非常に手間がかかる.特に,各双対節は一般には 複数の解をもち,双対節間に解の重複があり得るが, この重複を除くには解を列挙してみるしかない. これでは何のために標準形を求めたのかわからない. 24 = 16 通りの場合から条件に該当しないものを 順次を消して行く,という原始的なやり方の方が かえって速く答が出せる.このような意味で, 標準形を利用する方法は充足問題の解法として 決して効率が良いとは言えない.
【注意】「resolution principle」は「導出原理」と訳されることが多いので ここでもこの訳語を採用するが,「resolution」を「導出」と訳すのは あまり適切ではない.むしろ「分解」あるいは「解消」という言葉の方が 本来の意味に近い.そこで,用語として不統一ではあるが,ここでは 「resolution」に「解消」という言葉を充てることにした.
【定義】
という形で含むとする.これらから
という新たな節をつくることをC∧C'から p,¬p の対を解消する という.この操作を記号的に
と表わす(これはここだけの記号である).ただし, C'' の中に同じリテラル L が重複して現れたら, それを一つにまとめたものを改めて C'' とする (この修正を忘れると誤った結果を生じるので注意). また,C = p, C' = ¬p の場合には何も残らないので 便宜的に C'' = F と定義する.
と表わす(これもここだけの記号である).たとえば i=1, j=2 のときには
となる.ただし,φ'' の中に同じ節 C が 重複して現れたら, それらを一つにまとめたものを改めて φ'' とする. C'' = F のときには(φ'' ≡ F なので)それ以上の解消操作はしない.
連言標準形で与えられた任意の論理式φは上の操作の繰り返し
によって,それ以上解消ができないか,あるいは F と同値な, ある論理式φNに到達する. このような解消列の選び方は一般には複数通り可能である.
【例1】φ = (p∨r)∧(¬p∨q∨s)∧(¬q∨p∨t) (p,q,r,s は命題変数)に対しては次の三通りの解消が可能である (これ以外にはない).
【例2】φ = (p∨¬q)∧(q∨¬r)∧(r∨p)∧¬p (p,q,r は命題変数)についても同様に複数の解消の仕方が可能であるが, その中には F に到達するものがある.たとえば左から順次解消操作を行えば
【定理】φ〜> φ'' かつφが充足可能ならばφ''も充足可能である.
これを証明するために次の補題を用意する.
【補題】二つの節 C, C' から命題変数 p とその否定 ¬p の解消によって 節 C'' が得られるとする.また,M を C, C' に含まれる命題変数の 任意の真理値割り当てとする.このとき M[C∧C'] = T ならば M[C''] = T である.
【証明】C, C' を
と表せば,
である.M[C∧C'] = T とする.このとき M[C] = M[C'] = T となる. M[p] の値について場合分けして考える.
【定理の証明】φからφ''に到る解消の各段階で充足可能性が伝わることを示せばよい. そのためには,φ = 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 に至る解消操作
が存在すれば,φは充足不可能である.
この充足不可能性の判定法を与えられた論理式の否定に適用すれば, 恒真性の判定方法になる.
【系】選言標準形の論理式に対して,その否定の連言標準形から F に至る解消操作
が存在すれば,φは恒真である.
【注意】これらの系の逆も成立する.それは「導出原理の完全性」と呼ばれる (証明は省略する).
【例3】φ = (¬p∧q)∨(¬q∧r)∨(¬r∧¬p)∨p (p,q,r は命題変数)に対して
である.例2に示したようにこれは解消操作によって F に到達するので, φ は恒真である.
論理式φが選言標準形の形で与えられていれば,その否定¬φの連言標準形は 機械的に求められる(例3参照).それを上のような節の集合にばらして 解消操作を行えば,¬φの充足不可能性すなわちφの恒真性が判定できる. この方法の一般化として,与えられた節の集合
と論理式 φ に対して,φ が Γの 意味論的帰結 Γ |= φ であるかどうか を問う問題(Γが空集合ならば,φの恒真性を問う問題になる)を扱うこともできる. 実際,Γ に ¬φ の連言標準形
の節を加えた節集合
に対して解消操作を行って,それが {{ }} に到達すれば,Γ |= φ であることがわかる.