我正在按照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接受我的新| \ _运算符?
答案 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).