![](/img/trans.png)
[英]How or is that possible to prove or falsify `forall (P Q : Prop), (P -> Q) -> (Q -> P) -> P = Q.` in Coq?
[英]how do I prove forall P Q : Prop, ((((P -> Q) -> P) -> P) -> Q) ->Q. in coq?
我对 coq 很陌生,所以如果你只说介绍的话。 我不知道要介绍什么。 因此,像 (Ex. intros p q.) 这样具体会很有帮助。
幸运的是,你的目标可以被auto
策略自动解决。 如果您使用它的变体info_auto
,Coq 会告诉您哪些步骤导致解决方案。
Goal forall P Q : Prop, ((((P -> Q) -> P) -> P) -> Q) -> Q.
info_auto.
然后,你可以自己replay一下证明,在intros
中加上注释和显式变量名,你就会明白auto
使用的策略(结论是forall
或implication,或atomic proposition时怎么办) .
Restart.
intros P Q H.
apply H (* no-choice ! *).
intro H0.
apply H0. (* no other possibility ! *)
intro p.
apply H. (* no alternative ! *)
intros _.
assumption.
Qed.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.