“定理还支撑编译器专门化、解释器残留程序和通用模拟的形式分析。结合Rice 定理,它说明同一套有效编号既允许丰富的代码生成,又不提供语义判定捷径;“能构造程序”与“能决定程序做什么”必须严格区…”
形式陈述 ​
设
不可判定。等价版本可对部分可计算函数的非平凡外延性质陈述。证明把接受问题编码进“是否获得该语义性质”。
直觉
Rice 定理把大量“这个程序算出的函数是否具有性质
例子与边界
“101”都是非平凡语义性质,因此属于 Rice 定理范围并且不可判定。相反,“程序源码长度是否小于
定理不意味着所有语义问题都不可处理:在有限状态机、总函数语言或受限类型系统中,相应性质可能可判定。它也不直接覆盖运行时间恰为多少步这类依赖具体实现的性质;应用前必须先确认性质对计算等价程序保持不变。
推论与应用
Rice 定理把大量逐题归约压缩成统一原则,用于证明程序等价、语言性质和部分函数性质不可判定。可接受编号说明索引如何指向程序行为,$s$-$m$-$n$ 定理提供有效代码参数化,Kleene 递归定理则可构造会引用自身索引的语义固定点;映射归约与停机问题构成另一条标准证明骨架。实际静态分析必须限制语言,或在可靠性与完备性之间取舍。
参考资料
- Michael Sipser, Introduction to the Theory of Computation, 3rd ed., Cengage, 2013,Ch. 5, Rice theorem and semantic properties of recognizable languages。
- Hartley Rogers Jr., Theory of Recursive Functions and Effective Computability, MIT Press, 1987,Chs. 11–12, index sets and Rice theorem。