假设我有一个这样的策略(摘自HaysTac),该策略使用以下参数搜索专门化特定假设的论点:
Ltac find_specialize_in H :=
multimatch goal with
| [ v : _ |- _ ] => specialize (H v)
end.
但是,我想写一种策略来搜索n
参数以专门化策略。关键是它需要回溯。例如,如果我有以下假设:
y : T
H : forall (x : T), x = y -> P x
x1 : T
x2 : T
Heq : x1 = y
如果我写了do 2 (find_specialize_in H)
,它可能会选择x2
来实例化它,然后无法尝试找到第二个参数。因此,我需要我的repeat循环,以便能够回溯它选择用来专用于较早参数的参数。
是否可以这样做?我该如何创建一个战术循环,使其回溯先前选择的迭代方式?