MathLabs
定理証明済み

ライスの定理

内容

部分計算可能関数のすべての非自明な意味論的性質 PP について、集合 {e:φe has property P}\{e : \varphi_e \text{ has property } P\} は決定不可能である。

なぜ正しいのか?

この一つの定理は、「このプログラムはゼロ関数を計算するか」「このプログラムは全域関数を計算するか」「これら2つのプログラムは等価か」といった、プログラムの振る舞いに関する無数の自然な問いに対するアルゴリズムを、それぞれ別々の対角線論法なしに、一挙に排除する。

証明の概略

一般性を失うことなく、いかなる入力に対しても決して停止しないプログラムが計算する至る所未定義の関数 ∅\emptyset が性質 PP を持たないと仮定する——そうでなければ、PP が決定可能であることとちょうど同値な補性質 ¬P\lnot P で議論する。PP は非自明なので、その関数 φe0\varphi_{e_0} が性質 PP を持つプログラム e0e_0 を一つ固定する。

背理法で、PP がある判定アルゴリズム DD によって決定可能であると仮定する(プログラム索引が与えられると、DD は停止し、そのプログラムの関数が性質 PP を持つかどうかを正しく報告する)。PP に停止問題を還元し、定理1と矛盾させる。

任意の組 (e,x)(e,x) に対し、実効的に(単純な文字列操作——クリーネの s-m-n 定理により)新しいプログラム e′e' を構成する。e′e' は任意の入力 yy について:まずプログラム ee を入力 xx で実行するシミュレーションを行い、そのシミュレーションが停止したら、次にプログラム e0e_0 を入力 yy でシミュレーションしてその出力を出力する。

2つの場合を調べる。ee が xx で停止する場合:ee を xx で実行するシミュレーションは終了するので、e′e' はその後すべての入力で e0e_0 とまったく同じように振る舞う、すなわち φe′=φe0\varphi_{e'}=\varphi_{e_0}——これは性質 PP を持つ(PP は意味論的なので計算される関数のみに依存し、φe0\varphi_{e_0} は PP を持つ)。ee が xx で停止しない場合:ee を xx で実行するシミュレーションは決して終わらないので、e′e' はいかなる入力 yy についても e0e_0 のシミュレーション段階に決して到達しない。したがって φe′\varphi_{e'} は至る所未定義の関数 ∅\emptyset であり、仮定によりこれは性質 PP を持たない。

よって:ee が xx で停止する   ⟺  \iff φe′\varphi_{e'} が性質 PP を持つ   ⟺  \iff D(e′)D(e') が「はい」と答える。(e,x)↦e′(e,x)\mapsto e' は計算可能なので、「(e,x)(e,x) から e′e' を計算し、D(e′)D(e') を実行する」というアルゴリズムは停止問題を決定してしまう——定理1と矛盾する。したがってそのような DD は存在しない:PP は決定不可能である。■\blacksquare

この定理を使うトピック

ステップごとの証明

この定理のステップごとの証明はまだありません。

参考文献

  1. Wikipedia contributors (2024). Halting problem
  2. Wikipedia contributors (2024). Rice's theorem
  3. Wikipedia contributors (2024). Ackermann function