思想海洋的远航分享 http://blog.sciencenet.cn/u/xying 系统科学与数学水手札记

博文

哥德尔定理的证明——3哥德尔编码 精选

已有 16608 次阅读 2013-5-27 07:05 |个人分类:科普|系统分类:科普集锦|关键词:学者| 编码, 证明, 哥德尔定理

公理系统的不可判定命题、相容性和完备性问题是相联的。系统里的命题,如果既不可能证明它成立,也不可能证明与之相反的成立,这便是个不可判定的命题。相容的系统,不可能证明相反的一对命题同时成立。完备的系统,必须能够证明任何一对相反命题,必有一个成立。所以具有不可判定命题的系统,如果是相容的必定是不完备的。

如果在PM里,能构造出这样一个自相矛盾的命题:若证明它成立,等同于证明相反的命题也成立。它就是个不可判定的命题。就证明了“哥德尔不可判定定理”,或者根据上面简单的推论就有“哥德尔不完备性定理”。

“这个命题是不可证明的”这句话,如果能放在PM里,它便在证明时自相矛盾。但这句话是元数学的命题。我们必须用一个映射,将这命题变换成PM里自涉的(self-referent)算术命题。歌德尔先用编码将PM里的公式一一映射成自然数(哥德尔数),这个数就好比是身份证的号码,唯一代表着那个公式,从公式角度来看这个数就是它自己。这个公式里如果包含了这个数和它的含义,就能够谈论自己。这一篇介绍这个哥德尔编码。

前面说过,形式公理系统里的公式是由一组原始字符,按照形成规则构成的字符串,编码就是将字符串一一映射成一个自然数,称为哥德尔数。我们来看哥德尔是怎么编码的(这基本按哥德尔1931年论文的版本)。

包含着皮亚诺算术公理的形式公理系统PM,有12个固定符号,分别对应着哥德尔数如下:

符号

V

=

0

S

+

·

编码

1

2

3

4

5

6

7

8

9

10

11

12

含义

得出

存在

等于

后继

标点

标点

标点

 

公式在表中符号的含义解释下,具有逻辑和数学命题的含义,哥德尔“对应引理”证明了PM中原本只具有形式的定理,对应着其数学含义下的数论真理。不难看出,如果不再定义数字符号,nS的字符串SSS…SSS0的含义是自然数n,这字符串称为数nPM的表达。

继续说编码的规则。自然数变量xyz的哥德尔数分别是131719依序对应着大于12的质数。命题变量pqr的哥德尔数是132172192依序对应着大于12的质数的平方。谓词变量PQR,…的哥德尔数是133173193,…依序对应着大于12的质数的立方。

公式的编码是一组质数幂的乘积,这组质数的个数与公式中的字符数相等,从2开始依序列出前几个的质数,它的指数对应着相应位置上公式符号的哥德尔数。举例来说:

公式“∃x(x=Sy)”这里8个字符对应的哥德尔数依序是41381357179,这公式的哥德尔数按照编码规则便是24313587131151371717199,它是一个很大的自然数。

形式证明是由几个公式组成的序列,序列中每一个公式如果不是公理或已知的定理,都必须是由序列里前面的公式按变换规则生成的,证明的结果是序列中最后一个公式。形式证明的编码也与公式的编码规则类似,只不过其指数是对应着次序上公式的哥德尔数,举例来说:

从“每个数有个后继数”用替换规则证明“零有一个后继数”,可以表示为两个公式的序列:“∃x(x=Sy)∃x(x=S0)”第一个公式的哥德尔数为m,第二个为n时,这个形式证明的哥德尔数是:2m3n,也是一个自然数。更细致的解释见内格尔和纽曼《哥德尔证明》【1】。

按照这样的编码,每一个公式或证明对应着一个哥德尔数。根据算术基本定理,每一个自然数可以分解成唯一的质数幂的乘积,依照质数指定的位置和其指数对应的字符或公式,哥德尔数可以解码出对应的公式或证明。这个编码规则建立起公式或证明,与(一部分)自然数的一一映射。每个哥德尔数通过这个一一映射,拥有它所对应字符串的信息。

既然公式和证明的所有信息都在对应的哥德尔数上,那么讨论公式和证明,这些谈论字符串性质的元数学问题,便是一个数论的命题,就可能把它用公式表达出来【2】。比如一个元数学的命题说:“~(0=S0)”是个否定式的命题。也就是判断它的第一个符号是“~”。这是个用自然语言表达的元数学命题,首先把它转化成数论的命题,然后用PM里的公式来表达。

这个公式的哥德尔数是21385675117136179,符号“~”的哥德尔数是1,公式的第一个符号是“~”,对应着公式的哥德尔数是21次方的因子。记这个数为a,那么这个元数学命题对应的数论命题是:“a整除于2,且a不能整除于4。”前面说到,自然数aPM里表达是有aS的字符串“SSS…SSS0”,“a整除于2”等价于“存在着一个数x,有a=2·x”,可以表示为:x(SSS…SSS0=x·SS0),这个数论命题不难用PM里的公式表示为:

~(~x(SSS…SSS0=x·SS0)V(x)(SSS…SSS0=×·SSSS0))

这个直观的例子显示元数学上的命题,是怎样映射成PM里的公式。

现在考虑证明中要用到的一个重要元数学命题:“公式序列X证明了公式Z”。我们知道在形式证明的公式序列里的公式有个的顺序规则,与公理、已知的定理、变换规则及被证明公式的对应有关。所谓的“证明”就是有限次地从前面的公式递推出后面的公式,这叫做递归。将公式对应成数后,“证明”就是这些数间的递归函数。假定公式序列X的哥德尔数是x,公式Z的哥德尔数是z。从这些关系不难想象出自然数xz之间的算术关系,将这个算术关系记为“dem(x, z)”。

哥德尔在论文中用了极大的努力证明了这个dem(x,z)是数xz之间的“原始递归关系”,所以它可以形式地表示成一个PM的公式【2】,记为“Dem(x, z)”。我们已经将元数学的命题“X证明了Z”,映射成PM的公式Dem(x, z)。这完成了这一篇文章的目标。

学习计算机的读者可能疑惑,为什么要这么麻烦地编码?这质疑有道理。哥德尔证明这个定理时在1931年,那时候还没有计算机,哥德尔在编码、递归函数、可表达性等问题上都做了开创性的贡献。这里介绍哥德尔编码,是沿着哥德尔原来证明的轨迹,了解这个经常会被人们提及的内容。现代的计算机实践经验,已经在人们头脑里形成了新的直观,对计算机理论有更多了解的,更能落实到这些直观背后充分的理论根据。有了这些直观,理解这些就很容易了。PM里的公式和证明,可以用任何一种编码(比如说Unicode)变成01的字符串,也就是一个自然数了。这个自然数也可以通过解码得出原来的公式和证明。这就建立起一一映射。这时候同样可以通过递归函数理论,将上述的“证明”语句表达为PM里的公式Dem(x, z)。也可以想象写一个程序,解码自然数x得出一个公式序列来,然后验证这序列是可以递推出自然数z解码所得的公式,把这个程序用PM里形式语言写出来,便是个PM里的公式。

总之,我们可以把“X证明了Z”,映射成PM的公式Dem(x, z)。注意,表示式“Dem(x,z)”实际上不是PM里的式子,它只是一个方便的记号,联系了两个哥德尔数的变量x和z在一个公式里,我们用来代表PM里那个非常长的公式。

怎么在这个Dem(x, z)代表的公式里做到自我纠缠,这个技巧将在下一篇的核心证明里介绍。

(待续)

 

【参考资料】

1内格尔和纽曼《哥德尔证明》(中文版下载,谢谢徐晓)http://bbs.sciencenet.cn/home.php?mod=attachment&id=32962

2】数论中有不可数多的命题,而PM只能有可数个式子,所以并非所有的数论命题都能表达成PM里的公式。哥德尔证明了原始递归函数可以表达成PM里的公式。

 



https://m.sciencenet.cn/blog-826653-693825.html

上一篇:哥德尔定理的证明——2魔鬼的设计
下一篇:哥德尔定理的证明——4核心证明

21 李伟钢 管克英 彭思龙 刘全慧 鲍海飞 曹聪 王国强 徐大彬 陈冬生 褚昭明 吉宗祥 鲍得海 张忆文 徐晓 杨正瓴 刘钢 丁大勇 shengjianguo crossludo hkcpvli yunmu

该博文允许注册用户评论 请点击登录 评论 (24 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-22 06:35

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部