定理已证明
赖斯定理
命题陈述
对偏可计算函数的每个非平凡语义性质 ,集合 都是不可判定的。
为什么成立?
这一个定理立刻排除了诸如"这个程序是否计算零函数""这个程序是否计算全函数""这两个程序是否等价"等无数关于程序行为的自然问题的算法——无需为每个问题单独构造对角线论证,一击即中。
证明思路
不失一般性,假设处处未定义的函数 (由一个对任何输入都永不停机的程序所计算)不具有性质 ——否则改用补性质 论证,它可判定当且仅当 可判定。由于 非平凡,固定某个程序 ,其函数 具有性质 。
反证:假设 可由某算法 判定(给定一个程序索引, 停机并正确报告该程序的函数是否具有性质 )。我们把停机问题归约到 ,从而与定理1矛盾。
对任意一对 ,有效地构造(通过简单的文本操作——克莱尼的 s-m-n 定理)一个新程序 ,它对任意输入 :先模拟程序 在输入 上运行;一旦该模拟停机, 就接着模拟程序 在输入 上运行并输出其结果。
考察两种情形。若 在 上停机:对 在 上的模拟会结束,于是 在所有输入上的行为都与 完全一致,即 ——它具有性质 (因为 是语义的,只依赖于所计算的函数,而 具有 )。若 在 上不停机:对 在 上的模拟永不结束,于是 在任何输入 上都永远到不了模拟 的那一步;因此 就是处处未定义的函数 ,按假设它不具有性质 。
所以: 在 上停机 具有性质 回答"是"。由于 可计算,算法"由 计算出 ,再运行 "就能判定停机问题——与定理1矛盾。故不存在这样的 : 不可判定。
用到此定理的主题
分步证明
该定理暂无分步证明。
参考文献
- Wikipedia contributors (2024). Halting problem
- Wikipedia contributors (2024). Rice's theorem
- Wikipedia contributors (2024). Ackermann function