“Rice 定理把大量逐题归约压缩成统一原则,用于证明程序等价、语言性质和部分函数性质不可判定。可接受编号说明索引如何指向程序行为,$s$ $m$ $n$ 定理提供有效代码参数化,Kleene…”
形式陈述 ​
使对所有程序索引
符号
证明骨架是有效的程序模板构造。建立一个模板,它把常量
程序文本与常量都有有限有效编码,所以“把这些常量嵌入模板并输出新索引”是总可计算的语法变换。可接受编号保证生成代码可被统一解释,且与原程序在剩余输入上的行为一致。一般
直觉 ​
定理处理的是程序代码,而不是先求出程序语义再重新编程。正因为代码变换总能完成,它才能成为自指、递归定理与索引集理论的可靠基础。
例子与边界 ​
设索引
固定
或两份源码逐字符相同;结论只是运行行为外延相等。
定理不能用于判定任意程序语义。它能把参数写进代码,却不能告诉我们生成程序是否总停机、是否为空函数或是否与另一程序等价;这些非平凡语义问题仍受 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.