论TNT及有关系统中形式上不可判定的命题
“牡蛎”里的两个想法
本章的标题套用了哥德尔1931年那篇著名论文的标题------只是把”《数学原理》“换成了”TNT”。哥德尔的文章是一篇技术性的论文,致力于他那个精密严格的证明,本章则直观得多。我在此所要强调的是属于他那个证明的核心的两个关键想法。首先,是一项深刻的发现:某些TNT符号串能解释成在谈论另一些TNT符号串,简言之,作为一种语言,TNT有能力”自省”,或者说是自我审视。这是哥德尔配数法的产物。第二个关键想法是:这种自我审视的性质可以全部集中于一个单个的符号串,于是这个符号串所注视的唯一焦点就是它自己了。本质上,这种”聚焦手法”可以上溯到康托尔的对角线方法。
依我看,谁要是有意于深刻地了解哥德尔的证明,就必须得认识到,从根本上说,这个证明就是由这两个主要想法融和而成的。单独来看,两个都是妙举,揉到一起就是天才的杰作了。不过,若是一定要让我作个选择,说哪一个想法更为深刻的话,我会毫不犹豫地选择第一个------符号演算系统的哥德尔配数想法,因为这一想法关系到什么是意义、什么是指称的整个观念。这是个远远超出了数理逻辑范围的想法。在数理逻辑中,康托尔的手法虽然有十分丰富的数学结果,却与实际生活很少关联。
第一个想法:证明对
我们现在就来着手分析证明本身。第九章曾给出过一个相当精细的概念,说明哥德尔同构是关于什么的。现在则要描述一个数学概念,它使我们能把诸如”符号串0=0是TNT的定理”这类陈述翻译成数论陈述。这得从”证明对”谈起。一个证明对是一对以某种特殊方式结合在一起的自然数。这里的想法是:
两个自然数(分别用m和n表示)形成一个TNT证明对,当且仅当m是某个TNT推导的哥德尔数,而该推导的最末一行是哥德尔数为n的符号串。
对于WJU系统也有相应的概念,而且,直观上先考虑这种情形要更容易一些。所以,我们离开TNT证明对一会儿,先看看WJU证明对,它们的定义是类似的:
两个自然数m和n形成一个WJU证明对,当且仅当m是WJU系统的一个推导的哥德尔数,而这个推导的最末一行是哥德尔数为n的符号串。
让我们看两个WJU证明对的例子。第一个,令m=3131131111301, n=301。这样一对m和n的值确实构成WJU证明对,因为m是下面的WJU推导的哥德尔数:
WJ
WJJ
WJJJJ
WUJ
其中最后一行WUJ的哥德尔数为301,也就是n。与此对照,令m=31311311130及n=30,它们为什么就不构成WJU证明对呢?为了看清答案,我们写出以这个m为码的所谓推导:
WJ
WJJ
WJJJ
WU
这个所谓的推导中有一步无效!那就是从第二行到第三行,也就是从WJJ到WJJJ。WJU系统中没有一条推导规则能产生这样一个形式步骤。相应地------这是至关重要的------也就没有一条算术的推导规则能使我们从311到3111。有了第九章的讨论,这大概是一项不足称道的考察,但却是哥德尔同构的核心所在:我们在任何形式系统中做的事情都有一个与之平行的算术处理。
在任何时候m=31311311130和n=30当然都不构成WJU证明对。不过,仅此并不意味着30不是WJU数。也许会有另一个m值能与30构成WJU证明对(早先的推理使我们知道WU不是WJU定理,所以实际上是不会有一个数能与30形成WJU证明对的)。
那么TNT证明对又怎么样呢?下面有两个类似的例子,一个仅仅是自称为TNT证明对,另一个则是真正有效的TNT证明对。你能指出谁是谁吗?(顺带说一下,有些地方编进了密码子”611”,目的是把TNT推导中相邻的两行隔开。按这个意义,“611”起了标点符号的作用。而在WJU系统中所有的行都以”3”起始,这已足够------无需另加标点了。)
(1) m= , 262, 636, 223, 123, 262, 111, 666, 611, 223, 123, 666, 111, 666
n= , 666, 111, 666
(2) m= , 262, 636, 223, 123, 262, 111, 666, 611, 223, 333, 262, 636, 123, 262, 111, 666
n= , 333, 262, 636, 123, 262, 111, 666
说清哪个是哪个是相当简单的,只要把它们翻译成老记号,再作些例行公事的测试,看看
(1).这个以m为码的所谓推导是否真是一个合法的推导;
(2).如果是,它的最后一行是否与那个以n为码的符号串相符?
第二步是不足道的,而第一步在下述的意义上也完全是直截了当的:不会碰到没完没了的搜索,也没有暗藏着的无休止循环。想一想上面有关WJU系统的例子,同时在心里把WJU系统的规则换成TNT的规则,把WJU系统的公理换成TNT的公理就行了。两种情形的算法是相同的,把它写明白,就是:
-
在该推导中一行一行地看下去。
-
标出哪些是公理。
-
对不是公理的那些行,逐个检查它们是否能根据某条推理规则从前面的某些行中得到。
-
如果全部非公理的行都是根据推理规则从出现在前面的行中得到的,那就是一个合法的推导;否则就是一个冒牌的推导。
-
每一阶段要执行的任务都是明白清楚的,而这些任务的数量是很容易事先确定的。
“是证明对”是原始递归的…
读者大约已能察觉,我之所以在此强调这些循环的有界性,是要宣布
基本事实1:“是证明对”这一性质是原始递归的数论性质,因而可以用一个BlooP程序测试。
这和另一个密切相关的数论性质------“是定理数”------有个值得注意的对比。要断定n是一个定理数,就是要断定有某个m值能与n形成证明对(顺带说一下,这些评注对TNT和WJU同样适用,把两者都记住也许会有好处,其中WJU作为原型)。要核对n是不是定理数,你得动手搜索所有可能作为n的证明对”搭档”的m值,从而有可能要进行一场无穷尽的追寻。没有人能说清当你想要找到一个数与n(作为第二分量)形成一个证明对时,得找多长时间。问题的关键就在于,一个系统之中既有使符号串变长的规则,也有使符号串变短的规则。两种规则的并存导致了某种程度的不可预言性。
哥德巴赫变奏的例子这时候能有所帮助。测试数对(m, n)是否形成乌龟对------即m和m+n是否都是素数------是一件不足道的事情。这之所以容易,是由于”是素数”这一性质是原始递归的,对此可进行一个事先就知道必定会有结局的检测。然而,要是想知道n是否具有乌龟性质,也就是问:“有没有什么数能与n形成乌龟对?“------那就又一次使我们陷入难以驾驭的由μ循环导致的未知之中了。
…因而可在TNT中体现
这个时候,关键的想法就是上述的基本事实1,因为我们可以从它推出
基本事实2:“构成证明对”这一性质可以用BlooP测试,因而被一个有两个自由变元的公式在TNT中所体现。
又一次,我们没有在意这些证明对是相对于哪个系统的,不过这实在无关紧要,因为上述两个基本事实对任何形式系统都成立。形式系统的本质就在于此:它总能用一种预先知道能有结局的方式,说清一个给定的符号串序列是否构成一个证明------而这一切都能移植到对应的算术概念之中。
证明对的威力
为了把话说具体些,不妨就假定我们要讨论WJU系统。读者可能还记得我们称为”无朋”的那个符号串,它在某个层次上的解释是:“WU是WJU系统的一个定理”。我们可以说明如何利用体现WJU证明对概念的那个公式在TNT中表示无朋。我们把体现WJU证明对的公式(其存在性由基本事实2保证)缩写为:
WJU-PROOF-PAIR{a, a}
由于它涉及两个数的性质,所以得用含两个自由变元的公式来体现(要注意:本章中我们总是使用简朴TNT------因此得小心区分变元a,a,a”)。为了断言”WU是WJU系统的定理”,我们得作一个与之同构的陈述”30是WJU系统的定理数”,然后再把它翻译成TNT记号。利用我们的缩写法,这不难做到(同时回忆一下,第八章里为了标明每个a都用某个数字去替换,我们是在该数字之后写上”/a”):
a:WJU-PROOF-PAIR{a, SSSSSSSSSSSSSSSSSSSSSSSSSSSSSS0/a}
数数S,共30个,应该看到这是TNT的一个闭句子,原有的自由变元一个量化了,另一个则换成了一个数字。另外,这里作了一件聪明事。基本事实2给我们指出了一种谈论证明对的办法,我们刚才又想出了该如何谈论定理数:在前面加一个存在量词就行了!上面的符号串更直接地翻译过来将是:“存在某个数a能与30(作为第二个分量)形成WJU证明对。”
假使我们要对TNT作类似的事情------比方说要表示”0=0是TNT定理”这句话,我们可以用类似的方法缩写出一个(仍是有两个自由变元的)公式(其存在性由基本事实2保证):
TNT-PROOF-PAIR{a, a}
(这个缩写的TNT公式的解释是:“自然数a和a构成TNT证名对”。)接下来就是按照上述无朋模式把我们的话翻译成数论陈述,就是:“存在一个自然数a,它与666, 111, 666(作为后一分量)构成TNT证明对”,表示它的TNT公式是

------一个TNT闭句子(我们称之为”赵州”,原因一会儿就清楚)。由此我们看到有那么一种方法,它不但可以谈论TNT证明对这样的原始递归概念,而且也能谈论与之有关而又不那么靠得住的”TNT定理数”这一概念。
为了检验你对这些想法的理解,请你想想如何把下述有关TNT的元陈述翻译成TNT记号:
(1).0=0不是TNT定理。
(2).~0=0是TNT定理。
(3).~0=0不是TNT定理。
它们的解答与上述例子有什么不同?彼此之间有什么不同?这里再给你几个翻译练习:
(4).赵州是TNT定理。(表示这句话的符号串称为”元赵州”)
(5).元赵州是TNT定理。(表示这句话的符号串称为”元元赵州”。)
(6).元元赵州是TNT定理。
(7).元元元赵州是TNT定理。
(等等,等等。)
例5表明关于元元TNT的一些陈述能翻译成TNT记号;例6则表明对元元元TNT的陈述也是如此,等等。
这时候要紧的是要记住:表示一个性质和体现一个性质是不一样的,例如”是TNT定理数”由公式
a:TNT-PROOF-PAIR{a, a}
来表示,翻译为:“a是TNT定理数”。但我们并不担保此公式体现了这一概念,因为我们并未能担保这个性质是原始递归的------事实上我们至少会暗中怀疑它不是。(这样怀疑是合理的。“是TNT定理数”这一性质不是原始递归的,因而也就没有一个TNT公式能体现它!)相比之下,“是证明对”这个性质鉴于它的原始递归性,就既可以用上面引入的这个公式表示,也可用这个公式体现。
代入导致第二个想法
通过上面的讨论,我们已经能够看清TNT是怎样对”是否是TNT定理”这一概念进行”反省”的了。这是哥德尔证明第一部分的精华。我们现在打算着手讨论证明的第二个主要想法,方法是构想一个概念,使我们能把这种反省集中进一个单个句子。要做到这一点,我们先得看看当你用一个简单的方法从结构上修改某个公式时,该公式的哥德尔数会发生什么变化。其实,我们要考虑的只是这样一种特殊的修改:
把全部自由变元都用具体数字替换。
下面的对照表中,左边一列给出这种运算的一些例子,而右边一列则显示其哥德尔数的对应变化
公式 哥德尔数
a=a , 111, 262
全部自由变元都换成2的数字表示
SS0=SS0 , 123, 666, 111, 123, 123, 666
~a:a:a”=(SSa·SSa) , 333, 262, 636, 333, 262, 163, 636, 262, 163, 163, 111, 362, 123, 123, 262, 236, 123, 123, 262, 163, 323
全部自由变元都换成4的数字表示
~a:a:SSSS0=(SSa·SSa) , 333, 262, 636, 333, 262, 163, 636, 123, 123, 123, 123, 666, 111, 362, 123, 123, 262, 236, 123, 123, 262, 163, 323
右边一列有一个与左边同构的、把一个大数变成一个更大的数的算术过程。依靠加法、乘法和10的幂运算等等,不难算术地描述从旧数到新数的函数。------不过用不着真这么做。问题的要点在于:(1)原公式的哥德尔数、(2)其数字表示被插入的那个数以及(3)结果的哥德尔数,这三者之间的关系是原始递归的。也就是说,我们可以写出一个BlooP测试,使得对任意输入的三个自然数,若它们之间有这种关系,该测试就能回答”是”,否则就会回答”否”。你可以检查下面的两组数,测验一下自己作这种测试的能力,同时弄清楚为什么这一过程不会出现隐蔽的无终止循环。
(1) , 262, 112, 262, 163, 323, 111, 123, 123, 123, 123, 666
:
, 123, 123, 666, 112, 123, 123, 666, 323, 111, 123, 123, 123, 123, 666
(2) , 362, 262, 236, 262, 323, 111, 262, 163
:
, 362, 123, 666, 236, 123, 666, 323, 111, 262, 163
像往常一样,一个例子是对的,另一个是错的。我们称三个数之间的这种关系为代入关系。由于这个关系是原始递归的,所以可用某个有三个自由变元的TNT公式体现。我们把这个公式缩写成
SUB{a, a, a”}
由于这个公式体现代入关系,所以下面给出的公式就必定是TNT定理:

(此公式基于本节前面用并行两列的表给出的代入关系例子中的第一个。)同样也因为SUB公式体现代入关系,于是下面给出的公式自然就不是TNT定理:
SUB{SSS0/a, SS0/a, S0/a”}
算术㧟摁
现在已到了决定关头:可以把拆开的各个部分组合成意义深远的整体了。我们要把TNT-PROOF-PAIR和SUB这两个公式作为部件,以某种方式把它们结合成一个单个的TNT句子,其解释为:“本TNT符号串不是TNT定理”。怎么做呢?到了现在,所需的全部零件都摆在眼前,答案却仍然不易找到。
把一个公式自身的哥德尔数代入这个公式似乎是个怪异但却意义不大的想法。这与另一个怪异但却似乎意义不大的想法颇为相似:在《G弦上的咏叹调》上作”㧟摁”。㧟摁显示出了一种出乎意料的价值:它表明了一种制造自指句子的新方法。第一次接触了各式各样㧟摁型的自指句子之后,它就会暗暗尾随你------而一旦真的理解了这一原则,你就禁不住要赞叹它是如此的简单而又生机勃勃。㧟摁的算术版本------姑且称之为”算术㧟摁”------能使我们造出一个”谈论自身”的TNT句子。
我们来看一个㧟摁算术的例子。我们需要一个至少有一个自由变元的公式。用下面的公式就行:
a=S0
它的哥德尔数是262, 111, 123, 666。我们将把这个数插进公式自身中------更确切地说是把这个数的数字形式插进去,结果得到

这个新公式断定了一句笨拙的假理------262, 111, 123, 666等于1。要是我们从符号串~a=S0出发来作算术㧟摁,那就会做出一个真句子------这你自己就能看出。
在作算术㧟摁时,你自然是在做我们早先定义的代入运算的一个特例。如果要在TNT内部谈论算术㧟摁,就得使用公式
SUB{a”, a”, a}
其中前两个变元是相同的。这是由于我们是在以两种不同的方式使用同一个数(康托尔对角线方法的幽灵!)。这里的数a”既是(1)原公式的哥德尔数,又是(2)插进去的数。我们给上述公式造一个缩写记号:
ARITHMOQUINE{a”, a}
用汉语讲,这个公式是说:
a是对哥德尔数为a”的公式作算术㧟摁所得公式的哥德尔数。这句话又长又笨,我们引入一个简明雅致的术语来概括它,我们说:
a是a”的算术㧟摁化。
这表示同样的意思。例如,262, 111, 123, 666的算术㧟摁化是一个大得难以想象的数:

(这就是我们算术㧟摁a=S0所得公式的哥德尔数。)我们能够很容易地在TNT内部谈论算术㧟摁。
最后一锤
现在,要是再回顾一下《G弦上的咏叹调》,你就能看清,按蒯恩的方式达到自指的各种方法中,最复杂的一招是㧟摁一个其本身就在谈论㧟摁概念的句子。仅仅㧟摁是不够的------你必须㧟摁一个提及㧟摁的句子!那好,在我们的情形,与之平行的手法必定是算术㧟摁某个其本身就在谈论算术㧟摁概念的公式。
我们立即来写出那个公式,并称它为G的”服”号串:
~a:a:<TNT-PROOF-PAIR{a, a}ARITHMOQUINE{a”, a}>
你可以明白地看出这一策略是怎样深刻地借助了算术㧟摁化的。这个”服”号串当然有一个哥德尔数,我们称之为”u”。u的十进表达式的两头甚至中间的一小块可以直接读出来:
u=223, 333, 262, 636, 333, 262, 163, 636, 212, …, 161, …, 213
至于其余部分,就得知道”TNT-PROOF-PAIR”和”ARITHMOQUINE”写出来时究竟是什么样。这过于复杂了,而且不管怎么讲都有点离题太远了。
我们现在该做的就是㧟摁这个”服”号串!这意味着把全部自由变元------这里只有一个,即a”------“踢出去”,把所有出现a”的地方换成数字u。于是得到

不管你信不信,这是一个哥德尔符号串,我们可以称之为”G”。于是就有两个刻不容缓必须回答的问题:
(1).G的哥德尔数是什么?
(2).G的解释是什么?
先说第一个。我们是怎么造的G呢?噢,是从其”服”号串入手,对之进行算术㧟摁。那么根据算术㧟摁化的定义,G的哥德尔数就是
u的算术㧟摁化。
再看第二个。我们分成几步来把G译成汉语,一步比一步更为概括。作为粗略的第一步,我们作一个相当刻板的字面翻译:
“不存在数a和a使得:(1)它们形成TNT证明对;并且(2)a是u的算术㧟摁化。”
眼下当然是有一个数,a是u的算术㧟摁化------因而问题就必定出在另一个数a身上。这一考察使我们能把G的译文重新措辞而写成:
“没有一个数a能与u的算术㧟摁化形成TNT证明对”。
(这一步有可能把人搞糊涂,后面还要详细解释。)你该看到发生什么事了吧?G在说:
“以u的算术㧟摁化为哥德尔数的那个公式不是TNT定理。”
可是------这时已不再意外了------这个公式不是别的,就是G自己。因此,我们可以把G最终翻译成
“G不是TNT定理”。
------或者,你要是愿意,也可以说成
“我不是TNT定理”。
我们已经逐步得到了一个高层次的解释------一个TNT元语言的句子,它出自先前那个低层次的解释------一个数论句子。
TNT说”服了!”
在第九章,我们勾勒过这个惊人的构造的主要结果------TNT的不完全性。重申一下那个论证:
G是不是TNT定理呢?如果是,它说的就一定是一句真理。可实际上G在说什么呢?G就在说它自己的非定理性。于是从它是定理就能得出它不是定理------矛盾。
要是G不是定理又如何呢?这倒可以接受,此时不会导出矛盾。不过G的非定理性正是G所断定的------因而G讲的是真理,而G又不是定理,所以就存在(至少)一个不是TNT定理的真理。
现在,为了再一次解释解释那个巧妙的步骤,我要使用另一个类似的例子。取符号串
~a:a:<TORTOISE-PAIR{a, a}TENTH-POWER{SS0/a”, a}>
其中的两个缩写符号都代表TNT符号串,这些符号串你自己就可以写出。“TENTH-POWER{a”, a}“体现陈述”a是a”的10次幂”。逐字地译成汉语就是
“不存在数a和a满足:(1)它们形成乌龟对,(2)a是2的10次幂”。可2的10次幂显然是存在的------即1024,所以这个符号串实际上说的就是
“没有一个数a能与1024形成乌龟对”。
这又可以进一步地归结为
“1024没有乌龟性质”。
要点在于我们得到了一种代入方法:把对一个数的描述代入某个谓词,而不是用这个数的数字形式代入。这种做法靠的是另外再用一个量化的变元(a)。这里,是1024这个数,其描述为”2的10次幂”;而上面所说的,是被描述为”u的算术㧟摁”的那个数。
“算术㧟摁时得到非定理”
我们要停下来喘口气,并回顾一下我们做了些什么。就我所知,要想比较透彻地把握住这种代入方法,最好的办法是直截了当地把它与蒯恩形式的说谎者悖论作一个比较。它们之间的对应是
假句子 非定理
一个短语的引文形式 一个符号串的哥德尔数
在谓语之前放上主语 代入一开公式
在谓语之前放一句引语 把一符号串的哥德尔数代入一开公式
把一个谓语自身作为引语放在该谓语之前(“㧟摁化”) 把一符号串的哥德尔数代入一开公式(“算术㧟摁化”)
摁时得到假句子(没有主语。仅有一个谓语) G的”服”号串(TNT的一个开公式)
“㧟摁时得到假句子”(上面的那个谓语,加上引号) 数u(上述开公式的哥德尔数)
“㧟摁时得到假句子”㧟摁时得到假句子(㧟摁上面那个谓语而形成的一个完整句子) G本身(把u代入”服”号串所形成的句子,即”服”号串的算术㧟摁)
哥德尔第二定理
由于G的解释是真,所以其否定~G的解释就是假。可我们又知道TNT中推不出假的陈述。于是,不论是G还是其否定~G都不会是TNT定理。这样,在我们的系统中就找到了一个”漏洞”------一个不可判定命题。这会派生出不少结果。从G的不可判定性就可以得到一个古怪的事实:G和~G都不是定理,但公式却是定理,因为命题演算的规则保证全部形如<P~P>的良构公式都是定理。
这是一个简单的例子,其中,一个系统内的断言和一个谈论该系统的断言似乎很不合拍。这会使人疑惑不定:这个系统是否真的很精确地反映了自己?存在于TNT内部的那种”自我反映的元数学”与我们所用的这种元数学是否非常相符?这是哥德尔写论文时很着迷的问题之一。具体地说,他对是否可能在这种”自我反映的元数学”内证明TNT的一致性颇感兴趣。读者还该记得,如何证明系统的一致性是当时哲学上的一大难题。哥德尔找到了一个用TNT公式表示”TNT一致”这句话的简单方法,然后证明了这个公式(以及表示同一思想的任何其它公式)只在一个条件下才是TNT定理,这个条件是:TNT不一致。这个反常的结果对那些乐观地期待可以找到数学无矛盾性的严格证明的人真是当头一棒。
怎样在TNT内部表示”TNT一致”这句话呢?靠的是这样一个简单事实:不一致性是说有两个公式x和~x------一个是另一个的否定------都是定理。于是根据命题演算,全部良构公式就都是定理。因而,要说明TNT的一致性,只需提出一个TNT的句子,说明这个句子可以被证明为不是定理,就行了。所以,表示”TNT一致”的一个办法就是说”公式~0=0不是TNT定理。“。这在几页以前就作为习题提出了,其翻译为

通过一个冗长但很容易的推理可以证明------只要TNT一致------这个用TNT符号写出的一致性誓言不是个TNT定理。所以说,当TNT表示一些事物时,它的反省能力很强,但要让它证明这些事物,其反省能力就很差劲了。如果把这一结果借过来用于人的自我认识问题,恐怕极易引起争论。
TNT是不完全的ω
那么TNT”享有”哪种不完全性呢?我们将要看到,它的不完全性是第八章中定义的那种”欧米伽”型。这意味着有一个无穷的、金字塔形的符号串族,其每个符号串都是定理,但与这个族对应的”概述串”却不是定理。不难给出这种不是定理的概述串:

要想理解这个符号串何以不是定理,只需注意一下它与G本身是极为相似的------事实上只用一步就能从它推得G(根据TNT的量词互变规则),所以,如果它是定理,G也是。而G不是定理,于是这个公式也就不能是定理。
我们现在需要证明与之相应的那个金字塔中的公式都是定理。写出它们是很容易的:

~a:<TNT-PROOF-PAIR{S0/a, a}ARITHMOQUINE{SSS…SSS0/a”, a}>
~a:<TNT-PROOF-PAIR{SS0/a, a}ARITHMOQUINE{SSS…SSS0/a”, a}>
~a:<TNT-PROOF-PAIR{SSS0/a, a}ARITHMOQUINE{SSS…SSS0/a”, a}>
… … …
这些符号串说的都是什么?逐个翻译出来就是:
“0与u的算术㧟摁化不形成TNT证明对”
“1与u的算术㧟摁化不形成TNT证明对”
“2与u的算术㧟摁化不形成TNT证明对”
“3与u的算术㧟摁化不形成TNT证明对”
… … …
这里的每个断言都是讲两个特定的自然数是否构成证明对(与之对照,G本身则是谈一个特定的自然数是否是定理数)。由于G不是定理,当然就没有一个自然数会与G的哥德尔数构成证明对。所以这个族中的每句话都是真的。事情的关键在于”是证明对”这一性质是原始递归的,从而可体现,所以上面列出的每一句话(都是真的)必定都能翻译成TNT的定理。也就是说我们这座无穷的金字塔中的每一层都是定理。这就说明了TNT为什么ω不完全。
两个不同的补洞方法
由于G的解释为真,其否定~G的解释就为假。而利用TNT一致性的假定,我们又知道在TNT中推不出假陈述,于是无论是G还是其否定~G都不是TNT定理。在我们的系统中就找到了一个漏洞------一个不可判定命题。如果我们在哲学上足够超脱,从而能认清其原因是什么的话,那就不会因此而惊慌。这表明,就像绝对几何一样,TNT能够扩充。事实上,和绝对几何一样,TNT也能朝两个不同的方向扩充。它可以朝标准方向扩充------这与绝对几何朝欧几里得的方向扩充相应;它也能朝非标准的方向扩充------这当然就与绝对几何朝非欧方向的扩充相应了。标准型的扩充将是:
把G加进去作为新公理。
这种见解似乎相当无害甚至颇为称心,因为G毕竟是在说有关自然数系统的某件真的事情。那么非标准的扩充又如何呢?如果完全平行于平行公设的情形去做,就得到;
把G的否定加进去作为一条新公理。
我们怎么能做这么荒唐而又蹩脚的事呢?其实说到底,借用济罗拉莫·萨彻利那些令人难忘的话,~G不正是”与自然数的本质相抵触”的吗?
超自然数
我希望上面的引文的讽刺意味触动你。济罗拉莫·萨彻利处理几何时的问题恰恰出在他从”什么是真什么不是真”这样一个固定见解出发,而且只打算证明他一开始就估计为真的那些内容。尽管他的方法很聪明------包括否定第五公设,从而证明以此得到的几何中的很多”荒唐”命题------但他从未意识到有可能以其它方式来想象点和线。我们现在得提防不要重蹈覆辙。我们应该尽可能公正地考察把~G作为新公理加进TNT将意味着什么。试看下列类型的新公理:
a:(a+a)=S0
a:Sa=0
a:(a•a)=SS0
a:S(a•a)=0
如果人们从未考虑过引入它们,今天的数学该是什么样呢?这里的每一条都”与原先了解的数系的本质相抵触”,每一条也都提供了对全部数概念的一个深刻而又精彩的扩充------有理数、负数、无理数、虚数。这种可能性就是~G试图打开我们的眼界,使我们达到的地方。以往,数概念的每次扩充都要招来一片倒彩和嘘叫,尤其是把诸如”无理数”、“虚数”这类不受欢迎的新客叫做数时,你听到的叫声更是特别响亮。遵循这个传统,我们要把~G所揭示的那些数叫做超自然数,以表明我们确是深感其有悖于所有合乎常情的概念。
如果要把~G扔进TNT作为第六条公理,那我们最好了解一下它到底怎样与一个带有我们刚讨论过的那个无穷金字塔共存于一个系统之中。明摆出来,~G是讲
“存在某个数与u的算术㧟摁化形成TNT证明对。”
------而该金字塔的各层却依次断言:
“0不是这个数”
“1不是这个数”
“2不是这个数”
…
这真令人费解,因为看上去这是个十足的矛盾(正因为如此才称之为”ω不一致性”)。费解的根源------与几何分叉的情形极为相似------在于尽管事实上我们明白这个系统是修改过的,但还是顽固地拒绝接受对符号解释的修改,总想不重新解释任何符号就混过去------结果当然就证明这是不行的。
和解来自于把重新解释为”存在一个广义自然数”,而不再解释成”存在一个自然数”。这样作的时候还得用相应的方法把也重新解释过。这意味着我们对自然数以外的某些数也打开了大门,也就是引进了”超自然数”。自然数和超自然数一起构成整个广义数。
这样一来,这个表面上的矛盾立即化为乌有,因为那个金字塔仍然讲的是老话:“没有一个自然数能与u的算术㧟摁化形成TNT证明对。“这族句子丝毫没讲到超自然数,因为没有关于超自然数的数字形式。而此时~G却是说:“存在一个广义自然数能与u的算术㧟摁化产物形成TNT证明对。“把这族句子和~G放在一起,显然是在讲:存在一个超自然数能与u的算术㧟摁化产物形成TNT证明对,如此而已------半点矛盾也没有了,在一个包括超自然数在内的解释下,TNT+~G是一致的系统。
由于我们现在约定了把两个量词的解释加以扩充,这就意味着包含量词的任何一条定理也都有一个扩充了的意义,例如,交换律定理
a:a:(a+a)=(a+a)
现在所讲的就是对全体广义自然数加法是可交换的------换句话说,不仅自然数的加法可交换,超自然数的加法也行。类似地,说”2不是自然数的平方”的那条TNT定理------
~a:(a•a)=SS0
------现在告诉我们2同样也不是超自然数的平方。事实上,自然数所具有的性质,只要是由TNT定理给出的,超自然数也都具有。换言之,对于自然数能形式证明的东西,对超自然数也都成立。具体讲,这意味着超自然数不是我们熟悉的诸如分数、负数、复数等等的任何一种东西,最好还是把超自然数设想成比全部自然数都大的整数------无穷大的整数。要害是:尽管TNT的定理能排斥负数、有理数、无理数、复数等等,但没有办法排斥无穷大的整数:连表示”不存在无穷量”这句话的办法都没有。
这种说法初听起来会让人觉得很怪。与G的哥德尔数形成TNT证明对的那个数,(我们称它为”I”,不过这没什么特殊理由)到底有多大?不幸的是,我们没有什么合用的语言能描述无穷大整数的大小,所以我怕是没法表述I的量值了。可话又说回来,i-------1的平方根------到底有多大?它的大小就不能靠我们熟悉的自然数的大小来想象,你不能说:“噢,i大约和14的一半或24的9/10一样大。“你只好讲:“i的平方是-1”,而且差不多也就只能讲这些。在这里倒好像用得上亚伯拉罕·林肯的一句话。当有人问他”人的两条腿该是多长”的时候,他慢条斯理地说:“够着地就行。“这差不多就是回答I的大小的办法------I恰好就是一个指明G的证明结构的数那么大------不再大,也不再小了。
当然,TNT的任何一个定理都有很多不同的推导,所以你大概要怪我对I的刻划不唯一。的确是这么回事。不过,这仍然与i-------1的平方根------的情形类似。你可以回忆一下,还有一个数的平方也是-1,那就是-i,i和-i不是同一个数,它们恰好共同具有某个性质。麻烦仅在于这还恰好就是定义它们的性质!我们只得挑出其中一个------至于是哪个,这无关紧要------把它叫做”i”。其实根本没办法区分开它们,所以,也没准我们在这数百年间一直都说的是那个错的”i”,但这完全是无所谓的。现在,与i类似,I也不是唯一定义的。你只须把I看做是很多能与u的算术㧟摁化产物形成TNT证明对的荒唐数中特定的某一个就行了。
超自然定理有无穷长推导
我们还没有直接面对把~G扔进去作为公理引出的后果。我们说到过,但没有强调。要害在于~G断言G有证明,如果一个系统的公理之一断言它自己的否定有证明,这个系统还能好得了吗?我们现在注定要焦头烂额了!幸好,事情还不那么糟糕。只要我们仅限于构造有穷的证明,就决不会证明G。所以,G与~G之间并不会发生不幸的冲突。超自然数I也不会引来灾难。但是,我们现在必须得习惯~G是断言一个真理(“G有证明”),而G是断言一个假理(“G没有证明”)这样的想法。在标准数论中正好相反------不过标准数论中没有什么超自然数,要注意,TNT的超自然定理------即G------可以讲假理,但全部自然定理讲的仍都是真理。
超自然数的加法和乘法
我要来讲一个有关超自然数的极为稀奇和意外的事实,但不加证明(我也不知道证明)。这件事会使人想到量子力学中的海森堡测不准原理。它是这样:我们可以用某种简单而又自然的方法对每个超自然数用三个一组的普通整数(包括负整数)来”编号”。这样,我们原有的那个超自然数I就可以有一个编号集(9, -8, 3), 而它的后继I+1就可以有一个编号集(9, -8, 4)。并不是只有一种方式来给超自然数编号,不同的方法有各自的优点和缺点。根据某些编号方案,给定两个超自然数的编号之后,很容易算出其和的编号三元组。而按另一些编号方案,则很容易算出两个数的积的编号三元组。然而,没有一种编号方案能够方便地既算加法又算乘法。说严格一点,如果和的编号能用递归函数算出,那么积的编号就不是递归函数;反之,如果积的编号是递归函数,和的编号就不是。因此如果超自然的小学生在学会超自然加法之后仍不知道超自然的九九表,那只好原谅他们------而且反过来也一样!你不可能同时都知道。
超自然数是有用的…
我们还可越出超自然数数论的范围,考虑超自然的分数(两个超自然数的比)、超自然的实数,等等。其实,利用超自然实数的概念可以在一个新的立脚点上建立微积分。诸如dx、dy等等长期使数学家头疼的无穷小量,如果看成无穷大实数的倒数,就完全是合乎情理的!高等分析的某些定理依靠”非标准分析”能够更直观地证明出来。
…但它们真实吗?
初次接触非标准数论时会被它搞得晕头转向。不过非欧几何也是把人搞得晕头转向的东西。不管是在哪种情形,人们都不禁要问:“这两种对立的理论中哪个正确?哪个讲的是真理呢?“某种意义上这类问题是无法回答的(而在另一种意义上------后面要讨论------却可以有答案)。这个问题之所以没有答案,原因在于这两种对立的理论尽管使用相同的术语,却不是在谈相同的概念。所以它们只是表面上对立,正如欧氏几何和非欧几何一样。在几何中,“点”、“线”等字眼都是未定义项,它们的意义是靠用它们写出的公理系统确定的。
对于数论,情形也类似。当我们决定要把TNT形式化时,我们预先就选好了当作解释词的那些术语------例如”数”、“加”、“乘”等等。采取形式化这一步骤使我们失去了主动权,无条件地接受这些术语可能有的各式各样的被动意义。但是,我们------像萨彻利一样------对意外的事情毫无准备。我们自以为我们完全知道有关自然数真的、实在的、唯一的理论是什么。我们并未想到会有一些关于自然数的问题是TNT解决不了的,因而朝不同的方向扩充TNT就能对这些问题随心所欲地回答。这样一来,我们就没有一个基础来谈论数论”事实上”该是这一种还是那一种。就像有个人发誓说-1的平方根”事实上”存在,或者”事实上”不存在一样。
几何学的分叉现象与物理学家
可以而且大约应该提出这样一种见解来反对前述的内容:假设在现实的物理世界中有一些实验,用某种特定的几何学来解释它们,要比用别的几何学解释省事得多,那我们说这种几何学是”真”的或许就有意义。于是在那些想要使用”正确”几何学的物理学家眼里,区别”真”几何学和其它几何学就有了某种意义。可是,不能把事情看得太简单了。物理学家总要与条件的近似化和理想化打交道。比如第五章谈过的我自己的那篇博士论文,就是以关于磁场中晶体的问题的一个极为理想的情形为出发点的。显露出的数学倒是高度的漂亮和对称。尽管------毋宁说是因为------该模型的人为性,某些基本的物理特征明显地反映在图表上了。这些特征就提示着对更现实的条件下可能发生的这类事情的一些推测。可是,要是没有使我那图表能够产生的那些简化假设,就决不会有如此的见地。可以看到,在物理学中这类事情比比皆是:物理学家用一个”非现实”的情形认识了现实中隐藏很深的一些特性。所以,说物理学家想要使用的几何的某一分支是描述了”真几何”时,要特别谨慎,因为实际上物理学家总要使用种种不同的几何学:在给定的情形下挑选看起来最简单、最方便的那一种。
此外------或许这更能说明问题------物理学家并不只研究我们生活在其中的三维空间。有整个一簇的”抽象空间”,在其中都可以进行物理演算,而这些空间与我们所生活的那个物理空间有完全不同的几何性质。那么谁会说”真几何”就是天王星和海王星在其中绕着太阳转的那个空间所确定的呢?有一种”希尔伯特”空间,量子力学的波函数就在里面晃动;有一种”动量空间”,那里住着傅立叶分量;有一种”互补空间”,其中有波向量跳跃;还有一种”相空间”,其中多粒子构型迅速变幻;等等。绝对没有理由说这些空间的几何学都得一样。实际上,它们不可能一样!因此,对物理学家来说,存在不同的和”对立”的几何学是至关重要的。
数论的分叉现象与银行家
几何说得够多了,数论又怎么样呢?不同的数论之间的相互依存也是至关重要的吗?你要是去问银行职员,我猜他准会惊诧不已而不肯相信。2加2怎么能不等于4而等于别的什么东西呢?要是2加2不得4,由此导致的令人无法忍受的不确定性不是立刻会使整个世界经济坍台吗?其实,并不是这么回事。首先,非标准数论并不危及2加2等于4这个古老观念,它与普通数论的不同仅在于它讨论无穷概念的方式。毕竟,每个TNT定理在TNT的任何扩充中都是定理!所以银行家们犯不上为采用非标准数论会引起混乱而感到绝望。
不管怎么说,对旧有事实的改变怀着恐惧心理,这反映了对数学和现实世界之间关系的一种误解。只是在你作出了要采取哪类数学这样一个决定性的选择之后,数学才告诉你有关现实世界的一些问题的答案。即使有一个与标准数论相左的数论,而且它也使用符号”2”、“3”和”=“,可其中一条定理却说”2+2=3”,那也没什么理由要银行家选用这种理论!因为它对金融工作不合用。你得使自己的数学适应世界,而不是相反。比如说,我们并不把数论用于云彩组成的系统,因为整数这个概念很难适应那里的情形。一块云彩和另一块云彩跑到一起并不是两块云彩,而仍只是一块。这并不证明1加1等于1,它只证明”一”的数论概念就其全部功用而言都不能用来数云彩。
数论中的分叉现象与元数学家
总而言之,银行家、数云彩的人、以及其余的绝大多数人,都不必为超自然数的出现而烦恼:它们丝毫不会影响世间的日常观念。实际上可能遇到点麻烦的,只是那些离不开无穷实体本质的人。我们周围这类人并不很多------不过数理逻辑学家属于这一范畴。数论中有分叉现象怎么就会影响他们呢?因为,数论在逻辑中有两重身份:(1)当把数论公理化时,它是研究对象;(2)非形式地使用数论时,它是研究形式系统的不可少的工具。这又是使用-谈论的区别。这里,(1)是谈论数论,(2)是使用数论。
这样一来,尽管数论不适用于数云彩,但数学家认定它适用于研究形式系统,这就像银行家认定实数算术适用于他们的业务一样。这是在数学之外作出的裁决。这也表明,进行数学研究时的思维过程和其它领域的很多思维过程一样,含有”缠结的层次结构”,其中一个层次可以影响别的层次。层与层之间并没有明显的界限。就像关于”什么是数学”的形式主义观点使人们相信的那样。
形式主义的哲学宣称数学家只讨论抽象的符号,而且可以几乎不关心这些符号有什么现实用处、与现实有什么关系。然而这是一幅很失真的画面。这在元数学中再清楚不过了。如果是靠数的理论本身的帮助去获得有关形式系统的真实知识,那么数学家们就是心照不宣地表明,他们相信这些被叫做”自然数”的飘渺的玩艺其实就是现实世界的组成部分------并不只是想象中的片断。正是由于这个原因,我才在前面的一个括号中说,在某种意义上,对”数论的哪种说法为’真’ “有一个答案。关键在于:数理逻辑学家必须选出数论的一种说法来寄托他们的信念,尤其是他们不能在超自然数的存在与不存在之间保持中立。因为对于元数学中的问题,两个不同的理论可能给出不同的答案。
例如”~G在TNT中有没有有穷推导?“,这个问题实际上没人知道答案。尽管如此,大多数数理逻辑学家还是会毫不犹豫地回答说没有。给出这个答案的直觉基础是下述事实:如果~G是定理,TNT就是ω不一致的,这样的话,你要是打算给TNT一个有意义的解释,你就被迫得吞下超自然数------而这对大多数人来讲是一件极不舒服的事。毕竟,我们发明TNT时并没打算或者说并不指望超自然数是它的一部分。也就是说,我们------或者我们中的多数人------都相信有可能造出一个形式化数论,它并不会强迫你相信超自然数完全像自然数一样真实。在押宝的时候,确定数学家们要把自己的信念寄托在数论的哪一条”岔路”上,靠的就是对现实世界的直观。不过这种信念可能是错的。也许人们发明的每一种一致的形式数论都蕴涵着超自然数的存在,也就是都ω不一致。这当然是个古怪的想法,但却是可以想得到的。
如果真是这样------我抱有怀疑,但却拿不出否定的论证------则G不见得不可判定。其实,也许根本就没有不可判定的TNT公式。可能会简单得只有一个不分叉的数论------其中必定包括了超自然数。这并不是数理逻辑学家所期待的事情,可又是不能彻底排斥的事情。一般说来,数理逻辑学家相信TNT------以及与之类似的系统------是ω一致的,从而在任何这样的系统中可以构造出的哥德尔符号串都是该系统内不可判定的。这意味着逻辑学家挑选它或它的否定作为新公理都可以。
希尔伯特第十问题与乌龟
我打算介绍一下哥德尔定理的扩充以结束这一章(戴维斯[Davis]与赫什[Hersh]的文章《希尔伯特第十问题》对此有更全面的论述,参看文献索引)。为此,我先得定义丢番图方程,即以常量整数为系数和指数的多项式方程。例如
a=0
以及
5x+13y+1=0
以及
以及
a^(123,\ 666,\ 111,\ 666)^+b^(123,\ 666,\ 111,\ 666)^-c^(123,\ 666,\ 111,\ 666)^=0
都是丢番图方程。一般说来,要知道一个给定的丢番图方程有没有整数解是一件很难的事情。事实上,希尔伯特在二十世纪初的一次讲演中,就要求数学家寻找能在有穷步内确定一个给出的丢番图方程有无整数解的一般性算法。他居然丝毫不怀疑可能没有这种算法存在!
现在可以把对G的讨论简单化了。已经证明,只要你有一个足够强有力的形式数论以及它的一个哥德尔配数法,那就有一个丢番图方程等价于G。这种等价性依赖于下述事实:当我们在一个元数学的层次上作解释时,该方程断言它自己无解。反过来说就是:如果你找到了一个解,那就可以从这个解构造出该系统内的一个关于此方程无解的证明的哥德尔数!这就是乌龟在《前奏曲》中用费马方程作为他的丢番图方程所做的事情。我们高兴地得知,一旦做到了这一点,就能从空气分子中找回老巴赫演奏出的声音!