不要在 coq 中导入符号

Do not import notations in coq

我有两个定义相同符号的外部模块(最好不要交替使用它们的来源)。结果是我现在不能再同时导入这两个模块了,因为这个错误:

Error: Notation _ ~ _ is already defined at level 27 with arguments at level 27,
at next level while it is now required to be at level 50 with arguments at next level,
at next level.

有什么办法吗?我想要么不从一个模块导入符号,要么只进行选择性导入。不过翻看文档也没说太多。

我有机会看过吗?或者您会推荐什么解决方案?

不幸的是,简短的回答是。上游意识到了这个限制,并且在未来的某个时候(Coq 8.9?)你希望能够使用 "parsing tables".

来做到这一点

但是,有一个可接受的解决方法:使用部分来限制导入的范围。假设模块 a b 定义了一个冲突的符号,那么你可以这样做:

Require a b.

Section WithNotationA.
Import a.
...
End WithNotationA.

Section WithNotationB.
Import b.
...
End WithNotationB.