Coq 如何在假设中重命名存在量化变量?

Coq 如何在假设中重命名存在量化变量?,coq,coq-tactic,Coq,Coq Tactic,有没有一种简单的方法来重命名假设中的存在变量? 有时变量名令人困惑,因为在不相关的假设中重复使用相同的名称 例如,我想将H1:exists p:nat,n0=p*2更改为H1:exists pminus1:nat,n0=pminus1*2以下是一段代码: match goal with an_h : @ex _ (?f) |- _ => let new_f := eval lazy beta in (fun pminus_one => f pminus_one) in a

有没有一种简单的方法来重命名假设中的存在变量? 有时变量名令人困惑,因为在不相关的假设中重复使用相同的名称


例如,我想将
H1:exists p:nat,n0=p*2
更改为
H1:exists pminus1:nat,n0=pminus1*2

以下是一段代码:

match goal with
  an_h : @ex _ (?f) |- _ =>
  let new_f := eval lazy beta in (fun pminus_one => f pminus_one) in
  assert (my_h : @ex _ new_f) by exact an_h; clear an_h
end.

下面是一段代码:

match goal with
  an_h : @ex _ (?f) |- _ =>
  let new_f := eval lazy beta in (fun pminus_one => f pminus_one) in
  assert (my_h : @ex _ new_f) by exact an_h; clear an_h
end.