关注:决策智能与机器学习,聚焦AI干货

编者按:智能技术要在理论研究方面必须要解决非线性现象的可建模机理与规律,其中哥德尔不完备定理不容忽视,哥德尔不完备定理、塔尔斯基形式语言真理论,图灵机和判定问题,被赞誉为现代逻辑科学在哲学方面的三大成果。

受哥德尔不完备定理启发,或许可以认为集成学习是一个重要方向,即神经网络、随机任林等单一模型或技术路线注定无法解决所有非线性问题,因为哥德尔不完备定理证明了一个自洽的公理体系一定有不可证明的“正确命题”,即单一技术路线的不完备性,简单点说就是“人无完人,即公理无完美”。这或许可以启发出更多的非线性拟合方法,从而构造出真正对非线性现象具有越来越完善建模和解释能力的基础理论。

个人水平有限,对哥德尔不完备定理的理解能力很有限,转载一篇清华大学赵昊彤博士的解读,个人感觉还比较客观且深入浅出。

哥德尔不完备定理论文PDF下载链接见文末。

小预警,本文非常长(约3万字),可以微信浮窗慢慢读。

本文转载自赵昊彤博士在科学网博客的系列文章,特此说明。

原文地址:http://blog.sciencenet.cn/blog-409681-1067019.html

正文

【中文网上深入介绍哥德尔不完备定理的文章很少,我这篇文章写得很长,花了不少时间打磨它,希望能帮助到爱好数学与逻辑的人。文章把理解哥德尔不完备定理分为了五重,建议只是想初步了解的读者,可以重点看第一重;希望了解一些背景的读者,可以修炼到第二重;希望较深入理解哥德尔证明思路的读者,建议修炼到第三重;如果确实感兴趣,希望详细了解哥德尔证明过程以及其严谨性的读者,可以修炼到第四重;如果还想多知道一些知识的读者,可以练到第五重。——— 作者】

1931年,库尔特∙弗雷德里希∙哥德尔(KurtFriedrich Gödel)发表了一篇影响深远的论文“On formally undecidablepropositions of Principia Mathematica and related systems I”[1](论文的原文是用德文发表的,这里给出的是英译名)。今天,我们一般笼统的把论文中提出的定理称为“哥德尔不完备定理”。80多年过去了,“哥德尔不完备定理”的影响仍然持续、深远,特别是引起了很多非数学界人士的兴趣,引发了各种各样的解读。很遗憾,有一些解读是不准确的,甚至是错误的;更为严重的是,有一些人出于对“哥德尔不完备定理”的一知半解,甚至开始怀疑、批判人类的理性,以至于发展到相信、鼓吹不可知论。近期,我在认真研读了哥德尔论文原文(英译版,本人实在是不懂德文)和相关资料的基础上,加深了自己的认识,同时也很希望尽自己绵薄之力,分享对“哥德尔不完备定理”的理解,厘清对“哥德尔不完备定理”的误解。

“哥德尔不完备定理”是数学、逻辑学领域的划时代成果,使人们对于数学研究基础的认识更加深刻、准确,同时它也是现代逻辑史上的重要里程碑。“哥德尔不完备定理”虽然伟大、深刻,但是个人认为它并不深奥。对于一个普通人,只要愿意动脑,都可以在一定程度上准确理解它。当今的互联网时代,网上有不少对“哥德尔不完备定理”的介绍和解读;60多年前,两位美国作家欧内斯特·内格尔(Ernest Nagel)和詹姆士 R. 纽曼 (James R. Newman)撰写的的著作《哥德尔证明》更是科普“哥德尔不完备定理”的重要作品。如今网上能看到的中文介绍“哥德尔不完备定理”的文章,绝大部分是转述《哥德尔证明》这本书的内容的。不过这本书撰写太早,有些新的结论当年尚不了解;另外这本书在普及哥德尔证明的时候,更多的是讲解背景、思路,并用作者自己的理解来讲述哥德尔的证明,个别地方不够严谨,一些讲述方式也不够准确。本文则全部基于哥德尔论文的原文来介绍“哥德尔不完备定理”的证明,并适当融入一些80多年来新的认识和结论,希望能帮助数学、逻辑学爱好者了解并理解“哥德尔不完备定理”。

为了帮助更多人在各自需要的层面上理解“哥德尔不完备定理”,下面的介绍把理解“哥德尔不完备定理”分为了五重,从对定理的基本含义的理解一直到对核心证明的了解都包括了进来。读者可以像修习“乾坤大挪移”神功一样,依照自身内力基础,修炼到适合自己的层面即可。祝愿大家都能练成“哥德尔不完备定理”第五重神功!

第一重:“庐山真面目”——准确了解“哥德尔不完备定理”

赏玩一块美玉的时候,首先不应该是听各类专家讲这块玉多么晶莹剔透、多么价值连城,而应该是首先把玉拿出来让大家看看,有个感性认识。在哥德尔的论文中,我们一般所说的“哥德尔不完备定理”(有时候也被叫做“哥德尔第一不完备定理”)是指论文中的定理VI,原文如下:

TheoremVI: For every ω-consistent primitive recursive class κ of formulae, there is aprimitive recursive class-sign r , such that neither forall(v,r) nornot(forall(v,r)) belongs to Conseq(κ) (where v is the free variable of r).

尽量原汁原味的翻译如下:

定理VI:对于任意一个ω一致(第四重)的原始递归公理集合κ,一定存在一个原始递归(第三重、第四重)的表达式r,使得无论是“r总成立”这个命题,还是“r不总成立”这个命题,都不属于通过κ可推导出来的定理的集合(原文中的Conseq(κ))。

补充说明一点,哥德尔论文中的κ所代表的公理集合,是指蕴含了皮亚诺算术公理(Peano Axioms)的集合,这是在哥德尔论文的前面明确了的,所以在阐述定理VI时就没有再特意强调。

修炼第一重神功的读者可能会问了“大哥,你说的这些都是啥?”。别担心,修炼第一重神功没那么复杂。

让我们先从公理说起,公理其实就是无需证明而被认定为成立的命题。公理体系是指一组公理的集合。通过这些公理和基本的逻辑关系,可以推导出更多成立的命题,称为定理。公理体系一般被认为发源于2300多年前欧几里德撰写的《几何原本》。在现代科学形成的过程中,人们发现通过定义一组公理再加上合理的逻辑推演,可以证明很多命题或结论。公理体系是当今数学研究和科学研究的基础,数学研究成果就是(或者说在极大的程度上依赖于)一组公理体系的推演,而其它科学研究除了依赖公理体系进行推演外,还需要通过系统的实验来进行验证。

“哥德尔不完备定理”是针对公理体系的一项结论,它之所以如此伟大且深刻,正是因为它撼动的是一切科学的研究基础——公理体系。修炼第一重神功的时候,我们简要理解“哥德尔不完备定理”说的是:一个足够复杂的公理体系(至少蕴含了皮亚诺算术公理),如果它是一致的(相容的,无矛盾的),那么它就是不完备的。这里的完备,指的是“对于任何可在这个公理体系内描述的命题,都可以在这个公理体系内得到判定,要么是正确的,要么是错误的”。

再用大白话解释一下,就是说,一个没有矛盾的公理体系内,总有一些命题是说不清楚对还是错的(务必注意,这是指在这个体系内说不清楚,不是说永远都说不清楚了)。也许有人说了,既然没矛盾的公理体系有问题,那就搞个有矛盾的公理体系呗。如果设想一个公理体系,一会儿告诉我们“1+1=2”,一会儿又告诉我们“1+12”,相信不会再有人把这个公理体系当回事。有矛盾的公理体系会导致彻底的无意义和虚无,修炼第二重神功的时候会详细阐明这一点。

上述结论听起来是比较可怕的,公理体系必须没有矛盾,可是没有矛盾的公理体系又会导致出现一些命题说不清楚对错。于是开始出现了各种各样的解读,比如“哥德尔定理告诉了我们数学和逻辑的极限,这也几乎是人类理性的极限。它证明理性不是无所不能的”、“哥德尔定理告诉我们,人类不可能真正认识这个世界,永远不可能理解宇宙的真理”等等。相信作为人类理性智慧光辉代表之一的哥德尔,如果听到这些说法,可能也会很无奈吧。

第一,“哥德尔不完备定理”不仅不是所谓人类理性的极限,恰恰相反,它是人类理性智慧的重大成果。它告诉了我们,正是由于有了人类理性的智慧,才有可能认识到这样深刻的结论。哥德尔是通过构造出了一个无法在这个公理体系内证明的命题来证明出“哥德尔不完备定理”的。这个命题的内容说的正是“命题自身无法在此公理体系内被证明”,既然哥德尔已经清楚的证明了这一点,说明这个命题毫无疑问是正确的。所以,“哥德尔不完备定理”的证明过程其实告诉了我们,存在一个可在这个公理体系内表达的正确的命题,但是在这个公理体系内却既不能证明它,也无法证伪它。如果说“哥德尔不完备定理”阐明了什么极限的话,那它阐明的也只是“某类公理体系的极限”,而不是“数学、逻辑的极限”,更不是什么“人类理性的极限”。

第二,“哥德尔不完备定理”不仅不会告诉我们“人类不可能真正认识这个世界”,反而是在更深刻的层面上告诉了我们人类应该如何去认识世界、探索真理。譬如在数学上,如果发现一个命题通过现有的方法、公理和定理一直得不到证明,我们就可以尝试扩展现有的方法和公理体系来进一步研究;费马大定理、黎曼猜想等命题被称为“会下金蛋的母鸡”就是这个道理。物理学上,广义相对论的发现过程,也是因出现了平直空间中狭义相对论某些推论难以解释(如高速旋转的圆盘会发生扭曲),爱因斯坦提出了等效原理并毅然拓展了平直空间的假设,创建了广义相对论这个伟大的理论。值得一提的是,哥德尔和爱因斯坦在普林斯顿大学成为了非常好的朋友。晚年的爱因斯坦曾经说过,之所以他每天还会经常坚持去办公室上班,是因为可以在路上和哥德尔聊聊天;而爱因斯坦的去世也曾给哥德尔的情绪以很大打击。

第三,“哥德尔不完备定理”也没有给出人类认识真理的上限。如果一个命题在某个公理体系内无法判定,那也不是意味着这个命题就是无法判定的了。对于这类命题,如果属于科学范畴的,可以通过科学实验加以判定,从而扩展现有的公理体系,发现新的科学规律;如果属于数学范畴的,可以通过寻找新的数学工具、数学方法或者数学理论来直接拓展现有公理体系,从而准确的判定这个命题,进而扩大人类研究的深度和广度。

还有人了解到,数学研究已经证明了“不存在一个通用的算法,能够判定一个给定的命题在某个确定的公理体系内是否是可判定的”。由此认为既存在着不可判定的命题,又不存在“能够判定某个命题是否不可判定的方法”,显然我们没法准确认识这个世界了。这种观点是不准确的。虽然我们的确证明了不存在通用的判定算法,但是人类认识世界不是只依靠某组公理体系和确定的逻辑与算法的,人类的思维也不可能只局限在某个或者某组公理体系之内。虽然我们无法设计出一个通用算法,来判定一个命题是否在某个公理体系内可判定,但是这并不必然导致我们无法认知这个命题。举个比较简单的例子,“Goodstein定理”(这个定理相对简单易懂,修炼到第五重的时候会详细说明这个例子)就是一个在皮亚诺公理体系里无法判定的命题,但是在集合论中,利用序数知识可以非常简单的证明它。

“哥德尔不完备定理”揭示了公理体系内在而深刻的性质和固有局限性,告诉我们不要奢望仅仅通过若干组公理出发,机械地利用基本逻辑规则进行推导,就能够对全部的命题进行判定。从这个意义上讲,无论是数学还是其它科学,都需要不断的完善、扩充自身的公理体系(或者基本规律),只有这样才能不断认知更加深刻复杂的客观世界。或者说,哥德尔真正严格证明了这句格言——“科学研究是永无止境的”。

第二重:“静水流深”——“哥德尔不完备定理”的深刻背景

哥德尔为什么会想到证明这样一个“不完备定理”呢?既然已经修炼到第二重了,就稍微说的多一点。

(一)数学公理化

人们经常说,数学研究领先其他学科研究至少200年。其实在上上个世纪,也就是19世纪的时候,数学研究就已经大幅度超前于其他学科的研究了。数学家以及很多科学家们越来越意识到数学应该是一个公理化的系统,它的结构应该是这样的——首先定义一批公理和基本逻辑规则,然后依据这些公理和逻辑规则可以推演出这个体系内的无穷多的定理——这就应该是理想的数学。

倡导并推进数学公理化的最主要代表人物就是德国数学家大卫·希尔伯特(David Hilbert),19世纪和20世纪最具影响力的大数学家之一。希尔伯特的影响力主要体现在他于1900年在巴黎举行的第二届国际数学家大会上作的题为《数学问题》的演讲。在这个演讲中,希尔伯特提出了23个他认为最重要的数学问题,而这23个问题至今还在指引着数学家的研究方向。

这23个问题中的第2个问题,就是有关数学公理化的。希尔伯特说:“在这些无数个问题之上,我倾向于确定下面这个问题才是最重要的:这些公理在经过有限步骤的推演后是不会导致相互矛盾的结论的。……也就是说,我们需要一个关于算术公理一致性(相容性)的证明。”。

1910~1913年,怀特海(Alfred North Whitehead)和罗素(Bertrand Russell)撰写的《数学原理》(《Principia Mathematica》)的发表,是数学公理化推进的又一里程碑事件。《数学原理》希望从最基础的逻辑出发来定义全部数学,试图构建一个宏大的逻辑体系结构,彻底的解决数学公理化的问题。我们只要稍微想象一下,就能够猜到这个过程有多复杂,特别是罗素还要在这个过程中消除自己发现的“罗素悖论”(后面会提到)。直到《数学原理》第一卷的363页,才推导出了数字“1”的定义;第二卷又费了很大的力气,证明了乘法交换律。《数学原理》工程浩大,两位作者只完成了前三卷,覆盖了集合、基数、序数和实数的相关内容,虽然对第四卷几何的基础做了筹划,但整个体系结构实在太过复杂,两位作者“才智枯竭”[2],实在无法再写下去了。

数学公理化推进的最关键标志性事件是1920~1923年间,希尔伯特推动的“希尔伯特计划”。这个计划的主要目标,是为全部的数学提供一个安全的理论基础。这个计划对数学公理化提出了如下要求:

  • 形式化:形式化是希尔伯特提出来的一个关键思想,意思是,所有数学应该使用用统一的、严格的、无意义的、形式化的语言来表述,并且按照一套严格的、基础的逻辑规则来推演。

  • 完备性:形式化之后,数学里所有的真命题都可以通过上述规则被证明。

  • 一致性:运用这一套形式化的表达和规则,不可能推导出矛盾。

  • 保守性:这是针对形式化而言的,即如果赋予一些形式化的表达以含义(希尔伯特将这称为元数学),并由此证明了某些结论,那么必须保证即使不赋予这些含义,依然可以证明同样的结论。

  • 确定性:可以通过一个算法来确定每一个形式化的命题是真还是假。

对于修炼完成了“哥德尔不完备定理”第一重神功的读者来说,应该会看出上述“希尔伯特计划”是有问题的。没错,之所以我们比大数学家希尔伯特还要目光如炬,是因为我们站在哥德尔这个巨人的肩膀上!要知道,在哥德尔的论文发表之前,甚至是发表之后的一段时间,主流数学家、逻辑学家们仍然认为希尔伯特计划毫无疑问是正确的,问题只不过是如何给出证明罢了。

(二)一致性(相容性)的重要意义

在详细阐述“哥德尔不完备定理”对数学公理化特别是“希尔伯特计划”的影响之前,我们先来谈一下“一致性”的重要意义。这里说的“一致性”就是指很多文章或书籍里面说的“相容性”,希尔伯特说的compatibility,哥德尔说的consistency,意思是“无矛盾的”。

在修炼第一重神功的时候,我们谈到构造一个不一致(不相容、存在矛盾)的公理体系是无意义的。从直觉出发,我们都清楚,存在矛盾的体系当然有问题了。这里,我们给出逻辑上的说明(或者说证明)。

做这件事之前,让我们先来感谢罗素和怀特海,是他们的艰苦工作成果《数学原理》给出了数学形式化的基础。我们正是以此为基础,来说明一致性的重要意义。另外,了解《数学原理》中给出的数学形式化的基本表示,也是继续修炼第三重、第四重神功的基础,因为哥德尔就是基于《数学原理》中数学形式化的表达来证明“哥德尔不完备定理”的。

由于形式化表达的符号存在不同的样式,为避免歧义,本文中数学形式化的表达与哥德尔论文中的样子保持一致。以下是数学形式化的基本原则:

(1)使用字母(一般使用p、q、r等)表示命题变量,即一个字母表示一个命题;使用如下符号表示特定逻辑(注意,形式化之后的表达式是无含义的,因此这些符号仅表示某种逻辑关系):

~        逻辑“非”;

∨        逻辑“或”;

⇒    逻辑“推出”,意思是“如果……那么……”;

∧        逻辑“与”;

∀x∙p   对于任意x,p都成立;

∃x∙p   存在x使p成立;

(2)组成合理的命题表达式。譬如,“p∨q”就是一个合理的命题表达式,而“p∨”就是一个错误的表达式。

(3)两条变换规则:一是代入规则,可以使用其它的命题表达式对某个命题表达式中的某个命题变量进行全部统一替换;二是分离规则,其实就是我们常说的逻辑三段论,已知p和p⇒q成立,则q成立。

(4)《数学原理》提出的四条基本逻辑推演公理:

(p∨p)⇒p

p⇒(p∨q)

(p∨q)⇒(q∨p)

(p⇒q)⇒((r∨p)⇒(r∨q))

大家可能觉得这四条基本逻辑推演公理看起来像是废话,由此可知《数学原理》这本巨著是从多么基础的逻辑出发的。不要小看这四条基本推演公理,它们可以推导出难以想象的复杂的结论。

好,以上四条数学形式化的基本原则叙述完毕,下面开始推出一个逻辑定理:p⇒(~p⇒q)。推演过程如下:

根据第二条推演公理,得到p⇒(p∨q);

根据变换规则二,设p成立,则得到如下结论,

p∨q成立;

在p成立的前提下,设~p成立(即p不成立),则由∨逻辑的基本含义得到q成立(意思就是,“p或q”成立,且p不成立,那么必然q要成立);

根据上述结果,在p成立的条件下,如果~p也成立,那么q成立。

于是得到上面的逻辑定理p⇒(~p⇒q)。注意,这里面q是一个自由的命题变量,根据基本变换规则一,可以把任何命题代入q。因此,我们得到了一个重要结论,如果有一个命题“p”和它的逻辑非“~p”都成立,那么任意命题q都成立。也就是说,有矛盾的公理体系可以推导出任意命题都成立。这就是为什么公理体系必须一致,不一致的公理体系为什么无意义的原因了。

(三)数学形式化的目的

在谈完了“一致性”的意义后,我们还要再谈一下为什么希尔伯特要搞数学形式化?希尔伯特是提出数学形式化的代表人物,他提出数学形式化的目的还是从证明“希尔伯特第2问题”出发来考虑的。人们之所以笃信公理体系必然是一致的、无矛盾的,其实是因为人们日常研究并应用的公理体系都是有含义的,都是对应着客观实体的。人们相信客观实体及其规则是不会发生矛盾的。这正像我们中国成语“自相矛盾”故事所说的,一个无坚不摧的矛和一个无比坚固的盾在现实世界是不会同时存在的,只要用这个矛刺一下这个盾,就会有一方露馅。可是我们的公理体系不总是对应着存在的客观实体,很多情况下(特别是数学中)的公理体系对应着抽象实体或者理想实体(如集合、点、线、面),而且被对应的实体是无穷多的,我们无法通过有限枚举来证明这些公理体系的一致性。

由此,希尔伯特想到,彻底抛弃(数学)公理体系中的含义,构造一个形式化的公理体系,这个体系内的各种表达式仅仅具有符号意义。如果能由此证明这样的公理体系的一致性,那么无论把任何含义赋予这个公理体系时,必然是无矛盾的、一致的了。

正是由于希尔伯特这个想法,以及罗素和怀特海的“身体力行”,才使得哥德尔最终发现了不完备定理。否则,人们在研究公理体系的时候,总会把它对应的含义和其逻辑关系一起考虑,就不太容易把思路聚焦到公理体系的逻辑本身上面,也就不容易发现“哥德尔不完备定理”了。

(四)“哥德尔不完备定理”打破了“希尔伯特计划”么?

最后让我们再回到“哥德尔不完备定理”,看看哥德尔是如何在数学公理化(以及公理体系形式化)的大背景下“釜底抽薪”的。我们先来看“希尔伯特计划”的几个要素:

一是形式化。显然,“哥德尔不完备定理”并没有反对形式化,而且正是通过《数学原理》中公理体系形式化的成果,哥德尔才证明了不完备定理。

二是完备性和一致性。“哥德尔不完备定理”明确指出了公理体系完备性和一致性的矛盾之处,它证明了一致的公理体系(指蕴含皮亚诺公理的公理体系,以下类似,不再赘述)必然是不完备的,也就是说,完备性和一致性不可能同时获得。另外,“哥德尔不完备定理”还有一个推论,一般被叫做“哥德尔第二不完备定理”,它表明公理体系的一致性不能在这个公理体系内被推导出来。也就是说,不仅完备性和一致性有矛盾,即使是一致性本身,也不能在公理体系内得到证明(这个结论似乎显得更可怕)。

三是保守性。事实上,保守性也不再成立了。在“哥德尔不完备定理”的详细证明过程(第四重)和“Goodstein定理”介绍(第五重)中,我们就可以发现,当赋予了某些含义给公理体系之后,原来不可证明的命题变得可证明了。个人认为,赋予含义的过程本身就是在扩充这个公理体系(个人观点,可讨论)。这也是为什么哥德尔构造的forall(v,r)这个命题在《数学原理》确定的逻辑基础和皮亚诺公理体系内不可通过形式化的推演而证明,但是却在哥德尔的论文中被证明了的原因。哥德尔论文中也提到了,provable(x)是他构造的46个表达式中唯一个不能断言为原始递归性质的,这说明命题的“可证性”某种意义上是被哥德尔新赋予的含义。

四是确定性。显然确定性也不成立,因为哥德尔证明了存在某些命题无法证明其真假。而且就算在确定性判断的“真”和“假”以外加入“不可证明”这一类,也是不成立的。我们前面提到过,没有一个通用的算法能够判定任意命题是否不可证。

从上面这些要素来看,除了公理形式化没有问题外,其他要素都存在问题,要么互相矛盾,要么根本不成立。从这个意义上讲,“希尔伯特计划”确实被打破了,这也是当年“哥德尔不完备定理”最重大且最直接的影响。

“哥德尔不完备定理”发表时,希尔伯特还在世,面对这个伟大成果,大数学家希尔伯特也只能退让,不过只是略微退让。毕竟哥德尔只是在某一个范畴内(皮亚诺公理体系+原始递归性质)构造出了一个在公理体系内不可证明的命题,剔除这个范畴之后,结果又会是怎么样的呢(第五重)?

无论怎样,我们必须指出希尔伯特“为全部的数学提供一个安全的理论基础”这个目标并没有被打破,通过不断扩展公理体系,我们仍然可以为数学提供一个越来越安全的基础,只不过这个公理体系结构看起来要从原来的“有限”变为“无限”了。

第三重:“惊鸿一瞥”——“哥德尔不完备定理”的概要证明思路

首先恭喜开始修炼第三重神功的读者,相信你们已经对“哥德尔不完备定理”有了足够的理解了,现在我们开始进入到“哥德尔不完备定理”的证明思路中。

哥德尔在25岁就发表了这篇伟大的论文,但是哥德尔这个人却是一个很谨慎细致的人,他知道自己这篇论文可能带来的影响,因此他非常担心别人没有读懂它,或者引发什么误会。为此,在这篇论文的第一部分Introduction中,哥德尔概括但细致地给出了整个证明的思路。

不过,在我们理解哥德尔的证明思路之前,让我们先从更简单、更易懂的方式入手来逐步进入状态。

(一)悖论式语言

喜欢搞点逻辑类脑筋急转弯的读者可能了解一些悖论式的语言,譬如“这句话是谎话”。这句话到底对不对呢?如果说它对,那么它就真的是谎话了,既然是谎话,那么显然是不对的;如果说它不对,就意味着它不是真话而是谎话,显然它又对了。对可以推演出不对,不对却可以推演出对,这种语言可以称之为“悖论式语言”。由此,我们可以给出一个结论,能用语言表达的语句中,一定存在既不能说明它对也不能说明它错的句子。于是我们可以说,语言体系的逻辑表达是不完备的。

如果有人以为这就证明了“哥德尔不完备定理”,那未免太天真了。这种逻辑悖论在几千年前就被人们发现了,如果像希尔伯特、罗素等大数学家、逻辑学家连这个问题都搞不定,还有什么资格去推进数学公理化和公理体系形式化呢?

其实,这种悖论式语言在《数学原理》所定义的形式化公理体系中是无法表达的。设这句话(看作一个命题)为X,那么“这句话是谎话”就应该表达为“~X”。而悖论式语言需要把“~X”定义成X自己,也就是让“X=(~X)”,这是无论如何也不可能通过《数学原理》中的四条基本逻辑推演公理推演得到的结论。所以,这种悖论式语言只能证明“人类的语言体系逻辑表达不完备”,而并不能证明“公理体系不完备”。但是,这个思路和哥德尔的证明是有着相通之处的。

(二)罗素悖论

如果小时候对数学与逻辑感兴趣,也许会记得那个“只给不给自己理发的人理发”的理发师?这个悖论其实就是罗素悖论,只不过为了让人容易理解,把抽象的罗素悖论给改头换面了一下。罗素悖论是集合论中的一个经典悖论,我们把若干具有同一性质的对象划分为一个类,类中的这些对象被称为类的元素,当然,某些情况下类里面的元素也可能是一个类。现在我们设计某一种性质P(x)= x∉x ,也就是说具有性质P的对象不是自身的元素。那么,满足性质P的类为A={x|x∉x}。此时,如果我们想判定A这个类是否是A自身的元素时,悖论就出现了,如果A∈A,根据性质P,得到A∉A;如果A∉A,那么A就满足性质P,则A∈A。

罗素悖论是不能仅仅归因于语言表达的不严谨的,事实上这是一个实实在在的悖论,是关于类的公理体系必须要解决的问题。后来,人们修改了类的内涵公理,并提出了一个新的概念——集合。集合是能够成为某一个类的元素的那种类。由此,我们把类分成了两种,一种是集合,另外一种是真类(不能成为任何类的元素的类)。由于罗素悖论与“哥德尔不完备定理”的证明没有直接关系,因此本文不再讨论它了,有兴趣的读者可以自行深入了解。

之所以在这里谈到了罗素悖论,是因为希望读者知道,当公理体系引发了悖论之后,人们马上就会通过定义新的概念、提出或者修改公理来完善它。可是,当哥德尔的证明也构造出了类似悖论的命题之后,人们宁可接受这个命题是不可证明的,也没有试图通过修补公理体系来解决这个问题。因为通过哥德尔的方法构造的这类命题,使得人们无论定义多少个概念、补充或修补多少个公理,也无法消除它。

(三)哥德尔证明思路

哥德尔的证明思路和前面那些制造悖论的思路类似,都是要把命题自身引入到命题之中。区别在于哥德尔既不是利用了某种语言的不严谨,也不是简单地把命题变量直接代入到自身,而是严格按照公理体系形式化的要求,一丝不苟地把命题自身引入到这个命题之中,其论证过程天衣无缝、无懈可击!

需要说明的是,哥德尔的证明所使用的公理体系是基于《数学原理》中提出的形式化的公理体系,哥德尔在论文中把这个公理体系称为PM(Principia Mathematica),我们在后面也会沿用这个名字。

(1)建立命题表达式与自然数的对应(哥德尔对应)

哥德尔做的第一件事是把PM中的表达式和自然数对应起来。我们在讲解“一致性的重要意义”的时候,专门介绍了PM中的表达式和相应规则。PM中的表达式就类似下面的这些例子:

~ (∃z≤x ∙ (z≠1∧z≠x∧z|x))∧(x>1)    (判断x是否为质数的PM公式)

∀q∙p⇒(~p⇒q)         (我们证明过的公式,矛盾的体系可推出任何命题)

哥德尔说,这些表达式都是由一些基本符号组成的,是一组符号序列;而“证明过程”无非就是一组表达式组成的序列,是符号组成的序列的序列。按照希尔伯特的数学形式化思路,这些符号、表达式和“证明过程”都是无意义的,如果需要,可以赋予某种含义来表达一些现象。哥德尔指出,显然把这些符号赋予什么含义是与PM体系本身无关的,因此在这里哥德尔把这些符号对应为自然数。

于是,每一个基本符号都对应于一个自然数,每一个表达式则对应于一个自然数序列,每一个“证明过程”都对应于一个自然数序列的序列。反过来,每当给出一个合规的自然数序列,就可以唯一的对应一个PM表达式;每给出一个合规的自然数序列的序列,就可以唯一的对应一个PM证明过程。

再深入一步,有了这种对应后,就可以把一些对PM表达式或者证明过程的有含义性的判断对应成对于某一个自然数序列的判断,而这类对自然数序列的判断显然又可以使用PM中的表达式来进行。换句话说,通过哥德尔建立的对应,我们终于可以使用PM表达式来表达有含义的判断了。比如,根据事先对应关系的定义,一个合法的表达式对应的自然数序列一定满足某种规则,这种规则显然可以在PM中表达,于是我们就可以在PM中给出一个表达式,用来表达“某个表达式是否合规”这个含义。

由于这种对应(也被称为哥德尔对应)对于“哥德尔不完备定理”的证明非常关键,我们宁可不厌其烦地再举个很简单例子来使读者能够准确理解它。我们建立一种类似哥德尔说的对应关系,事先声明,我们建立的这个对应关系仅仅是为了容易理解下面的例子,实际上这个对应关系并不利于证明“哥德尔不完备定理”。我们建立的对应关系为,把PM体系中的全部合规表达式以及证明过程按照ASCII字符顺序排列,形成一个无限长的序列;然后从第一个表达式开始,我们把它对应到自然数1,第二个对应3,以此类推,直至无穷;然后再把全部不合规的表达式排列好顺序,从第一个开始,分别对应到自然数2、4、6、……。这样,PM中的任意表达式及证明过程都对应着唯一的自然数。我们再定义一个PM表达式,这个表达式用来判断某个表达式是否合规,设这个表达式为isFm(x)。显然,这种对应关系下的isFm(x)在PM中应为“~(∃z ∙ x=2z)”(注意PM中的任意数字变量都是0或自然数),这个表达式实际是判断x是否为奇数,如果是,则对应x的表达式合规,否则不合规。于是,一个“表达式是否合规的有含义的判断”被表示为PM中的一个表达式了。

当然,除了表示“表达式是否合规”外,也应该还可以表示“某个表达式是否在PM体系内可以证明”,哥德尔把这种表达式设为provable(x),他表示自然数(或自然数序列,或自然数序列的序列,修炼第四重时会看到,哥德尔采用一种巧妙的方法把这些序列们都对应为唯一的自然数了)x对应的表达式是否可在PM体系内证明。

最后,再强调一点,哥德尔把PM中的表达式对应为自然数,并不是哥德尔为了研究自然数或者数论而做的什么工作,而是哥德尔为了构造某种特殊的PM表达式而提出的方法。通过把PM表达式映射为自然数,再利用PM体系自身本来具备的表达自然数间关系的能力,来实现把PM中的命题引入自身的目标。

(2)构造一个特殊的命题表达式

哥德尔定义,“在PM命题表达式中,只有一个自然数类型的自由变量的那种表达式称为class-sign(考虑到这只是哥德尔起的一个名字,就不翻译了)”,比如“x>10”、“∃z∙z<x”、“∀y<x,z<x∙ ~(x=y∙z)”等等,这些都是class-signs,都只有一个自由变量x且x是一个自然数。

下面,我们给每个class-sign分配一个序号,并设第n个class-sign为Rn。当我们把某个自然数k代入到某个class-sign的变量时,得到的表达式记为Rn(k)。例如,若R9是“∃z∙z<x”,那么R9(8)就是“∃z∙z<8”,R9(9)就是“∃z∙z<9”。

再设provable(R)表示R这个命题表达式可以在PM中被证明(前面已经提到了)。大家知道,有些表达式是可以在PM体系中证明的,比如“3<9”、“~(x>10∧x<8)”,有些表达式是不可证明的,比如“3>9”、“(x>10∧x<8)”。因此,provable(3<9)为真,provable(x>10∧x<8)为假。

然后,我们定义一个集合K,K={n|~provable(Rn(n))}。也就是说,K是这样一组自然数的集合,集合中的元素n使得Rn(n)不可证(注意这里面的Rn(n)是把命题表达式R的序号带入到它的自由变量中得到的表达式)。

基于上述定义,必然存在一个命题表达式S(n),它表示n∈K,而且显然这个表达式是一个class-sign。既然S也是一个class-sign,那么S也必然有一个对应的序号,设这个序号为q,则S就是Rq。如果我们把Rq的序号q带入到Rq中,就得到了表达式Rq(q),这应该是一个可以在PM中表达的表达式。

最后,我们来考察表达式Rq(q)和~Rq(q)是否可以证明。根据上面的定义,我们可以得到下面的结论:

Rq(q) ⇔ S(q) ⇔ q∈K ⇔ ~provable(Rq(q))  …………………  (式1)

如果Rq(q)可以证明,意味着provable(Rq(q))为真,显然意味着Rq(q)也为真,根据(式1)可得到~provable(Rq(q))也为真,发生了“~provable(Rq(q))”和“provable(Rq(q))”同时为真的情况,也就是PM不一致了。换句话说,如果PM是一个一致的体系,那么只有Rq(q)不可证。

如果~Rq(q)可以证明,意味着~Rq(q)为真,根据(式1)得到~(~provable(Rq(q)))为真,也就是provable(Rq(q))为真,即Rq(q)可以证明,也即Rq(q)为真。这次又发生了Rq(q)与~Rq(q)同时为真的情况。于是,如果PM一致,那么~Rq(q)也不可证。

综上,对于Rq(q)这个命题,只要PM是一个一致的公理体系,那么在PM中既不能证明它,也不能否证它。换句话说,在PM体系之内,可表达的命题Rq(q)说不清楚对错。

(3)进一步的分析

哥德尔在论文中明确提到,这种构造思路是来源于两个有名的悖论——理查德悖论(Richard-antinomy)和说谎者悖论(liar-antinomy),后者就是我们最前面说到的“这句话是谎话”的悖论,而前者则与哥德尔的构造有类似之处,感兴趣的读者可以自行了解。

哥德尔证明的一个关键点,就是把“真”、“假”与“可证明”及“不可证明”区分开来了。这里谈到的可证明与否都是指在PM体系之内。我们日常生活与工作中,经常把“真假”与“是否可证明”等同起来,认为“真⇔可证明”,“假⇔不可证明”。其实,“真假”与“是否可证明”的严格关系应该是“可证明⇒真”、“假⇒不可证明”,但是它们的逆命题却不成立,也就是说“真命题未必可证明”,同时“不可证明的也未必就是假命题”。

前面我们给出了~Rq(q)和Rq(q)都是不可证明的论断,但这并不意味着Rq(q)的真假不确定。其实我们看一下(式1),就可以得到,Rq(q) ⇔ ~provable(Rq(q)),也就是说,命题Rq(q)说的其实是“Rq(q)不可证”,或者说,Rq(q)说的是“自己不可证”。那么根据我们前面的论断,Rq(q)确实是不可证的,也就是说Rq(q)这个命题为真。大家没有必要为此而感到惊讶,前面我们说了,哥德尔清晰的区分了“可证与否”与“真假”的关系,真命题不一定可证。

(4)再进一步分析——哥德尔第二不完备定理

哥德尔在论文的Introduction部分中介绍了自己的证明思路之后,特别指出,在详细的对Rq(q)为真这个结论进行分析时,会得出一个奇怪的结论——关于公理体系一致性证明的奇怪结论,哥德尔说将在论文的定理XI中进行讨论。

哥德尔论文中的定理XI就是我们今天常说的“哥德尔第二不完备定理”。

由前面的论证过程可知,当PM体系一致的时候,可以得到结论“Rq(q)不可证”,也就是“Rq(q)为真”。这里面并没有附加任何别的条件。因此,根据前面的论证,我们得到,

“PM体系一致”⇒Rq(q)

可我们知道,Rq(q)是不可证的。也就是说,“PM体系一致”也应该是不可证的,否则如果“PM体系一致”可证,那么就可以推出Rq(q),这与Rq(q)不可证矛盾。(严格的讲,这样的说法是不准确的,他没有证明“PM体系一致”⇒Rq(q)是可在PM体系中推导出来的。修炼第四重时会给出哥德尔更严格的证明过程。)

通过上面的简单分析,我们得到了“哥德尔第二不完备定理”,简单表述为“一个蕴含了皮亚诺公理的公理体系,其一致性是不能在这个公理体系内得到证明的”。

以上就是哥德尔不完备定理的证明思路,对于绝大部分数学爱好者,修炼到这里应该满意了。因为修炼到第三重之后,已经比较深入的理解了“哥德尔不完备定理”的证明思路,足够准确、全面的理解了“哥德尔不完备定理”的意义。

对于愿意学习的读者,可能仍然会有各种疑问?有人会问,哥德尔把PM表达式对应到自然数,到底有什么用,是怎么通过这种方式表达出provable(x)之类的有含义的命题的?也有人会问,修炼第一重的时候说到的“ω一致”和“原始递归”到底是什么意思?可能还有读者会问,第三重介绍的证明思路难道不是一个严格的证明过程么,为什么还要修炼第四重?对于需要解开这些疑问的读者,请你们和我一起,开始修炼第四重神功吧。

第四重:“目无全牛”——“哥德尔不完备定理”的核心证明过程

哥德尔的核心证明过程是极为严格、缜密的,如果真的把他的核心证明详细阐述一遍,工作量相当于把他的论文翻译五遍以上。本文作为一篇普及性文章,虽然普及的层面越来越深,但是我还是不希望采用这种方法。因此,在不影响读者读懂的前提下,我会尽量略掉一些过于基础且严谨的内容,对由此可能带来的不缜密,希望读者理解。

另外,哥德尔的证明过程花了极大的篇幅来给出基础定义、原始递归的定义、相关引理等,真正到证明不完备定理的时候,反而没有多少篇幅了。因此读者在阅读的时候,如果觉得前面的部分特别是“(一)基本定义”部分过于枯燥,可以在了解情况前提下快速掠过。

最后,哥德尔之所以花费那么多笔墨来阐述这些基础定义,给出“原始递归”的概念,并在论文中表达了46个有含义的公式,其根本目的就是论证我们进行第三重修炼的时候给出的provable(x)是可在PM中表达的,且哥德尔所构造的命题是一条算术命题,恰恰是这个算术命题在PM中是不可证的。这样,哥德尔就避免了别人质疑他所构造的命题其实是一个类似“这不是谎话”的语言悖论。

好,下面开始进入哥德尔证明的详细过程。

(一)基本定义

哥德尔首先给出了PM公理体系的基本常量、变量和公式的定义,然后给出了基本公理组成的公理体系。这部分内容是理解哥德尔核心证明过程的基础。

(1)常量(基础字符)

定义“~”(逻辑非)、“∨”(逻辑或)、“∀”(对于任意)、“0”(数字零)、“succ”(直接后继)、“(”、“)”(左右括号)这7个字符为PM体系的常量。

可能有人会问,为什么没有“∧”(逻辑与)、“∃”(存在)、“⇒”(推出)以及其它一些常见符号呢?其实这些符号是可以通过上面的7个更基础的符号定义出来的,比如“a∧b”就是“~(~a∨~b)”、“a⇒b”就是“~a∨b”、“∃a∙b”就是“~(∀a∙~b)”等等。当然,后面我们还会使用这些非基本常量字符,只要大家知道,这些非基本常量都是通过基本常量定义出来的就可以了。

话又说回来,哥德尔也实在有点过分,别的符号不定义就算了,居然连“=”也没有定义为常量,这让后面构造表达式多麻烦啊?不过,哥德尔的论文中直接就使用了很多没有定义的常量,也不影响对论文的理解。我们对这点也就不深究了吧。

(2)变量

哥德尔论文中的PM体系的变量分为若干类(无穷多类),分类并起名如下:

“一级变量”:就是表示0和自然数的变量,比如x1如果是一级变量,它就可能是0、1、2、3、……。

“二级变量”:就是表示0和自然数的某些子集的变量,比如x2如果是二级变量,它就可能是{1}、{1,2,3}、{2,4,6,8,10}等等。

“三级变量”:就是表示以二级变量为元素的集合的变量,比如x3如果是三级变量,它就可能是{{1},{1,2,3}}、{{2,4,6,8},{1,3,5,7}}等等。

以此类推,以至于无穷级变量。

这些变量看起来莫名其妙,到底为什么要定义这么复杂的无穷级变量呢?别着急,一会介绍到哥德尔数的时候,会详细说明原因。

(3)公式

这里说的公式,就是前面说的PM表达式,以后将都采用公式这个名字了。

哥德尔首先定义PM中的基本公式,就是类似x、a、succ(a)、succ(succ(a))、a(b)之类的公式。特别的,如果b是n级变量,那么a(b)中的a就是一个n+1级变量。这是因为b每取一个值,a就会对应一个n级变量,于是随着b取了若干个值,a就成为了若干个n级变量的集合,也就是n+1级变量。

在基本公式的基础上,哥德尔定义了公式。公式包括基本公式以及由基本公式组成的~a、a∨b、∀x∙a类型的全体。

哥德尔还给公式分了类,对于不含有任何自由变量的公式,哥德尔称之为“命题公式”;对于含有n个自由变量的公式,哥德尔称之为“n元关系式”(n-ary relation sign);特别的,当n=1时,就是前面提到过的“class-sign”(现在也可以叫做一元关系式了)。

哥德尔在这里特别提出了一个他定义的公式——subst(a,v,b),其含义是把公式a中的变量v用b来替换,这里的v和b可以是任意相同级的变量。具体如下,设a是“v>10∧v<20”,则subst(a,v,10)就是“10>10∧10<20”,subst(a,v,x)就是“x>10∧x<20”。这个由哥德尔定义的公式很重要,后面构造出的不可证命题主要靠它。当然,这个公式也一定是可以在PM中表达的,哥德尔的论文在后面给出了46个不同含义的表达式,其中就包括subst,从中我们可以看出哥德尔其实是一个编程大师!

(4)公理体系

之后,哥德尔给出了我们一直说的PM公理体系的基本公理,共分为五组。考虑到这些公理是论文全部推导的基础,我就都列在这里了,涉及的相关基础知识比较多,就不一一详细说明了。

第一组:皮亚诺算术公理。其中的x1等表示一级变量,x2表示二级变量。

1、~(succ(x1) = 0),把皮亚诺公理的起始数字定义为0。

2、succ(x1) = succ(y1) ⇒ x1 = y1,如果两个自然数有同样的直接后继,则他们相等。

3、x2(0) ∧ ∀x1 ∙x2(x1) ⇒ x2(succ(x1)) ⇒∀x1∙ x2(x1) ,这就是我们常说的数学归纳法,也是皮亚诺算术公理中的一条。

第二组:命题公理。这组公理就是《数学原理》中的基本推演公理。

1、(p∨p)⇒p

2、p⇒(p∨q)

3、(p∨q)⇒(q∨p)

4、(p⇒q)⇒((r∨p)⇒(r∨q))

第三组:无名公理。这组公理不知道叫什么名字合适,论文英文版的译者给它起名为quantor公理,这个名字有些不伦不类,我还是叫它无名公理吧。

1、(∀v∙a)⇒subst(a,v,c),对于任意v,a都成立,意味着把任何变量c带入到a中的v之后都成立。

2、(∀v∙b∨a)⇒(b∨∀v∙a) 。

第四组:分离公理。哥德尔明确说,这个公理取代了分离公理(集合论中的分类公理)。

1、∃u ∙ ∀v ∙ (u(v) ⇔ a)

第五组:集合公理。

1、∀x1 ∙ (x2(x1) ⇔ y2(x1)) ⇒ x2 = y2

以上是哥德尔论文中的全部基础定义。所有基础定义都一样,枯燥无味,看懂就行了。

(二)哥德尔数

修炼第三重神功的时候,提到了哥德尔对应,哥德尔把PM中的公式对应到自然数。哥德尔是这样建立的具体对应关系的。

首先把7个常量(基础字符)对应到了7个数字,“0”对应1、“succ”对应3、“~”对应5、“∨”对应7、“∀”对应9、“(”对应11、“)”对应13。

其次,把常量以外的一级变量对应到大于13的质数,二级变量对应到大于13的质数的平方,三级变量对应大于13的质数的3次方,以此类推。

在这里,我们说明为什么要定义这么多级的变量。一级变量就是自然数,这容易理解。二级变量其实是一组自然数的序列,由于自然数对应着常量和变量,自然数的序列当然可以对应一个PM公式,我们也可以把它称为命题变量,这种变量可以代入不同的命题,如“x>y”、“0=0”、“∃x∙x=succ(y)”等。三级变量其实是一组自然数序列的序列,它对应着PM公式的序列,我们往往使用PM公式序列来定义一些“谓词”,或者阐述一个证明过程,因此三级变量其实就是某种“谓词变量”或者“证明过程变量”。如果熟悉编程序的话,谓词类似于C语言中的“函数”,它的结构类似一段程序代码,我们在后面“有含义概念的表达”中会看到哥德尔给出的大量“函数”。

最后,哥德尔采用一种规则,使得无论是公式还是证明过程,都可以对应到唯一一个自然数。设这个公式对应的自然数序列为(n1,n2,n3,…,nk),则它对应的唯一自然数为2n13n25n3…pknk,其中pk是第k个质数;再设一个由公式序列组成的证明过程或者谓词定义中,每个公式对应的自然数分别是(m1,m2,m3,…,mt),则这个证明过程或者谓词定义对应的唯一自然数为2m13m25m3…ptmt,pt仍是第t个质数。这种对应显然是依据素数唯一分解定理,确保了形成的每个自然数都是唯一的,当然,这样对应出来的自然数无比巨大。

为了便于理解哥德尔建立的对应关系,我们举个相对完整的例子,一方面有利于理解对应关系,另一方面也对PM体系中的公式的复杂程度有个感性认识。不过,由于哥德尔定义的基本常量实在太少了,我们补充定义一个常量“=”,并把它对应到自然数2,这样做对哥德尔的证明是没有丝毫影响的,否则通过逻辑来定义“=”太头疼了。

下面来看公式“∃z∙z=succ(x)”,含义是“存在z,使得z是x的直接后继”。首先,我们要把这个公式变换为仅仅使用哥德尔定义的基本常量来表达的公式。利用前面介绍过的“∃”与“∀”的关系,这个公式其实就是“~(∀z∙~(z=succ(x)))”。根据前的对应关系,并设x、z这两个一级变量分别对应质数17、19,同时因为“∙”这个符号仅仅是一个分隔符,在对应过程中忽略掉不会引起歧义,则这个公式对应的自然数序列是(5,11,9,19,5,11,19,2,3,11,17,13,13,13),于是它对应的唯一自然数是25311597191151311171919223329113117371341134313,这真的是一个天文数字,把这个数字后面加上一个“纳米”做单位,得到的长度也远远超出可观测宇宙的尺度。这个数虽然大,但理论上只要给出这个自然数,我们就可以通过上述原则唯一的把它还原为公式“~(∀z∙~(z=succ(x)))”。

以上就是哥德尔建立的PM公式与自然数之间的对应关系,在后面表达各种含义的时候,将充分利用这种对应关系。

(三)原始递归

原始递归关系是哥德尔首先提出来的,如今在可计算理论中是一个重要概念。哥德尔给出的原始递归定义至今仍然被部分采用。为了更清晰、准确的说明原始递归含义,我们给出如今的原始递归定义。

原始递归函数以自然数或自然数的元组作为参数并返回自然数。接受n个参数的函数叫做n元函数。基本原始递归函数用如下公理给出:

①常数函数:0元常数函数0是原始递归的。

②后继函数:1元后继函数succ,它接受一个参数并返回皮亚诺公理给出的后继数,是原始递归的。

③投影函数:对于所有n≥1和每个1≤i≤n的i,n元投影函数Pin,它接受n个参数并返回它们中的第i个参数,是原始递归的。

更加复杂的原始递归函数可以通过应用下列公理给出的运算来获得,

④复合:给定k元原始递归函数f和k个m元原始递归函数g1,…,gk,f和g1,…,gk的复合,也就是m元函数h(x1,…,xm) = f(g1(x1,…,xm),…,gk(x1,…,xm))是原始递归的。

⑤原始递归:给定k元原始递归函数f和k+2元原始递归函数g,定义k+1 元函数h为,

h(0,x1,…,xk)= f(x1,…,xk)

h(succ(n),x1,…,xk) = g(h(n,x1,…,xk),n,x1,…,xk)

则h是原始递归的。

服从以上公理的函数是原始递归的。也就是说,如果一个函数是上述基本函数之一,或者它可以通过基本函数应用有限次的上述运算规则获得,则这个函数是原始递归的。

需要说明的是,哥德尔在论文中给出的原始递归的定义不包括上述公理的③条,且未明确包括④条。针对④中的复合函数,哥德尔只是在语言叙述中不很明确地提到,把任何原始递归的函数带入到某个原始递归函数的自变量中,得到的也是原始递归函数。另外,设一个原始递归函数Φ在定义它的运算过程中形成一系列函数Φ1、…、Φk直到Φ,哥德尔定义这个函数序列的最短长度为原始递归函数Φ的“度(degree)”。

给出了原始递归关系和原始递归函数的定义之后,哥德尔给出了原始递归的PM公式(按照哥德尔论文原文翻译过来,意思是原始递归的关系,primitive recursive relation,考虑到前面有PM公式的定义,个人认为还是翻译为原始递归PM公式更好一些)的定义:

如果一个有m个自由变量的PM公式R和一个原始递归函数Φ,满足

R(x1,…,xm)⇔(Φ(x1,…,xm)=0)

那么就说这个PM公式R是原始递归的。

从最原始递归基础函数可以推导出各种复杂的原始递归函数,其实我们日常接触到的大部分整数函数都是原始递归函数。在IT技术大发展的今天,大部分人都了解了计算机编程,我们可以粗略的理解原始递归函数是,能够通过编写计算机程序计算得到的函数都是原始递归函数。但是,要严格按照原始递归的定义来推导出某个函数是原始递归的,过程会很复杂。

我们举个简单的例子吧,证明h(x)=x是一个原始递归函数。

令0元函数f=0,二元函数g(x,y)=succ(x);

按照原始递归公理定义h(0)=f;h(n+1)=g(h(n),n);

由此得到函数h(x)=x。因为这个函数是按照原始递归公理定义的,因此必然是一个原始递归函数。

再举一个原始递归PM公式的例子,设R(x)是PM公式“∃z ∙ z+x<5”,意思是“对于数x,存在数z使得z+x小于5”。我们再找到一个原始递归的函数Φ(x)=x(x-1)(x-2)(x-3)(x-4)。可以看到,R(x)成立时,x只能取0、1、2、3、4,此时Φ(x)=0;x取其它值时,R(x)不成立,此时Φ(x)也不等于0。显然R(x)⇔(Φ(x)=0)。于是,“∃z ∙ z+x<5”是一个原始递归的PM公式。

弄清楚了原始递归函数和原始递归PM公式概念之后,哥德尔连续提出了有关原始递归的四个定理。

定理一:其实就是把原始递归公理④描述了一遍,区别在于扩展到了PM公式,意思是把任意一个原始递归函数带入到某个原始递归函数或原始递归的PM公式的自变量,得到的也是原始递归函数或原始递归PM公式。

定理二:如果R和S是原始递归的PM公式,那么~R、R∨S也是原始递归的PM公式(因此,基于∨、~定义的R∧S等也必然是原始递归的)。

定理三:如果φ(x1,…,xm)和ψ(y1,…,yn)都是原始递归的,那么PM公式“φ(x1,…,xm)=ψ(y1,…,yn)”也是原始递归的。

定理四:如果函数φ(x1,…,xm)和PM公式R(y,z1,…,zn)都是原始递归的,那么下面三个PM公式也是原始递归的,

S(x1,…,xm,z1,…,zn)⇔∃y≤ φ(x1,…,xm)∙R(y,z1,…,zn)

T(x1,…,xm,z1,…,zn)⇔∀y≤ φ(x1,…,xm)∙R(y,z1,…,zn)

Ψ(x1,…,xm,z1,…,zn) ⇔argmin y≤φ(x1,…,xm)∙R(y,z1,…,zn)

(第三个公式argmin的含义是,在满足y≤φ(x1,…,xm)和R(y,z1,…,zn)的条件下,返回最小的y;如果没有符合条件的y,则返回0)

这四个定理的目的很清楚,就是要证明原始递归的PM公式经过上述各种复合变换之后,仍然是原始递归的。哥德尔在论文里面给出了这四条定理的可信的证明。其中,定理一和定理三是显然的,我们着重介绍定理二和定理四的证明。

定理二的证明思路:这个定理的证明相对容易,哥德尔构造了三个简单的原始递归函数α(x)、β(x,y)和γ(x,y),分别对应着“逻辑非”、“逻辑或”和“逻辑与”,

如果R和S是两个原始递归的PM公式,那么它们必然对应着两个原始递归的函数r和s,使得R⇔(r=0)、S⇔(s=0);再根据上面构造的原始递归的α、β、γ函数,就可以得到~R⇔(α(r)=0)、R∨S⇔(β(r,s)=0)、R∧S⇔(γ(r,s)=0);也就是说,~R、R∨S和R∧S都是原始递归的。

定理四的证明思路:为了方便起见,我们把定理四中x和z的序列简记为

综上,哥德尔严格而准确地证明了某一类PM公式是原始递归的。之后,哥德尔将为我们构造46个PM公式,其中有45个是原始递归的,最终的目的就是为了表达出第46个公式provable(x)。

(四)有含义概念的表达

前面我们就说过了,哥德尔把PM公式对应到自然数,然后利用PM体系自身可以表达自然数及其关系的能力,再用PM公式来表达针对PM公式自身有含义的概念。希尔伯特把这种赋予形式化公理体系以含义后形成的数学称为“元数学”(Metamathematics),因此哥德尔自己把论文中这个章节的标题叫做“Expressingmetamathematical concepts”,表达元数学概念,我在这里翻译成“有含义概念的表达”。

哥德尔首先指出,根据前面“原始递归”概念,我们必然可以定义出类似x+y、x∙y、xy等形式的原始递归函数,表达出x<y、x=y等原始递归PM公式。再依据定理一至四进行相应的变换,哥德尔表达出了45个原始递归的、有含义的概念及关系。通过哥德尔列出的这些表达式,我真心觉得哥德尔是在电子计算机尚未发明出来的时候就出现的一个编程大师!由于表达式很多,我在这里就不一一列出了,仅举几个例子让大家欣赏。

(1)y|x ⇔ ∃z≤x∙ x=y∙z

这里y|x表示y能够整除x。

(2)isPrime(x) ⇔ ~(∃z≤x ∙ (z≠1∧z≠x∧z|x)∧ x>1)

isPrime(x)判断x是否为素数。素数判断对于哥德尔来说很重要,因为哥德尔对应主要是基于素数性质建立的,后面会看到,哥德尔大量利用素数的性质来把整数还愿为PM公式。

(3)prFactor(0,x)= 0;

prFactor(n+1,x) = argmin y≤x ∙ (isPrime(y)∧y|x∧y>prFactor(n,x))

prFactor(n,x)表示x这个整数所包含的第n个(按大小排列)素因子。比如1050=2×3×52×7,那么prFactor(2,105)=3,prFactor(3,105)=5,prFactor(4,105)=7。表达式中的逻辑关系非常清楚,定义方式也是原始递归形式的,因此这毫无疑问是一个原始递归的PM公式。

下面就不连续的列举了,再举几个后面主要涉及到的吧。

(6)item(n,x)= argmin y ≤ x ∙ ((prFactor(n,x)y|x)∧~(prFactor(n,x)y+1|x))

item(n,x)的含义是x这个整数对应的PM公式中,第n个字符对应的整数。这个函数当然要求变量x能够对应一个PM公式,并且n要大于0且小于x对应的PM公式的长度。

(8)x◌y = argmin z≤nthPrime(length(x) + length(y))x+y ∙

(∀n≤length(x) ∙ item(n,z)=item(n,x))∧(∀0<n≤length(y) ∙ item(n+length(x),z) = item(n,y))

x◌y是一个原始递归的函数,它把两个整数x和y所代表的PM公式连接在一起,并返回这个新PM公式所对应的整数。这里的nthPrime(n)返回第n个素数;length(x)返回x所代表的PM公式的字符长度。如果不看到哥德尔给出的表达式,我们很难想象这样一种关系也可以在PM中表达,而且还是原始递归的。

(43)immConseq(x,y,z) ⇔ y=imp(z,x) ∨∃v≤x ∙ isVar(v) ∧ x = forall(v,y)

immConseq(x,y,z)的含义是x是y和z的直接推论。其中,imp(z,x)的意思是~z∨x,isVar(v)的含义是v这个数字对应一个PM公式中的变量(其实就是大于13的素数或者这样的素数的整数次方),forall(v,y)的意思是对于任意v,y都成立。这三个表达式分别是哥德尔给出的第32、12、15个PM公式。

前面我们讲过,哥德尔只定义了7个基本常量,对于“⇒”这样的常量,可以通过“a⇒b就是~a∨b”来表示。那我们看immConseq(x,y,z)的第一部分y=imp(z,x),其实的意思就是“y=(z⇒x)”,这种情况下,如果y成立且z成立,按照修炼第二重神功时介绍过的变换原则二,得到x成立。因此,哥德尔称这种关系为“x是y和z的直接结论”。当然,还有另外一种特殊情况,当x直接与y关联的时候,相当于immConseq表达式的第二部分,x=forall(v,y),此时如果y成立,x必然成立,与z则无关了。

(44)isProofFigure(x)⇔ (∀0<n≤length(x) ∙ isAxiom(item(n,x)) ∨ ∃0<p, q<n ∙ immConseq(item(n,x),item(p,x),item(q,x))) ∧ length(x)>0

isProofFigure(x)的含义是x对应的一组PM公式是一个证明过程,也就是说这组PM公式的每一个要么是一个公理,要么是前面两个公式的直接推论。其中,isAxiom(x)表示x对应的PM公式是一个公理。因此,当isProofFigure(x)成立的时候,x中的每一个PM公式都成立。

(45)proofFor(x,y)⇔ isProofFigure(x) ∧ item(length(x),x)=y

proofFor(x,y)的含义是x能够证明y。其表达式的含义是,x首先要是一个证明过程,其次x这个证明过程的最后一个PM公式就是y。

(46)provable(x)⇔∃y ∙ proofFor(y,x)

provable(x)的含义我们之前已经提过多次了,表示x是可证明的。其表达式的含义也非常清晰,就是存在一个证明过程y可以证明x。哥德尔在表达完毕46个有含义的PM公式后,针对这第46个公式,特意说明,这是唯一一个不能断言是原始递归的PM公式。事实上,我们参照定理四可以看出,provable(x)与定理四中的S的唯一区别在于这里只是“∃y”而不是“∃y≤φ(x)”。

(五)对应引理

给出了46个表达各种含义的PM公式之后,哥德尔提出了一个很重要的定理——定理五,在《哥德尔证明》的这部书里面把它称为“对应引理”。但是如果今天在网上查找,基本上找不到所谓的“哥德尔对应引理”。这个定理实质的含义是,任意一个原始递归的PM公式,都对应着一个可证明的算术定理。个人觉得把这个定理叫做“对应引理”也还算恰当。

定理五:对于任意一个原始递归的PM公式R(x1,…,xn),都存在一个函数关系r(u1,…,un)满足,

R(x1,…,xn)⇒ provable(subst(r,u1,…,un,number(x1),…,number(xn)))

~R(x1,…,xn)⇒ provable(not(subst(r,u1,…,un,number(x1),…,number(xn))))

这里的函数关系就是指一个等式,比如f(x,y)=0之类的。subst这个PM公式我们前面讲过,它是哥德尔表达的第31个有含义的公式,意思是把后面的数字代入到r的变量中得到的公式。number(x)是哥德尔定义的第17个PM公式,意思就是返回表达数字x的PM公式,可以简单理解为就是x。

这个定理对后面的证明至关重要,但是哥德尔在这里却只是给出了说明式证明。其实,这里面涉及到的是原始递归函数的可计算性的问题。原始递归的函数,一定是可计算的。哥德尔给出的说明,其实也可以认为是证明。

对于任意一个R(x1,…,xn),因为是原始递归的,所以一定等价于某个原始递归的函数φ(x1,…,xn)=0。其实无非就是要证明这个原始递归的函数φ构成的函数关系φ(x1,…,xn)=0是可证明的。哥德尔解释说,因为φ是原始递归的,因此必然存在着一个函数序列,逐步构建得到了φ。而这个函数序列的起始函数必然是degree为1的函数,也就是基本原始递归函数0和succ,他们对应的函数关系一定是可证明的(其实也就是可计算的),于是根据递归定义,这个序列中的每个函数构建的关系都是可证明的。这里,

subst(r,u1,…,un,number(x1),…,number(xn))就是φ(x1,…,xn)=0

not(subst(r,u1,…,un,number(x1),…,number(xn)))就是φ(x1,…,xn)≠0

哥德尔这篇论文的贡献,除了证明了不完备定理以外,还奠定了可计算性理论的一些基础,间接地影响了冯∙诺伊曼、图灵等人构建的电子计算机的理论基础。今天,电子计算机已经普及到千家万户,如果我们通过计算机程序来类比的话,很容易让读者接受“原始递归的函数关系都是可证明的”这一结论。其实这里可证明的意思就是说,能够编写一个计算机程序,按照原始递归的定义,一步一步计算出φ(x1,…,xn)是否为0的这一结果。

(六)不完备定理

好,在证明完定理五之后,哥德尔论文终于进入实质性阶段了。

在这部分,哥德尔首先给出了我们在修炼第一重神功的时候就提到的“ω一致”概念的定义。设κ是一个公理体系,Conseq(κ)是包含κ中全部公理、定理以及这些公理、定理各级“直接推论”的公式的集合。换句话说,Conseq(κ)就是κ这个公理体系能够证明的全部“PM公式”。

定义公理体系κ是“ω一致”的,当且仅当不存在这样的一个PM公式a,使得(∀n∙ subst(a,v,number(n))∈Conseq(κ))∧ not(forall(v, a)) ∈ Conseq(κ)成立。

这看起来很奇怪,每个a(n)都可以在κ中推导出来,同时~(∀n∙a(n))也能推导出来。也就是说,每个a(n)都成立,同时“不是对于任意n,a(n)都成立”也能推导出来。这种情况发生时,我们就说这个公理系统不是“ω一致”的。严格地说,这种公理体系肯定是有矛盾的,但是这种矛盾又不足以同时推出a和~a。“ω一致”的公理体系肯定也是一致的,但是一致的公理体系未必是“ω一致”的,也就是说“ω一致”要比通常意义上的一致更严格一些。

明确了“ω一致”的概念之后,哥德尔给出了定理六——哥德尔不完备定理,我们在第一重修炼的时候就给出了原文。下面给出哥德尔对定理六的证明。

哥德尔先是扩展了前文提到过的“有含义概念表达”中的PM公式44、45和46,也就是isProofFigure(x)、proofFor(x,y)和provable(x)。扩展后的定义如下,

isProofFigureκ(x) ⇔ (∀n≤length(x) ∙ isAxiom(item(n,x)) ∨ (item(n,x)∈κ) ∨

∃0<p,q< n ∙ immConseq(item(n,x),item(p,x),item(q,x)))∧ length(x)>0

proofForκ(x,y) ⇔ isProofFigureκ(x) ∧ item(length(x),x) = y

provableκ(x) ⇔∃y ∙ proofForκ(y, x)

其实这次扩展只做了一件事,那就是在原来仅包括基本公理的基础上,把κ中的新公理也涵盖了进来。这样做的目的就是为了说明,不仅仅是PM体系的基本公理会导致后续结论,即使扩展进来更多的公理,也仍然会导致同样的结论。这也是为什么论文的题目中包括了“and related systems”的原因。

有了上述定义,下面两条结论是显然的,

∀x ∙ (provableκ(x) ⇔ x∈Conseq(κ))

∀x ∙ (provable(x) ⇒ provableκ(x))

之后哥德尔构造了一个PM公式,

Q(x,y) ⇔ ~(proofForκ(x,subst(y,19,number(y))))                                        (式2)

(式2)的意思是说“x不能证明y(y)”。y(y)指的是把PM公式y中的变量19(对应素数19的变量)替换为“y对应的自然数”之后得到的新PM公式。由于subst和proofForκ都是原始递归的,根据定理一,Q(x,y)也是原始递归的。于是根据定理五,一定存在一个原始递归的函数关系式q满足,

~proofForκ(x,subst(y,19,number(y)))⇒

provableκ(subst(q,17,19,number(x),number(y)))                            (式3)

proofForκ(x,subst(y,19,number(y)))⇒

provableκ(not(subst(q,17,19,number(x),number(y))))                    (式4)

(式3)和(式4)看起来复杂,其实只是根据对应引理把PM公式Q(x,y)对应到了一个算术命题(或者叫函数关系)q(x,y)上。q(x,y)虽然是一个算术命题,但是它代表的含义仍然是“x不能证明y(y)”。注意到哥德尔这里用素数17和19分别代表变量x和y,我们后面也这样处理,不会每次都说明了。

然后,哥德尔定义了两个新的算术命题,

p=forall(17,q)                                                                                       (式5)

r=subst(q,19,number(p))                                                              (式6)

很明显,(式5)中p(y)对应的含义是“任意x都不能证明y(y)”,或者说“y(y)不可证”。(式6)中r对应的含义则是“x不能证明p(p)”。请注意,p(y)的意思式“y(y)不可证”,因此p(p)的意思就应该是“p(p)不可证”,费尽千辛万苦到了这里,哥德尔终于构造出了一个含义是“自己不可证”的算术命题。

下一步就应该是把(式3)和(式4)中的y替换为p了。在此之前,我们先进行两项简单的算术推导,

subst(p,19,number(p)) = subst(forall(17,q),19,number(p))

= forall(17, subst(q, 19,number(p)))

= forall(17, r)                                                              (式7)

subst(q,17,19,number(x),number(p)) =subst(r,17,number(x))                    (式8)

这样,我们把(式3)和(式4)中的y替换为p,并把(式7)和(式8)的结论代入后得到,

~proofForκ(x,forall(17,r)) ⇒ provableκ(subst(r,17,number(x)))                    (式9)

proofForκ(x,forall(17,r)) ⇒ provableκ(not(subst(r,17,number(x))))        (式10)

下面开始分析并形成结论,证明forall(17,r)就是我们说的不能证明也不能证伪的算术命题。

一方面,forall(17,r)不能证明。否则,就会存在一个n所代表的PM公式能够证明forall(17,r),也就是proofForκ(n,forall(17,r)),根据(式10)得到,

provableκ(not(subst(r,17,number(n))))

因为subst(r,17,number(n))的含义是“n不能证明p(p)”,所以上式的含义就是“能够证明’n能证明p(p)’”,也就是说“n能证明p(p)”;而forall(17,r)的含义是“任意x都不能证明p(p)”,这显然矛盾,说明公理体系κ是不一致的,当然肯定也不会是“ω一致”的了。注意这里只是违反了一致性。

另一方面,~forall(17,r)也不能证明。因为已经证明了forall(17,r)不可证,也就是说,

∀n ∙ ~proofForκ(n,forall(17,r))

根据(式9)得到,

∀n ∙ provableκ(subst(r,17,number(n)))

上式的含义是“任何PM公式都不能证明p(p)”,那么如果“~forall(17,r)”可证,也就相当于证明了“p(p)可证”。请注意,“任何PM公式都不能证明p(p)”与“p(p)可证”是矛盾的,但违反的是“ω一致”。

综上,无论是forall(17,r)还是~forall(17,r)都不可证。这样,哥德尔就构造出了一个算术命题,在公理体系κ内无法证明也无法证伪。哥德尔不完备定理终于被证明了。

最后再强调一下,哥德尔构造出来的是一个算术命题(也可以说是一个数论命题或者一个函数关系式),只不过它对应的含义是“自身不可证”,从这个含义出发,我们确定了它不可证明,并不是说这个算术命题表面上的意思是自己不可证明。很可能这个算术命题表面上只是一个极为复杂的算术关系或者数论猜想。

(七)讨论

在之后论文的讨论部分,哥德尔重点阐明了一个观点,那就是哥德尔不完备定理不是只适用于皮亚诺公理体系。不管人们如何扩充公理体系,即使把发现的无法证明且证伪的命题都定义为公理,也仍然会存在新的不可证明且证伪的命题。其实这个结论我们在之前的介绍和大量的说明中已经阐明了,只不过当年哥德尔在写论文的时候,非常担心这一点,因此又花费了不少篇幅来补充说明。

(八)第二不完备定理

哥德尔在论文的推广(Generalizations)部分详细分析了公理体系κ的一致性与构造的命题forall(17,r)之间的关系。根据上面的证明,我们知道了,

“公理体系κ是一致的”⇒“forall(17,r)不可证”,(注意前面的证明过程中表明,forall(17,r)可证只是违反了一致性)

也就是说,

“κ一致”⇒~provableκ(forall(17,r))

⇒~(∃x ∙ proofForκ(x,forall(17,r)))                (依据基本逻辑)

⇒∀x ∙ ~proofForκ(x,forall(17,r))                  (依据基本逻辑)

⇒∀x ∙ ~proofForκ(x,subst(p,19,number(p)))       (依据式7)

⇒∀x ∙ Q(x,p)                                                        (依据式2)

⇒∀x ∙ provableκ(subst(q,19,number(p)))             (依据式3)

⇒∀x ∙ provableκ(r)            (依据式6)

⇒forall(17,r)                                                   (式11)

这样,我们严格的证明了“κ一致”可以推出forall(17,r)。由于forall(17,r)不可证,因此“κ一致”也必然不可证。这个结论由哥德尔在论文中以定理十一提出。

定理十一:κ是包含PM的一致的公理体系,那么陈述κ是一致的PM公式在κ中是不可证明的;也就是说,κ是一致的,那么κ的一致性是不可证的。

至此,我们完成了第四重神功的修炼。这部分内容超长,原因是哥德尔的证明相当严谨,以至于哥德尔原定再写一篇论文来进行更详细的阐述都是多余的了。如果读者完全理解了这部分的内容,恭喜你,你已经是“哥德尔不完备定理”的集大成者了。

第五重:“洞见古今”——拓展了解“哥德尔不完备定理”的相关知识

正像金庸小说《倚天屠龙记》中的乾坤大挪移神功一样,连创作者都没有修炼到最高层。本人也一样,完全不敢说自己修炼成了第五重神功。因此,这部分内容略简单,只谈两个方面。

(一)“哥德尔不完备定理”的实例

1931年哥德尔提出了不完备定理以来,人们逐步相信了复杂公理体系的不完备性。80多年来,人们也逐渐发现了越来越多的哥德尔不完备定理的实例,最著名的就是“选择公理和连续统假设是在集合论中不能确定的命题”,1963年美国数学家保罗∙科恩最终证明了这一点,解决了希尔伯特23个问题中的第1个问题,这其中也有着哥德尔的贡献。

那么有没有直接符合哥德尔论文条件下的实例呢?也就是在皮亚诺公理体系中不可确定的命题?1982年,人们发现了第一个不属于哥德尔构造的、在皮亚诺公理体系内无法证明也无法证伪的算术命题实例——Goodstein定理。

Goodstein定理说的是,Goodstein数列一定会在有限步收敛到0。

Goodstein数列是这样的:首先选取一个正整数g1,比如设g1=18,然后把它写成2的次幂之和的形式(18 = 24+ 21),再把大于2的指数也写成2的次幂的形式,如果改写后得到的表达式中还有大于2的指数,则再继续把这样的数字写成2的次幂的形式,直到所有出现的数字都小于等于2,最后得到,

g1=22^2+21

这种写法叫Hereditary Base 2 Notation。g2是把g1的这种写法中所有的2都换成3,得到的新数字再减1,也就是,

g2=33^3+31-1

注意到这是个非常大的数,约等于7.6×1012。再继续下去,把g2写成3的次幂的形式,一直到不出现大于3的数字,然后把3换成4,得到的数再减1,就得到了g3。以此类推,不断计算下去,就得到了一个数列,这个数列就是Goodstein数列。

下面我们以g1=18为例,看看数列的前几项:

g1=22^2+21=18

g2=33^3+31-1=33^3+2×30=7.6×1012

g3=44^4+2×40-1=44^4+40=1.3×10154

g4=55^5+50-1=55^5=1.9×102184

只看这几项,我们一定会认为这个数列以极快的速度发散到无穷。事实上,这个数列会在有限步骤收敛到0。

Goodstein定理是一个容易看懂的算术命题,其证明可以通过集合论、良序定理以及超限序数等理论和知识来完成。大概思路就是使用超限序数ω构造一个与Goodstein数列平行的数列,这个新数列的每一项都不小于Goodstein数列的对应项,且这个新数列是递减的,必然在有限步后会收敛到0。

Goodstein定理在集合论中的证明过程不长,简单易懂。但是当我们在皮亚诺公理体系内研究这个命题的时候,神奇的事情发生了。1982年,Laurie Kirby和Jeff Paris发现,这个定理在皮亚诺公理体系下是不可证的。这个定理正好是哥德尔不完备定理的一个典型例证。

我们前面说过,哥德尔不完备定理是通过构造出一个不可证的算术命题来证明的。可是,作为已经修炼到第五重神功的我们,清楚的知道,哥德尔构造的这个算术命题我们几乎不可能直接的表达出来,因为太复杂、做不到。所以,哥德尔只是通过构造方法证明了不可证命题的存在性。直到Goodstein定理的发现,我们终于可以见到一个皮亚诺公理体系内不确定的算术命题的样子了。Goodstein定理简明易懂,计算过程明确,但是在皮亚诺公理体系居然无法证明,想想都觉得神奇。由此,我们应该更加钦佩哥德尔的伟大贡献了吧!

(二)是存在既一致且完备的公理体系的

我们讨论了这么多关于哥德尔不完备定理的内容了,估计大家已经毫无疑问地坚信这个定理了。在此,还是要再一次提醒大家,哥德尔不完备定理是有前提条件的,那就是“蕴含皮亚诺公理体系”。也就是说,并不是任何一致的公理体系都不完备。那么,真的存在既一致又完备的公理体系么?答案是肯定的。

我在这里可以给大家即兴构建一个公理体系:

这个公理体系只有两个数字0和1,只有一种二元运算“+”,其三条公理如下,

(1)0+0=0

(2)0+1=1+0=1

(3)1+1=0

公理体系构建完毕。

这个公理体系极为简单,在这个体系内可表达的全部命题都可以证明(比如1+1+1+0=1),而且这个公理体系肯定是一致的,也是“ω一致”的。

其实,一个公理体系如果比较简单,不能承载哥德尔对应中起码的编码要求,那么这个公理体系的一致性与完备性是否存在矛盾就不属于哥德尔定理覆盖的范畴了。对于一些简单的公理体系,是可以证明其既一致又完备的。当然,我构造的公理体系太简单了,以至于一点用处也没有。在实际的数学中,有一种叫做Presburger arithmetic(Presburger算术)的体系,因不包括乘法,所以其实是既一致又完备的,感兴趣的话可以Google之以详细了解。

另外,对于一些也很复杂的公理体系,如果其不足以定义自然数,哪怕这样的公理体系包含了自然数,也可能不受“哥德尔不完备定理”的约束。比如,塔斯基(Tarski)证明了实数和复数理论都是一致且完备的一阶公理体系,虽然它们都包括了自然数;再比如,著名的欧几里德几何在补充了平行公理和实数理论之后,也是一个一致且完备的一阶公理化系统。

“哥德尔不完备定理”确实伟大,但是也用不着神化,它有它的前提条件,有它的适用范围,当然,也同样有着划时代的伟大贡献!

结语

到此,五重神功全部修炼完毕。“哥德尔不完备定理”是一个划时代的伟大成就,也是哥德尔一生唯一的一个重大研究成果。作为一个数学家、逻辑学家的哥德尔,一生能做出这样一个伟大的成就,值了。作为读者,如果通过这个修炼过程,能够真正深入了解并理解了“哥德尔不完备定理”,我想,也值回大家花费在阅读和思考上的时间了吧。

哥德尔不完备定理论文PDF下载,公众号对话框回复:20191229

交流合作

商务合作以及加入微信群,请添加微信号:yan_kylin_phenix

注意:请务必说明您的意向,注明姓名+单位+从业方向+地点,否则不予通过,请多谅解。

理性的光辉,“哥德尔不完备定理”到底说了些什么?相关推荐

  1. “哥德尔不完备定理”到底说了些什么?

    [编者按:不知为何?一直不相信已有的数理.物理.生理.心理.管理--能够研究好人机融合智能系统.究其因,需要出现新的数/物/心理逻辑和哥德尔.有些经典是偶然的,但有些经典却是必然的.美,不一定是漂亮( ...

  2. 哥德尔不完备定理”到底说了些什么?

    来源:人机与认知实验室 (一) [中文网上深入介绍哥德尔不完备定理的文章很少,我这篇文章写得很长,花了不少时间打磨它,希望能帮助到爱好数学与逻辑的人.文章把理解哥德尔不完备定理分为了五重,建议只是想初 ...

  3. 再谈哥德尔不完备定理

    前言 哥德尔的两个不完备定理是上世纪逻辑学中最重要的定理,拜科普读物所赐,同时也是受误解最多的定理.本文试图讲清哥德尔不完备定理到底在说什么并澄清一些误解.为了不把本文写成数理逻辑教材,我会尽量使用自 ...

  4. 什么是哥德尔不完备定理?

    到底什么是哥德尔不完备性定理, 总结成一句话就是,任何包含了自然数论的形式体系中,自洽性和完备性必定无法同时满足, 也就是说,哥德尔用数学及逻辑学的方法证明出了完备性与一致性无法共存于一个数学系统里, ...

  5. 来认识一下哥德尔不完备定理

    哥德尔不完备定理:"任何无矛盾的公理体系,只要包含初等算术的陈述,则必定存在一个不可判定命题,用这组公理不能判定其真假." 到20世纪初,数学经过2000多年的发展,已经是开花结果 ...

  6. 【计算理论】图灵机 ( 图灵机引入 | 公理化 | 希尔伯特纲领 | 哥德尔不完备定理 | 原始递归函数 )

    文章目录 一.图灵机引入 二.公理化 三.希尔伯特纲领 四.哥德尔不完备定理 五.哥德尔 原始递归函数 一.图灵机引入 计算理论分为 形式语言与自动机 , 可计算部分 , 计算复杂性部分 ; 之前博客 ...

  7. 需要把哥德尔不完备定理讲到什么程度才能被大众所熟知?

    需要把哥德尔不完备定理讲到什么程度才能被大众所熟知? 有些事实被认知为真,但不是必然可证的 - Kurt Godel (1906.04.28 - 1978.01.14) 逻辑系统的性质 在真命题中,有 ...

  8. 如何简单清晰地解释哥德尔不完备定理?

    前些天,我最喜欢的数学科普频道3blue1brown的制作人发了一条推特,盛赞这篇介绍哥德尔不完备定理的文章.我阅读之后,发现所言不虚.怀着激动的心情,我决定在知乎翻译这篇文章,让更多人了解证明的奥秘 ...

  9. 哥德尔不完备定理----一切都是非真即假的吗

    如果有一个人说:"我在说谎" 那么,他说的话是谎言吗? 如果是假的,那么他说的反而是真的,如果是真的,那么他说的反而是假的了. 如果这话是匹诺曹说的,恐怕他的鼻子就得变成永动机了. ...

最新文章

  1. 同学报了计算机专业,大学各专业另类“炫富”,医学专业毫不意外,计算机专业没人羡慕...
  2. 如何安装适用于Python的yaml软件包?
  3. Neutron — VLAN aware VMs 与 VLAN transparent
  4. 微软宣布Azure Function支持Python
  5. 西安单招学校学计算机软件的,西北大学软件职业技术学院单招
  6. 移植U-BOOT之支持烧写YAFFS文件系统以及制作U-BOOT补丁
  7. 测试基础-01-软件测试的定义与分类
  8. 国外大神一张图学会python-关于可以访问国外网站的浏览器的阿里云论坛用户知识和技术交流...
  9. Roling in the deep
  10. 使用Junit对Android应用进行单元测试
  11. 详解两个栈实现一个队列(python实现——经典面试题)
  12. 税务会计实务【19】
  13. word使用技巧大全
  14. 语音识别(ASR)论文优选:自监督学习Self-Supervised Learning for speech recognition with Intermediate layer supervisi
  15. 文件共享 无法访问,你可能没有权限使用网络资源,请与这台服务器的管理员联...
  16. python下载小说
  17. 使用代理服务器打不开网页_代理服务器:信息安全表象下的另一面
  18. Centos 8查询和设置当前时区
  19. 抽象函数的对称性验证
  20. MES系统汽车底盘生产线数据追溯糸统源码

热门文章

  1. 淘宝授权登录对接文档
  2. Kafka系列二——消息发送send方法源码分析
  3. 电脑运行卡顿,只需三步轻松解决
  4. Arduino Mega2560引脚说明以及功能剖析
  5. 给大家介绍一个PDF图书下载网站,还有TXT图书下载
  6. 【数据分析】电商平台入驻商用户画像分析
  7. antd vue form 手动校验_Ant Design 4.0 的一些杂事儿 - Form 篇
  8. RMS TO EAP通过MQTT简单实现(2)
  9. 计算机编程中的草图,我每天都画草图,你也该试试看
  10. python进行Excel处理