Import 如何在Coq中导入模块?
从Coq中的模块导入定义时遇到问题。我是Coq新手,但无法使用该语言的参考手册或在线教程解决问题。我有一个为有限集定义签名和公理的模块,我打算在另一个模块中实现它。还有更多,但它看起来像这样(作为参考,我密切关注Filliatre关于有限自动机的论文):Import 如何在Coq中导入模块?,import,module,coq,Import,Module,Coq,从Coq中的模块导入定义时遇到问题。我是Coq新手,但无法使用该语言的参考手册或在线教程解决问题。我有一个为有限集定义签名和公理的模块,我打算在另一个模块中实现它。还有更多,但它看起来像这样(作为参考,我密切关注Filliatre关于有限自动机的论文): 此外,我看不到FinSet中定义的任何内容。如何将定义(在本例中为公理)从一个模块导入另一个模块?我基本上遵循了皮尔斯“软件基础”讲座中概述的步骤。但是,它们对我不起作用。尝试向您的.emacs文件添加一些显式包含路径: '(coq-prog
此外,我看不到
FinSet
中定义的任何内容。如何将定义(在本例中为公理)从一个模块导入另一个模块?我基本上遵循了皮尔斯“软件基础”讲座中概述的步骤。但是,它们对我不起作用。尝试向您的.emacs
文件添加一些显式包含路径:
'(coq-prog-args (quote ("-I" "/home/tommd/path/to/some/stuff/lib" "-I" "/home/tommd/path/to/more/stuff/common")))
我认为您的困惑源于这样一个事实,即在Coq中,“模块”可能意味着两种不同的东西——源文件(Foo.v)和源文件中的模块(
模块栏。
)尝试将源文件命名为与源文件中的模块不同的名称。然后使用Require Import
将一个源文件导入另一个源文件(因此,指定源文件的名称,而不是源文件中模块的名称)
另外,我对Coq中的
模块和模块类型不太熟悉,但是你不需要在那里设置模块类型吗,而不是模块
?是的,我试过了。.v
文件中的Add LoadPath”/home/pordan30/test“
和”(coq prog args(“-I”“/home/pordan30/test”))
在my文件中的组合会导致在~/test
文件中导入编译模块时出现相同的问题(即,在添加加载路径的.v
文件中)。不过,谢谢你提供了一些帮助。是的,这似乎是对的。显然,我没有正确导入模块。在使用源文件的Require Import name\u导入之前,必须使用源文件的coqc name\u.v
编译源文件。如果涉及不同的路径,也可以在.v
文件的开头使用添加加载路径“./mypath/”
。
Warning: trying to mask the absolute name "FinSet"!
'(coq-prog-args (quote ("-I" "/home/tommd/path/to/some/stuff/lib" "-I" "/home/tommd/path/to/more/stuff/common")))