Parsing Coq:修复递归表示法

Parsing Coq:修复递归表示法,parsing,recursion,definition,coq,notation,Parsing,Recursion,Definition,Coq,Notation,下面是一个半工作的简单递归表示法: Universe ARG. Definition ARG := Type@{ARG}. Parameter X: ARG. Notation A := (fun x:ARG->ARG => fun y:x X => y). Parameter P: ARG -> ARG. Parameter s: P X. Notation "[ x .. z u ]" := (x P .. (z P u) .. ) (at level 5, z, u

下面是一个半工作的简单递归表示法:

Universe ARG. Definition ARG := Type@{ARG}.
Parameter X: ARG.
Notation A := (fun x:ARG->ARG => fun y:x X => y).
Parameter P: ARG -> ARG.
Parameter s: P X.
Notation "[ x .. z u ]" := (x P .. (z P u) .. ) (at level 5, z, u at next level).
Check (A P (A P (A P s))). (* [A A A s]: P X *)
Print Grammar constr.
(*| "5" RIGHTA
  [ "["; NEXT; LIST1 NEXT; NEXT; "]"
  | "["; NEXT; NEXT; "]" ]*)
Check [A A A s]. (* Syntax error: [constr:operconstr] or [constr:operconstr] expected (in [constr:operconstr]). *)
如您所见,Coq将
ap(ap(aps))
识别为
[aas]:px
,但无法解析
[aas]
。问题出在哪里,解决方法是什么

编辑:Coq似乎需要一些“解析帮助”。例如,以下工作:

Notation "( x .. z [ u ] )" := (x P .. (z P u) .. ) (at level 5, z at next level).
Check (A A A [s]): P X.
由于我想去掉内部符号,问题仍然悬而未决。问题是Coq问题是Coq