Coq“符号的未知解释”错误

时间:2015-12-24 03:50:37

标签: coq

我正在按照https://www.cis.upenn.edu/~bcpierce/sf/current/Imp.html中的说明操作,并尝试定义新的符号| \。 (而不是||,它在网页中使用但似乎被我的coq解释为OR运算符)

Reserved Notation "e |\ n" (at level 50, left associativity).

然而,coq仍然认为| \是一个未定义的运算符。

Inductive aevalR : aexp -> nat -> Prop :=
  | E_ANum : forall n : nat, (ANum n) |\ n.
  

错误:符号“_ | \ _”的解释未知。

我的coq版本是8.4pl6(2015年11月)。如何让coq接受我的新| \ _运算符?

1 个答案:

答案 0 :(得分:2)

您需要在关系定义中附加where子句,如软件基础中的示例所示:

Reserved Notation "e |\ n" (at level 50, left associativity).

Inductive aexp := ANum : nat -> aexp.

Inductive aevalR : aexp -> nat -> Prop :=
  | E_ANum : forall n : nat, (ANum n) |\ n

where "x |\ y" := (aevalR x y).