简单地说,第一条定理指出:
任何一个相容的数学形式化理论中,只要它强到足以蕴涵皮亚诺算术公理,就可以在其中构造在体系中既不能证明也不能否证的命题。
这条定理是在数学界以外最著名的定理之一,也是误解最多的定理之一。形式逻辑中有一条定理也同样容易被错误表述。有许多命题听起来很像是哥德尔不完备定理,但事实上是错误的。稍后我们可以看到一些对哥德尔定理的误解。
把第一条定理的证明过程在体系内部形式化后,哥德尔证明了他的第二条定理。该定理指出:
任何相容的形式体系不能用于证明它本身的相容性。
这个结果破坏了数学中一个称为希尔伯特计划的哲学企图。大卫 ·希尔伯特 (David Hilbert)提出,象实分析那样较为复杂的体系的相容性,可以用较为简单的体系中的手段来证明。最终,全部数学的相容性可以归结为基本算术的相容性。但哥德尔的第二条定理证明了基本算术的相容性不能在自身内部证明,因此当然就不能用来证明比它更强的系统的相容性了。
哥德尔不完备定理的意义
在形式逻辑中,数学命题及其证明都是用一种符号语言描述的,在这里我们可以机械地检查每个证明的合法性,于是便可以从一组公理开始无可辩驳地证明一条定理。理论上,这样的证明可以在电脑上检查,事实上这样的合法性检查程序也已经有了。
为了这个过程得以进行,我们需要知道手头有什么样的公理。我们可以从一组有限的公理集开始,例如欧几里德几何。或者更一般地,我们可以允许无穷的公理列表,只要能机械地判断给定的命题是否一条公理就行。在计算机科学里面,这被称为公理的递归集。尽管无穷的公理列表听起来有些奇怪,实际上自然数的的通常理论中,称为皮亚诺公理的就是这么一样东西。
哥德尔的第一条不完备定理表明任何一个允许定义自然数的体系必定是不完全的:它包含了既不能证明为真也不能证明为假的命题。
存在不完备的体系这一事实本身并不使人感到特别惊讶。例如,在欧几里德几何中,如果把平行公设去掉,就得到一个不完备的体系。不完备的体系可能只意味着尚未找出所有必须的公理而已。
但哥德尔揭示的是在多数情况下,例如在数论或者实分析中,你永远不能找出公理的完整集合。每一次你将一个命题作为公理加入,将总有另一个命题出现在你的研究范围之外。
你可以加入无穷条公理(例如,所有真命题)到公理列表中,但你得到的公理列表将不再是递归集。给出任意一条命题,将没有机械的方法判定它是否是系统的一条公理。如果给出一个证明,一般来说也无法检查它是否正确。
在计算机科学的语言中,哥德尔定理有另一种表述方式。在一阶逻辑中,定理是递归可枚举的:你可以编写一个可以枚举出其所有合法证明的程序。你可以问是否可以将结论加强为递归的:你可以编写一个在有限时间内判定命题真假的程序吗?根据哥德尔定理,答案是一般来说不能。
不确定命题的例子
哥德尔和保尔 ·科恩得出的一些结果结合起来给出了不确定命题(既不能证明也不能否证的命题)的一个实际例子:选择公理和连续统假设都是 集合论的标准公理系统内的不确定命题。
在1973年,同调代数中的怀特海问题被证明是集合论中的不确定命题。
1977 年,Paris 和Harrington 证明了组合论中的一个命题,拉姆赛理论的某个版本,在皮阿诺公理给出的算术公理系统中是不确定的,但可以在集合论的一个更大体系中证明为真。
在计算机科学中用到的 Kruskal的树问题,也是在皮亚诺公理中不确定而在集合论中可证明的。
Goodstein 定理是一个关于自然数的相对简单的命题,它在皮亚诺算术中是不确定的。
Gregory Chaitin 在算法信息论中构造了一个不确定命题 , 即 ``Chaitin 随机数 Ω的第 n个字节是否为 0"这样的命题在 ZFC内是不可判定的 .
对哥德尔定理的一些进一步解释
由于哥德尔的第一条定理有不少误解。我们举出一些例子:
该定理并不意味着任何有趣的公理系统都是不完备的。例如,欧几里德几何可以被公理化为一个完备的系统。(事实上,欧几里德的原创公理集已经非常接近于完备的系统。所缺少的公理是非常直观的,以至于直到出现了形式化证明之后才注意到需要它们)
该定理需假设公理系统可以定义自然数。但是并非所有系统都能定义自然数。例如,塔斯基 (Tarski)证明了实数和复数理论都是完备的公理化系统。
这理论用在人工智慧上,则指出有些道理可能是我们能够判别,但机器单纯用一阶逻辑断却无法得知的道理。不过机器可以用非一阶逻辑的逻辑系统。
讨论和推论
不完备性的结论影响了数学哲学以及形式化主义(使用形式符号描述原理)中的一些观点。我们可以将第一定理解释为 “我们永远不能发现一个万能的公理系统能够证明一切数学真理,而不能证明任何谬误 ”
以下对第二定理的另一种说法甚至更令人不安:
如果一个公理系统可以用来证明它自身的相容性,那么它是不相容的。
于是,为了确立系统 S 的相容性,就要构建另一个系统 T ,但是 T 中的证明并不是完全可信的,除非不使用 S 就能确立 T 的相容性。举个例子,自然数上的皮亚诺公理的相容性可以在集合论中证明,但不能单独在自然数理论范围内证明。这对大卫 ·希尔伯特的著名的未解决的 23个数学问题中的第二个给出了一个否定回答。
理论上,哥德尔理论仍留下了一线希望:也许可以给出一个算法判定一个给定的命题是否是不确定的,让数学家可以忽略掉这些不确定的命题。然而,对可判定性问题的否定回答表明不存在这样的算法。
要注意哥德尔理论只适用于较强的公理系统。 “较强 ”意味着该理论包含了足够的算术以便承载对第一不完备定理证明过程的编码。基本上,这就要求系统能将一些基本操作例如加法和乘法形式化,例如在鲁宾逊算术 Q中那样。有一些更弱的公理系统是相容而且完备的,例如 Presburger算术,它包括所有的一阶逻辑的真命题和关于加法的真命题。
公理系统可能含有无穷条公理(例如皮亚诺算术就是这样),但要哥德尔定理生效,必须存在检验证明是否正确的有效算法。例如,可以将关于自然数的所有在标准模型中为真的一阶语句组成一个集合。这个公理系统是完备的;哥德尔定理之所以无效是因为不存在决定任何一条语句是否公理的有效算法。从另一方面说,这个算法的不存在正是哥德尔定理的直接结果。
另一个哥德尔定理不适用的特殊情况是:将关于自然数的所有语句首先按长度然后按字典顺序排序,并从皮亚诺公理集开始,一个一个遍历列表,如果发现一条语句既不能证明又不能否证,就将它作为公理加入。这样得到的系统是完备的,兼容的,并且是足够强大的,但不是递归可枚举的。
哥德尔本人只证明了以上定理的一个较弱版本;以上定理的第一个证明是罗梭 (Rosser)于 1936年给出的。
基本上,第一定理的证明是通过在形式公理系统中构造如下命题
p = “ 此命题是不可证明的 ”
来完成的。这样,它可以看成是说谎者悖论的一个现代变种。
如果公理系统是相容的,哥德尔证明了 p(及其否定)不能在系统内证明。因此 p是真命题( p声称它不可证明,而它确实不能),尽管其证明不能在系统内形式化。请注意将 p作为公理加入系统并不能解决问题:扩大了的系统中会有另一个哥德尔语句出现。
罗杰·彭罗斯声称 “可被机械地证明的 ”和 “对人类来说看起来是真的 ”的这一区别表明人类智能不同于自然的无意识过程。这一观点未被普遍接受,因为正如 Marvin Minsky 所指出的,人类智能有犯错误和理解不相容和谬误句子的能力。但 Marvin Minsky透露说库尔特 ·哥德尔私下告诉他,他相信人类有一种到达真理的直觉方法,但因为跟计算机式的方法不同,人类可以知道为真的事情并不受他的定理限制。
对以上认为该定理揭示了人类具有超出形式逻辑之能力的这种观点也可以作如下评论:我们其实不知道 p是真是假,因为我们并不(也无法)知道系统是否是相容的。因此实际上我们并不知道系统之外的任何真理。我们所确知的只有这样一个命题:
要么p在系统内部无法证明,要么该系统是不相容的。
这样的命题之前已经在系统内部被证明。实际上,这样的证明已经给出。
第一不完备定理的证明要点
要充实对证明要点的描述,主要的问题在于:为了构造相当于 “p是不可证明的 ”这样的命题 p, p就必须包含有自身的引用,而这很容易陷入无穷循环。将要介绍的哥德尔巧妙的把戏,后来被艾伦 ·图灵用于解决可判定性问题。
开始的时候,每个公式或者说可形式化的命题都被我们的系统赋予一个唯一的数,称为哥德尔数。这要通过一种可以方便地在哥德尔数和公式之间(机械地)来回转换的方式来完成。因为系统足以表述 “数 ”的概念,因此也就足以表述公式的概念了。
象F(x)这样的公式含有一个自由变量 x,它们称为命题形式。一旦 x被一个特定的数代替,它就马上变成一个真正的特定命题,于是它要么是在系统中可证明的,要么不。命题形式自身并不是命题,因此不能被证明也不能能被否证。但每一个命题形式 F(x)都有一个哥德尔数,可用 G(F)表示。无论自由变量取什么值, G(F)的取值都不会改变。
通过小心地分析系统的公理和推理规则,可以写下一个命题形式 P(x),它表示 x是系统中一个可以证明的命题的哥德尔数。形式描述如下:如果 x是一个可证明命题对应的哥德尔数, P(x)就可被证明,而其否定 ~P(x)则不能。(尽管这对于一个证明要点来说已经足够,但在数学上却不太严格。请参见哥德尔和罗素的有关论文,关键字是 “omega-consistency”。
现在,哥德尔的把戏来了:一个命题形式 F(x)称为不可自证的,当且仅当把命题形式 F的哥德尔数 G(F)代入 F中所得的命题 F(G(F))是不可证明的。这个定义可以形式化,于是可以构造一个命题形式 SU(z),表示 z是某个不可自证命题形式的哥德尔数。 SU(z)的形式描述如下:
对某个命题形式 F(x)有 z = G(F),而且设 y是命题 F(G(F))的哥德尔数,则有 ~P(y)成立。
现在我们所要的语句 p就可以如下定义:
p = SU(G(SU))
直观上,当问到 p是否为真的时候,我们是在问: “不可自证这个特性本身是不可自证的吗? ”这很容易让人联想到理发师悖论,那个理发师只替那些不替自己理发的人理发:他替自己理发吗?
现在让我们假定公理系统是相容的。
如果p可以证明,于是 SU(G(SU))为真,根据 SU的定义, z = G(SU)就是某个不可自证命题形式的哥德尔数。于是 SU就是不可自证的,根据不可自证的定义, SU(G(SU))是不可证明的。这一矛盾说明 p是不可证明的。
如果p = SU(G(SU))的否定是可以证明的,则根据 SU的定义, z = G(SU)就不是不可自证命题形式的哥德尔数。这意味着 SU不是不可自证的。根据不可自证的定义,我们断定 SU(G(SU))是可以证明的,同样得到矛盾。这说明 p的否定也是不可证明的。
因此,p既不可证明也不可否证。
第二不完备定理的证明要点
令p是如上构造的不确定命题,且假定系统的相容性可以在系统内部证明。我们已经看到,如果系统是相容的,则 p是不可自证的。这个证明过程可以在系统内部形式化,因此命题 “p是不可证明的 ”或者 “~P(p)”可以在系统内证明。
但是最后一个命题就等价于 p自己(而且这种等价性可以在系统内部证明),从而 p就可以在系统内证明。这一矛盾说明系统是不相容的。
-----------------------------
关于此词条原文中以下部分我发现存在较大矛盾和歧义:
-------------------
“ 通过小心地分析系统的公理和推理规则,可以写下一个命题形式 P(x),它表示 x是系统中一个可以证明的命题的哥德尔数。形式描述如下:如果 x是一个可证明命题对应的哥德尔数, P(x)就可被证明,而其否定 ~P(x)则不能。(尽管这对于一个证明要点来说已经足够,但在数学上却不太严格。请参见哥德尔和罗素的有关论文,关键字是 “omega-consistency”。
现在,哥德尔的把戏来了:一个命题形式 F(x)称为不可自证的,当且仅当把命题形式 F的哥德尔数 G(F)代入 F中所得的命题 F(G(F))是不可证明的。这个定义可以形式化,于是可以构造一个命题形式 SU(z),表示 z是某个不可自证命题形式的哥德尔数。 SU(z)的形式描述如下:
对某个命题形式 F(x)有 z = G(F),而且设 y是命题 F(G(F))的哥德尔数,则有 ~P(y)成立。 ”
-------------------
在原文中,先称哥德尔数是针对命题形式的,是不随命题形式中的变量 x而改变的。而下文中却又对特定的命题给出哥德尔数。 “它表示 x是系统中一个可以证明的命题的哥德尔数 ”, “设 y是命题 F(G(F))的哥德尔数 ”
以上是难以理解的自相矛盾的。
也有可能是原文除了对命题形式还隐含了对命题的哥德尔数运算法则没有写出来(下文中会提到)
在此之前,由于对原文的进一步理解可能导致歧义,为了避免歧义我先做如下语法规定:
为了区别 F是作为命题形式的一部分还是作为变量 (只是这里的变量 F是命题形式 ),我把所有命题形式中的变量用 *代替以明确(下文中引号内是引用原文故不一定遵守此语法规定,而引号外遵守此语法规定)
在这种语法规定下, G(F)和 G(F(*))是不同的,
G(F) 是个命题,F是赋予变量的值,命题形式是 G(*)
G(F(*)) 是命题形式, *是变量,赋值 x后的命题是 G(F(x))
于是又存在一个问题:原文中的 “G(F)”是 G(F)还是 G(F(*))
假设原文隐含的运算法则是:一个命题 F(x)的哥德尔数 G(F(x))=G(F(*)),从而命题也有了哥德尔数。则由此推出原文的表达有 2种可能的歧义
-------------
1. 原文“G(F)” 意为G(F)
-------------
原文:“当且仅当把命题形式 F的哥德尔数 G(F)代入 F中所得的命题 F(G(F))是不可证明的。 ”
此句中, “把 G(F)代入 ”意为代入 G(F),
故“命题 F(G(F))”即是命题 F(G(F)), F是变量,则其命题形式是 *(G(*))
原文:“对某个命题形式 F(x)有 z=G(F),而且设 y是命题 F(G(F))的哥德尔数,则有 ~P(y)成立 ”
根据上句,此句中 y=G(F(G(F)))=G(*(G(*))),显然y 的值是定值与 F变化无关;
~P(y) 是否成立则与命题 F(G(F))是否不可证明有关,即与 F变化有关
-------------
2. 原文“G(F)” 意为G(F(*))
-------------
原文:“当且仅当把命题形式 F的哥德尔数 G(F)代入 F中所得的命题 F(G(F))是不可证明的。 ”
此句中, “把 G(F)代入 ”意为代入 G(F(*)),
故“命题 F(G(F))”其实是命题 F(G(F(x))), x是变量,则其命题形式是 F(G(F(*))),
原文:“对某个命题形式 F(x)有 z = G(F),而且设 y是命题 F(G(F))的哥德尔数,则有 ~P(y)成立 ”
根据上句,此句中 y=G(F(G(F(x))))=G(F(G(F(*)))),此处"F" 不再是变量而是固定的命题形式的一部分,也是固定的, y仍是定值与 x变化无关
~P(y) 是否成立则与命题 F(G(F(x)))是否不可证明有关,即与 x变化有关
两种歧义相较而言,前者符号上与原文更接近
望高手们尽快对以上矛盾和歧义做出说明