それは本当にただ否定声明だ - あなたは正確に右の停止問題は「背理法」の第二種の一例であることです。
decides_halt(M)
マシンM
がその入力が停止するマシンであるかどうかを判断する述語であると仮定します(M
つまり、一部のマシンm
と入力に対してi
、入力でm
停止するかどうかを判断するプログラムですi
)。
それを証明する方法について少し忘れて、停止の問題は停止の問題を決定するマシンがないという声明です。私たちは、Coqのようにこれを述べるかもしれない(exists M, decides_halt M) -> False
、または多分私達は、任意のマシンが停止問題を解決しないと言うことを好みますforall M, decides_halt M -> False
。公理がなければ、これら2つの形式化はCoqで同等であることがわかります。(私はあなたがそれがどのように機能するかを見ることができるように証明を綴りましたfirstorder
が、すべてを行います!)
Parameter machine:Type.
Parameter decides_halt : machine -> Prop.
(* Here are two ways to phrase the halting problem: *)
Definition halting_problem : Prop :=
(exists M, decides_halt M) -> False.
Definition halting_problem' : Prop :=
forall M, decides_halt M -> False.
Theorem statements_equivalent :
halting_problem <-> halting_problem'.
Proof.
unfold halting_problem, halting_problem'; split; intros.
- exact (H (ex_intro decides_halt M H0)).
- destruct H0.
exact (H x H0).
Qed.
私は正式マシン、計算可能、および停止はおそらく合理的に挑戦ですが、どちらかのステートメントは、対角化引数として証明するにはあまりにも難しいことではないと思います。単純例えば、それは(参照カントールの対角化定理を証明するためにあまりにも難しいことではありませんhttps://github.com/bmsherman/finite/blob/master/Iso.v#L277-L291をその証明のためにnat -> nat
とnat
同型ではありません)。
上記の対角化は、あなたが間に同型の矛盾を導出については行くかもしれない方法の例与えnat -> nat
とをnat
。自己完結型の例としてインライン化されたその証明の本質は次のとおりです。
Record bijection A B :=
{ to : A -> B
; from : B -> A
; to_from : forall b, to (from b) = b
; from_to : forall a, from (to a) = a
}.
Theorem cantor :
bijection nat (nat -> nat) ->
False.
Proof.
destruct 1 as [seq index ? ?].
(* define a function which differs from the nth sequence at the nth index *)
pose (f := fun n => S (seq n n)).
(* prove f differs from every sequence *)
assert (forall n, f <> seq n). {
unfold not; intros.
assert (f n = seq n n) by congruence.
subst f; cbn in H0.
eapply n_Sn; eauto.
}
rewrite <- (to_from0 f) in H.
apply (H (index f)).
reflexivity.
Qed.
詳細を見なくても、この証明は全単射の単なる存在を取り、不可能であることを実証していることを声明から見ることができます。まず、全単射の両側に名前seq
とを付けindex
ます。重要なのは、特別なシーケンスf := fun n => S (seq n n)
とそのインデックスでの全単射の動作index f
が矛盾していることです。停止問題の証明は同様に矛盾を導き出し、慎重に選択されたマシン(特に実際に想定されるマシンに依存するマシン)で停止問題を解決するマシンについての仮説を具体化します。