>哥德尔数与哥德尔编码(上)
接下来我们会讲到哥德尔不完备定理的证明。虽然这是二十世纪最重要的定理之一,但它的证明并不难,只需要从另一个角度(语言的角度!)来看待数学。
假设一数学系统符号集,其中每一个符号都代表数学论证中所要用到的符号,例如0,=,+,*,(,)x,y等。虽然数字是无限的,但这个符号集是有限的,因为其中含有一个符号s叫做“后继”,定义为对于数字n,ns=n+1。0s=1,0ss=2,用诸如此类的方式可以构建所有自然数。
这个数学符号集中符号构成的语言就是数学命题。例如语言“0=0s”的含义就是“提出一个命题,该命题为:0是等于1的”。自然,这个命题是假命题。
可判定性问题就是想要知道是否所有的命题都可以被证明是真命题或者假命题。而哥德尔接下来就要证明有些命题不能被证明成真命题或者假命题。
###假设这个涵盖所有论证所需的数学符号集里的每个符号都被给予了一个不一样的独特正整数编号。例如符号“=”的编号可以是5,符号“0”的编号可以是6,符号“s”的编号可以是7。编号到底是什么无所谓,只要不同的符号不一样即可。为了简便,我们定义一个函数g(x),输入符号x,输出该符号的哥德尔数。例如g(s)=7。
###给定一个数学命题,即数学符号集中符号e的排列组合l=e1e2e3...,其中en指第n位的符号 例如语言0=0s中e1为符号0,e2为符号=,e3为符号0,e4位符号s。
###有了函数g,我们可以为这个数学命题定义一个独特的哥德尔编码,定义给予编码的函数为G。G(l)=2^g(e1) * 3^g(e2) * 5^g(e3) * 7^g(e4) * ...。即,给定l,G每次按顺序从左向右依次拿取l的i个元素,并向结果乘第i个素数的g(ei)次方。
###例如,G(0=0s)=2^g(0) * 3^g(=) * 5^g(0) * 7^g(s)=2^6 * 3^5 * 5•6 * 7^7=200,120,949,000,000。通过这种方法,对于所有数学命题l,我们都能找到对应的独特哥德尔编码G(l)。用同样的方式,对于所有符号集,我们都可以设计这样的函数G,使得符号集中的每一个语言都可以有与该符号集中其他语言不同的哥德尔编码。
###我们也可以反过来从哥德尔编码倒推出其对应的语言。200,120,949,000,000除以2可以整除6次,结果为3,126,889,828,125,所以对应语言中第一位的哥德尔数是6,对应符号0。3,126,889,828,125除以3可以整除5次,结果是12,867,859,375,所以对于语言中第二位的哥德尔数是5,对应符号=...
###G是一个单射函数:对于所有语言,G都可以推导出自然数。如果一个语言符号集中有无限多个符号,那么这个语言的G函数是满射的(这也代表它是双射的),对于所有自然数,都有一个对应的语言l使得G(l)等于这个自然数,自然数和语言一一对应。
###如果你看不懂这一段,没有关系,你只要知道语言与数字本质相同。这是哥德尔给我们的启发。