哥德尔不完备定理(Godel‘s Incompleteness Theorem)
在数理逻辑中,哥德尔不完备定理是指库尔特・哥德尔于 1931 年证明并发表的两条定理。简单地说,第一条定理指出:任何相容的形式系统,只要蕴涵皮亚诺算术公理,就可以在其中构造在体系中既不能证明也不能否证的命题(即体系是不完备的)。
这条定理是在数学界以外最著名的定理之一,也是误解最多的定理之一。它是形式逻辑中的定理,所以容易被错误表述。有许多命题听起来很像是哥德尔不完备定理,但事实上是错误的。稍后我们可以看到一些对哥德尔定理的一些误解。
把第一条定理的证明过程在体系内部形式化后,哥德尔证明了他的第二条定理。该定理指出:
任何相容的形式系统,只要蕴涵皮亚诺算术公理,它就不能用于证明它本身的相容性。这个结果破坏了数学中一个称为希尔伯特计划的哲学企图。大卫・希尔伯特提出,像实分析那样较为复杂的体系的兼容性,可以用较为简单的体系中的手段来证明。最终,全部数学的兼容性都可以归结为基本算术的兼容性。但哥德尔的第二条定理证明了基本算术的兼容性不能在自身内部证明,因此当然就不能用来证明比它更强的系统的兼容性了。
哥德尔不完备定理的证明
第一不完备定理的证明要点
要充实对证明要点的描述,主要的问题在于:为了构造相当于 “p 是不可证明的” 这样的命题 p,p 就必须包含有自身的引用,而这很容易陷入无穷循环。将要介绍的哥德尔巧妙的把戏,后来被艾伦・图灵用于解决决定性问题。
首先,每个公式或者说可形式化的命题都被我们的系统赋予一个唯一的数,称为哥德尔数。这要通过一种可以方便地在哥德尔数和公式之间(机械地)来回转换的方式来完成。因为系统足以表述 “数” 的概念,因此也就足以表述公式的概念了。公式可以为命题形式、命题或其他。命题形式的哥德尔数数值不同于命题的哥德尔数数值。
像 F (x) 这样的公式含有一个自由变量 x,它们称为命题形式。一旦 x 被一个特定的数代替,它就马上变成一个真正的特定命题,于是它要么是在系统中可证明的,要么不。命题形式自身并不是命题,因此不能被证明也不能被否证。但每一个命题形式 F (x) 都有一个哥德尔数,可用 G (F) 表示。自由变量的选择与 G (F) 的赋值无关。
通过小心地分析系统的公理和推理规则,可以写下一个命题形式 P (x),它表示 x 是系统中一个可以证明的命题的哥德尔数。形式描述如下:如果 x 是一个可证明命题对应的哥德尔数,P (x) 就可被证明,而其否定~P (x) 则不能。
现在,哥德尔的把戏来了:一个命题形式 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 就可以在系统内证明。这一矛盾说明系统是不相容的。
哥德尔不完备定理的意义
哥德尔定理是一阶逻辑的定理,故最终只能在这个框架内理解。在形式逻辑中,数学命题及其证明都是用一种符号语言描述的,在这里我们可以机械地检查每个证明的有效性,于是便可以从一组公理开始无可辩驳地证明一条定理。理论上,这样的证明可以在电脑上检查,事实上这样的有效性检查程序也已经有了。
为了这个过程得以进行,我们需要知道手头有什么样的公理。我们可以从一组有限的公理集开始,例如欧几里得几何。或者更一般地,我们可以允许无穷的公理列表,只要能机械地判断给定的命题是否是一条公理就行。在计算机科学里面,这被称为公理的递归集。尽管无穷的公理列表听起来有些奇怪,实际上自然数的通常理论中,称为皮亚诺公理的就是如此。
哥德尔的第一条不完备定理表明任何一个允许定义自然数的体系必定是不完全的:它包含了不能在此体系内以一阶谓词逻辑形式证明的命题,并且该命题的否命题也不能在该体系内以一阶谓词逻辑的形式证明。
存在不完备的体系这一事实本身并不使人感到特别惊讶。例如,在欧几里得几何中,如果把平行公设去掉,就得到一个不完备的体系。不完备的体系可能只意味着尚未找出所有必须的公理而已。
但哥德尔揭示的是在多数情况下,例如在数论或者实分析中,你永远不能找出公理的完整集合。每一次你将一个命题作为公理加入,将总有另一个命题出现在你的所能形式证明的范围之外。
你可以加入无穷条公理(例如,所有真命题)到公理列表中,确保所有命题都可证明为真或假,但你得到的公理列表将不再是递归集。给出任意一条命题,将没有机械的方法判定它是否是系统的一条公理。如果给出一个证明,一般来说也无法检查它是否正确。
在计算机科学的语言中,哥德尔定理有另一种表述方式。在一阶逻辑中,定理是递归可枚举的:你可以编写一个可以枚举出其所有有效证明的程序。你可以问是否可以将结论加强为递归集:可以编写一个在有限时间内判定命题真假的程序吗?根据哥德尔定理,答案是一般来说不能。
对哥德尔定理的一些误解
哥德尔的第一条定理有不少误解。我们就此稍作说明:
该定理并不意味着任何有趣的公理系统都是不完备的。例如,欧几里得几何可以被一阶公理化为一个完备的系统(事实上,欧几里得的原创公理集已经非常接近于完备的系统。所缺少的公理是非常直观的,以至于直到出现了形式化证明之后才注意到需要它们)。
该定理需假设公理系统可以 “定义” 自然数。就算这些系统拥有包括自然数作为子集的模型,也不一定就能定义自然数。必须透过公理和一阶逻辑,在系统中表达出 x 是一个自然数这个概念才行。有许多系统包含自然数,却是完备的。例如,塔斯基(Tarski)证明了实闭域都是完备的一阶公理化系统。
这理论用在人工智能上,则指出有些道理可能是我们能够判别,但机器单纯用一阶公理化系统却无法得知的道理。不过机器可以用非一阶公理化系统,例如实验、经验。
哥德尔不完备定理的相关讨论和推论
不完备性的结论影响了数学哲学以及符号逻辑(使用形式符号描述原理)中的一些观点。我们可以将第一定理解释为 “我们永远不能发现一个万能的公理系统能够证明一切数学真理,而不能证明任何谬误”。以下对第二定理的另一种说法甚至更令人不安:
如果一个(强度足以证明基本算术公理的)公理系统可以用来证明它自身的兼容性,那么它是不兼容的。
于是,为了确立系统 S 的兼容性,就要构建另一个系统 T,但是 T 中的证明并不是完全可信