我正在编写自己的第一个Coq文件,但是在导出另一个用户定义文件(由Software Foundations定义)时遇到麻烦。
问题是我当前的Coq文件具有路径Coq/NWA.v
,而我要导入的文件具有路径Coq/SoftwareFoundations/lf/Rel.v
。我尝试了以下语法:
From Coq/SoftwareFoundations/lf Require Import Rel.v
&
From Coq.SoftwareFoundations.lf Require Import Rel.v
&
From ./../SoftwareFoundations/lf Require Import Rel.v
所有这些都给出语法错误。如何导入Rel.v文件?
答案 0 :(得分:1)
tl; dr:正确的语法是
From LF Require Import Rel.
要管理Coq文件,需要注意两种路径:
物理路径:您惯用的常用文件路径,例如Coq/SoftwareFoundations/lf
。
逻辑路径:完全限定的模块名称,由Coq编译器映射到文件。
-Q my/path/to/lf LF
选项(最终需要传递给coqc
)的作用是将逻辑路径(LF
)映射到物理路径(my/path/to/lf
)。
在Coq文件中,Require Import
命令(包括From _ Require Import _
)可用于逻辑路径。经验法则是,.v
文件的内容仅涉及逻辑路径,尽管有一些例外(例如Add LoadPath
和提取)。
Logical Foundations卷是使用逻辑路径LF.ModuleName
构建的,这就是在Coq/NWA.v
中用于导入Rel
的内容:
From LF Require Import Rel.
(* or *)
Require Import LF.Rel.