Syntax 在记录中使用符号

Syntax 在记录中使用符号,syntax,coq,Syntax,Coq,Coq手册()规定 由于保留符号、归纳、共归纳、记录,递归和协同草书定义可以使用自定义符号 我想定义一下 Reserved Notation "A +' B" (at level 80). Record foo T := { add : T -> T ->T; commute a b : a +' b = b +' a where "a +' b" := (add a b) }. 但我明白了 Error: Unk

Coq手册()规定

由于保留符号、归纳、共归纳、记录,递归和协同草书定义可以使用自定义符号

我想定义一下

Reserved Notation "A +' B" (at level 80).
Record foo T :=
  { add : T -> T ->T;
    commute a b : a +' b = b +' a 
      where "a +' b" := (add a b)
  }.
但我明白了

Error: Unknown interpretation for notation "_ +' _".

记录中首次使用之前,必须定义符号,如下所示:

Reserved Notation "A +' B" (at level 60).
Record foo T :=
  { add : T -> T ->T where "A +' B" := (add A B);
    commute a b : a +' b = b +' a 
  }.
将“where”子句放在记录之后会显示一条错误消息:“where子句不支持记录”。无论是在手册中还是在语法中,这看起来都像一个bug。