停止性問題の証明のメモ
関数HALT(a,x)の計算は不可能。
前提
- 関数HALT(a,x)
- コードaとそれに対する入力xを引数に取る
- 有限時間で停止する場合はHALT(a,x)→1
- それ以外0
証明
- 証明は背理法で行う
- HALTを計算するチューリングマシン MHALTを定義する
MHALTが矛盾した計算不可能関数UCを計算するチューリングマシンMUCであることを示す
チューリングマシンMUCについて
- 入力aについてMHALT(a,a)を計算する。
- MHALTが0のとき(停止しない)、MUC=1
- MHALTが1のとき(停止する)、aが表現する万能チューリングマシンMでM(a)を計算する
- M(a)=0のときMHALTは1を出力する
- それいがい:0を出力する
- M(a)=0のときMHALTは1を出力する
- 入力aについてMHALT(a,a)を計算する。
上記のMUC(a)は以下の場合のみUC(a)を有限ステップで計算が可能である
- MHALT(a,x)が有限ステップで計算できるとき
- UCは計算できないので矛盾(HALTも計算できない)
- MHALT(a,x)が有限ステップで計算できるとき
ちょっと結論が怪しい?描きなおす予定