Skip to content

定义Definition

程序编号与可接受编号

施工中 · 内容逐步修订

Program indexing · Acceptable numbering · Gödel numbering

对部分可计算函数进行有效枚举,并要求编号支持通用解释与有效参数编译。

形式陈述 ​

固定一元部分可计算函数的有效枚举

φ0,φ1,φ2,….

自然数 e 称程序或算法的索引,φe 是该索引所计算的偏函数。编号首先必须是有效的:存在一个通用部分可计算函数

U(e,x)≃φe(x),

其中 ≃ 表示两边同时无定义或同时有定义且值相等。它还应支持有效参数化:给定多参数程序的索引及一部分固定输入,可以由总可计算函数生成剩余参数程序的索引。满足通用解释与这种编译性质、并能与其他合理编程系统有效互译的编号称可接受编号。

把二元输入用固定可计算配对函数编码,参数化可以写得更明确:存在总可计算函数 s(e,a),使

φs(e,a)(x)≃φe(⟨a,x⟩).

量词要求同一个 s 适用于所有 e,a,x;左边的新程序可以发散,但生成其编号的 s 本身必须终止。通用枚举还须覆盖每个部分可计算函数,单有一个能运行某些程序的解释器并不足够。

“可接受”不是要求编号唯一。不同可接受系统可以给同一程序不同整数,但存在总可计算翻译器保持所计算的偏函数;这使关于程序索引的基本定理不依赖某套偶然语法。

相对计算使用一个一致的伴随版本:先固定全部有限预言机程序的有效语法编号,再给同一代码接上任意 A⊆N,记行为为 ΦeA。通用解释器模拟外层指令,并把查询转交同一个 A;参数编译器只改写有限代码,因而存在不依赖 A 的总可计算 s,同时满足

Φs(e,a)A(x)≃ΦeA(⟨a,x⟩)对所有 A,e,a,x.

这里要求对所有预言机使用同一套代码和编译器。分别为每个 A 任意挑选一套枚举,并不能保证这种一致性;普通编号对应不执行查询的程序。

直觉

通用图灵机说明程序能够作为数据交给一个固定解释器。可接受编号再要求这套代码系统不仅能解释,还能有效地把参数写进程序,像编译器把“程序模板 + 常量”变成新程序。自指和递归定理依赖的是这种可操作的代码结构,而不是把源码任意贴上整数标签。

索引描述语法,φe 描述行为。许多不同程序会计算同一个偏函数;程序优化、无用指令和不同实现都可改变索引而保持语义。因此比较索引数值与比较程序行为,是两个不同的问题。

上轨由通用函数解释代码 e;下轨把参数 a0 固化成新索引 q,并保持程序行为。
例子与边界

把每台图灵机的有限转移表编码为自然数,并令 φe(x) 模拟编号为 e 的机器在输入 x 上的输出,就得到程序枚举。合法编码由通用机解释;无效编码可统一约定为处处发散程序。若有一个双参数程序 P(a,x),参数化性质允许从 P 的索引与常量 a0 机械生成新索引 q,满足

φq(x)≃P(a0,x).

例如 P(a,x) 先等待编号 a 的程序在空输入上停机,再输出 x+1。即使这个等待永远不结束,编译器也能立即造出“内嵌常量 a0,执行上述等待”的代码 q。编译的任务是产生有限描述,不是先算出描述的行为;混淆这两项任务会把停机问题错误地塞进参数定理。

边界在于任意双射或人为重排未必可接受。若编号把停机信息偷偷编码进索引位置,或者没有可计算的通用解释器,它即使集合论上枚举了所有偏函数,也不能支持程序变换定理。

映射 e↦φe 不可能被当作可判定语义表。不同索引是否计算同一函数一般不可判定;也不能要求每个偏函数恰有一个索引,否则许多有效编程与固定点构造会失去所需的冗余。可接受性保证的是有效表达能力,不是程序等价判定器。

推论与应用

有效参数化被$s$-$m$-$n$ 定理精确化:它把部分实参固化为新程序代码,同时保持代码变换本身总可计算。再结合对角式自应用,Kleene 递归定理为每个总可计算代码变换构造语义固定点;Rice 定理则说明非平凡的部分可计算函数性质不可判定。

可接受编号统一枚举的是部分可计算函数,也就是允许发散的程序行为。不能把它改成只枚举全部总可计算函数的总解释器:若总可计算的 U(e,x) 恰好覆盖这些函数,则 g(n)=U(n,n)+1 也是总可计算函数;假如它是第 k 行,便有 U(k,k)=U(k,k)+1,矛盾。

这套编号支持通用模拟、解释器和编译器的数学模型。递归定理中的固定点针对行为:对每个总可计算代码变换 f,都有某个 e 满足 φe=φf(e),即使整数 e 与 f(e) 不同。

参考资料
  • Hartley Rogers Jr., Theory of Recursive Functions and Effective Computability, MIT Press, 1987, Chs. 1–5 and 11, acceptable programming systems and parameterization.

  • Nigel Cutland, Computability: An Introduction to Recursive Function Theory, Cambridge University Press, 1980, Chs. 2–3, numberings and the parameter theorem.

  • Stephen C. Kleene, Introduction to Metamathematics, North-Holland, 1952, §§44–53, enumeration and recursion theorems.

  • Andrew Marks, Computability Theory, 2024,Definition 15.2,统一预言机程序编号。

关系图谱20 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系