\forall a\ \exists! b\ [(a \land b = 0) \land (a \lor b = 1)]
(无)
0 与 1 互补
\lnot 0 = 1
\lnot 1 = 0
德·摩根定律
\lnot(a \land b) = \lnot a \lor \lnot b
\lnot(a \lor b) = \lnot a \land \lnot b
对合律
\lnot \lnot a = a
(无)
::::success[简要证明]
:::info[第一组有界律]{open}
\begin{aligned} &\because a \lor \lnot a = 1 \text{(互补律)} \newline &\therefore a \land 1 = a \land (a \lor \lnot a) = a \text{(吸收律)} \end{aligned}
:::
:::info[第二组有界律]{open}
\begin{aligned} & \because a \lor 0 = a\text{(第一组有界律)} \newline & \therefore a \land 0 = 0 \land (a \lor 0) = 0 \text{(吸收律)} \end{aligned}
:::
:::info[幂等律]{open}
\begin{aligned} & \because a \lor 0 = a \text{(第一组有界律)} \newline & \therefore a \land a = a \land (a \lor 0) = a \text{(吸收律)} \end{aligned}
:::
:::info[逆的唯一性]{open}
反证法,假设 \exists b \neq \lnot a, [(a \land b = 0) \land (a \lor b = 1)].
\begin{aligned}
b &= b \land 1 \text{(第一组有界律)} \newline
&= b \land (a \lor \lnot a) \text{(互补律)} \newline
&= (b \land a) \lor (b \land \lnot a) \text{(分配律)} \newline
&= 0 \lor (b \land \lnot a) \newline
&= b \land \lnot a \text{(互补律)}. \newline
\lnot a &= \lnot a \land 1 \text{(第一组有界律)} \newline
&= \lnot a \land (a \lor b) \newline
&= (\lnot a \land a) \lor (\lnot a \land b) \text{(分配律)} \newline
&= 0 \land (\lnot a \land b) \text{(互补律)} \newline
&= \lnot a \land b \text{(互补律)}.
\end{aligned}
综上,b = b \land \lnot a = \lnot a,与假设矛盾,故原命题成立。
:::
:::info[0 与 1 互补]{open}
\begin{aligned}
(a \land b)\land(\lnot a \lor \lnot b) &= (a \land b \land \lnot a) \lor (a \land b \land \lnot b) \text{(分配律)} \newline
&= (0 \land b) \lor (0 \land a) \text{(互补律)} \newline
&= 0 \lor 0 \text{(第二组有界律)} \newline
&= 0. \newline
(a \land b)\lor(\lnot a \lor \lnot b) &= [(a \land b) \lor \lnot a] \lor \lnot b \text{(结合律)} \newline
&= [(a \lor \lnot a) \land (b \lor \lnot a)] \lor \lnot b\text{(分配律)} \newline
&= [1 \land (b \lor \lnot a)] \lor \lnot b \text{(互补律)} \newline
&= b \lor a \lor \lnot b \text{(第一组有界律)} \newline
&= 1 \lor a \text{(互补律)} \newline
&= 1 \text{(第二组有界律)}
\end{aligned}
由 (a \land b)\land(\lnot a \lor \lnot b) = 0, (a \land b)\lor(\lnot a \lor \lnot b) = 1,得 (a \land b) 的逆为 (\lnot a \lor \lnot b)。
:::
:::info[对合律]{open}
\begin{aligned}
&\because a \land \lnot a = 0, a \lor \lnot a = 1 \newline
&\therefore \lnot \lnot a = a \text{(逆的唯一性)}
\end{aligned}
:::
::::
值得注意的是,布尔代数并没有规定集合 A 的大小,它不一定是 2。事实上,你可以把 \land 视为取并集、\lor 视为取交集、\lnot 视为取补集、0 视为空集、1 视为全集,容易证明 A 的大小是 2^n。
以下在 2-SAT 相关内容中讨论的布尔代数均为二元素布尔代数,即 A = \{ 0, 1 \}。
2-SAT
2-SAT 问题,全称 2-Satisfiability 问题,即给出 n 个布尔方程,每个方程形如 a \lor b,你需要给出它的一个可行解。2-SAT 的 2 得名于每个方程只与两个未知数有关,但是 k \ge 3 的 k-SAT 问题是 NPC 问题,故在此不作讨论。
我们观察单个方程 a \lor b = 0。思考我们能从这个方程中得到什么。我们发现如果 a = 0,那么 b = 1;类似地,如果 b = 0,那么 a = 1。也就是说我们得到了两组推导关系,即 \lnot a \implies b , \lnot b \implies a。