我坚持一个定理,我认为这是不可能的。
Theorem double_negation : forall A : Prop, ~~A -> A.
你能证明它或解释为什么它是不可能的吗?
这是由于哥德尔的不完备性定理吗?
答案 0 :(得分:2)
双重否定消除是not provable in constructive logic,它是Coq的基础。为了证明这一点,我们很快得到stuck:
Theorem double_negation_elim : forall A : Prop, ~~A -> A.
Proof.
unfold not.
intros A H.
(* stuck because no way to reach A with H : (A -> False) -> False *)
Abort.
我们可以show如果可以证明双重否定消除是可证明的,那么排除中间的法则将成立,即(forall (A : Prop) , (~~A -> A)) -> forall A : Prop, A \/ ~A.
首先我们prove中间结果∼∼(A ∨ ∼A)
:
Lemma not_not_lem: forall A: Prop, ~ ~(A \/ ~A).
Proof.
intros A H.
unfold not in H.
apply H.
right.
intro a.
destruct H.
left.
apply a.
Qed.
因此
Theorem not_not_lem_implies_lem:
(forall (A : Prop) , (~~A -> A)) -> forall A : Prop, A \/ ~A.
Proof.
intros H A.
apply H.
apply not_not_lem.
Qed.
但这是一个矛盾,因为LEM不具备建设性的逻辑。