双方括号的 Coq 符号格式

Coq notation format for double square braces

根据文档,可以定义打印符号的格式: https://coq.inria.fr/refman/Reference-Manual014.html#sec530

但是,可以定义一种符号,例如:

Notation " '[[' a ']]' b " := (* something *).

两者能不能互动还不清楚。正在尝试:

format " '[hv' '[[' a ']]' ']' b "

例如,让 Coq 出错,因为它期望方括号后跟 </code>、<code>vhv.[=15 之一=]

到目前为止,我尝试过的任何其他类型的转义都会导致 Coq 拒绝格式,因为它与符号不匹配。

我不确定这是否可以完成...

你的朋友是metasyntax:parse_formathttps://github.com/coq/coq/blob/trunk/toplevel/metasyntax.ml#L102

正如您在代码中所看到的,您的具体方案将行不通。我不知道是否有一些特定的黑客攻击,现在你必须停止使用双括号。

不过,我确信 Coq 上游会考虑在 parse_quoted 中添加 [[ 案例的补丁。

希望 8.7 能在这里带来一些改进,CEP#9 试图提出 replacing/evolving 解解析为真正的基于框的模型。