Boole's New Proof of Gödel's Incompleteness Theorem

前些日子查资料的时候发现逻辑学家George Boolos (不是boolean类型的George Boole) 曾经给出过Gödel定理的一个新证明. 看了之后觉得十分有趣.

Review of Gödel's Proof

关于Gödel的原始证明, 网上已有许多解释, 如刘未鹏的这篇文章. 这里再从数理逻辑角度简单回顾一下, 因为Boolos的证明用了许多Gödel的思想.

证明的第一步是建立Gödel Numbering, 也即建立一套编码系统, 使得形式系统中任意公式可与自然数一一对应. 这种思想及其方法在有了计算机的今天是十分轻易的, 在Gödel的文章里, 他用了不同素数表示形式系统中的最基本符号, 从而实现了这一点, 这种方法后来被称为Gödel Numbering.

第二步是证明一大堆"函数"都可以利用形式语言表述, 或者更严格地说, 证明它们是"primitive recursive(原始递归)". 这是论文的主要篇幅所在, 从最基本的形式语言符号出发, 一直列举了46个函数的符号表示. 中间给出了$isEvidence(x, y)$的形式化, 意为数$x$对应的命题可被数$y$对应的证明过程所证明. 有了它, 就可以给出$provable(x)$的形式化, 意为数$x$对应的命题可以被证明; 另一个重要的函数是$sub(a, x, a')$, 意为数$a$对应的命题里,将自由变元用$x$取代,可得到$a'$对应的命题. 如果用编程的思想, 我们可以和容易的想出, 这三个函数的确是原始递归的, 因为的确可以写个程序来计算它们, 不过当时还没有这些概念.

第三步, 使用对角线法, 构造自指命题, 创造悖论.令命题:

$$ u: \neg \exists a, provable(a) \cap sub(x, x, a) $$

其中$x$是一自由变元. 这时候, 我们看看$sub(u, u, G)$, 也即把$u$的Numbering代入$u$, 设得到$G$, 那么$G$如下:

$$ G: \neg \exists a, provable(a) \cap sub(u, u, a) $$

但是$sub(u, u, a)$成立当且仅当$a = G$ !! 所以以上公式改写后:

$$ G: \neg \exists a, provable(a) \cap a = G $$

我们已经看见了self-reference..只需稍加变形:

$$ G: \neg \exists a, provable(G) $$

也即:

$$ G: \neg provable(G) $$

从而, $G$是系统内不可被证明的真命题. 证毕.

Hofstadter的旷世神书GEB里包括了证明的第一与第三点的通俗有趣描述.

Boolo's Proof

Boolo也在试图用形式符号表达函数, 他表达出了一个函数$C(n, x)$: 数$x$可被长为$n$的公式所"named(表示)".

这里他对"named"的定义是: 如果有变元$x$的公式$F(x)$成立当且仅当$x=n$, 则说$F(x)$表示了$n$.

公式的长度, 指的就是表达这个公式所用形式符号的个数. 结合Gödel Numbering方法, 显然它也是一个原始递归函数.

有了$C(n, x)$之后, 很容易构造出$B(n, x)$, 意为: 数$x$可被某个长度小于$n$的公式所"named(表示)".

然后就可以构造出$A(n, x)$: $x$是最小的无法被长度小于$n$的公式所表示的整数.

(看到这里有没有觉得很眼熟..)

设公式$A(n, x)$的长度为$k$, 令公式$F$:

$$ F: \exists n, n = 10 k \cap A(n, x) $$

其中$x$为自由变元, 则$F(x)$的意思是: $x$是最小的无法被$10k$个字符所表示的整数.

但是由于我们的"表示"是有着良好定义的, 且长度有上界的所有公式可能表示出的数的总数显然是有限的, 因而"最小的无法被$10k$个字符所表示的整数"是唯一存在的, 设它是$m$, 则$F(x)$ 成立当且仅当 $x = m$, 于是 $F(x)$表示了$m$. 但$A(x, y)$长度才为$k$, $F(x)$的长度一定比$10k$小(其实$10k$也未必够, 但既然我们定义出了Numbering, 那总是无所谓的), 根据$m$的定义, "$F(x)$表示$m$"是不可证明的命题,但它是真命题.

Remarks

两个证明其实都是在构造悖论. Gödel证明使用了Epimenides悖论, Boolos证明使用了Berry悖论. 通过形式化, 将悖论构造出来便可完成证明.

形式化的方法就是Gödel Numbering和形式化描述, 这两步是两人都用了的, 但这些步骤在有了计算机思想的今天是无比自然的.

Gödel的第三步是巧妙的利用对角线法代换, 而Boolos并未使用对角线法. 他在它的那篇论文最后一段简洁地比较了两种方法的异同:

Both our proof and the standard one make use of Gödel numbering. Moreover, the unprovable truth in our proof and in the standard one can both be seen as obtained by the substitution of a name for a number in a certain crucial formula . There is, however, an important distinction between the two proofs. In the usual proof, the number whose name is substituted is the code for the formula into which it is substituted; in ours it is the unique number of which the formula is true.

In view of this distinction, it seems justified to say that our proof, unlike the usual one, does not involve diagonalization.

References

Gödel 1931 英文版pdf: On formally undecidable propositions of Principia Mathematica and related systems I

Boolos的论文: "A new proof of the Gödel Incompleteness Theorem"(1989), Notices of the American Mathematical Society 36: 388–90; 676.

我没找到pdf, 但这篇论文收录在了Boolos的著作"Logic, Logic, Logic"中, 这本书有pdf可以搜到.

旷世奇书GEB: Gödel, Escher, Bach: an Eternal Golden Braid

Comments