ライスの定理の証明
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/06/29 18:36 UTC 版)
ライスの定理を停止性問題の決定不能性定理に帰着する。証明は背理法による。 ライスの定理が成り立たなかったとすると、ある非自明な性質Fが存在し、fAがFを満たすかどうかを決定できるプログラムMが存在する。すなわち、fAがFを満たすときM(A)=YESで、そうでないときM(A)=NOである。 Fは関数fAの性質であってA自身の性質では無かった。したがってfA=fBを満たす任意のプログラムA、Bに対し、fAがFを満たす必要十分条件はfBがFを満たす事である。よってMの定義より、次の命題が成り立つ。 fA=fBならM(A)=M(B)。 無限ループを利用するなどして停止しないプログラム意図的に作るのは簡単である。そこでUを、いかなる入力に対しても停止しないプログラムとする。すると明らかに、fUは恒等的に⊥を出力する。 F'を、「Fを満たさない」という性質とする。必要ならFをF'と取り換える事で、M(U)=NOと仮定してよい。 Fは非自明な性質なので、Fを満たすfVが存在する。Mの性質より、M(V)=YESである。 Aを任意のプログラムとしxを任意のデータとするとき、TA,xを以下のようなプログラムとする。0. 入力yを受け取る。1. s=A(x)を計算する(が以後は使わない)。2. t=V(y)を計算する。3. tを出力する。 さらにHを、プログラムA(を表す数字)とxとを入力されると、M(TA,x)を実行するアルゴリズムとする。 H(A,x)は停止性問題を解く。というのも、前述した命題より、 A(x)が停止すれば、TA,xはステップ1を抜けて先に進み、V(y)を実行する。よって f T A , x = f V {\displaystyle f_{T_{A,x}}=f_{V}} 。したがってH(A,x)=M(TA,x)=M(V)=YES。 A(x)が停止しなければ、TA,xはステップ1が停止しないので、 f T A , x {\displaystyle f_{T_{A,x}}} は恒等的に⊥。よって f T A , x = f U {\displaystyle f_{T_{A,x}}=f_{U}} 。したがってH(A,x)=M(TA,x)=M(U)=NO。
※この「ライスの定理の証明」の解説は、「ライスの定理」の解説の一部です。
「ライスの定理の証明」を含む「ライスの定理」の記事については、「ライスの定理」の概要を参照ください。
- ライスの定理の証明のページへのリンク