如何使用{在Coq中定义表示法格式

时间:2013-06-20 21:36:05

标签: notation coq

我定义了这种表示法:

Definition Id (n:nat):= n.

Notation "'ID' { n } ":= (Id n) (no associativity, at level 99). 

哪种方法效果很好。现在我想添加格式来更改换行符和对齐方式。假设我想打印这样的东西:

ID
 { n }

所以我尝试了以下符号:

Notation "'ID' { n } ":= (Id n) (no associativity, at level 99, 
format "'ID' '//' { n } "). 

在哪种情况下我得到

  

警告:标识符“{”开头的字符“{”无效。

那么我应该如何使用{?

来定义格式

1 个答案:

答案 0 :(得分:3)

只需从格式中删除花括号:

Definition Id (n : nat) := n.

Notation "'ID' { n } " := (Id n)
                            (no associativity, at level 99,
                             format "'ID' '//'  n  " ).

Check (ID { 4 }).

我不确定这是故意还是错误。但是,正如Coq user's manual所说,花括号{ }在符号中具有特殊状态,并且与其他类型的括号区别对待。因此,如果您想对[ ]执行相同的操作,则需要在格式中包含括号:

Definition Id (n : nat) := n.

Notation "'ID' [ n ] " := (Id n)
                            (no associativity, at level 99,
                             format "'ID' '//'  [ n ] " ).

Check (ID [ 4 ]).