Coq:从目标两侧移除构造函数

Coq:从目标两侧移除构造函数,coq,coq-tactic,Coq,Coq Tactic,考虑以下部分证据: Theorem test : forall (n m : nat), n = m -> S n = S m. Proof. intros n m H. 执行到这一点,我会得到以下结果: 1 subgoal n, m : nat H : n = m ______________________________________(1/1) S n = S m 我想从目标中删除SS,获得目标n=m。有一种策略可以做到这一点吗?你在寻找f_equal策略。你在寻找f_

考虑以下部分证据:

Theorem test : forall (n m : nat),
  n = m -> S n = S m.
Proof.
  intros n m H.
执行到这一点,我会得到以下结果:

1 subgoal
n, m : nat
H : n = m
______________________________________(1/1)
S n = S m

我想从目标中删除
S
S,获得目标
n=m
。有一种策略可以做到这一点吗?

你在寻找
f_equal
策略。

你在寻找
f_equal
策略。

当前的问题似乎是问题和的重复。最终你可能会发现有趣的是,这本质上只是一个
匹配
语句,但是一种高级形式,它使用
return
注释让Coq的类型系统将类型
sn=sn
转换为
sn=sm
。尝试使用eq\u refl=>eq\u refl end
apply(匹配H in(=n2)return(S\us n2))。
当前问题似乎与问题和重复。最后,您可能会发现有趣的是,这本质上只是一个
match
语句,但是一种高级形式,它使用
return
注释让Coq的类型系统将类型
sn=sn
转换为
sn=sm
。尝试
apply(将(u=n2)返回中的H与eq\u refl=>eq\u refl end匹配).
如果我们想移除假设两侧的构造函数呢?那将是
注入
您正在寻找的,如果我们想移除假设两侧的构造函数呢?那将是
注入
您正在寻找的