この記事は,
旧ブログ から移植された記事です. よって, その内容として,
旧ブログ に依存した文脈が含まれている可能性があります. 予めご了承下さい.
ブール代数は古典論理における命題論理と密接に関連している. 結論からいえば, 両者の違いは歴史的な背景ぐらいであり, 殆どの場合は同等の理論であるということができる. ブール代数はその応用として論理回路の構築に直接役立つことから, 計算機科学, とくにハードウェアの分野において重宝される代数系の 1 つである.
ブール代数の公理とその定理
次に示すのはブール代数の公理系である. 公理系に関する詳細は証明理論 (TODO) の冒頭を参照のこと.
半順序集合 ( B , ∨ , ∧ , ′ , 0 , 1 ) (B,\lor,\land,',0,1) ( B , ∨ , ∧ , ′ , 0 , 1 ) が可補分配束 ならば, ( B , ∨ , ∧ , ′ , 0 , 1 ) (B,\lor,\land,',0,1) ( B , ∨ , ∧ , ′ , 0 , 1 ) はブール代数である. すなわち, x , y , z ∈ B x,y,z\in B x , y , z ∈ B に対して, 次のすべての公理を満たした ( B , ∨ , ∧ , ′ , 0 , 1 ) (B,\lor,\land,',0,1) ( B , ∨ , ∧ , ′ , 0 , 1 ) はブール代数である.
可換律 \htmlId{boolean_algebra1}{\rm 可換律} 可換律 : x ∧ y = y ∧ x , x ∨ y = y ∨ x x\land y=y\land x,x\lor y=y\lor x x ∧ y = y ∧ x , x ∨ y = y ∨ x
分配律 \htmlId{boolean_algebra2}{\rm 分配律} 分配律 : ( x ∨ y ) ∧ z = ( x ∧ z ) ∨ ( y ∧ z ) , ( x ∧ y ) ∨ z = ( x ∨ z ) ∧ ( y ∨ z ) (x\lor y)\land z=(x\land z)\lor(y\land z),(x\land y)\lor z=(x\lor z)\land(y\lor z) ( x ∨ y ) ∧ z = ( x ∧ z ) ∨ ( y ∧ z ) , ( x ∧ y ) ∨ z = ( x ∨ z ) ∧ ( y ∨ z )
同一律 \htmlId{boolean_algebra3}{\rm 同一律} 同一律 : ∀ x ∈ L ^\forall x\in L ∀ x ∈ L に対して x ∧ 1 = x , x ∨ 0 = x x\land 1=x,x\lor 0=x x ∧ 1 = x , x ∨ 0 = x . ここで 1 1 1 は最大限, 単位元である. 0 0 0 は最小限, 零元である.
補元律 \htmlId{boolean_algebra4}{\rm 補元律} 補元律 : ∃ x ′ ∈ L s . t . ∀ x ∈ L , x ∨ x ′ = 1 , x ∧ x ′ = 0 ^\exists x'\in L\ {\rm s.t.}\ ^\forall x\in L, x\lor x'=1, x\land x'=0 ∃ x ′ ∈ L s.t. ∀ x ∈ L , x ∨ x ′ = 1 , x ∧ x ′ = 0
また, この 1 , 0 1,0 1 , 0 からのみ成る集合をブール領域, ブール代数の下に書かれた式をブール式, n ∈ N n\in\mathbb{N} n ∈ N 個のブール領域の引数をとり, 1 個のブール領域の値となる関数 f : B n → B f:B^n\to B f : B n → B をブール関数という. 例えば, 2 変数ブール関数 f ( x 1 , x 2 ) f(x_1,x_2) f ( x 1 , x 2 ) では x 1 , x 2 x_1,x_2 x 1 , x 2 がそれぞれ 1 , 0 1,0 1 , 0 のいずれかとなるので, 2 4 = 16 2^4=16 2 4 = 16 通りの 2 変数ブール式が存在することとなる. 以下, 演算の優先順序は左結合性で ′ , ∧ , ∨ ',\land,\lor ′ , ∧ , ∨ の順とする. ただし, 括弧内の演算はより優先される.
さてブール代数の公理における乗法 ∧ \land ∧ と加法 ∨ \lor ∨ , および 1 , 0 1, 0 1 , 0 をそれぞれ入れ替えると, 再びブール代数の公理である. これは双対 の原理という公理である.
ブール代数で成立する文/式は, そこに現れるすべての ∨ , ∧ , 0 , 1 \lor ,\land,0,1 ∨ , ∧ , 0 , 1 をそれぞれ ∧ , ∨ , 1 , 0 \land,\lor ,1,0 ∧ , ∨ , 1 , 0 で置き換えても成立する.
これらの公理から補元の一意性 , べき等律 , 有界律 , 吸収律 , 結合律 , 対合律 , ド・モルガンの法則 , シャノンの展開定理 が導出可能である. 以下 x , y , z ∈ B x,y,z\in B x , y , z ∈ B とする.
2 つの x x x の補元 x 1 ′ , x 2 ′ x'_1,x'_2 x 1 ′ , x 2 ′ を仮定する. x 1 ′ = x 1 ′ ∧ 1 ( ∵ 公理 3 : 同一律 ) = x 1 ′ ∧ ( x ∨ x 2 ′ ) ( ∵ 公理 4 : 補元律 ) = ( x 1 ′ ∧ x ) ∨ ( x 1 ′ ∧ x 2 ′ ) ( ∵ 公理 2 : 分配律 ) = 0 ∨ ( x 1 ′ ∧ x 2 ′ ) ( ∵ 公理 4 : 補元律 ) = ( x ∧ x 2 ′ ) ∨ ( x 1 ′ ∧ x 2 ′ ) ( ∵ 公理 4 : 補元律 ) = x 2 ′ ∧ ( x ∨ x 1 ′ ) ( ∵ 公理 2 : 分配律 ) = x 2 ′ ∧ 1 ( ∵ 公理 4 : 補元律 ) = x 2 ′ ( ∵ 公理 3 : 同一律 ) \begin{aligned}
x'_1&=&x'_1\land1&(\because {\rm \href{#boolean_algebra3}{公理 3}:同一律})\\
&=&x'_1\land(x\lor x'_2)&(\because {\rm \href{#boolean_algebra4}{公理 4}:補元律})\\
&=&(x'_1\land x)\lor (x'_1\land x'_2)&(\because {\rm \href{#boolean_algebra2}{公理 2}:分配律})\\
&=&0\lor (x'_1\land x'_2)&(\because {\rm \href{#boolean_algebra4}{公理 4}:補元律})\\
&=&(x\land x'_2)\lor (x'_1\land x'_2)&(\because {\rm \href{#boolean_algebra4}{公理 4}:補元律})\\
&=&x'_2\land(x\lor x'_1)&(\because {\rm \href{#boolean_algebra2}{公理 2}:分配律})\\
&=&x'_2\land1&(\because {\rm \href{#boolean_algebra4}{公理 4}:補元律})\\
&=&x'_2&(\because {\rm \href{#boolean_algebra3}{公理 3}:同一律})
\end{aligned}
x 1 ′ = = = = = = = = x 1 ′ ∧ 1 x 1 ′ ∧ ( x ∨ x 2 ′ ) ( x 1 ′ ∧ x ) ∨ ( x 1 ′ ∧ x 2 ′ ) 0 ∨ ( x 1 ′ ∧ x 2 ′ ) ( x ∧ x 2 ′ ) ∨ ( x 1 ′ ∧ x 2 ′ ) x 2 ′ ∧ ( x ∨ x 1 ′ ) x 2 ′ ∧ 1 x 2 ′ ( ∵ 公理 3 : 同一律 ) ( ∵ 公理 4 : 補元律 ) ( ∵ 公理 2 : 分配律 ) ( ∵ 公理 4 : 補元律 ) ( ∵ 公理 4 : 補元律 ) ( ∵ 公理 2 : 分配律 ) ( ∵ 公理 4 : 補元律 ) ( ∵ 公理 3 : 同一律 ) より x x x の補元が一意であることは明らか.
以下が成り立つ.
x ∧ x ⇔ x x\land x\Leftrightarrow x x ∧ x ⇔ x
x ∨ x ⇔ x x\lor x\Leftrightarrow x x ∨ x ⇔ x
以下が成り立つ.
x ∨ 1 = 1 x\lor 1=1 x ∨ 1 = 1
x ∧ 0 = 0 x\land 0=0 x ∧ 0 = 0
x ∨ 1 = ( x ∨ 1 ) ∧ 1 ( ∵ 公理 3 : 同一律 ) = ( x ∨ 1 ) ( x ∨ x ′ ) ( ∵ 公理 4 : 補元律 ) = x ∨ ( 1 ∧ x ′ ) ( ∵ 公理 2 : 分配律 ) = x ∨ x ′ ( ∵ 公理 1 , 公理 3 : 可換律 , 同一律 ) = 1 x ∧ 0 = x ∧ x ∧ x ′ ( ∵ 公理 4 : 補元律 ) = x ∧ x ′ ( ∵ 定理 : べき等律 ) = 0 ( ∵ 公理 4 : 補元律 ) \begin{aligned}
x\lor 1&=&(x\lor 1)\land1&(\because {\rm \href{#boolean_algebra3}{公理 3}:同一律})\\
&=&(x\lor 1)(x\lor x')&(\because {\rm \href{#boolean_algebra4}{公理 4}:補元律})\\
&=&x\lor (1\land x')&(\because {\rm \href{#boolean_algebra2}{公理 2}:分配律})\\
&=&x\lor x'&(\because {\rm \href{#boolean_algebra1}{公理1}, \href{#boolean_algebra3}{公理3}:可換律, 同一律})\\
&=&1\\
x\land0&=&x\land x\land x'&(\because {\rm \href{#boolean_algebra4}{公理 4}:補元律})\\
&=&x\land x'&(\because {\rm 定理:\href{#idempotence}{べき等律}})\\
&=&0&(\because {\rm \href{#boolean_algebra4}{公理 4}:補元律})
\end{aligned}
x ∨ 1 x ∧ 0 = = = = = = = = ( x ∨ 1 ) ∧ 1 ( x ∨ 1 ) ( x ∨ x ′ ) x ∨ ( 1 ∧ x ′ ) x ∨ x ′ 1 x ∧ x ∧ x ′ x ∧ x ′ 0 ( ∵ 公理 3 : 同一律 ) ( ∵ 公理 4 : 補元律 ) ( ∵ 公理 2 : 分配律 ) ( ∵ 公理 1 , 公理 3 : 可換律 , 同一律 ) ( ∵ 公理 4 : 補元律 ) ( ∵ 定理 : べき等律 ) ( ∵ 公理 4 : 補元律 )
以下が成り立つ.
x ∨ x ∧ y = x ∧ ( x ∨ y ) = x x\lor x\land y=x\land(x\lor y)=x x ∨ x ∧ y = x ∧ ( x ∨ y ) = x
x ∨ x ∧ y = ( x ∧ 1 ) ∨ ( x ∧ y ) ( ∵ 公理 3 : 同一律 ) = x ∧ ( 1 ∨ y ) ( ∵ 公理 2 : 分配律 ) = x ∧ 1 ( ∵ 公理 1 : 可換律 , 定理 : 有界律 ) = x ( ∵ 公理 3 : 同一律 ) x ∧ ( x ∨ y ) = ( x ∨ 0 ) ( x ∨ y ) ( ∵ 公理 3 : 同一律 ) = ( 0 ∧ y ) ∨ x ( ∵ 公理 2 : 分配律 ) = x ∨ 0 ( ∵ 公理 1 : 可換律 , 定理 : 有界律 ) = x ( ∵ 公理 3 : 同一律 ) \begin{aligned}
x\lor x\land y&=&(x\land1)\lor (x\land y)&(\because {\rm \href{#boolean_algebra3}{公理3}: 同一律})\\
&=&x\land(1\lor y)&(\because {\rm \href{#boolean_algebra2}{公理2}:分配律})\\
&=&x\land1&(\because {\rm \href{#boolean_algebra1}{公理 1}: 可換律, 定理: \href{#bounded}{有界律}} )\\
&=&x&(\because {\rm\href{#boolean_algebra3}{公理 3}: 同一律})\\
x\land(x\lor y)&=&(x\lor 0)(x\lor y)&(\because {\rm \href{#boolean_algebra3}{公理3}: 同一律})\\
&=&(0\land y)\lor x&(\because {\rm \href{#boolean_algebra2}{公理2}: 分配律})\\
&=&x\lor 0&(\because \rm{\href{#boolean_algebra1}{公理1}: 可換律,定理: \href{#bounded}{有界律}})\\
&=&x&(\because \rm{\href{#boolean_algebra3}{公理3}: 同一律})
\end{aligned} x ∨ x ∧ y x ∧ ( x ∨ y ) = = = = = = = = ( x ∧ 1 ) ∨ ( x ∧ y ) x ∧ ( 1 ∨ y ) x ∧ 1 x ( x ∨ 0 ) ( x ∨ y ) ( 0 ∧ y ) ∨ x x ∨ 0 x ( ∵ 公理 3 : 同一律 ) ( ∵ 公理 2 : 分配律 ) ( ∵ 公理 1 : 可換律 , 定理 : 有界律 ) ( ∵ 公理 3 : 同一律 ) ( ∵ 公理 3 : 同一律 ) ( ∵ 公理 2 : 分配律 ) ( ∵ 公理 1 : 可換律 , 定理 : 有界律 ) ( ∵ 公理 3 : 同一律 )
以下が成り立つ.
x ∨ ( y ∨ z ) = ( x ∨ y ) ∨ z x\lor(y\lor z)=(x\lor y)\lor z x ∨ ( y ∨ z ) = ( x ∨ y ) ∨ z
A = x ∨ ( y ∨ z ) , B = ( x ∨ y ) ∨ z A=x\lor (y\lor z), B=(x\lor y)\lor z A = x ∨ ( y ∨ z ) , B = ( x ∨ y ) ∨ z とおく. このとき,
x ∧ A = x ∧ ( x ∨ ( y ∨ z ) ) = x ( ∵ 定理 : 吸収律 ) x ∧ B = x ∧ ( ( x ∨ y ) ∨ z ) = x ∧ ( x ∨ y ) ∨ x ∧ z ( ∵ 公理 2 : 分配律 ) = x ∨ x ∧ z ( ∵ 定理 : 吸収律 ) = x ( ∵ 定理 : 吸収律 ) \begin{aligned}
x\land A&=&x\land(x\lor (y\lor z))\\
&=&x&(\because {\rm 定理: \href{#absorption}{吸収律}})\\
x\land B&=&x\land((x\lor y)\lor z)\\
&=&x\land(x\lor y)\lor x\land z&(\because {\rm \href{#boolean_algebra2}{公理2}: 分配律})\\
&=&x\lor x\land z&(\because {\rm 定理: \href{#absorption}{吸収律}})\\
&=&x&(\because {\rm 定理: \href{#absorption}{吸収律}})
\end{aligned} x ∧ A x ∧ B = = = = = = x ∧ ( x ∨ ( y ∨ z )) x x ∧ (( x ∨ y ) ∨ z ) x ∧ ( x ∨ y ) ∨ x ∧ z x ∨ x ∧ z x ( ∵ 定理 : 吸収律 ) ( ∵ 公理 2 : 分配律 ) ( ∵ 定理 : 吸収律 ) ( ∵ 定理 : 吸収律 )
ゆえに x ∧ A = x ∧ B = x (L1) x\land A=x\land B=x\tag{L1} x ∧ A = x ∧ B = x ( L1 ) また,
x ′ ∧ A = x ′ ∧ ( x ∨ ( y ∨ z ) ) = x ′ ∧ x ∨ x ′ ∧ ( y ∨ z ) ( ∵ 公理 2 : 分配律 ) = x ′ ∧ ( y ∨ z ) ∨ 0 ( ∵ 公理 1 , 公理 4 : 可換律 , 補元律 ) = x ′ ∧ ( y ∨ z ) ( ∵ 公理 3 : 同一律 ) x ′ ∧ B = x ′ ∧ ( ( x ∨ y ) ∨ z ) = x ′ ∧ ( x ∨ y ) ∨ x ′ ∧ z ( ∵ 公理 2 : 分配律 ) = ( x ′ ∧ x ∨ x ′ ∧ y ) ∨ x ′ ∧ z ( ∵ 公理 2 : 分配律 ) = ( 0 ∨ x ′ ∧ y ) ∨ x ′ ∧ z ( ∵ 公理 4 : 補元律 ) = x ′ ∧ y ∨ x ′ ∧ z ( ∵ 公理 3 : 同一律 ) = x ′ ∧ ( y ∨ z ) ( ∵ 公理 2 : 分配律 ) \begin{aligned}
x'\land A&=&x'\land(x\lor (y\lor z))\\
&=&x'\land x\lor x'\land(y\lor z)&(\because {\rm \href{#boolean_algebra2}{公理2}: 分配律})\\
&=&x'\land(y\lor z)\lor 0&(\because {\rm \href{#boolean_algebra1}{公理1}, \href{#boolean_algebra4}{公理 4}: 可換律, 補元律})\\
&=&x'\land(y\lor z)&(\because {\rm \href{#boolean_algebra3}{公理3}: 同一律})\\
x'\land B&=&x'\land((x\lor y)\lor z)\\
&=&x'\land(x\lor y)\lor x'\land z&(\because {\rm \href{#boolean_algebra2}{公理2}: 分配律})\\
&=&(x'\land x\lor x'\land y)\lor x'\land z&(\because {\rm \href{#boolean_algebra2}{公理2}: 分配律})\\
&=&(0\lor x'\land y)\lor x'\land z&(\because {\rm \href{#boolean_algebra4}{公理 4}:補元律})\\
&=&x'\land y\lor x'\land z&(\because {\rm \href{#boolean_algebra3}{公理3}: 同一律})\\
&=&x'\land(y\lor z)&(\because {\rm \href{#boolean_algebra2}{公理2}: 分配律})
\end{aligned} x ′ ∧ A x ′ ∧ B = = = = = = = = = = x ′ ∧ ( x ∨ ( y ∨ z )) x ′ ∧ x ∨ x ′ ∧ ( y ∨ z ) x ′ ∧ ( y ∨ z ) ∨ 0 x ′ ∧ ( y ∨ z ) x ′ ∧ (( x ∨ y ) ∨ z ) x ′ ∧ ( x ∨ y ) ∨ x ′ ∧ z ( x ′ ∧ x ∨ x ′ ∧ y ) ∨ x ′ ∧ z ( 0 ∨ x ′ ∧ y ) ∨ x ′ ∧ z x ′ ∧ y ∨ x ′ ∧ z x ′ ∧ ( y ∨ z ) ( ∵ 公理 2 : 分配律 ) ( ∵ 公理 1 , 公理 4 : 可換律 , 補元律 ) ( ∵ 公理 3 : 同一律 ) ( ∵ 公理 2 : 分配律 ) ( ∵ 公理 2 : 分配律 ) ( ∵ 公理 4 : 補元律 ) ( ∵ 公理 3 : 同一律 ) ( ∵ 公理 2 : 分配律 )
ゆえに x ′ ∧ A = x ′ ∧ B = x ′ ∧ ( y ∨ z ) (L2) x'\land A=x'\land B=x'\land(y\lor z)\tag{L2} x ′ ∧ A = x ′ ∧ B = x ′ ∧ ( y ∨ z ) ( L2 ) 従って,
A = A ∧ 1 ( ∵ 公理 3 : 同一律 ) = A ∧ ( x ∨ x ′ ) ( ∵ 公理 4 : 補元律 ) = A ∧ x ∨ A ∧ x ′ ( ∵ 公理 2 : 分配律 ) = x ∧ A ∨ x ′ ∧ A ( ∵ 公理 1 : 可換律 ) = x ∧ B ∨ x ′ ∧ B ( ∵ , より ) = B ( x ∨ x ′ ) ( ∵ 公理 2 : 分配律 ) = B ∧ 1 ( ∵ 公理 4 : 補元律 ) = B ( ∵ 公理 3 : 同一律 ) \begin{aligned}
A&=&A\land1&(\because {\rm \href{#boolean_algebra3}{公理3}: 同一律})\\
&=&A\land(x\lor x')&(\because {\rm \href{#boolean_algebra4}{公理 4}:補元律})\\
&=&A\land x\lor A\land x'&(\because {\rm \href{#boolean_algebra2}{公理2}: 分配律})\\
&=&x\land A\lor x'\land A&(\because {\rm \href{#boolean_algebra1}{公理1}: 可換律})\\
&=&x\land B\lor x'\land B&(\because,\ {\rm より})\\
&=&B(x\lor x')&(\because {\rm \href{#boolean_algebra2}{公理2}: 分配律})\\
&=&B\land1&(\because {\rm \href{#boolean_algebra4}{公理 4}:補元律})\\
&=&B&(\because {\rm \href{#boolean_algebra3}{公理3}: 同一律})
\end{aligned} A = = = = = = = = A ∧ 1 A ∧ ( x ∨ x ′ ) A ∧ x ∨ A ∧ x ′ x ∧ A ∨ x ′ ∧ A x ∧ B ∨ x ′ ∧ B B ( x ∨ x ′ ) B ∧ 1 B ( ∵ 公理 3 : 同一律 ) ( ∵ 公理 4 : 補元律 ) ( ∵ 公理 2 : 分配律 ) ( ∵ 公理 1 : 可換律 ) ( ∵ , より ) ( ∵ 公理 2 : 分配律 ) ( ∵ 公理 4 : 補元律 ) ( ∵ 公理 3 : 同一律 )
また, 双対の原理より x ( y ∧ z ) = ( x ∧ y ) ∧ z x(y\land z)=(x\land y)\land z x ( y ∧ z ) = ( x ∧ y ) ∧ z .
以下が成り立つ.
( x ′ ) ′ = x (x')'=x ( x ′ ) ′ = x
( x ′ ) ′ = ( x ′ ) ′ ∨ 0 ( ∵ 公理 3 : 同一律 ) = ( x ′ ) ′ ∨ x ∧ x ′ ( ∵ 公理 4 : 補元律 ) = ( ( x ′ ) ′ ∨ x ) ( ( x ′ ) ′ ∨ x ′ ) ( ∵ 公理 2 : 分配律 ) = ( x ∨ ( x ′ ) ′ ) ∧ 1 ( ∵ 公理 1 , 公理 4 : 可換律 , 補元律 ) = ( x ∨ ( x ′ ) ′ ) ( x ∨ x ′ ) ( ∵ 公理 4 : 補元律 ) = x ∨ ( ( x ′ ) ′ ∧ x ′ ) ( ∵ 公理 2 : 分配律 ) = x ∨ 0 ( ∵ 公理 4 : 補元律 ) = x ( ∵ 公理 3 : 同一律 ) \begin{aligned}
(x')'&=&(x')'\lor 0&(\because \rm{\href{#boolean_algebra3}{公理3}: 同一律})\\
&=&(x')'\lor x\land x'&(\because {\href{#boolean_algebra4}{公理 4}:補元律})\\
&=&((x')'\lor x)((x')'\lor x')&(\because {\rm \href{#boolean_algebra2}{公理 2}:分配律})\\
&=&(x\lor (x')')\land1&(\because {\rm \href{#boolean_algebra1}{公理1}, \href{#boolean_algebra4}{公理 4}:可換律, 補元律})\\
&=&(x\lor (x')')(x\lor x')&(\because {\rm \href{#boolean_algebra4}{公理 4}: 補元律})\\
&=&x\lor ((x')'\land x')&(\because {\rm \href{#boolean_algebra2}{公理2}:分配律})\\
&=&x\lor 0&(\because {\rm \href{#boolean_algebra4}{公理 4}:補元律})\\
&=&x&(\because {\rm \href{#boolean_algebra3}{公理3}: 同一律})
\end{aligned} ( x ′ ) ′ = = = = = = = = ( x ′ ) ′ ∨ 0 ( x ′ ) ′ ∨ x ∧ x ′ (( x ′ ) ′ ∨ x ) (( x ′ ) ′ ∨ x ′ ) ( x ∨ ( x ′ ) ′ ) ∧ 1 ( x ∨ ( x ′ ) ′ ) ( x ∨ x ′ ) x ∨ (( x ′ ) ′ ∧ x ′ ) x ∨ 0 x ( ∵ 公理 3 : 同一律 ) ( ∵ 公理 4 : 補元律 ) ( ∵ 公理 2 : 分配律 ) ( ∵ 公理 1 , 公理 4 : 可換律 , 補元律 ) ( ∵ 公理 4 : 補元律 ) ( ∵ 公理 2 : 分配律 ) ( ∵ 公理 4 : 補元律 ) ( ∵ 公理 3 : 同一律 )
以下が成り立つ. ( x ∨ y ) ′ = x ′ ∧ y ′ (x\lor y)'=x'\land y' ( x ∨ y ) ′ = x ′ ∧ y ′
x ′ ∧ y ′ x'\land y' x ′ ∧ y ′ が ( x ∨ y ) (x\lor y) ( x ∨ y ) の補元でなければならない. すなわち, 公理4 : 補元律より ( x ∨ y ) ∨ ( x ′ ∧ y ′ ) = 1 (x\lor y)\lor (x'\land y')=1 ( x ∨ y ) ∨ ( x ′ ∧ y ′ ) = 1 および ( x ∨ y ) ∧ ( x ′ ∧ y ′ ) = 0 (x\lor y)\land(x'\land y')=0 ( x ∨ y ) ∧ ( x ′ ∧ y ′ ) = 0 が同時に成り立つことを示せばよい.
( x ∨ y ) ∨ ( x ′ ∧ y ′ ) = ( ( x ∨ y ) ∨ x ′ ) ( ( x ∨ y ) ∨ y ′ ) ( ∵ 公理 2 : 分配律 ) = ( y ∨ ( x ∨ x ′ ) ) ( x ∨ ( y ∨ y ′ ) ) ( ∵ 公理 1 : 可換律 , 定理 : 結合律 ) = ( y ∨ 1 ) ( x ∨ 1 ) ( ∵ 公理 4 : 補元律 ) = 1 ∧ 1 ( ∵ 定理 : 有界律 ) = 1 ( ∵ 定理 : べき等律 ) ( x ∨ y ) ∧ ( x ′ ∧ y ′ ) = ( x ′ ∧ y ′ ) ∧ ( x ∨ y ) ( ∵ 公理 1 : 可換律 ) = ( ( x ′ ∧ y ′ ) ∧ x ) ∨ ( ( x ′ ∧ y ′ ) ∧ y ) ( ∵ 公理 2 : 分配律 ) = ( y ′ ∧ ( x ∧ x ′ ) ) ∨ ( x ′ ∧ ( y ∧ y ′ ) ) ( ∵ 公理 1 : 可換律 , 定理 : 結合律 ) = ( y ′ ∨ 0 ) ∨ ( x ′ ∧ 1 ) ( ∵ 公理 4 : 補元律 ) = 0 ∨ 0 ( ∵ 定理 : 有界律 ) = 0 ( ∵ 定理 : べき等律 ) \begin{aligned}
(x\lor y)\lor (x'\land y')&=&((x\lor y)\lor x')((x\lor y)\lor y')&(\because {\rm \href{#boolean_algebra2}{公理2}:分配律})\\
&=&(y\lor (x\lor x'))(x\lor (y\lor y'))&(\because {\rm \href{#boolean_algebra1}{公理1}: 可換律, 定理: \href{#associative}{結合律}})\\
&=&(y\lor 1)(x\lor 1)&(\because {\rm \href{#boolean_algebra4}{公理 4}:補元律})\\
&=&1\land1&(\because {\rm 定理: \href{#bounded}{有界律}} )\\
&=&1&(\because {\rm 定理:\href{#idempotence}{べき等律}})\\
(x\lor y)\land(x'\land y')&=&(x'\land y')\land(x\lor y)&(\because {\rm \href{#boolean_algebra1}{公理1}: 可換律})\\
&=&((x'\land y')\land x)\lor ((x'\land y')\land y)&(\because {\rm \href{#boolean_algebra2}{公理 2}:分配律})\\
&=&(y'\land(x\land x'))\lor (x'\land(y\land y'))&(\because {\rm \href{#boolean_algebra1}{公理1}: 可換律, 定理: \href{#associative}{結合律}})\\
&=&(y'\lor 0)\lor (x'\land1)&(\because {\rm \href{#boolean_algebra4}{公理 4}: 補元律})\\
&=&0\lor 0&(\because {\rm 定理: \href{#bounded}{有界律}} )\\
&=&0&(\because {\rm 定理:\href{#idempotence}{べき等律}})
\end{aligned} ( x ∨ y ) ∨ ( x ′ ∧ y ′ ) ( x ∨ y ) ∧ ( x ′ ∧ y ′ ) = = = = = = = = = = = (( x ∨ y ) ∨ x ′ ) (( x ∨ y ) ∨ y ′ ) ( y ∨ ( x ∨ x ′ )) ( x ∨ ( y ∨ y ′ )) ( y ∨ 1 ) ( x ∨ 1 ) 1 ∧ 1 1 ( x ′ ∧ y ′ ) ∧ ( x ∨ y ) (( x ′ ∧ y ′ ) ∧ x ) ∨ (( x ′ ∧ y ′ ) ∧ y ) ( y ′ ∧ ( x ∧ x ′ )) ∨ ( x ′ ∧ ( y ∧ y ′ )) ( y ′ ∨ 0 ) ∨ ( x ′ ∧ 1 ) 0 ∨ 0 0 ( ∵ 公理 2 : 分配律 ) ( ∵ 公理 1 : 可換律 , 定理 : 結合律 ) ( ∵ 公理 4 : 補元律 ) ( ∵ 定理 : 有界律 ) ( ∵ 定理 : べき等律 ) ( ∵ 公理 1 : 可換律 ) ( ∵ 公理 2 : 分配律 ) ( ∵ 公理 1 : 可換律 , 定理 : 結合律 ) ( ∵ 公理 4 : 補元律 ) ( ∵ 定理 : 有界律 ) ( ∵ 定理 : べき等律 )
また, 双対の原理 より ( x ∧ y ) ′ = x ′ ∨ y ′ (x\land y)'=x'\lor y' ( x ∧ y ) ′ = x ′ ∨ y ′ .
任意の n n n 変数ブール関数 f ( x 1 , x 2 , ⋯ , x n ) f(x_1,x_2,\cdots,x_n) f ( x 1 , x 2 , ⋯ , x n ) を x 1 x_1 x 1 について, 次のように展開できる.
f ( x 1 , x 2 , ⋯ , x n ) = ( x 1 ′ ∨ x 1 ) ∧ f ( x 1 , x 2 , ⋯ , x n ) ( ∵ 公理 4 , 公理 3 : 補元律 , 同一律 ) = x 1 ′ ∧ f ( x 1 , x 2 , ⋯ , x n ) ∨ x 1 ∧ f ( x 1 , x 2 , ⋯ , x n ) ( ∵ 公理 2 : 分配律 ) = x 1 ′ ∧ f ( 0 , x 2 , ⋯ , x n ) ∨ x 1 ∧ f ( 1 , x 2 , ⋯ , x n ) ( ∵ 以下に証明 ) \begin{aligned}
f(x_1,x_2,\cdots,x_n)&=&(x'_1\lor x_1)\land f(x_1,x_2,\cdots,x_n)&(\because {\rm \href{#boolean_algebra4}{公理 4}, \href{#boolean_algebra3}{公理 3} :補元律, 同一律})\\
&=&x'_1\land f(x_1,x_2,\cdots,x_n)\lor x_1\land f(x_1,x_2,\cdots,x_n)&(\because {\rm \href{#boolean_algebra2}{公理 2}:分配律})\\
&=&x'_1\land f(0,x_2,\cdots,x_n)\lor x_1\land f(1,x_2,\cdots,x_n)&(\because \href{#chanon_theorem_proof}{以下に証明})
\end{aligned} f ( x 1 , x 2 , ⋯ , x n ) = = = ( x 1 ′ ∨ x 1 ) ∧ f ( x 1 , x 2 , ⋯ , x n ) x 1 ′ ∧ f ( x 1 , x 2 , ⋯ , x n ) ∨ x 1 ∧ f ( x 1 , x 2 , ⋯ , x n ) x 1 ′ ∧ f ( 0 , x 2 , ⋯ , x n ) ∨ x 1 ∧ f ( 1 , x 2 , ⋯ , x n ) ( ∵ 公理 4 , 公理 3 : 補元律 , 同一律 ) ( ∵ 公理 2 : 分配律 ) ( ∵ 以下に証明 )
x 1 = 0 x_1=0 x 1 = 0 のとき, f ( 0 , x 2 , ⋯ , x n ) = 1 ∧ f ( 0 , x 2 , ⋯ , x n ) ∨ 0 ∧ f ( 1 , x 2 , ⋯ , x n ) = f ( 0 , x 2 , ⋯ , x n ) f(0,x_2,\cdots,x_n)=1\land f(0,x_2,\cdots,x_n)\lor 0\land f(1,x_2,\cdots,x_n)=f(0,x_2,\cdots,x_n) f ( 0 , x 2 , ⋯ , x n ) = 1 ∧ f ( 0 , x 2 , ⋯ , x n ) ∨ 0 ∧ f ( 1 , x 2 , ⋯ , x n ) = f ( 0 , x 2 , ⋯ , x n ) x 1 = 1 x_1=1 x 1 = 1 のとき, f ( 1 , x 2 , ⋯ , x n ) = 0 ∧ f ( 0 , x 2 , ⋯ , x n ) ∨ 1 ∧ f ( 1 , x 2 , ⋯ , x n ) = f ( 1 , x 2 , ⋯ , x n ) f(1,x_2,\cdots,x_n)=0\land f(0,x_2,\cdots,x_n)\lor 1\land f(1,x_2,\cdots,x_n)=f(1,x_2,\cdots,x_n) f ( 1 , x 2 , ⋯ , x n ) = 0 ∧ f ( 0 , x 2 , ⋯ , x n ) ∨ 1 ∧ f ( 1 , x 2 , ⋯ , x n ) = f ( 1 , x 2 , ⋯ , x n )
例として, f ( x 1 , x 2 , x 3 ) = x 1 ∧ x 2 ∨ x 2 ∧ x 3 ∨ x 1 ∧ x 3 f(x_1,x_2,x_3)=x_1\land x_2\lor x_2\land x_3\lor x_1\land x_3 f ( x 1 , x 2 , x 3 ) = x 1 ∧ x 2 ∨ x 2 ∧ x 3 ∨ x 1 ∧ x 3 を x 1 x_1 x 1 について展開すると,
f ( x 1 , x 2 , x 3 ) = x 1 ∧ x 2 ∨ x 2 ∧ x 3 ∨ x 1 ∧ x 3 = ( x 1 ′ ∨ x 1 ) ∧ f ( x 1 , x 2 , x 3 ) ( ∵ 公理 4 , 公理 3 : 補元律 , 同一律 ) = x 1 ′ ∧ f ( x 1 , x 2 , x 3 ) ∨ x 1 ∧ f ( x 1 , x 2 , x 3 ) ( ∵ 公理 2 : 分配律 ) = x 1 ′ ∧ f ( 0 , x 2 , x 3 ) ∨ x 1 ∧ f ( 1 , x 2 , x 3 ) ( ∵ 定理 : シャノンの展開定理 ) = x 1 ′ ∧ x 2 ∧ x 3 ∨ x 1 ∧ x 2 ∨ x 2 ∧ x 3 ∨ x 3 ( ∵ 公理 3 : 同一律 ) = x 1 ′ ∧ x 2 ∧ x 3 ∨ x 1 ∧ x 2 ∨ x 3 ( ∵ 公理 1 : 可換律 , 定理 : 吸収律 ) \begin{aligned}
f(x_1,x_2,x_3)&=&x_1\land x_2\lor x_2\land x_3\lor x_1\land x_3\\
&=&(x'_1\lor x_1)\land f(x_1,x_2,x_3)&(\because {\rm \href{#boolean_algebra4}{公理 4}, \href{#boolean_algebra3}{公理 3} :補元律, 同一律})\\
&=&x'_1\land f(x_1,x_2,x_3)\lor x_1\land f(x_1,x_2,x_3)&(\because {\rm \href{#boolean_algebra2}{公理 2}:分配律})\\
&=&x'_1\land f(0,x_2,x_3)\lor x_1\land f(1,x_2,x_3)&(\because {\rm 定理: \href{#chanon_theorem}{シャノンの展開定理}})\\
&=&x'_1\land x_2\land x_3\lor x_1\land x_2\lor x_2\land x_3\lor x_3&(\because {\rm \href{#boolean_algebra3}{公理 3}:同一律})\\
&=&x'_1\land x_2\land x_3\lor x_1\land x_2\lor x_3&(\because {\rm \href{#boolean_algebra1}{公理1}: 可換律, 定理: \href{#absorption}{吸収律}})\\
\end{aligned} f ( x 1 , x 2 , x 3 ) = = = = = = x 1 ∧ x 2 ∨ x 2 ∧ x 3 ∨ x 1 ∧ x 3 ( x 1 ′ ∨ x 1 ) ∧ f ( x 1 , x 2 , x 3 ) x 1 ′ ∧ f ( x 1 , x 2 , x 3 ) ∨ x 1 ∧ f ( x 1 , x 2 , x 3 ) x 1 ′ ∧ f ( 0 , x 2 , x 3 ) ∨ x 1 ∧ f ( 1 , x 2 , x 3 ) x 1 ′ ∧ x 2 ∧ x 3 ∨ x 1 ∧ x 2 ∨ x 2 ∧ x 3 ∨ x 3 x 1 ′ ∧ x 2 ∧ x 3 ∨ x 1 ∧ x 2 ∨ x 3 ( ∵ 公理 4 , 公理 3 : 補元律 , 同一律 ) ( ∵ 公理 2 : 分配律 ) ( ∵ 定理 : シャノンの展開定理 ) ( ∵ 公理 3 : 同一律 ) ( ∵ 公理 1 : 可換律 , 定理 : 吸収律 )
となる. また双対の原理 より,
f ( x 1 , x 2 , ⋯ , x n ) = ( x 1 ∧ x 1 ′ ) ∨ f ( x 1 , x 2 , ⋯ , x n ) ( ∵ 公理 4 , 公理 3 : 補元律 , 同一律 ) = ( x 1 ∨ f ( x 1 , x 2 , ⋯ , x n ) ) ∧ ( x 1 ′ ∨ f ( x 1 , x 2 , ⋯ , x n ) ) ( ∵ 公理 2 : 分配律 ) = ( x 1 ∨ f ( 0 , x 2 , ⋯ , x n ) ) ∧ ( x 1 ′ ∨ f ( 1 , x 2 , ⋯ , x n ) ) ( ∵ 上記証明の双対 ) \begin{aligned}
f(x_1,x_2,\cdots,x_n)&=&(x_1\land x'_1)\lor f(x_1,x_2,\cdots,x_n)&(\because {\rm \href{#boolean_algebra4}{公理 4}, \href{#boolean_algebra3}{公理 3} :補元律, 同一律})\\
&=&(x_1\lor f(x_1,x_2,\cdots,x_n))\land(x'_1\lor f(x_1,x_2,\cdots,x_n))&(\because {\rm \href{#boolean_algebra2}{公理 2}:分配律})\\
&=&(x_1\lor f(0,x_2,\cdots,x_n))\land(x'_1\lor f(1,x_2,\cdots,x_n))&(\because {\rm \href{#chanon_theorem_proof}{上記証明}の\href{#dual_def}{双対}})
\end{aligned} f ( x 1 , x 2 , ⋯ , x n ) = = = ( x 1 ∧ x 1 ′ ) ∨ f ( x 1 , x 2 , ⋯ , x n ) ( x 1 ∨ f ( x 1 , x 2 , ⋯ , x n )) ∧ ( x 1 ′ ∨ f ( x 1 , x 2 , ⋯ , x n )) ( x 1 ∨ f ( 0 , x 2 , ⋯ , x n )) ∧ ( x 1 ′ ∨ f ( 1 , x 2 , ⋯ , x n )) ( ∵ 公理 4 , 公理 3 : 補元律 , 同一律 ) ( ∵ 公理 2 : 分配律 ) ( ∵ 上記証明 の 双対 )
この展開をシャノン双対展開という.
標準形
異なる表現のなされたブール式が同値であるかを即座に断定することは, 一般的に困難であることが多い. ここで, ブール式を一意に表す方法が決まっていれば, 即座に同値であるか判断がしやすく, 便利である. ブール代数では主に 2 つの形式が決められており, その形式への変形を標準化, また正規化という. 以下, n n n 変数ブール関数 f ( x 1 , x 2 , ⋯ , x n ) f(x_1,x_2,\cdots,x_n) f ( x 1 , x 2 , ⋯ , x n ) において, x 1 , x 2 , ⋯ , x n x_1,x_2,\cdots,x_n x 1 , x 2 , ⋯ , x n を入力変数, また入力変数およびその否定をリテラルという. さらに n n n 個の入力変数に対し, k k k 番目のリテラル x k e k ( 1 ≤ k ≤ n ) x_k^{e_k}\ (1\leq k\leq n) x k e k ( 1 ≤ k ≤ n ) を次のように表す.
x k e k = { x k ( = x k 1 ) e k = 1 のとき x k ′ ( = x k 0 ) e k = 0 のとき \begin{aligned}
x^{e_k}_k=\begin{cases}
x_k&(=x^1_k)&e_k=1{\rm\ のとき}\\
x'_k&(=x^0_k)&e_k=0{\rm\ のとき}
\end{cases}
\end{aligned} x k e k = { x k x k ′ ( = x k 1 ) ( = x k 0 ) e k = 1 のとき e k = 0 のとき
加法標準形, 主加法標準形
f ( x 1 , x 2 , ⋯ , x n ) f(x_1,x_2,\cdots,x_n) f ( x 1 , x 2 , ⋯ , x n ) を x 1 , x 2 x_1,x_2 x 1 , x 2 についてシャノン展開 すると,
f ( x 1 , x 2 , ⋯ , x n ) = x 1 ′ ∧ x 2 ′ ∧ f ( 0 , 0 , ⋯ , x n ) ∨ x 1 ′ ∧ x 2 ∧ f ( 0 , 1 , ⋯ , x n ) ∨ x 1 ∧ x 2 ′ ∧ f ( 1 , 0 , ⋯ , x n ) ∨ x 1 ∧ x 2 ∧ f ( 1 , 1 , ⋯ , x n ) \begin{aligned}
f(x_1,x_2,\cdots,x_n)&=&x'_1\land x'_2\land f(0,0,\cdots,x_n)\\
&&\lor x'_1\land x_2\land f(0,1,\cdots,x_n)\\
&&\lor x_1\land x'_2\land f(1,0,\cdots,x_n)\\
&&\lor x_1\land x_2\land f(1,1,\cdots,x_n)
\end{aligned} f ( x 1 , x 2 , ⋯ , x n ) = x 1 ′ ∧ x 2 ′ ∧ f ( 0 , 0 , ⋯ , x n ) ∨ x 1 ′ ∧ x 2 ∧ f ( 0 , 1 , ⋯ , x n ) ∨ x 1 ∧ x 2 ′ ∧ f ( 1 , 0 , ⋯ , x n ) ∨ x 1 ∧ x 2 ∧ f ( 1 , 1 , ⋯ , x n )
となる. 従って, 全入力変数 x 1 , x 2 , ⋯ , x n x_1,x_2,\cdots,x_n x 1 , x 2 , ⋯ , x n についてシャノン展開 すると,
f ( x 1 , x 2 , ⋯ , x n ) = x 1 ′ ∧ x 2 ′ ∧ ⋯ ∧ x n ′ ∧ f ( 0 , 0 , ⋯ , 0 ) ∨ x 1 ′ ∧ x 2 ′ ∧ ⋯ ∧ x n ∧ f ( 0 , 0 , ⋯ , 1 ) ∨ ⋯ ∨ x 1 ∧ x 2 ∧ ⋯ ∧ x n ′ ∧ f ( 1 , 1 , ⋯ , 0 ) ∨ x 1 ∧ x 2 ∧ ⋯ ∧ x n ∧ f ( 1 , 1 , ⋯ , 1 ) \begin{aligned}
f(x_1,x_2,\cdots,x_n)&=&x'_1\land x'_2\land\cdots\land x'_n\land f(0,0,\cdots,0)\\
&&\lor x'_1\land x'_2\land\cdots\land x_n\land f(0,0,\cdots, 1)\\
&&\lor\cdots\\
&&\lor x_1\land x_2\land\cdots\land x'_n\land f(1,1,\cdots,0)\\
&&\lor x_1\land x_2\land\cdots\land x_n\land f(1,1,\cdots,1)
\end{aligned} f ( x 1 , x 2 , ⋯ , x n ) = x 1 ′ ∧ x 2 ′ ∧ ⋯ ∧ x n ′ ∧ f ( 0 , 0 , ⋯ , 0 ) ∨ x 1 ′ ∧ x 2 ′ ∧ ⋯ ∧ x n ∧ f ( 0 , 0 , ⋯ , 1 ) ∨ ⋯ ∨ x 1 ∧ x 2 ∧ ⋯ ∧ x n ′ ∧ f ( 1 , 1 , ⋯ , 0 ) ∨ x 1 ∧ x 2 ∧ ⋯ ∧ x n ∧ f ( 1 , 1 , ⋯ , 1 )
となる (シャノンの定理 より数学的帰納法により証明できるが, 省略). これを以下のように定義する.
n n n 変数ブール関数 f ( x 1 , x 2 , ⋯ , x n ) f(x_1,x_2,\cdots,x_n) f ( x 1 , x 2 , ⋯ , x n ) のすべての入力変数 x 1 , x 2 , ⋯ , x n x_1,x_2,\cdots,x_n x 1 , x 2 , ⋯ , x n について, シャノン展開 した形式 f ( x 1 , x 2 , ⋯ , x n ) = ⋁ ( e 1 , e 2 , ⋯ , e n ) ∈ B n f ( e 1 , e 2 , ⋯ , e n ) ∧ ⋀ i = 1 n x i e i (1) f(x_1,x_2,\cdots,x_n)=
\bigvee_{(e_1,e_2,\cdots,e_n)\in B^n}f(e_1,e_2,\cdots,e_n)\land\bigwedge_{i=1}^{n}x_i^{e_i}\tag{1} f ( x 1 , x 2 , ⋯ , x n ) = ( e 1 , e 2 , ⋯ , e n ) ∈ B n ⋁ f ( e 1 , e 2 , ⋯ , e n ) ∧ i = 1 ⋀ n x i e i ( 1 ) は f ( x 1 , x 2 , ⋯ , x n ) f(x_1,x_2,\cdots,x_n) f ( x 1 , x 2 , ⋯ , x n ) の最小項展開である. なお, このときの項数は 2 n 2^n 2 n となる.
これを踏まえ, 加法標準形および主加法標準形を導入する.
加法標準形 (disjunctive normal form: DNF) は, ブール式のリテラル, または 2 つ以上のリテラルの積の和のことをいう. ここで, 2 つ以上のリテラルの積で同じ入力変数を 2 度以上含まない論理式を基本積, また標準項という. 基本積のうち, すべての入力変数を含むブール式を最小項という. すなわち, 上記最小項展開 の ⋀ i = 1 n x i e i \displaystyle\bigwedge_{i=1}^nx^{e_i}_i i = 1 ⋀ n x i e i は最小項である.
主加法標準形 (principal disjunctive normal form: PDNF) は, ブール関数を最小項展開 した形式, すなわち最小項展開 の形式である.
例えば, 否定論理積 ∣ \mid ∣ を PDNF で表すとしよう. 否定論理和は 2 項演算子なので, その PDNF は 2 変数ブール関数を最小項展開した形となる.
f ( x 1 , x 2 ) = f ( 0 , 0 ) ∧ x 1 ′ ∧ x 2 ′ ∨ f ( 0 , 1 ) x 1 ′ ∧ x 2 ∨ f ( 1 , 0 ) ∧ x 1 ∧ x 2 ′ ∨ f ( 1 , 1 ) ∧ x 1 ∧ x 2 f(x_1,x_2)=f(0,0)\land x'_1\land x'_2\lor f(0,1)x'_1\land x_2\lor f(1,0)\land x_1\land x'_2\lor f(1,1)\land x_1\land x_2 f ( x 1 , x 2 ) = f ( 0 , 0 ) ∧ x 1 ′ ∧ x 2 ′ ∨ f ( 0 , 1 ) x 1 ′ ∧ x 2 ∨ f ( 1 , 0 ) ∧ x 1 ∧ x 2 ′ ∨ f ( 1 , 1 ) ∧ x 1 ∧ x 2
便宜上, 2 項演算子 ∣ \mid ∣ を最小項展開した形を f ∣ ( x 1 , x 2 ) f_\mid(x_1,x_2) f ∣ ( x 1 , x 2 ) で表すこととする. あとは真理値表 2 の ∣ \mid ∣ の列のとおりに f ∣ ( x 1 , x 2 ) f_\mid(x_1,x_2) f ∣ ( x 1 , x 2 ) の値を決めてやればよいので
f ∣ ( x 1 , x 2 ) = 1 ∧ x 1 ′ ∧ x 2 ′ ∨ 1 ∧ x 1 ′ ∧ x 2 ∨ 1 ∧ x 1 ∧ x 2 ′ ∨ 0 ∧ x 1 ∧ x 2 = x 1 ′ ∧ x 2 ′ ∨ x 1 ′ ∧ x 2 ∨ x 1 ∧ x 2 ′
\begin{aligned}
f_\mid(x_1,x_2)&=&1\land x'_1\land x'_2\lor 1\land x'_1\land x_2\lor 1\land x_1\land x'_2\lor 0\land x_1\land x_2\\
&=&x'_1\land x'_2\lor x'_1\land x_2\lor x_1\land x'_2
\end{aligned}
f ∣ ( x 1 , x 2 ) = = 1 ∧ x 1 ′ ∧ x 2 ′ ∨ 1 ∧ x 1 ′ ∧ x 2 ∨ 1 ∧ x 1 ∧ x 2 ′ ∨ 0 ∧ x 1 ∧ x 2 x 1 ′ ∧ x 2 ′ ∨ x 1 ′ ∧ x 2 ∨ x 1 ∧ x 2 ′
従って, 否定論理積の PDNF は x 1 ′ ∧ x 2 ′ ∨ x 1 ′ ∧ x 2 ∨ x 1 ∧ x 2 ′ x'_1\land x'_2\lor x'_1\land x_2\lor x_1\land x'_2 x 1 ′ ∧ x 2 ′ ∨ x 1 ′ ∧ x 2 ∨ x 1 ∧ x 2 ′ となる. この操作を振り返ると, 真理値表から PDNF を書くためには, 結果が 1 1 1 となっている入力変数の全パターンに対して, 元の入力変数の値が 1 1 1 ならそのまま, 0 0 0 ならその補元をとり, それらすべての和を取ればよいことがわかる. 何故ならば, 結果が 0 0 0 となる部分は, シャノンの展開定理の証明 でも示したように消えてしまうからである. 同じようにして, 否定論理和, 排他的論理和も真理値表 2 の ↓ , ⊕ \downarrow,\oplus ↓ , ⊕ の列をみると, 1 1 1 となる入力のパターンから
f ↓ ( x 1 , x 2 ) = x 1 ′ ∧ x 2 ′ f ⊕ ( x 1 , x 2 ) = x 1 ∧ x 2 ′ ∨ x 1 ′ ∧ x 2
\begin{aligned}
f_{\downarrow}(x_1,x_2)&=&x'_1\land x'_2\\
f_{\oplus}(x_1,x_2)&=&x_1\land x'_2\lor x'_1\land x_2\\
\end{aligned}
f ↓ ( x 1 , x 2 ) f ⊕ ( x 1 , x 2 ) = = x 1 ′ ∧ x 2 ′ x 1 ∧ x 2 ′ ∨ x 1 ′ ∧ x 2
となる. すなわち, 真理値表で表現できるブール式は PDNF で表せるということである.
次に, 任意の論理式から PDNF に変換することを考える. 結論からいうと, 次の手順に従えば PDNF へ機械的に変換できることが知られている.
ブール式全体を基本項による積の和の形にする (分配律等を利用)
最小項でない基本項に対し, その基本項に含まれないすべてのリテラル x i x_i x i について ( x i ∧ x i ′ ) (x_i\land x'_i) ( x i ∧ x i ′ ) を乗ずる
分配律等に従い展開して, 冗長な項を除去する
以下, PDNF で表されたブール式を f ( x 1 , x 2 , ⋯ , x n ) P D N F f(x_1,x_2,\cdots,x_n)_{\rm P D N F} f ( x 1 , x 2 , ⋯ , x n ) PDNF と書くこととする. 例えば, ブール式 f ( x 1 , x 2 ) = x 1 ∧ x 2 ∧ x 1 ∨ x 2 f(x_1,x_2)=x_1\land x_2\land x_1\lor x_2 f ( x 1 , x 2 ) = x 1 ∧ x 2 ∧ x 1 ∨ x 2 を PDNF で表すとすると,
f ( x 1 , x 2 ) = x 1 ∧ x 2 ∧ x 1 ∨ x 2 = x 1 ∧ x 1 ∧ x 2 ∨ x 2 ( ∵ 公理 1 : 可換律 ) = x 1 ∧ x 2 ∨ x 2 ( ∵ 定理 : べき等律 ) = x 1 ∧ x 2 ∨ 1 ∧ x 2 ( ∵ 公理 3 : 同一律 ) = x 1 ∧ x 2 ∨ ( x 1 ∨ x 1 ′ ) ∧ x 2 ( ∵ 公理 4 : 補元律 ) = x 1 ∧ x 2 ∨ x 1 ∧ x 2 ∨ x 1 ′ ∧ x 2 ( ∵ 公理 2 : 分配律 ) = x 1 ∧ x 2 ∨ x 1 ′ ∧ x 2 ( ∵ 定理 : べき等律 )
\begin{aligned}
f(x_1,x_2)&=&x_1\land x_2\land x_1\lor x_2\\
&=&x_1\land x_1\land x_2\lor x_2&(\because {\rm\href{#boolean_algebra1}{公理1}: 可換律})\\
&=&x_1\land x_2\lor x_2&(\because {\rm 定理:\href{#idempotence}{べき等律}})\\
&=&x_1\land x_2\lor 1\land x_2&(\because {\rm \href{#boolean_algebra3}{公理 3}:同一律})\\
&=&x_1\land x_2\lor (x_1\lor x_1')\land x_2&(\because {\rm \href{#boolean_algebra4}{公理 4}:補元律})\\
&=&x_1\land x_2\lor x_1\land x_2\lor x_1'\land x_2&(\because {\rm \href{#boolean_algebra2}{公理 2}:分配律})\\
&=&x_1\land x_2\lor x_1'\land x_2&(\because {\rm 定理:\href{#idempotence}{べき等律}})
\end{aligned}
f ( x 1 , x 2 ) = = = = = = = x 1 ∧ x 2 ∧ x 1 ∨ x 2 x 1 ∧ x 1 ∧ x 2 ∨ x 2 x 1 ∧ x 2 ∨ x 2 x 1 ∧ x 2 ∨ 1 ∧ x 2 x 1 ∧ x 2 ∨ ( x 1 ∨ x 1 ′ ) ∧ x 2 x 1 ∧ x 2 ∨ x 1 ∧ x 2 ∨ x 1 ′ ∧ x 2 x 1 ∧ x 2 ∨ x 1 ′ ∧ x 2 ( ∵ 公理 1 : 可換律 ) ( ∵ 定理 : べき等律 ) ( ∵ 公理 3 : 同一律 ) ( ∵ 公理 4 : 補元律 ) ( ∵ 公理 2 : 分配律 ) ( ∵ 定理 : べき等律 )
従って f ( x 1 , x 2 ) P D N F = x 1 ∧ x 2 ∨ x 1 ′ ∧ x 2 f(x_1,x_2)_{\rm P D N F}=x_1\land x_2\lor x_1'\land x_2 f ( x 1 , x 2 ) PDNF = x 1 ∧ x 2 ∨ x 1 ′ ∧ x 2 となる. 例としてもう 1 つ, f ( x 1 , x 2 , x 3 ) = x 1 ∧ x 2 ′ ∧ x 3 ∨ x 1 ∧ x 3 ′ ∨ x 2 ∧ x 3 ′ f(x_1,x_2,x_3)=x_1\land x_2'\land x_3\lor x_1\land x'_3\lor x_2\land x'_3 f ( x 1 , x 2 , x 3 ) = x 1 ∧ x 2 ′ ∧ x 3 ∨ x 1 ∧ x 3 ′ ∨ x 2 ∧ x 3 ′ としたときの PDNF は
f ( x 1 , x 2 , x 3 ) = x 1 ∧ x 2 ′ ∧ x 3 ∨ x ∧ x 3 ′ ∨ x 2 ∧ x 3 ′ = x 1 ∧ x 2 ′ ∧ x 3 ∨ x 1 ∧ ( x 2 ∨ x 2 ′ ) ∧ x 3 ′ ∨ ( x 1 ∨ x 1 ′ ) ∧ x 2 ∧ x 3 ′ ( ∵ 公理 3 , 公理 4 : 同一律 , 補元律 ) = x 1 ∧ x 2 ′ ∧ x 3 ∨ x 1 ∧ x 2 ∧ x 3 ′ ∨ x 1 ∧ x 2 ′ ∧ x 3 ′ ∨ x 1 ∧ x 2 ∧ x 3 ′ ∨ x 1 ′ ∧ x 2 ∧ x 3 ′ ( ∵ 公理 2 : 分配律 ) = x 1 ∧ x 2 ′ ∧ x 3 ∨ x 1 ∧ x 2 ∧ x 3 ′ ∨ x 1 ∧ x 2 ′ ∧ x 3 ′ ∨ x 1 ′ ∧ x 2 ∧ x 3 ′ ( ∵ 定理 : べき等律 )
\begin{aligned}
f(x_1,x_2,x_3)&=&x_1\land x'_2\land x_3\lor x\land x'_3\lor x_2\land x'_3\\
&=&x_1\land x'_2\land x_3\lor x_1\land(x_2\lor x'_2)\land x'_3\lor (x_1\lor x_1')\land x_2\land x'_3&(\because {\rm \href{#boolean_algebra3}{公理 3}, \href{#boolean_algebra4}{公理 4}: 同一律, 補元律} )\\
&=&x_1\land x'_2\land x_3\lor x_1\land x_2\land x'_3\lor x_1\land x'_2\land x'_3\lor x_1\land x_2\land x'_3\lor x'_1\land x_2\land x'_3&(\because {\rm \href{#boolean_algebra2}{公理 2}:分配律})\\
&=&x_1\land x'_2\land x_3\lor x_1\land x_2\land x'_3\lor x_1\land x'_2\land x'_3\lor x'_1\land x_2\land x'_3&(\because {\rm 定理: \href{#idempotence}{べき等律}})
\end{aligned}
f ( x 1 , x 2 , x 3 ) = = = = x 1 ∧ x 2 ′ ∧ x 3 ∨ x ∧ x 3 ′ ∨ x 2 ∧ x 3 ′ x 1 ∧ x 2 ′ ∧ x 3 ∨ x 1 ∧ ( x 2 ∨ x 2 ′ ) ∧ x 3 ′ ∨ ( x 1 ∨ x 1 ′ ) ∧ x 2 ∧ x 3 ′ x 1 ∧ x 2 ′ ∧ x 3 ∨ x 1 ∧ x 2 ∧ x 3 ′ ∨ x 1 ∧ x 2 ′ ∧ x 3 ′ ∨ x 1 ∧ x 2 ∧ x 3 ′ ∨ x 1 ′ ∧ x 2 ∧ x 3 ′ x 1 ∧ x 2 ′ ∧ x 3 ∨ x 1 ∧ x 2 ∧ x 3 ′ ∨ x 1 ∧ x 2 ′ ∧ x 3 ′ ∨ x 1 ′ ∧ x 2 ∧ x 3 ′ ( ∵ 公理 3 , 公理 4 : 同一律 , 補元律 ) ( ∵ 公理 2 : 分配律 ) ( ∵ 定理 : べき等律 )
従って f ( x 1 , x 2 , x 3 ) P D N F = x 1 ∧ x 2 ′ ∧ x 3 ∨ x 1 ∧ x 2 ∧ x 3 ′ ∨ x 1 ∧ x 2 ′ ∧ x 3 ′ ∨ x 1 ′ ∧ x 2 ∧ x 3 ′ f(x_1,x_2,x_3)_{\rm P D N F}=x_1\land x'_2\land x_3\lor x_1\land x_2\land x'_3\lor x_1\land x'_2\land x'_3\lor x'_1\land x_2\land x'_3 f ( x 1 , x 2 , x 3 ) PDNF = x 1 ∧ x 2 ′ ∧ x 3 ∨ x 1 ∧ x 2 ∧ x 3 ′ ∨ x 1 ∧ x 2 ′ ∧ x 3 ′ ∨ x 1 ′ ∧ x 2 ∧ x 3 ′ となる.
乗法標準形, 主乗法標準形
f ( x 1 , x 2 , ⋯ , x n ) f(x_1,x_2,\cdots,x_n) f ( x 1 , x 2 , ⋯ , x n ) を x 1 , x 2 x_1,x_2 x 1 , x 2 についてシャノン双対展開 すると,
f ( x 1 , x 2 , ⋯ , x n ) = ( x 1 ∨ x 2 ∨ f ( 0 , 0 , ⋯ , x n ) ) ∧ ( x 1 ∨ x 2 ′ ∨ f ( 0 , 1 , ⋯ , x n ) ) ∧ ( x 1 ′ ∨ x 2 ∨ f ( 1 , 0 , ⋯ , x n ) ) ∧ ( x 1 ′ ∨ x 2 ′ ∨ f ( 1 , 1 , ⋯ , x n ) )
\begin{aligned}
f(x_1,x_2,\cdots,x_n)&=&(x_1\lor x_2\lor f(0,0,\cdots,x_n))\\
&&\land (x_1\lor x'_2\lor f(0,1,\cdots,x_n))\\
&&\land (x'_1\lor x_2\lor f(1,0,\cdots,x_n))\\
&&\land (x'_1\lor x'_2\lor f(1,1,\cdots,x_n))
\end{aligned}
f ( x 1 , x 2 , ⋯ , x n ) = ( x 1 ∨ x 2 ∨ f ( 0 , 0 , ⋯ , x n )) ∧ ( x 1 ∨ x 2 ′ ∨ f ( 0 , 1 , ⋯ , x n )) ∧ ( x 1 ′ ∨ x 2 ∨ f ( 1 , 0 , ⋯ , x n )) ∧ ( x 1 ′ ∨ x 2 ′ ∨ f ( 1 , 1 , ⋯ , x n ))
となる. 従って, 全入力変数 x 1 , x 2 , ⋯ , x n x_1,x_2,\cdots,x_n x 1 , x 2 , ⋯ , x n についてシャノン双対展開 すると,
f ( x 1 , x 2 , ⋯ , x n ) = ( x 1 ∨ x 2 ∨ ⋯ ∨ x n ∨ f ( 0 , 0 , ⋯ , 0 ) ) ∧ ( x 1 ∨ x 2 ∨ ⋯ ∨ x n ′ ∨ f ( 1 , 0 , ⋯ , 0 ) ) ∧ ⋯ ∧ ( x 1 ′ ∨ x 2 ′ ∨ ⋯ x n ∨ f ( 1 , 1 , ⋯ , 0 ) ) ∧ ( x 1 ′ ∨ x 2 ′ ∨ ⋯ x n ′ ∨ f ( 1 , 1 , ⋯ , 1 ) )
\begin{aligned}
f(x_1,x_2,\cdots,x_n)&=&(x_1\lor x_2\lor\cdots\lor x_n\lor f(0,0,\cdots,0))\\
&&\land(x_1\lor x_2\lor\cdots\lor x'_n\lor f(1,0,\cdots,0))\\
&&\land\cdots\\
&&\land(x'_1\lor x'_2\lor\cdots x_n\lor f(1,1,\cdots,0))\\
&&\land(x'_1\lor x'_2\lor\cdots x'_n\lor f(1,1,\cdots,1))
\end{aligned}
f ( x 1 , x 2 , ⋯ , x n ) = ( x 1 ∨ x 2 ∨ ⋯ ∨ x n ∨ f ( 0 , 0 , ⋯ , 0 )) ∧ ( x 1 ∨ x 2 ∨ ⋯ ∨ x n ′ ∨ f ( 1 , 0 , ⋯ , 0 )) ∧ ⋯ ∧ ( x 1 ′ ∨ x 2 ′ ∨ ⋯ x n ∨ f ( 1 , 1 , ⋯ , 0 )) ∧ ( x 1 ′ ∨ x 2 ′ ∨ ⋯ x n ′ ∨ f ( 1 , 1 , ⋯ , 1 ))
となる (シャノンの定理 より数学的帰納法により証明できるが, 省略). これを以下のように定義する.
n n n 変数ブール関数 f ( x 1 , x 2 , ⋯ , x n ) f(x_1,x_2,\cdots,x_n) f ( x 1 , x 2 , ⋯ , x n ) のすべての入力変数 x 1 , x 2 , ⋯ , x n x_1,x_2,\cdots,x_n x 1 , x 2 , ⋯ , x n について, シャノン双対展開 した形式 f ( x 1 , x 2 , ⋯ , x n ) = ⋀ ( e 1 , e 2 , ⋯ , e n ) ∈ B n ( f ( e 1 , e 2 , ⋯ , e n ) ∨ ⋁ i = 1 n x i e i ′ ) (2) f(x_1,x_2,\cdots,x_n)=
\bigwedge_{(e_1,e_2,\cdots,e_n)\in B^n}(f(e_1,e_2,\cdots,e_n)\lor\bigvee_{i=1}^{n}x_i^{e'_i})\tag{2} f ( x 1 , x 2 , ⋯ , x n ) = ( e 1 , e 2 , ⋯ , e n ) ∈ B n ⋀ ( f ( e 1 , e 2 , ⋯ , e n ) ∨ i = 1 ⋁ n x i e i ′ ) ( 2 ) は f ( x 1 , x 2 , ⋯ , x n ) f(x_1,x_2,\cdots,x_n) f ( x 1 , x 2 , ⋯ , x n ) の最大項展開である. なお, このときの項数は 2 n 2^n 2 n となる.
これを踏まえ, 乗法標準形, 主乗法標準形を導入する.
乗法標準形 (CNF: conjunctive normal form) は, ブール式のリテラル, または 2 つ以上のリテラルの和の積のことをいう. ここで, 2 つ以上のリテラルの和で同じ入力変数を 2 度以上含まないブール式を基本和, また標準項という. 基本和のうち, すべての入力変数を含むブール式を最大項という. すなわち, 上記最大項展開 の ⋁ i = 1 n x i e i ′ \displaystyle\bigvee_{i=1}^{n}x_i^{e'_i} i = 1 ⋁ n x i e i ′ は最大項である.
主乗法標準形 (principal conjunctive normal form: PCNF) は, ブール関数を最大項展開 した形式, すなわち最大項展開 の形式である.
例えば, 否定論理積 ∣ \mid ∣ を PCNF で表すとしよう. 否定論理積は 2 項演算子なので, その PCNF は 2 変数ブール関数を最大項展開した形となる.
f ( x 1 , x 2 ) = ( x 1 ∨ x 2 ∨ f ( 0 , 0 ) ) ∧ ( x 1 ∨ x 2 ′ ∨ f ( 0 , 1 ) ) ∧ ( x 1 ′ ∨ x 2 ∨ f ( 1 , 0 ) ) ∧ ( x 1 ′ ∨ x 2 ′ ∨ f ( 1 , 1 ) )
f(x_1,x_2)=
(x_1\lor x_2\lor f(0,0))\land (x_1\lor x'_2\lor f(0,1))\land(x'_1\lor x_2\lor f(1,0))\land(x'_1\lor x'_2\lor f(1,1)) f ( x 1 , x 2 ) = ( x 1 ∨ x 2 ∨ f ( 0 , 0 )) ∧ ( x 1 ∨ x 2 ′ ∨ f ( 0 , 1 )) ∧ ( x 1 ′ ∨ x 2 ∨ f ( 1 , 0 )) ∧ ( x 1 ′ ∨ x 2 ′ ∨ f ( 1 , 1 ))
2 項演算子 ∣ \mid ∣ を最大項展開した式 f ∣ ( x 1 , x 2 ) f_{\mid}(x_1,x_2) f ∣ ( x 1 , x 2 ) は, 真理値表 2 の ∣ \mid ∣ の列のとおりに f ∣ ( x 1 , x 2 ) f_{\mid}(x_1,x_2) f ∣ ( x 1 , x 2 ) の値を決めてやればよいので
f ∣ ( x 1 , x 2 ) = ( x 1 ∨ x 2 ∨ 1 ) ∧ ( x 1 ∨ x 2 ′ ∨ 1 ) ∧ ( x 1 ′ ∨ x 2 ∨ 1 ) ∧ ( x 1 ′ ∨ x 2 ′ ∨ 0 ) = x 1 ′ ∨ x 2 ′
\begin{aligned}
f_{\mid}(x_1,x_2)&=&(x_1\lor x_2\lor 1)\land (x_1\lor x'_2\lor 1)\land(x'_1\lor x_2\lor 1)\land(x'_1\lor x'_2\lor 0)\\
&=&x'_1\lor x'_2
\end{aligned}
f ∣ ( x 1 , x 2 ) = = ( x 1 ∨ x 2 ∨ 1 ) ∧ ( x 1 ∨ x 2 ′ ∨ 1 ) ∧ ( x 1 ′ ∨ x 2 ∨ 1 ) ∧ ( x 1 ′ ∨ x 2 ′ ∨ 0 ) x 1 ′ ∨ x 2 ′
従って, 否定論理積の PCNF は x 1 ′ ∨ x 2 ′ x'_1\lor x'_2 x 1 ′ ∨ x 2 ′ となる. この操作を振り返ると, 真理値表から PCNF を書くためには, 結果が 0 0 0 となっている入力変数の全パターンに対して, 元の入力変数の値が 1 1 1 なら補元をとり, 0 0 0 ならそのままで和を取り, それらすべての積を取ればよいことがわかる. 何故ならば, 結果が 1 1 1 となる部分は, 和の性質, すなわち公理 2: 同一律 より消えてしまうからである. 同じようにして, 否定論理和, 排他的論理和も真理値表 2 の ↓ , ⊕ \downarrow,\oplus ↓ , ⊕ の列をみると, 0 0 0 となる入力のパターンから
f ↓ ( x 1 , x 2 ) = ( x 1 ′ ∨ x 2 ′ ) ∧ ( x 1 ′ ∨ x 2 ) ∧ ( x 1 ∨ x 2 ′ ) f ⊕ ( x 1 , x 2 ) = ( x 1 ′ ∨ x 2 ′ ) ∧ ( x 1 ∨ y 1 )
\begin{aligned}
f_{\downarrow}(x_1,x_2)&=&(x'_1\lor x'_2)\land(x'_1\lor x_2)\land(x_1\lor x'_2)\\
f_{\oplus}(x_1,x_2)&=&(x'_1\lor x'_2)\land(x_1\lor y_1)
\end{aligned}
f ↓ ( x 1 , x 2 ) f ⊕ ( x 1 , x 2 ) = = ( x 1 ′ ∨ x 2 ′ ) ∧ ( x 1 ′ ∨ x 2 ) ∧ ( x 1 ∨ x 2 ′ ) ( x 1 ′ ∨ x 2 ′ ) ∧ ( x 1 ∨ y 1 )
となる. すなわち, 真理値表で表現できるブール式は, PCNF で表せるということである . 次に, 任意の論理式から PCNF に変換することを考える. 結論からいうと, 次の手順に従えば PCNF へ機械的に変換できることが知られている.
ブール式全体を基本項による和の積の形にする (分配律等を利用)
最大項でない基本項に対し, その基本項に含まれないすべてのリテラル x i x_i x i について x i ∧ x i ′ x_i\land x'_i x i ∧ x i ′ を乗ずる
分配律等に従い展開して, 冗長な項を除去する
以下, PCNF で表されたブール式を f ( x 1 , x 2 , ⋯ , x n ) P C N F f(x_1,x_2,\cdots,x_n)_{\rm P C N F} f ( x 1 , x 2 , ⋯ , x n ) PCNF と書くこととする. 例えば, ブール式 f ( x 1 , x 2 , x 3 ) = x 1 ∧ ( x 2 ′ ∧ x 3 ) ′ f(x_1,x_2,x_3)=x_1\land(x'_2\land x_3)' f ( x 1 , x 2 , x 3 ) = x 1 ∧ ( x 2 ′ ∧ x 3 ) ′ を PCNF で表すとすると,
f ( x 1 , x 2 , x 3 ) = x 1 ∧ ( x 2 ′ ∧ x 3 ) ′ = x 1 ∧ ( x 2 ∨ x 3 ′ ) ( ∵ 定理 : ド・モルガンの法則 ) = ( x 1 ∨ x 2 ∧ x 2 ′ ) ∧ ( x 2 ∨ x 3 ′ ) ( ∵ 公理 3 : 同一律 ) = ( x 1 ∨ x 2 ) ∧ ( x 1 ∨ x 2 ′ ) ∧ ( x 2 ∨ x 3 ′ ) ( ∵ 公理 2 : 分配律 ) = ( x 1 ∨ x 2 ∨ x 3 ∧ x 3 ′ ) ∧ ( x 1 ∨ x 2 ′ ∨ x 3 ∧ x 3 ′ ) ∧ ( x 1 ∧ x 1 ′ ∨ x 2 ∧ x 3 ′ ) ( ∵ 公理 3 : 同一律 ) = ( x 1 ∨ x 2 ∨ x 3 ) ∧ ( x 1 ∨ x 2 ∨ x 3 ′ ) ∧ ( x 1 ∨ x 2 ′ ∨ x 3 ) ∧ ( x 1 ∨ x 2 ′ ∨ x 3 ′ ) ∧ ( x 1 ∨ x 2 ∨ x 3 ′ ) ∧ ( x 1 ′ ∨ x 2 ∨ x 3 ′ ) ( ∵ 公理 2 : 分配律 ) = ( x 1 ∨ x 2 ∨ x 3 ) ∧ ( x 1 ∨ x 2 ∨ x 3 ′ ) ∧ ( x 1 ∨ x 2 ′ ∨ x 3 ) ∧ ( x 1 ∨ x 2 ′ ∨ x 3 ′ ) ∧ ( x 1 ′ ∨ x 2 ∨ x 3 ′ ) ( ∵ 定理 : べき等律 )
\begin{aligned}
f(x_1,x_2,x_3)&=&x_1\land(x'_2\land x_3)'\\
&=&x_1\land(x_2\lor x'_3)&(\because {\rm 定理: \href{#de_morgan}{ド・モルガンの法則}})\\
&=&(x_1\lor x_2\land x'_2)\land(x_2\lor x'_3)&(\because {\rm \href{#boolean_algebra3}{公理 3}:同一律})\\
&=&(x_1\lor x_2)\land(x_1\lor x'_2)\land(x_2\lor x'_3)&(\because {\rm \href{#boolean_algebra2}{公理 2}:分配律})\\
&=&(x_1\lor x_2\lor x_3\land x'_3)\land(x_1\lor x'_2\lor x_3\land x'_3)\land(x_1\land x'_1\lor x_2\land x'_3)&(\because {\rm \href{#boolean_algebra3}{公理 3}:同一律})\\
&=&(x_1\lor x_2\lor x_3)\land(x_1\lor x_2\lor x'_3)\land(x_1\lor x'_2\lor x_3)\\
&&\land(x_1\lor x'_2\lor x'_3)\land(x_1\lor x_2\lor x'_3)\land(x'_1\lor x_2\lor x'_3)&(\because {\rm \href{#boolean_algebra2}{公理 2}:分配律})\\
&=&(x_1\lor x_2\lor x_3)\land(x_1\lor x_2\lor x'_3)\land(x_1\lor x'_2\lor x_3)\\
&&\land(x_1\lor x'_2\lor x'_3)\land(x'_1\lor x_2\lor x'_3)&(\because {\rm 定理:\href{#idempotence}{べき等律}})
\end{aligned}
f ( x 1 , x 2 , x 3 ) = = = = = = = x 1 ∧ ( x 2 ′ ∧ x 3 ) ′ x 1 ∧ ( x 2 ∨ x 3 ′ ) ( x 1 ∨ x 2 ∧ x 2 ′ ) ∧ ( x 2 ∨ x 3 ′ ) ( x 1 ∨ x 2 ) ∧ ( x 1 ∨ x 2 ′ ) ∧ ( x 2 ∨ x 3 ′ ) ( x 1 ∨ x 2 ∨ x 3 ∧ x 3 ′ ) ∧ ( x 1 ∨ x 2 ′ ∨ x 3 ∧ x 3 ′ ) ∧ ( x 1 ∧ x 1 ′ ∨ x 2 ∧ x 3 ′ ) ( x 1 ∨ x 2 ∨ x 3 ) ∧ ( x 1 ∨ x 2 ∨ x 3 ′ ) ∧ ( x 1 ∨ x 2 ′ ∨ x 3 ) ∧ ( x 1 ∨ x 2 ′ ∨ x 3 ′ ) ∧ ( x 1 ∨ x 2 ∨ x 3 ′ ) ∧ ( x 1 ′ ∨ x 2 ∨ x 3 ′ ) ( x 1 ∨ x 2 ∨ x 3 ) ∧ ( x 1 ∨ x 2 ∨ x 3 ′ ) ∧ ( x 1 ∨ x 2 ′ ∨ x 3 ) ∧ ( x 1 ∨ x 2 ′ ∨ x 3 ′ ) ∧ ( x 1 ′ ∨ x 2 ∨ x 3 ′ ) ( ∵ 定理 : ド・モルガンの法則 ) ( ∵ 公理 3 : 同一律 ) ( ∵ 公理 2 : 分配律 ) ( ∵ 公理 3 : 同一律 ) ( ∵ 公理 2 : 分配律 ) ( ∵ 定理 : べき等律 )
従って f ( x 1 , x 2 , x 3 ) P C N F = ( x 1 ∨ x 2 ∨ x 3 ) ∧ ( x 1 ∨ x 2 ∨ x 3 ′ ) ∧ ( x 1 ∨ x 2 ′ ∨ x 3 ) ∧ ( x 1 ∨ x 2 ′ ∨ x 3 ′ ) ∧ ( x 1 ′ ∨ x 2 ∨ x 3 ′ ) f(x_1,x_2,x_3)_{\rm P C N F}=(x_1\lor x_2\lor x_3)\land(x_1\lor x_2\lor x'_3)\land(x_1\lor x'_2\lor x_3)\land(x_1\lor x'_2\lor x'_3)\land(x'_1\lor x_2\lor x'_3) f ( x 1 , x 2 , x 3 ) PCNF = ( x 1 ∨ x 2 ∨ x 3 ) ∧ ( x 1 ∨ x 2 ∨ x 3 ′ ) ∧ ( x 1 ∨ x 2 ′ ∨ x 3 ) ∧ ( x 1 ∨ x 2 ′ ∨ x 3 ′ ) ∧ ( x 1 ′ ∨ x 2 ∨ x 3 ′ )
となる. 例としてもう 1 つ, f ( x 1 , x 2 , x 3 ) = x 1 ∧ x 2 ′ ∨ x 2 ∧ x 3 f(x_1,x_2,x_3)=x_1\land x'_2\lor x_2\land x_3 f ( x 1 , x 2 , x 3 ) = x 1 ∧ x 2 ′ ∨ x 2 ∧ x 3 としたときの PCNF は
f ( x 1 , x 2 , x 3 ) = x 1 ∧ x 2 ′ ∨ x 2 ∧ x 3 = ( x 1 ∧ x 2 ′ ∨ x 2 ) ∧ ( x 1 ∧ x 2 ′ ∨ x 3 ) ( ∵ 公理 2 : 分配律 ) = ( x 1 ∨ x 2 ) ∧ ( x 1 ∨ x 3 ) ∧ ( x 2 ′ ∨ x 3 ) ( ∵ 公理 4 : 補元律 ) = ( x 1 ∨ x 2 ∨ x 3 ∧ x 3 ′ ) ∧ ( x 1 ∨ x 2 ∧ x 2 ′ ∨ x 3 ) ∧ ( x 1 ∧ x 1 ′ ∨ x 2 ′ ∨ x 3 ) ( ∵ 公理 4 : 補元律 ) = ( x 1 ∨ x 2 ∨ x 3 ) ∧ ( x 1 ∨ x 2 ∨ x 3 ′ ) ∧ ( x 1 ∨ x 2 ′ ∨ x 3 ) ∧ ( x 1 ′ ∨ x 2 ′ ∨ x 3 ) ( ∵ 公理 2 : 分配律 )
\begin{aligned}
f(x_1,x_2,x_3)&=&x_1\land x'_2\lor x_2\land x_3\\
&=&(x_1\land x'_2\lor x_2)\land(x_1\land x'_2\lor x_3)&(\because {\rm \href{#boolean_algebra2}{公理 2}:分配律})\\
&=&(x_1\lor x_2)\land(x_1\lor x_3)\land(x'_2\lor x_3)&(\because {\rm \href{#boolean_algebra4}{公理 4}:補元律})\\
&=&(x_1\lor x_2\lor x_3\land x'_3)\land(x_1\lor x_2\land x'_2\lor x_3)\land(x_1\land x'_1\lor x'_2\lor x_3)&(\because {\rm \href{#boolean_algebra4}{公理 4}:補元律})\\
&=&(x_1\lor x_2\lor x_3)\land(x_1\lor x_2\lor x'_3)\land(x_1\lor x'_2\lor x_3)\land(x'_1\lor x'_2\lor x_3)&(\because {\rm \href{#boolean_algebra2}{公理 2}:分配律})
\end{aligned}
f ( x 1 , x 2 , x 3 ) = = = = = x 1 ∧ x 2 ′ ∨ x 2 ∧ x 3 ( x 1 ∧ x 2 ′ ∨ x 2 ) ∧ ( x 1 ∧ x 2 ′ ∨ x 3 ) ( x 1 ∨ x 2 ) ∧ ( x 1 ∨ x 3 ) ∧ ( x 2 ′ ∨ x 3 ) ( x 1 ∨ x 2 ∨ x 3 ∧ x 3 ′ ) ∧ ( x 1 ∨ x 2 ∧ x 2 ′ ∨ x 3 ) ∧ ( x 1 ∧ x 1 ′ ∨ x 2 ′ ∨ x 3 ) ( x 1 ∨ x 2 ∨ x 3 ) ∧ ( x 1 ∨ x 2 ∨ x 3 ′ ) ∧ ( x 1 ∨ x 2 ′ ∨ x 3 ) ∧ ( x 1 ′ ∨ x 2 ′ ∨ x 3 ) ( ∵ 公理 2 : 分配律 ) ( ∵ 公理 4 : 補元律 ) ( ∵ 公理 4 : 補元律 ) ( ∵ 公理 2 : 分配律 )
従って f ( x 1 , x 2 , x 3 ) P C N F = ( x 1 ∨ x 2 ∨ x 3 ) ∧ ( x 1 ∨ x 2 ∨ x 3 ′ ) ∧ ( x 1 ∨ x 2 ′ ∨ x 3 ) ∧ ( x 1 ′ ∨ x 2 ′ ∨ x 3 ) f(x_1,x_2,x_3)_{\rm P C N F}=(x_1\lor x_2\lor x_3)\land(x_1\lor x_2\lor x'_3)\land(x_1\lor x'_2\lor x_3)\land(x'_1\lor x'_2\lor x_3) f ( x 1 , x 2 , x 3 ) PCNF = ( x 1 ∨ x 2 ∨ x 3 ) ∧ ( x 1 ∨ x 2 ∨ x 3 ′ ) ∧ ( x 1 ∨ x 2 ′ ∨ x 3 ) ∧ ( x 1 ′ ∨ x 2 ′ ∨ x 3 ) となる.
簡単化
ブール式を簡単化する方法について見ていく.
カルノー図
例えばブール関数が f ( x 1 , x 2 ) = x 1 ∧ x 2 ′ ∨ x 1 ′ ∧ x 2 ′ ∨ x 1 ∧ x 2 ′ ∨ x 1 ∧ x 2 (3) f(x_1,x_2)=x_1\land x'_2\lor x'_1\land x'_2\lor x_1\land x'_2\lor x_1\land x_2 \tag{3} f ( x 1 , x 2 ) = x 1 ∧ x 2 ′ ∨ x 1 ′ ∧ x 2 ′ ∨ x 1 ∧ x 2 ′ ∨ x