双方括号的 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>v
和 hv
.[=15 之一=]
到目前为止,我尝试过的任何其他类型的转义都会导致 Coq 拒绝格式,因为它与符号不匹配。
我不确定这是否可以完成...
你的朋友是metasyntax:parse_format
https://github.com/coq/coq/blob/trunk/toplevel/metasyntax.ml#L102
正如您在代码中所看到的,您的具体方案将行不通。我不知道是否有一些特定的黑客攻击,现在你必须停止使用双括号。
不过,我确信 Coq 上游会考虑在 parse_quoted
中添加 [[
案例的补丁。
希望 8.7 能在这里带来一些改进,CEP#9 试图提出 replacing/evolving 解解析为真正的基于框的模型。
根据文档,可以定义打印符号的格式: https://coq.inria.fr/refman/Reference-Manual014.html#sec530
但是,可以定义一种符号,例如:
Notation " '[[' a ']]' b " := (* something *).
两者能不能互动还不清楚。正在尝试:
format " '[hv' '[[' a ']]' ']' b "
例如,让 Coq 出错,因为它期望方括号后跟 </code>、<code>v
和 hv
.[=15 之一=]
到目前为止,我尝试过的任何其他类型的转义都会导致 Coq 拒绝格式,因为它与符号不匹配。
我不确定这是否可以完成...
你的朋友是metasyntax:parse_format
https://github.com/coq/coq/blob/trunk/toplevel/metasyntax.ml#L102
正如您在代码中所看到的,您的具体方案将行不通。我不知道是否有一些特定的黑客攻击,现在你必须停止使用双括号。
不过,我确信 Coq 上游会考虑在 parse_quoted
中添加 [[
案例的补丁。
希望 8.7 能在这里带来一些改进,CEP#9 试图提出 replacing/evolving 解解析为真正的基于框的模型。