如果目标状态是这样的:
a : Prop
b : Prop
H1 : a
H2 : b -> c
============================
c
然后我可以使用apply H2
策略将其转换为以下状态:
a : Prop
b : Prop
H1 : a
H2 : b -> c
============================
b
现在,我想做同样的事情但是假设:
a : Prop
b : Prop
H1 : a
H2 : b -> a
============================
b
我想引入一个新的假设(或简化现有的假设),以便我在前提下有一个新的H3 : b
。这可能吗?
我尝试了apply
的各种变体,但一切都导致了某种错误。提升上述状态的代码:
Lemma test : forall {a b : Prop},
a /\ (b -> a) -> b.
Proof.
intros a b.
intros [H1 H2].
Abort.
答案 0 :(得分:4)
这是不可能的,因为你的a
引理不成立。例如,将True
设为b
,将False
设为a
。前提(b -> a
和b
)都有,但Lemma test : forall a b : Prop, a /\ (a -> b) -> b.
Proof. intros [H1 H2]. apply H2 in H1. exact H1. Qed.
不成立。
但是,如果您稍微更改了结果的陈述,那么这将起作用:
{{1}}