§E19.2命題論理の標準形

最終更新

任意の命題論理式は有限個の命題変数だけを含む。したがって、その論理式の意味は有限個の付値からなる真理表に記録することができる。本稿では真理表の各行に対応する論理式を作り、選言標準形と連言標準形を構成する。

1 リテラルと標準形

定義 1.1. 命題変数ppまたはその否定¬p\neg pをリテラル (literal) という。有限個のリテラルの連言を連言項 (conjunctive term)、有限個のリテラルの選言を選言節 (disjunctive clause) という。空の連言は⊤\top、空の選言は⊥\botとする。

定義 1.2. 有限個の連言項の選言を選言標準形 (disjunctive normal form)(DNF)という。有限個の選言節の連言を連言標準形 (conjunctive normal form)(CNF)という。空個の連言項からなる DNF は⊥\bot、空個の選言節からなる CNF は⊤\topと解釈する。

p1,…,pnp_1,\ldots,p_nを相異なる命題変数とし、a=(a1,…,an)∈2na=(a_1,\ldots,a_n)\in\mathbf 2^nとする。真理表の行aaでだけ真となる論理式と、行aaでだけ偽となる論理式を次のように作る。

定義 1.3.a∈2na\in\mathbf 2^nに対して

ℓia={piai=1,¬piai=0\ell_i^a= \begin{cases} p_i&a_i=1,\\ \neg p_i&a_i=0 \end{cases}

と置く。最小項 (minterm) と最大項 (maxterm) を

ma=⋀i=1nℓia,Ma=⋁i=1n¬ℓiam_a=\bigwedge_{i=1}^n\ell_i^a, \qquad M_a=\bigvee_{i=1}^n\neg\ell_i^a

によって定める。結合の順序は、例えば左から結合する規約で固定する。

補題 1.4.b∈2nb\in\mathbf 2^nに対応する付値vb:P→2v_b:P\to\mathbf 2を

vb(p)={bip=pi となる i∈{1,…,n} が存在する場合,0p∉{p1,…,pn}v_b(p)= \begin{cases} b_i&p=p_i\text{ となる }i\in\{1,\ldots,n\}\text{ が存在する場合},\\ 0&p\notin\{p_1,\ldots,p_n\} \end{cases}

と定める。p1,…,pnp_1,\ldots,p_nは相異なるため、この定義は一意である。このとき

vb⊨ma  ⟺  b=a,vb⊭Ma  ⟺  b=av_b\models m_a\iff b=a, \qquad v_b\not\models M_a\iff b=a

である。

証明.vb⊨ℓiav_b\models\ell_i^aであることとbi=aib_i=a_iであることは同値である。したがって、mam_aのすべてのリテラルが真であることと、すべてのiiについてbi=aib_i=a_iであることは同値である。また、MaM_aが偽であることと、すべての¬ℓia\neg\ell_i^aが偽であることは同値である。後者もb=ab=aと同値である。▨

例 1.5.p,qp,qのうち少なくとも一方が真である真理関数は

(¬p∧q)∨(p∧¬q)∨(p∧q)(\neg p\land q)\lor(p\land\neg q)\lor(p\land q)

という DNF で表される。吸収則を用いるとp∨qp\lor qに簡約することができるが、標準形の構成には簡約を必要としない。

2 標準形の存在

定理 2.1.φ\varphiがp1,…,pnp_1,\ldots,p_n以外の命題変数を含まない論理式であり、n≥1n\ge 1とする。集合

Tφ={a∈2n:va⊨φ},Fφ=2n∖TφT_\varphi=\{a\in\mathbf 2^n:v_a\models\varphi\}, \qquad F_\varphi=\mathbf 2^n\setminus T_\varphi

を定める。このとき

Dφ=⋁a∈Tφma,Cφ=⋀a∈FφMaD_\varphi=\bigvee_{a\in T_\varphi}m_a, \qquad C_\varphi=\bigwedge_{a\in F_\varphi}M_a

はそれぞれ DNF と CNF であり、すべての付値vvについて

v⊨φ  ⟺  v⊨Dφ  ⟺  v⊨Cφv\models\varphi\iff v\models D_\varphi \iff v\models C_\varphi

が成り立つ。

証明.vvのp1,…,pnp_1,\ldots,p_n上の値をb=(v(p1),…,v(pn))b=(v(p_1),\ldots,v(p_n))とする。真理値の局所性により、v⊨φv\models\varphiであることとb∈Tφb\in T_\varphiであることは同値である。

補題 1.4により、v⊨Dφv\models D_\varphiであることは、b=ab=aを満たすa∈Tφa\in T_\varphiが存在すること、すなわちb∈Tφb\in T_\varphiと同値である。空の選言の場合も、Tφ=∅T_\varphi=\varnothingであるから両辺はすべての付値で偽である。

同じ補題により、v⊭Cφv\not\models C_\varphiであることは、b=ab=aを満たすa∈Fφa\in F_\varphiが存在すること、すなわちb∈Fφb\in F_\varphiと同値である。ゆえにv⊨Cφv\models C_\varphiであることとb∈Tφb\in T_\varphiであることは同値である。空の連言の場合も、Fφ=∅F_\varphi=\varnothingであるから両辺はすべての付値で真である。▨

標準形定理の構成では、論理式の真理表を作り、真となる行または偽となる行から再び論理式を作る。否定を原子の直前まで移動する規則と分配則を用いる変換もあるが、上の構成では、停止性と正しさを真理表から直接確認することができる。

例 2.2.p→qp\to qが偽である行は(1,0)(1,0)だけである。したがって標準形定理により得られる CNF は

¬p∨q\neg p\lor q

である。真である三行を用いる DNF は

(¬p∧¬q)∨(¬p∧q)∨(p∧q)(\neg p\land\neg q)\lor(\neg p\land q)\lor(p\land q)

である。両者は同じ真理関数を表すが、構文木としては異なる論理式である。

3 真理関数の表現可能性

定義 3.1.f:2n→2f:\mathbf 2^n\to\mathbf 2とし、p1,…,pnp_1,\ldots,p_nを相異なる入力変数とする。論理式φ\varphiがffを表現する (represent a truth function) とは、すべての付値vvについて

v^(φ)=f(v(p1),…,v(pn))\widehat v(\varphi)=f(v(p_1),\ldots,v(p_n))

が成り立つことをいう。n=0n=0では右辺を、20={()}\mathbf2^0=\{()\}の唯一の入力における値f(())f(())と読む。この場合、φ\varphiに補助変数が現れてもよいが、その値はすべての付値で一定でなければならない。

定理 3.2.n≥0n\ge 0とし、p1,…,pnp_1,\ldots,p_nを相異なる命題変数とする。背景の命題変数集合PPが空でないなら、任意の真理関数f:2n→2f:\mathbf 2^n\to\mathbf 2は、¬\negと→\toから作る論理式によって表現される。

証明.n=0n=0とする。PPから一つの変数qqを取る。20\mathbf2^0の入力は()()だけである。f(())=1f(())=1ならq→qq\to qを、f(())=0f(())=0なら¬(q→q)\neg(q\to q)を取る。任意の付値vvについて前者の値は11、後者の値は00であるから、いずれも定義どおりffを表現する。この議論はqqの真理値に依存しない。

n≥1n\ge1とする。S=f−1({1})S=f^{-1}(\{1\})と置き、

Df=⋁a∈SmaD_f=\bigvee_{a\in S}m_a

とする。S=∅S=\varnothingの場合は、⊥=¬(p1→p1)\bot=\neg(p_1\to p_1)とする。補題 1.4により、任意のb∈2nb\in\mathbf 2^nについて

vb⊨Df  ⟺  b∈S  ⟺  f(b)=1v_b\models D_f\iff b\in S\iff f(b)=1

である。連言と選言は¬\negと→\toの略記として定義されているため、DfD_fは¬\negと→\toだけから作る論理式を表す。▨

注意 3.3 (変数が零個の場合).n=0n=0の真理関数は、唯一の入力()()を00へ送る関数と11へ送る関数の二つである。原始論理定数がなくても、空でない背景変数集合から取ったqqにより¬(q→q)\neg(q\to q)とq→qq\to qがそれぞれを表現する。背景変数集合自体が空の場合は論理式が存在しないため、Boolean 商の記事では定数付きの保守的拡大を別に定める。

4 恒真性の決定手続き

定理 4.1. 有限の命題論理式φ\varphiに対して、φ\varphiが恒真であるか否かを有限回の操作で判定する手続きが存在する。

証明.φ\varphiに現れる相異なる命題変数をp1,…,pnp_1,\ldots,p_nとする。nnは有限である。n=0n=0の論理式は本稿の構文には存在しないのでn≥1n\ge1である。

2n\mathbf 2^nの2n2^n個の要素を列挙する。各a∈2na\in\mathbf 2^nについて、構文木を下から上へ有限回たどり、原子、否定、含意の真理値規則を適用してva^(φ)\widehat{v_a}(\varphi)を計算する。構文木は有限であり、調べる付値も有限個であるから手続きは停止する。

すべての行で値が11なら、任意の付値はp1,…,pnp_1,\ldots,p_n上で列挙した行の一つと一致する。真理値の局所性により、その付値でもφ\varphiは真であるからφ\varphiは恒真である。値が00の行があれば、対応する付値が恒真性への反例である。したがって手続きの出力は正しい。▨

例 4.2. 論理式(p→q)→p(p\to q)\to pを調べる。v(p)=0,v(q)=0v(p)=0,v(q)=0とするとp→qp\to qは真であり、外側の含意は偽である。したがって論理式は恒真ではない。判定手続きは否定の答えだけでなく、この付値を反例として与える。

5 演習

問題 5.1.

  1. 排他的選言を表す真理関数について、標準形定理から DNF を構成せよ。
  2. p↔qp\leftrightarrow qの CNF を、偽となる行から構成せよ。
  3. 命題変数の集合PPは無限集合でもよいとする。有限集合Γ⊆Form⁡(P)\Gamma\subseteq\operatorname{Form}(P)とφ∈Form⁡(P)\varphi\in\operatorname{Form}(P)に対して、Γ⊨PLφ\Gamma\models_{\mathrm{PL}}\varphiであるか否かを有限回の操作で判定する手続きを与え、その出力が正しいことを証明せよ。また、この手続きにより{p→q, q→r}⊨PLp→r\{p\to q,\ q\to r\}\models_{\mathrm{PL}}p\to rであることと、{p→q, q}⊨PLp\{p\to q,\ q\}\models_{\mathrm{PL}}pではないことを判定せよ。ここでp,q,rp,q,rは相異なる命題変数である。
解答 (確認問題の解答).
  1. 真となる行は(1,0)(1,0)と(0,1)(0,1)であるから、(p∧¬q)∨(¬p∧q)(p\land\neg q)\lor(\neg p\land q)となる。

  2. 偽となる行は(1,0)(1,0)と(0,1)(0,1)である。対応する最大項を連言して(¬p∨q)∧(p∨¬q)(\neg p\lor q)\land(p\lor\neg q)を得る。

  3. Γ∪{φ}\Gamma\cup\{\varphi\}の各論理式に現れる命題変数は有限個であり、Γ\Gammaは有限集合であるから、Γ∪{φ}\Gamma\cup\{\varphi\}のいずれかの論理式に現れる相異なる命題変数の全体は有限集合{p1,…,pn}\{p_1,\ldots,p_n\}である。手続きは、各a∈2na\in\mathbf 2^nについて、補題 1.4の付値vav_aのもとでΓ\Gammaの各論理式とφ\varphiの真理値を定理 4.1の証明と同じく構文木を下からたどって計算し、Γ\Gammaのすべての論理式が真でφ\varphiが偽となるaaが存在しなければ「帰結である」と出力し、存在すれば「帰結でない」と出力する。調べるaaは2n2^n個であり、各計算は有限回の操作で終わるので、手続きは停止する。

    出力の正しさを示す。Γ\Gammaのすべての論理式が真でφ\varphiが偽となるaaが存在すれば、vav_aはΓ⊨PLφ\Gamma\models_{\mathrm{PL}}\varphiへの反例であるから、「帰結でない」は正しい。逆にΓ⊨PLφ\Gamma\models_{\mathrm{PL}}\varphiでないとすると、Γ\Gammaのすべての論理式を真にしφ\varphiを偽にする付値v:P→2v:P\to\mathbf 2が存在する。b=(v(p1),…,v(pn))b=(v(p_1),\ldots,v(p_n))とおくと、vvとvbv_bはΓ∪{φ}\Gamma\cup\{\varphi\}の各論理式に現れる変数の上で一致するので、§E19.1 命題 2.3によりvbv_bもΓ\Gammaのすべての論理式を真にしφ\varphiを偽にする。したがって手続きは行bbを見つけて「帰結でない」と出力する。対偶により、「帰結である」と出力するのはΓ⊨PLφ\Gamma\models_{\mathrm{PL}}\varphiのときに限り、上の二つから出力は正しい。PPの残りの変数の値は計算に現れないので、PPが無限集合であっても調べる付値は2n2^n個で足りる。

    {p→q, q→r}\{p\to q,\ q\to r\}とp→rp\to rではn=3n=3である。p→rp\to rが偽となる行はp=1p=1かつr=0r=0の行に限る。その行でp→qp\to qが真であるにはq=1q=1でなければならず、q→rq\to rが真であるにはq=0q=0でなければならないので、二つの前提がともに真でp→rp\to rが偽となる行は存在しない。よって手続きは「帰結である」と出力し、{p→q, q→r}⊨PLp→r\{p\to q,\ q\to r\}\models_{\mathrm{PL}}p\to rである。{p→q, q}\{p\to q,\ q\}とppではn=2n=2であり、p=0p=0、q=1q=1の行でp→qp\to qとqqはともに真でppは偽である。よって手続きは「帰結でない」と出力し、この行の付値が反例である。

▨

参考文献

  1. Herbert B. Enderton, A Mathematical Introduction to Logic, 2nd ed., Academic Press, 2001.
  2. E. Mendelson, Introduction to Mathematical Logic, 6th ed., CRC Press, 2015.

前提記事