Import 如何在Coq中导入模块?

Import 如何在Coq中导入模块?,import,module,coq,Import,Module,Coq,从Coq中的模块导入定义时遇到问题。我是Coq新手,但无法使用该语言的参考手册或在线教程解决问题。我有一个为有限集定义签名和公理的模块,我打算在另一个模块中实现它。还有更多,但它看起来像这样(作为参考,我密切关注Filliatre关于有限自动机的论文): 此外,我看不到FinSet中定义的任何内容。如何将定义(在本例中为公理)从一个模块导入另一个模块?我基本上遵循了皮尔斯“软件基础”讲座中概述的步骤。但是,它们对我不起作用。尝试向您的.emacs文件添加一些显式包含路径: '(coq-prog

从Coq中的模块导入定义时遇到问题。我是Coq新手,但无法使用该语言的参考手册或在线教程解决问题。我有一个为有限集定义签名和公理的模块,我打算在另一个模块中实现它。还有更多,但它看起来像这样(作为参考,我密切关注Filliatre关于有限自动机的论文):


此外,我看不到
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")))