我有以下定理要证明:
Goal (exists x, ~P x) <-> ~(forall x, P x).
分手后
unfold not. split.
第一个含义很容易,基本上我们必须使用从存在量词中的forall引入的x
intros. destruct H. apply H. apply (H0 x).
但另一方面我不能这样做,我认为应该有一个我找不到的想法。有什么建议吗?
答案 0 :(得分:2)
嗯,这个真的被卡住了很多理由:我相信它在直觉主义逻辑中是不可证明的。
正如你所想的那样,问题在于,要通过后向推理来取得进步,你需要立即提供证人,并且通过前瞻性推理取得进展,你需要得到一个荒谬的假设。所以这个目标被卡住了。
问题在于,对通用量词的否定并没有给你一个存在的证据来证明否定的财产。
一旦引入经典公理,有很多方法可以证明这一点。这是一个笨拙的中间法律:
Parameter T : Type.
Parameter P : T -> Prop.
Axiom EM : forall (A : Prop), A \/ ~ A.
Goal (exists x, ~P x) <-> ~(forall x, P x).
Proof.
split; intro H.
destruct H as [x H]. intro A. apply H. easy.
destruct (EM (exists x, ~ P x)) as [?|NE].
easy.
elim H. intro x. destruct (EM (P x)) as [Px|NPx].
easy.
elim NE. exists x. easy.
Qed.