在安息或安定后套用策略

时间:2019-01-21 21:19:53

标签: coq coq-tactic

我想采取类似的策略

let x := fresh in
epose (x := _);
forward_call x.

forward_call是处理VST中函数调用的策略。 我发现是否做epose _; forward_call x(如果x是epose的名字),它也会进入有限循环。但是如果我做epose _. forward_call x.,它就可以工作。如果我使用eset而不是epose,也会发生同样的情况。我不明白为什么当第一个战术只产生一个目标时,为什么使用分号来连接两个战术与使用两个用点分隔的命令不同。你知道这两者之间有什么区别吗?

我发现的一件事是epose (_); show_hyps.给出了y := ?y : ?T,而epose (_). show_hyps.给出了y := ?Goal0 : ?Goal。也许这表明有所不同。

我没有找到解决此问题的简单示例。我尝试了以下简单情况,使用点号和分号没有区别。

Require Import Coq.omega.Omega.
Require Import Coq.Program.Tactics.

Open Scope Z_scope.

Goal exists x, x = 2.
epose (y := _). refine (ex_intro _ y _); subst y.
reflexivity.

0 个答案:

没有答案