咨询《Gödel's Proof》中Gödel numbering对0、s0等实际数字的表示及primitive recursive真命题的编码方法
咨询《Gödel's Proof》中Gödel numbering对0、s0等实际数字的表示及primitive recursive真命题的编码方法
嘿,我刚解决了自己之前的一个困惑,正好能帮你理清楚这个问题!
首先先说说你提到的数字表示的核心点——我之前也犯了同样的错:没认真看Nagel和Newman书里第70页的符号编码表!现在搞清楚了:
- 后继符号
s的哥德尔数是7 - 常数
0的哥德尔数是6
那像ss0这类数字项的编码就很清晰了:哥德尔编号是把符号序列转换成素数幂的乘积,每个符号对应一个素数的指数(第1个符号用第1个素数2,第2个用3,第3个用5,以此类推)。所以:
- 数字
0的哥德尔数就是6(单个符号的情况,直接用它的编码就行,也可以看成2^6,本质逻辑一致) - 数字
s0(对应自然数1)是符号序列s+0,编码就是2^7 × 3^6 - 数字
ss0(对应自然数2)是符号序列s+s+0,编码就是2^7 × 3^7 × 5^6 - 以此类推,k个
s加0的数字项,编码就是前k+1个素数的幂乘积:前k个素数的指数都是7(对应s),最后一个素数的指数是6(对应0)
接下来聊聊primitive recursive真命题的编码:
Primitive recursive命题是基于基础递归函数(后继、零函数、投影函数)通过复合和递归定义的真命题,它们的编码逻辑和数字项类似,就是先把整个命题拆解成系统里的基础符号,然后给每个符号匹配对应的哥德尔数,再用素数幂乘积的方式生成唯一的哥德尔数。
举个简单的真命题例子:0 = 0,假设等号=的哥德尔数是5(书里的表格里有明确的基础符号编码),那这个命题的符号序列是0、=、0,对应的哥德尔数就是 2^6 × 3^5 × 5^6。再比如命题s0 = s0,编码就是 2^7 × 3^6 × 5^5 × 7^7 × 11^6——必须用连续的素数,不能跳,这样才能保证每个符号序列对应唯一的哥德尔数,反过来也能唯一解码。
其实核心逻辑就是:把系统里的每一个符号、符号序列(不管是数字项还是完整命题)都映射成一个唯一的自然数,用素数分解的唯一性来保证编码和解码的一一对应,这也是哥德尔编号能把形式系统里的命题转换成自然数的关键所在。
备注:内容来源于stack exchange,提问作者Devery Sheridan
相关产品推荐
相关产品推荐

