정지 문제가 "모순으로 증명되는"두 번째 종류의 예라는 것은 정확히 맞습니다. 이것은 실제로 부정적인 진술 일뿐입니다.
decides_halt(M)기계 M가 입력을 정지시키는 기계인지 여부를 판별 하는 술어를 가정하십시오 (즉, M일부 기계 m및 입력의 i경우 m입력 정지 여부를 결정 하는 프로그램 i).
그것을 증명하는 방법에 대해 잠시 잊어 버린 정지 문제는 정지 문제를 결정하는 기계가 없다는 진술입니다. 우리는 이것을 Coq에서로 (exists M, decides_halt M) -> False언급하거나 주어진 기계가 정지 문제를 해결하지 못한다고 말할 수도 있습니다 forall M, decides_halt M -> False. 공리가 없으면이 두 공식화는 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)와 그 색인 에서 bijection의 행동 index f이 모순된다는 것입니다. 정지 문제의 증거는 비슷한 방식으로 모순을 유도하여 엄선 된 기계 (특히 실제 가정 된 기계에 의존하는 기계)로 정지 문제를 해결하는 기계에 대한 가설을 구체화합니다.