なんじゃくにっき

プログラミングの話題中心。

三値論理と群論

以前書いた二値論理を三値論理に拡張します。
二値論理の場合は、演算子は2^(2^2) = 16種類で済みましたが、
三値論理の場合は、演算子は3^(3^3) = 19683種類もあるので全てを書くと大変な量になるので対称性の高い物だけ。


三値論理については体系がいくつかありますが、ここではあまり深く考えず、
AND, OR, XORとその否定だけ定義します。
三値はここではT(True),F(False),N(Null)とします。

AND T N F
T T N F
N N N F
F F F F


OR T N F
T T T T
N T N N
F T N F


XOR T N F
T F N T
N N N N
F T N F

S3 = {True, False, Null}
とすると、S3と以下の演算子の組がモノイドとなります。
AND, OR, XOR, XNOR

ここで、二値論理の集合 S2 = {True, False}を考えます。
(S3, AND)の部分モノイド(S2, AND)もモノイドです。
部分集合が単位元を含む場合は明らかに部分集合もモノイドになります。

逆に(S2, XOR)は群ですが、
(S3, XOR)は群ではありません。
Nullに対して逆元が存在しないからです。
(Falseが単位元)