我有两个外部模块(其中最好不要交替的源)定义相同的符号。这样做的结果是,由于这个错误,我现在无法再同时导入这两个模块:
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.
有什么出路吗?我想象要么不从一个模块导入符号,要么只进行选择性导入。但是,查看文档并没有太多说明。
我有什么机会看了看?或者你会推荐什么解决方案?答案 0 :(得分:4)
简短的回答很遗憾没有。上游知道这个限制,并且在未来的某个时候(Coq 8.9?),你希望能够使用"解析表"来实现这一点。
但是,有一个可接受的解决方法:使用部分来限制导入的范围。想象一下模块a b
定义一个冲突的符号,然后你可以这样做:
Require a b.
Section WithNotationA.
Import a.
...
End WithNotationA.
Section WithNotationB.
Import b.
...
End WithNotationB.