一个数理逻辑问题
今天复习离散的时候,看到一个很经典的例题。
例题 1.10 证明 \(\{\oplus, \leftrightarrow\}\) 不是完全集
书上的证明很简略:设真值赋值 \(v_1 = (p/0, q/0), v_2 = (p/0, q/1), v_3 = (p/1, q/0), v_4 = (p/1, q/1)\),可归纳证明,对于每个由 \(\{\oplus, \leftrightarrow\}\) 生成的不出现除 \(p, q\) 之外的命题变元的公式 \(A\),\(\forall i \in [4], v_i (A)\) 的中有偶数个 \(1\),而在 \(p\land q\) 的真值表最后一列中有奇数个 \(1\),所以 \(\land\) 不能由 \(\{\oplus, \leftrightarrow\}\) 定义,因此 \(\{\oplus, \leftrightarrow\}\) 不是完全集。
虽然书上没有给出归纳的具体步骤,但其实这很好补充。对公式长度 \(n \ge 2\) 归纳,归纳奠基 \(n = 2\) 显然,考虑一个数表,左边是 \(F_{n - 1}\) 真值表,右边是 \(p\) 最开始的赋值。
| \(F_{n - 1}\) | \(p\) | \(F_{n - 1} \oplus p\) |
|---|---|---|
| \(p_1\) | 0 | |
| \(p_2\) | 0 | |
| \(p_3\) | 1 | |
| \(p_4\) | 1 | |
| 枚举 \((p_1, p_2, p_3, p_4) \in \{(0, 0, 0, 0), (1, 1, 0, 0), (1, 0, 1, 0), (1, 0, 0, 1), (0, 1, 1, 0), (0, 1, 0, 1), (0, 0, 1, 1), (1, 1, 1, 1)\}\),可以发现得到的结果 \(F_{n-1}\oplus p\) 始终有偶数个 \(1\)。 |
\(\leftrightarrow\) 也是同理。
写作业的时候,我希望将这个命题拓展,于是在作业里给了一个拓展后的 \(\mathrm{Lemma}\):
只包含一个真值表中 \(1\) 的数量为偶数的二元连接词的集合不可能完全。
这个拓展听上去有点拗口,不过通过枚举验证它是对的,若 \(\{\Delta\}\) 的真值表里有偶数个 \(1\),则其生成的公式都无法得出 \(\uparrow\)。
但是作业写这些枚举工作量有点太高了,所以我只能口胡了一个证明:
\(\mathrm{Lemma}\) \(0\):只包含一个真值表中 \(1\) 的数量为偶数的二元连接词的集合不可能完全。
设 \(a \Delta b\) 的真值表中有偶数个 \(1\)。
对公式长度归纳证明,由 \(\{ \Delta \}\) 生成的公式真值表中全都只有偶数个 1
设 \(F(q_1, q_2, \dots, q_n)\) 为 \(\{ \Delta \}\) 生成的公式
若 \(F = q_n \Delta G\),如果 \(F\) 为 \(1\) 时 \(q_n\) 只能恒为 \(0\) 或 \(1\),那么 \(F\) 为 \(1\) 的情况总数是 \(2^{n-1}\) 或 \(0\)。
否则,\(F\) 等于 \(G\) 为某个值的个数乘以 \(2\) 或 \(2^{n-1}\),始终为偶数。
\(F = G \Delta q_n\) 同理。
综上所述,由 \(\{ \Delta \}\) 生成的公式真值表中全都只有偶数个 \(1\),故不能组成 \(\uparrow\),不完全。
这个证明当然是错的,错哪呢?其实最口胡的计数部分没错,正是上一个例题的枚举,错在遗漏了 \(q_1, q_2, \dots, q_n\) 存在相等的变元的情况。比如设 \(\Delta(x, y) = x\),那么 \(\Delta(x, x) = x\) 在单个变元真值表下就只有奇数个 \(1\)。换句话说,其实这个 “真值表内有偶数个 \(1\)” 的加强归纳表述是极为暧昧的。
为了修正这个证明,并且写得更简洁一些,我查了一些资料。
我们都知道 \(\oplus\) 是 \(\mathbb{Z}_{2}\) 上的加法,\(\land\) 又可以看做 \(\mathbb{Z}_2\) 上的除法。那么我们可以定义 \(\mathbb{Z}_2\) 上的仿射项 \(t(x_1, x_2, \dots, x_n) = \bigoplus_{i = 1}^{n} a_i \land x_i\)。为了方便起见后面就约定 \(+\) 表示 \(\oplus\),\(\cdot\) 表示 \(\land\)。
接下来有一个关键洞察,所有由上文所叙述的 \(\Delta (x, y)\) 都可以表示为一个二元仿射项 \(a + b \cdot x + c\cdot y\)。
用枚举法证明:
- 常值 \(0\):\(a=b=c=0\)
- 常值 \(1\):\(a=1, b=c=0\)
- \(x\):\(a=0,b=1,c=0\)
- \(\neg x\):\(a=1,b=1,c=0\)
- \(y\):\(a=0,b=0,c=1\)
- \(\neg y\):\(a=1,b=0,c=1\)
- \(x\oplus y\):\(a=0,b=1,c=1\)
- \(x\leftrightarrow y\):\(a=1,b=1,c=1\)
然后我们用复合来定义逻辑词嵌套。
若 \(f\) 为 \(m\) 元函数,\(g_1, g_2, \dots, g_m\) 都是 \(n\) 元函数,则定义复合 \((f(g_1, g_2, \dots, g_m)) (x_1,x_2,\dots,x_n) = f(g_2(x_1, x_2, \dots, x_n),\dots, g_m(x_1, x_2, \dots, x_n))\)。
显然仿射项构成的仿射代数对复合封闭(简单的线性代数知识),那么我们就证明了一开始的问题。
更精确的关于函数集合的完备性的结果已由 Post 在 1940 年给出,堪称代数逻辑最漂亮的结果之一。我们刚才讨论的问题正式这个问题的一个子类。
先给出 Post 定理中的标准五类:
- \(T_0\) 类(0-preserving),即 \(F(0, 0, \dots, 0) = 0\)。
- \(T_1\) 类(1-preserving),即 \(F(1,1,\dots,1) = 1\)。
- \(M\) 类,单调类(Monotonic),约定 \(0<1\),则单调函数定义为若 \(x_1 \le y_1, \ x_2 \le y_2,\ \dots, x_n \le y_n\)(之后我们把这个记作 \(x\preceq y\)), 则 \(f(x_1, x_2, \dots, x_n)\le f(y_1, y_2, \dots, y_n)\)。
- \(S\) 类(Self-dual),自对偶类,即 \(\neg f(x_1, x_2, \dots, x_n) = f(\neg x_1, \neg x_2, \dots, \neg x_n)\)。
- \(L\) 类,即我们刚才提到的线性类(Linear)。
值得注意的是,Post 的原版证明中并没有 \(L\) 这一类,而用的是 \(C\) 类(Counting/Alternating)。\(C\) 类定义为删去哑元(dummy position)后,函数值由输入中 \(1\) 的个数的奇偶性决定(全为偶数得T或全为奇数得T)的函数。
其中哑元定义为无论其它位置如何取,都满足 \(f(x_1, x_2, \dots, 1, \dots, x_n) = f(x_1, x_2, \dots, 0, \dots, x_n)\)。约定如果一个 \(n\) 元函数所有位置都是哑元的话,那他也是计数的,显然他也是线性的,这说明我们的约定是 well-defined 的。
可以看到线性函数中系数为 \(0\) 的元即为哑元,计数函数实际上就是所有系数都为 \(1\) 的线性函数。
下面给出 Post 定理的叙述:
Post 完备性定理:设 \(X\) 是一个二值(2-valued)逻辑函数集合,则 \(X\) 是完备的当且仅当对于每一个上面五类中的一类,\(X\) 中都能找到一个不属于其中的函数。
充分性采取构造式证明:
先给定以下五个函数:
- \(f_1\not\in T_0\)
- \(f_2\not\in T_1\)
- \(f_3\not\in M\)
- \(f_4\not\in S\)
- \(f_5\not\in L\)
我们定义 \(f^*(x) = f(x,x,\dots, x)\),即将 \(n\) 个位置全部填充为 \(x\) 得到的函数。用粗体表示数组(即一个 \(n\) 维向量),例如 \(\mathbf{x} = (x_1, x_2, \dots, x_n)\)。记定义在 \(S\) 上的 Boolean 函数类为 \(\mathcal{B}(S)\)。对于 \(f \in \mathcal{B}(\mathbb{Z}_2)\),\(f(\mathbf{x})_k\) 表示其第 \(k\) 个位置分量的函数,也叫它投影函数。
接下来证明三个引理:
\(\mathrm{Lemma}\) \(1\): \(f_1, f_2, f_3\) 的复合可以表示 \(\neg\)。
则 \(f^*_0 (0) = 1,f^*_1(1) = 0\)。
如果此时 \(f_0^* (1) = 0\) 或者 \(f_{1}^* (0)=1\) 那么我们就已经构造出了 \(\neg\)。
否则因为 \(f_3\) 不是单调的,至少存在一组 \(x_1, x_2, \dots, x_n\),\(y_1, y_2, \dots,y_n\) 和一个位置 \(j\) 满足 \(x_j = 1, y_j = 0\) 且 \(f(\mathbf{x}) = 0, f(\mathbf{y}) = 1\)。
对于其它位置,我们如下定义一个 \(f^{\prime}: \mathbb{Z}_2^n \to \mathbb{Z}_2^n\)。
则 \(f_3(f^{\prime}(\mathbf{x}))\) 是一个复合,显然 \((f_3\circ f^{\prime})^*(1)) = 0, (f_3\circ f^{\prime})^*(0)) = 1\)。
\(\mathrm{Lemma}\) \(2\):\(f_1, f_2, f_3, f_4\) 可以构造出常值函数。
只需证明前面提到的 \(f_0^* (1) = 0\) 或者 \(f_{1}^* (0)=1\) 的情况。由于 \(f_4\) 是非自对称的,必然存在一个数组使得 \(f_{4} (\mathbf{z}) = f_{4}(\neg \mathbf{z})\)。对于一个变元 \(p\),定义一个替换函数 \(v_p(\mathbf{z})\) 如下:
定义 \(g^{*}(p) = f(v_p(\mathbf{z}))\)。这样 \(g^*(\neg p) = f_4(v_{\neg p}(\mathbf{z})) = f_4(v_p(\neg \mathbf{z})) = f_4(\neg v_{p}(\mathbf{z})) = f_4(v_{p}(\mathbf{z})) = g^{*}(p)\)。
为什么最后一步可以这么替换?因为 \(p\) 要么取 \(0\) 要么取 \(1\),若 \(p\) 取 \(1\) 则 \(g^*(p) = f_4^*(p)\),否则 \(g^*(p) = f_4^*(\neg p)\)。
于是 \(g^*(p)\) 是一个常值函数。
\(\mathrm{Lemma}\) \(3\):\(f_1,f_2,f_3,f_4,f_5\) 可以定义一个二元函数,其真值表中 \(1\) 的个数为奇数。
由于 \(f_5\) 不是线性的,必然存在一个位置 \(i\) 和至少两个数组 \(\mathbf{y}, \mathbf{z}\) 满足:
第一个式子很显然,因为 \(f_5\) 不是线性的,所以改变 \(f_5\) 中非哑元位置的 \(1\) 的个数的奇偶性不一定总是造成 \(f_5\) 的值的改变。那么第二个又是怎么回事呢?这是因为如果 \(f_5\) 所有位置都是哑元,那么它就是线性的了(参考我们一开始的约定)。而对于非哑元我们总能找到一个这样的 \(\mathbf{y}\)。
由于我们已经构造出了常值函数,不妨用 \(\mathbf{1},\mathbf{0}\) 表示。现在我们来构造一个二元函数 \(g(p, q)\)。对于变量 \(p, q\),定义一个函数 \(v:\mathbb{Z}_2^{2}\to \mathcal{B}(\mathbb{Z}_2^n)\):
定义 \(g(p,q) = f_5(v(p,q))\),是一个复合。不妨设 \(z_i = y_i = 0\) 其余情况在 \(q\) 取于 \(\{0,1\}\) 时对称,于是 \(g(0,0) =f_5(z_1,\dots,z_i,\dots,z_n) = f_5(z_1,\dots,\neg z_i,\dots,z_n)= g(0,1)\) 而 \(g(1,0) = f_{5}(y_1,\dots,y_i,\dots,y_n) \not= f_5(y_1,\dots,\neg y_i,\dots,y_n) = g(1,1)\)。从而 \(g\) 为真值表 \(1\) 的个数为奇数的二元真值函数。
现在我们可以着手证明充分性了,引理 3 中构造出来的函数一定是如下四种:
- \(\land\)
- \(\lor\)
- \(\to\)
- \(\leftarrow\)
其中 \(\leftarrow\) 是反蕴含,即 \(p\leftarrow q\equiv q\to p\)。
前三个配合上 \(\neg\) 都是完备的,第四个可以通过 \(p\lor q = (p\leftarrow \neg q)\) 定义 \(\lor\) 从而可以知道是完备的。
接下来来证明必要性,首先我们证明一个向上继承(upwards inheritedness)引理。
向上继承定义为若 \(f,g_1,g_2,\dots,g_n\in \mathcal{F}\) 则 \(f(g_1,g_2,\dots, g_n)\in \mathcal{F}\)。其实向上继承性质描述的就是函数类对复合运算的封闭性,在泛代数中我们用克隆(clone)来描述这一性质,这里就不做介绍了。
很容易发现如果某个函数集的所有函数都可以被归到基本五类中的某一类中的话,那么由向上继承性就可以得到由该函数集中函数和这些函数的有限复合组成的函数集都属于这一类,我们只需要给出一个函数不属于以上五类就行了。
\(\mathrm{Lemma}\) \(4\):(向上继承引理)以上提到的五类函数类均具有向上继承性,即对于复合运算封闭。
对于 \(T_0, T_1\) 的结论都是平凡的,\(L\) 的这一性质之前已经证过了。接下来证明 \(S,M\) 具有此性质。
对于 \(f,g_1,g_2,\dots,g_n\in S\),\(f(g_1,g_2,\dots,g_n)(\neg \mathbf{x}) = f(g_1(\neg \mathbf{x}),g_2(\neg \mathbf{x}),\dots,g_{n}(\neg \mathbf{x})) = f(\neg g_1(\mathbf{x}), \neg g_2(\mathbf{x}),\dots,\neg g_{n}(\mathbf{x}))=\neg f(g_1(\mathbf{x}),g_2(\mathbf{x}),\dots,g_n(\mathbf{x}))=\neg f(g_1,g_2,\dots,g_n)( \mathbf{x})\)。
对于 \(f,g_1,g_2,\dots g_n\in M\),\(\mathbf{x} \preceq \mathbf{y}\),我们有 \((g_1(\mathbf{x}),g_2(\mathbf{x}),\dots,g_n(\mathbf{x}))\preceq (g_1(\mathbf{y}),g_2(\mathbf{y}),\dots,g_n(\mathbf{y}))\),于是 \(f(g_1,g_2,\dots,g_n)(\mathbf{x}) = f(g_1(\mathbf{x}),g_2(\mathbf{x}),\dots,g_n(\mathbf{x}))\le f(g_1(\mathbf{x}),g_2(\mathbf{x}),\dots,g_n(\mathbf{x}))\le (g_1(\mathbf{y}),g_2(\mathbf{y}),\dots,g_n(\mathbf{y})) \le f(g_1,g_2,\dots,g_n)(\mathbf{y})\)。
接下来寻找一组反例就行了,我们作业习题里的 \(\uparrow\) 恰好是一个。
定义 \(p\uparrow q = \neg (p\lor q)\),真值表如下。
| \(p\) | \(q\) | \(p\uparrow q\) |
|---|---|---|
| 1 | 1 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 0 | 0 | 1 |
\(\mathrm{Lemma}\) \(5\):\(\uparrow\) 不属于以上基本五类中的任何一类。
- \(\uparrow \not\in T_0\),\(0\uparrow 0 = 1\)。
- \(\uparrow \not\in T_1\),\(1\uparrow 1 = 1\)。
- \(\uparrow\not\in M\),\((0\uparrow 0)>(1\uparrow 1)\)。
- \(\uparrow\not\in S\),\((0\uparrow 1)=(1\uparrow 0)\)。
- \(\uparrow\not\in L\),这个可能会比较长,假设 \(p\uparrow q = c_0+ c_1\cdot p+ c_2\cdot q\),那么:
而
于是这个方程组无解。
同理可以证明 \(p\downarrow q=\neg(p\land q)\) 也不属于上面五类,这类函数我们称之为 Sheffer 函数。
Post 的完备性定理为判定一个函数集是否是完备的提供了系统性的有限时间内的判定方法。后续他的结论被 I. G. Rosenberg 推广到 \(\mathbb{F}_k\) 上,这更能体现这些函数类的代数性质。
参考文献:
[1] Pelletier, F. J., & Martin, N. M. (1990). Post's Functional Completeness Theorem. Notre Dame Journal of Formal Logic, 31(2), 462–475.

浙公网安备 33010602011771号