我正试图证明一个关于道具的替代定理,而且我的失败是悲惨的。可以在coq中证明以下定理,如果没有,为什么不这样。
Theorem prop_subst:
forall (f : Prop -> Prop) (P Q : Prop),
(P <-> Q) -> ((f P) <-> (f Q)).
关键是逻辑上的证据是归纳的。就我所见,Prop没有归纳定义。如何在Coq中证明这样的定理?
答案 0 :(得分:7)
以下是答案:我所寻找的属性称为命题扩展性,意味着forall p q : Prop, (p <-> q) -> (p = q)
。相反,是微不足道的。这是Library Coq.Logic.ClassicalFacts
中定义的内容,以及来自经典(即非直觉主义)逻辑的其他事实。上面的定义称为prop_extensionality
,可以按如下方式使用:Axiom EquivThenEqual: prop_extensionality
。现在你可以应用EquivThenEqual
,用它来重写等等。感谢Kristopher Micinski指向扩展性。
答案 1 :(得分:4)
您要找的是“ extensionality :”
http://coq.inria.fr/V8.1/faq.html#htoc41
http://coq.inria.fr/stdlib/Coq.Logic.FunctionalExtensionality.html
http://en.wikipedia.org/wiki/Extensionality
编辑:
您可以接受谓词扩展性,如Coq常见问题解答中所述。
答案 2 :(得分:2)
这是命题的延伸性。
Lemma blah: forall (P Q: Prop), (forall (f:Prop -> Prop), f Q -> f P) -> P = Q.
intros P Q H.
apply (H (fun x => x = Q)).
reflexivity.
Qed.
Section S.
Hypothesis prop_subst:
forall (f : Prop -> Prop) (P Q : Prop),
(P <-> Q) -> ((f P) <-> (f Q)).
Lemma prop_subst_is_ext: forall P Q, (P <-> Q) -> P = Q.
intros.
apply blah.
intro f.
destruct (prop_subst f P Q); assumption.
Qed.
End S.
Check prop_subst_is_ext.