コンテンツへスキップ
Topos Uranos

要約

一つの真理関数を表す論理式は無限にあり、その中から適当に一つを取っても、それが何を言っているのかは見えない。この課では、どの論理式も同値を除いて収まる二つの型を定める。リテラルの連言の選言である選言標準形と、リテラルの選言の連言である連言標準形である。リテラル、節、基本連言を定義し、各リテラルを反対のリテラルに取り替えると否定が一方の形を他方に移すこと、すなわち両者の間の双対性を証明し、真理値表から主標準形を構成してそれが一意であることを証明する。存在定理には二つの証明を与える。一つは表による証明で、関数的完全性の系として得られる。もう一つは複雑さに関する帰納法による証明で、否定論理和という唯一の場合と、その証明が必要とする二重の帰納法の仮定を用いる。最後に、それだけの労力に見合う理由が見えてくる。連言標準形の恒真性と選言標準形の充足可能性は一目で判定できるのである。

学習目標

  1. リテラル、節、基本連言、および選言標準形または連言標準形にある論理式を見分け、記号列の性質である形と、意味の性質である同値とを区別する。
  2. 真理値表から論理式の主選言標準形と主連言標準形を構成し、主標準形が一意であり、論理式の同値類を決定することを証明する。
  3. 双対性、一般化されたド・モルガンの法則と分配法則、意味論的置換を用いて、すべての論理式がある選言標準形およびある連言標準形と同値であることを、複雑さに関する帰納法で証明する。
  4. 連言標準形の恒真性と選言標準形の充足可能性を一目で判定し、標準形を意味論的帰結と標準形の最小の大きさの評価に応用する。

この単元のこれまでの課では、論理式に意味が与えられた。命題論理の意味論の課は各付値をすべての論理式に拡張した。意味論的帰結と同値の課は同値 φ≡ψ\varphi \eqsem \psi を定義し、意味論的置換を証明した。一般化されたド・モルガンの法則と分配法則の課はそれらの法則を nn 個の論理式の連言と選言に拡張した。そして関数的完全性の課は、すべての真理関数がある論理式によって表されることを示した。ところが、一つの真理関数は無限に多くの論理式によって表され、それらは互いに大きく異なりうる。(v1→v2)(v_1 \rightarrow v_2)、¬(v1∧¬v2)\neg(v_1 \wedge \neg v_2)、(((v1↓v1)↓v2)↓((v1↓v1)↓v2))(((v_1 \downarrow v_1) \downarrow v_2) \downarrow ((v_1 \downarrow v_1) \downarrow v_2)) は同じものの三つの名前である。そうであるならば、各同値類から決まった形の代表を選ぶのがよい。それは苦労なく読め、いくつかの問いには見るだけで答えられる。それが標準形である。

リテラル、節、標準形

一般化された法則の課から、nn 個の論理式の連言と選言の記法を思い出そう。これは再帰によって左結合で定義され、論理式が一つだけのときはその論理式自身である。

⋀i=11φi=φ1,⋀i=1n+1φi=(⋀i=1nφi∧φn+1)\bigwedge_{i=1}^{1} \varphi_i = \varphi_1, \qquad \bigwedge_{i=1}^{n + 1} \varphi_i = \left( \bigwedge_{i=1}^{n} \varphi_i \wedge \varphi_{n + 1} \right)
⋁i=11φi=φ1,⋁i=1n+1φi=(⋁i=1nφi∨φn+1)\bigvee_{i=1}^{1} \varphi_i = \varphi_1, \qquad \bigvee_{i=1}^{n + 1} \varphi_i = \left( \bigvee_{i=1}^{n} \varphi_i \vee \varphi_{n + 1} \right)

同じ課で、項の順序とまとめ方は同値を除いて論理式を変えないこと(一般化された結合律と、順序と重複への非依存性)が証明された。そのため、括弧を省いて φ1∧φ2∧⋯∧φn\varphi_1 \wedge \varphi_2 \wedge \cdots \wedge \varphi_n とも書き、左結合のまとめ方を了解する。

リテラルとは、変数 vnv_n(正リテラルという)、または変数の否定 ¬vn\neg v_n(負リテラルという)である。リテラル ℓ\ell の反対のリテラルを ℓ∗\ell^{*} と書き、それは同じ変数で符号が逆のリテラルである。

ℓ=vn  ⇒  ℓ∗=¬vn,ℓ=¬vn  ⇒  ℓ∗=vn\ell = v_n \;\Rightarrow\; \ell^{*} = \neg v_n, \qquad \ell = \neg v_n \;\Rightarrow\; \ell^{*} = v_n

定義から (ℓ∗)∗=ℓ(\ell^{*})^{*} = \ell が従う。二つのリテラルは、一方が他方の反対のリテラルであるとき相補対をなす。たとえば v3v_3 と ¬v3\neg v_3 である。

節とはリテラルの選言 ⋁j=1kℓj\bigvee_{j=1}^{k} \ell_j であり、基本連言とはリテラルの連言 ⋀j=1kℓj\bigwedge_{j=1}^{k} \ell_j である。どちらの場合も k≥1k \geq 1 である。したがって、リテラル一つは節でもあり基本連言でもある。リテラルが節または基本連言の ℓj\ell_j の一つであるとき、そのリテラルはそこに現れるという。

論理式は、基本連言の選言であるとき選言標準形にあり、節の連言であるとき連言標準形にある。すなわち、それぞれ次の二つの形のいずれかであるときである。ここで mm と k1,…,kmk_1, \ldots, k_m は自然数であり、各 ℓi,j\ell_{i,j} はリテラルである。

⋁i=1m⋀j=1kiℓi,j,⋀i=1m⋁j=1kiℓi,j\bigvee_{i=1}^{m} \bigwedge_{j=1}^{k_i} \ell_{i,j}, \qquad \bigwedge_{i=1}^{m} \bigvee_{j=1}^{k_i} \ell_{i,j}

Φ\Phi が φ\varphi の選言標準形であるとは、それが選言標準形にあり、かつ φ≡Φ\varphi \eqsem \Phi であることをいう。連言標準形についても同様である。長さ kik_i は連言(または節)ごとに異なってよい。すべてに同じ個数のリテラルを要求すれば、繰り返しで埋めなければならなくなり、何も付け加えない。

例標準形にあるものとないもの

論理式 (v1∧¬v2)∨¬v3(v_1 \wedge \neg v_2) \vee \neg v_3 は選言標準形にあり、m=2m = 2、k1=2k_1 = 2、k2=1k_2 = 1 である。連言標準形にはない。連言ではないからである(その二つの成分は異なり、連言は二重否定である)。また節でもない。選言として読むと、項 (v1∧¬v2)(v_1 \wedge \neg v_2) をもち、それはリテラルでもリテラルの選言でもない。論理式 v1∧¬v2∧v3v_1 \wedge \neg v_2 \wedge v_3 は両方の形にある。ただ一つの基本連言(m=1m = 1)の選言として、また、それぞれリテラル一つからなる三つの節の連言として。同様に (¬v1∨v2)(\neg v_1 \vee v_2) は、節すなわち m=1m = 1 の連言標準形であると同時に、それぞれリテラル一つからなる二つの連言の選言標準形でもある。

(v1∧¬v2)∨¬v3,v1∧¬v2∧v3,¬v1∨v2(v_1 \wedge \neg v_2) \vee \neg v_3, \qquad v_1 \wedge \neg v_2 \wedge v_3, \qquad \neg v_1 \vee v_2

これに対して、(v1↓v2)(v_1 \downarrow v_2) と ¬(v1→v2)\neg(v_1 \rightarrow v_2) はどちらの形にもない。ただし前者は (¬v1∧¬v2)(\neg v_1 \wedge \neg v_2) と、後者は (v1∧¬v2)(v_1 \wedge \neg v_2) と同値であり、これらは標準形にある。

(v1↓v2)≡¬v1∧¬v2,¬(v1→v2)≡v1∧¬v2(v_1 \downarrow v_2) \eqsem \neg v_1 \wedge \neg v_2, \qquad \neg(v_1 \rightarrow v_2) \eqsem v_1 \wedge \neg v_2

「標準形にある」とは何を意味するのか、立ち止まって考える価値がある。それは白丸と黒丸の記号列の性質であって、その意味の性質ではない。自然数と論理式に関する帰納法の課は一意読み取り可能性を証明したので、論理式が選言であるかどうか、そして何の選言であるかという問いには答えがただ一つしかない。ところが、公式の略記のために、標準形に見えないのに標準形にある論理式がある。含意 (v1→v2)(v_1 \rightarrow v_2) は (¬v1∨v2)(\neg v_1 \vee v_2) と定義される。それがこの節と同値なのではなく、同じ記号列そのものなのであり、したがってすでに標準形にある。さらに意外なのは二重否定である。¬\neg と ∨\vee の定義により、記号列 (φ∨φ)(\varphi \vee \varphi) は ¬(φ↓φ)\neg(\varphi \downarrow \varphi)、すなわち ¬¬φ\neg\neg\varphi である。ゆえに ¬¬v1\neg\neg v_1 はリテラルではないが、一字一字、節 (v1∨v1)(v_1 \vee v_1) である。

(φ∨φ)=¬(φ↓φ)=¬¬φ(\varphi \vee \varphi) = \neg(\varphi \downarrow \varphi) = \neg\neg\varphi

連言と選言の値

意味論の課から派生結合子の値を借りる。v(¬φ)=1−v(φ)v(\neg\varphi) = 1 - v(\varphi)。v(φ∧ψ)=v(φ) v(ψ)v(\varphi \wedge \psi) = v(\varphi)\,v(\psi) は値 11 をとり、それは両方が値 11 をとるとき、かつそのときに限る。v(φ∨ψ)=0v(\varphi \vee \psi) = 0 は、両方が値 00 をとるとき、かつそのときに限る。一般化されたド・モルガンの法則と分配法則の課は、項の個数に関する帰納法によって、これらを nn 個の論理式に拡張した。それが値の補題である。すべての付値 vv について、連言 ⋀i=1nφi\bigwedge_{i=1}^{n} \varphi_i が値 11 を vv でとるのは、各 φi\varphi_i が値 11 を vv でとるとき、かつそのときに限り、選言 ⋁i=1nφi\bigvee_{i=1}^{n} \varphi_i が値 11 を vv でとるのは、ある φi\varphi_i が値 11 を vv でとるとき、かつそのときに限る。ここでは証明を繰り返さずに引用するこの補題が、任意の標準形の値を計算する道具である。

補題リテラルの否定

すべてのリテラル ℓ\ell について、ℓ\ell の否定はその反対のリテラル ¬ℓ≡ℓ∗\neg\ell \eqsem \ell^{*} と同値である。特に、v(ℓ∗)=1−v(ℓ)v(\ell^{*}) = 1 - v(\ell) がすべての付値 vv について成り立つ。

証明

  1. ℓ=vn  ⇒  ¬ℓ=¬vn=ℓ∗\ell = v_n \;\Rightarrow\; \neg\ell = \neg v_n = \ell^{*}

    ℓ\ell が変数 vnv_n ならば、その反対のリテラルは ¬vn\neg v_n であり、これはちょうど記号列 ¬ℓ\neg\ell である。証明すべきことは何もない。

  2. ℓ=¬vn  ⇒  ¬ℓ=¬¬vn≡vn=ℓ∗\ell = \neg v_n \;\Rightarrow\; \neg\ell = \resaltar{\neg\neg v_n} \eqsem v_n = \ell^{*}

    ℓ\ell が ¬vn\neg v_n ならば、その否定は ¬¬vn\neg\neg v_n であり、これはリテラルではない。二重否定の法則(意味論的帰結と同値の課)により、それは vnv_n と同値であり、これは ℓ\ell の反対のリテラルである。

  3. v(ℓ∗)=v(¬ℓ)=1−v(ℓ)v(\ell^{*}) = v(\neg\ell) = 1 - v(\ell)

    どちらの場合も、ℓ∗\ell^{*} と ¬ℓ\neg\ell はすべての付値で同じ値をとり、¬ℓ\neg\ell の値は否定の値によって与えられる。

二つ目の場合は見落としやすい。標準形を否定するとき、リテラルの代わりに ¬ℓi,j\neg\ell_{i,j} と書きたくなるが、¬¬vn\neg\neg v_n はリテラルではない。結果を型に戻すのは二重否定である。

補題基本連言と節

基本連言が充足可能であるのは、相補対を一つも含まないとき、かつそのときに限る。節が恒真であるのは、ある相補対を含むとき、かつそのときに限る。

証明

  1. v(ℓ) v(ℓ∗)=v(ℓ) (1−v(ℓ))=0v(\ell)\,v(\ell^{*}) = v(\ell)\,(1 - v(\ell)) = 0

    基本連言が ℓ\ell と ℓ∗\ell^{*} を含むならば、前の補題により、すべての付値で二つのうち一方が値 00 をとる。値の補題により、その連言はすべての付値で値 00 をとる。

  2. vn=ℓj  ⇒  v(vn)=1,¬vn=ℓj  ⇒  v(vn)=0\dato{val}{v_n = \ell_j \;\Rightarrow\; v(v_n) = 1, \qquad \neg v_n = \ell_j \;\Rightarrow\; v(v_n) = 0}

    相補対を一つも含まないならば、正リテラルとしてそこに現れる各変数に 11 を、負リテラルとしてそこに現れる各変数に 00 を与える付値を定義する(その他の変数には 00)。どの変数も両方の仕方で現れることはないので、この定義は矛盾しない。

  3. v(⋀j=1kℓj)=1v\left( \bigwedge_{j=1}^{k} \ell_j \right) = 1

    その付値では、そのリテラルはすべて値 11 をとり、値の補題によりその連言は値 11 をとる。それは充足可能である。

  4. v(ℓ)+v(ℓ∗)=1v(\ell) + v(\ell^{*}) = 1

    節が ℓ\ell と ℓ∗\ell^{*} を含むならば、すべての付値で二つのうち一方が値 11 をとり、その節は値 11 をとる。それは恒真である。

  5. v(⋁j=1kℓj)=0v\left( \bigvee_{j=1}^{k} \ell_j \right) = 0

    相補対を一つも含まないならば、その正の変数に 00 を、否定された変数に 11 を与える付値は、そのリテラルすべてに値 00 をとらせる。値の補題により、その節はこの付値で値 00 をとり、恒真ではない。