[英]How can I prove excluded middle with the given hypothesis (forall P Q : Prop, (P -> Q) -> (~P \/ Q))?
I am currently confused about how to prove the following theorem:我目前对如何证明以下定理感到困惑:
Theorem excluded_middle2 :
(forall P Q : Prop, (P -> Q) -> (~P \/ Q)) -> (forall P, P \/ ~P).
I am stuck here:我被困在这里:
Theorem excluded_middle2 :
(forall P Q : Prop, (P -> Q) -> (~P \/ Q)) -> (forall P, P \/ ~P).
Proof.
intros.
evar (Q : Prop).
specialize H with (P : Prop) (Q : Prop).
I know that it's impossible to simply prove the law of excluded middle in coq, but I really want to know with this given theorem is it possible to prove the law of excluded middle?我知道不可能简单地证明 coq 中的排中律,但我真的很想知道用这个给定的定理是否可以证明排中律?
Yes, you can.是的你可以。 One way, using ssreflect, is as follows (there are probably shorter ways):
一种使用 ssreflect 的方法如下(可能有更短的方法):
Lemma orC P Q : P \/ Q -> Q \/ P.
Proof. by case; [right | left]. Qed.
Theorem excluded_middle2 :
(forall P Q : Prop, (P -> Q) -> (~ P \/ Q)) -> (forall P, P \/ ~ P).
Proof.
move=> orasimply P.
have pp : P -> P by [].
move: (orasimply P P pp).
exact: orC.
Qed.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.