“$E$ 是 c.e.:逐个计算 $t s$ 的值即可寻找一次变化。用参数化定理把 $x,s$ 写入这段搜索程序,得到一个停机实例,所以 $0'$ 能判定它。依次试 $s=0,1,2,\ldo…”
形式陈述
使对所有程序索引
符号
证明骨架是有效的程序模板构造。建立一个模板,它把常量
程序文本与常量都有有限有效编码,所以“把这些常量嵌入模板并输出新索引”是总可计算的语法变换。可接受编号保证生成代码可被统一解释,且与原程序在剩余输入上的行为一致。一般
在可接受编号的统一预言机版本中,同一模板也给出
解释器把查询转交同一个预言机,编译器只写入有限常量,不查询
直觉
定理处理的是程序代码,而不是先求出程序语义再重新编程。正因为代码变换总能完成,它才能成为自指、递归定理与索引集理论的可靠基础。
例子与边界
设索引
固定
或两份源码逐字符相同;结论只是运行行为外延相等。
定理不能用于判定任意程序语义。它能把参数写进代码,却不能告诉我们生成程序是否总停机、是否为空函数或是否与另一程序等价;这些非平凡语义问题仍受 Rice 定理限制。若编号只是任意集合论枚举,没有有效通用解释和编译性质,结论也可能失败。
推论与应用
把程序代码作为普通数据,再用本定理固化自应用所需的参数,可以证明Kleene 递归定理:任意总可计算代码变换都存在语义固定点。固定点满足程序行为相同,而非索引数值相等。
定理还支撑编译器专门化、解释器残留程序和通用模拟的形式分析。结合Rice 定理,它说明同一套有效编号既允许丰富的代码生成,又不提供语义判定捷径;“能构造程序”与“能决定程序做什么”必须严格区分。
记忆化流图专门化给出积极执行静态计算的具体算法:只有可达的标签—静态存储键有限时,逐键生成才保证结束。它可以把静态自环留下来,也可能因不断增长的静态计数而生成无穷多个版本。这与本定理的总可计算模板不矛盾:模板只把参数写入代码,并不要求在生成阶段完成所有可提前做的计算。
参考资料
-
Stephen C. Kleene, Introduction to Metamathematics, North-Holland, 1952, §§52–53, the parameter theorem.
-
Hartley Rogers Jr., Theory of Recursive Functions and Effective Computability, MIT Press, 1987, Chs. 1–5 and 11.
-
Nigel Cutland, Computability: An Introduction to Recursive Function Theory, Cambridge University Press, 1980, Ch. 3.
-
Andrew Marks, Computability Theory, 2024,Exercise 15.3,不依赖预言机的参数编译器。