我目前的目标如下:
n' : nat
IHn' : forall m : nat, n' + n' = m + m -> n' = m
m' : nat
H1 : n' + n' = m' + m'
============================
S n' = S m'
现在,我想在apply H1
中IHn'
,以便引入以下假设:
n' = m'
我试过这个:
apply H1 with (m := m') in IHn'.
但是这给了我这个错误:
Error: No such bound variable m.
这是具有这些目标的完全可重复的程序:
Theorem my_theorem : forall n m,
n + n = m + m -> n = m.
Proof.
intros n. induction n as [| n'].
- simpl.
intros m H.
symmetry in H.
destruct m as [| m'].
+ reflexivity.
+ rewrite -> plus_Sn_m in H.
inversion H.
- simpl.
rewrite <- plus_n_Sm.
intros m.
intros H.
destruct m as [| m'].
+ simpl in H.
inversion H.
+ rewrite -> plus_Sn_m in H.
rewrite <- plus_n_Sm in H.
inversion H.
Abort.
答案 0 :(得分:3)
问题在于你的apply
倒退了。你需要写apply IHn' with (m := m') in H1.
注意,在这种情况下,省略with (m := m')
子句是安全的,因为Coq足够聪明,可以自己找出这些信息。