为什么记忆策略不像记录的那样有效?

时间:2015-05-25 03:35:33

标签: coq

在交互式证明中,我试图将表达式提取到一个新变量中,同时将相等性作为一个新的证明术语。

remember策略似乎是为此目的而设计的。由于我喜欢为引入的名称指定明确的名称,因此我更喜欢使用此变体:

  
      
  1. 记住 term ident eqn: ident
  2.         

    这表现为remember term as ident,除了还给出了生成的相等的名称。

然而,当我尝试它(或其他记住变体)时,我只会收到此错误:

> remember (prefix ++ suffix) as the_environment eqn:H_prefix_suffix.
>                                                ^^^
Syntax error: 'in' '|-' expected after [prim:ident] (in [tactic:simple_tactic]).

注意错误消息,实际上似乎有效的唯一变体是

remember (prefix ++ suffix) as the_environment in |-.

...遗憾的是,我不允许我选择引入的平等证明的名称。

为什么记录的remember变体似乎不起作用?

我正在使用coq 8.4pl6。

1 个答案:

答案 0 :(得分:2)

我用脚射击自己。

我之前曾用这种语法宣布了一种策略:

Tactic Notation "remember" constr(c) "as" ident(x) "in" "|-" :=
  let x := fresh x in
  let H := fresh "Heq" x in
  (set (x := c); assert (H : x = c) by reflexivity; clearbody x).

这个显式定义似乎掩盖了内置变体。删除此定义会使其他人再次可见。