XXX"绑定到不表示引用的符号"在Coq展开期间?

时间:2015-12-13 14:23:15

标签: coq

我正在研究一个给定here的例子:

Notation step_normal_form := (normal_form step).
Definition stuck (t:tm) : Prop :=
  step_normal_form t /\ ~ value t.

Example some_term_is_stuck :
  exists t, stuck t.

我在步骤1(问题8.4pl6)中定义unfold时遇到问题step_normal_form。我可以在CoqIDE中Check其内容:

normal_form
     : relation ?23 -> ?23 -> Prop
value
 : tm -> Prop

但是当我展开step_normal_form时:

Example some_term_is_stuck :
  exists t, stuck t.
Proof.
  unfold stuck. unfold step_normal_form.

我收到错误:

Error: step_normal_form is bound to a notation that does not denote a reference.

有谁知道为什么会发生这种情况以及如何解决?

顺便说一句,我试图通过手动执行unfold并重新定义来解决这个问题:

Definition stuck' (t:tm) : Prop :=
  normal_form step t /\ ~ value t.

并改为使用stuck'。但Coq似乎会自动将stuck'的内容折叠为step_normal_form,然后拒绝unfold,同样会出错。

1 个答案:

答案 0 :(得分:1)

由于step_normal_form只是(normal_form step)的注释,您可以unfold normal_form.

有时候,符号和漂亮的印刷隐藏了真正存在的东西。使用Set Printing All.make Coq print the term in clear