我正在做一个Coq证明。我有P -> Q
作为假设,(P -> Q) -> (~Q -> ~P)
作为引理。如何将假设转换为~Q -> ~P
?
当我尝试apply
时,我只会产生新的子目标,这没有帮助。
换句话说,我希望从:
开始P : Prop
Q : Prop
H : P -> Q
并以
结束P : Prop
Q : Prop
H : ~Q -> ~P
给出上面的引理 - 即(P -> Q) -> (~Q -> ~P)
。
答案 0 :(得分:1)
如果我想将H
转换为,我会选择@ ejgallego的答案,因为SSReflect现在(从Coq 8.7.0开始)是标准Coq的一部分,但是这里是另一种选择:
Ltac dumb_apply_in f H := generalize (f H); clear H; intros H.
Tactic Notation "dumb" "apply" constr(f) "in" hyp(H) := dumb_apply_in f H.
一个简单的测试:
Variable (P Q : Prop).
Axiom u : (P -> Q) -> (~Q -> ~P).
Lemma test (H : P -> Q) : False.
Proof. dumb apply u in H. Abort.