在交互式证明中,我试图将表达式提取到一个新变量中,同时将相等性作为一个新的证明术语。
remember
策略似乎是为此目的而设计的。由于我喜欢为引入的名称指定明确的名称,因此我更喜欢使用此变体:
- 记住 term 为 ident eqn: ident
醇>这表现为
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。
答案 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).
这个显式定义似乎掩盖了内置变体。删除此定义会使其他人再次可见。