Coq:需要导出的问题

Coq: Issue with Require Export

我的问题似乎很常见,但 none 找到的答案可以解决它。 我正在学习 Coq 上的软件基础课程,所以我来命令:

> From LF Require Export Basics.

无论我尝试什么,我总是得到以下答案:

"Cannot find a physical path bound to logical path matching suffix <> and prefix LF."

我从 c​​oqIde 编译了 Basics.v,并且正确创建了 Basics.vo 文件。 我还按照某处的建议从 coqc 命令行编译了它 我的 _CoqProject 文件存在,在与 Basics.v 相同的文件夹中,并指出:-Q . LF _CoqProject 参数设置为 "appended to arguments".

当我加载 Basics.v 时,我在 CoqIde 的底部看到 "Reading Options from ..._CoqProject" 我将 lf 文件夹放入 coq 的 LoadPath 中的文件夹中。

我还能检查什么?

我的系统是Windows10.我运行CoqIde 8.9.1

谢谢!

我通常在 Linux 机器下工作,但这里我用虚拟机做了一些事情。

  1. 我从 https://github.com/coq/coq/releases/tag/V8.9.1
  2. 下载了 windows 安装程序
  3. 我从 https://softwarefoundations.cis.upenn.edu/lf-current/index.html
  4. 下载了 lf.tgz 文件
  5. 我 运行 Coq 的 windows 安装程序。它将 coq 系统放在 C:\coq
  6. 我使用 cygwin 工具来扩展文件 lf.tgz,这样我就有了一个包含 Basics.v_CoqProject 等的目录 C:\Users\user\foundations\lf

然后我使用搜索命令找到 coqide 作为已安装的应用程序。然后我进行了以下步骤:

  1. 开始coqide
  2. 打开文件Basics.v
  3. 使用选项编译->编译缓冲区

然后我可以观察到目录 C:\Users\user\foundations\lf 包含一个名为 Basics.vo

的文件
  1. 然后我打开了一个新的缓冲区,并写了From LF Require Export Basics.并且没有尝试执行这一行
  2. 我将此缓冲区保存在目录 C:\Users\user\foundations\lf 中的一个文件中。假设此文件名为 toto.v
  3. 我关闭了 toto.v 缓冲区。
  4. 我使用选项文件->打开
  5. 重新打开了 toto.v
  6. 我执行了文件内容。

这个过程是反复试验的结果。我所知道的是 Require Export ... 仅在您的磁盘上有 ...vo 文件时才有效,但 coqide 需要知道在哪里寻找这些文件。为此,它维护了一个 "load path"。从给定目录打开文件时,coqide 会在该目录(和祖先目录)中查找 _CoqProject 文件,后者可能包含修改加载路径的指令。这里的情况是“-Q.LF”表示应该考虑当前目录下的所有.vo文件,它们的符号名应该以前缀"LF."

开头

问题是,当您从一个空缓冲区开始时,没有 _CoqProject 文件被读取并且 coqide 不去哪里寻找您的数据。这就是为什么我做了步骤5-6-7:在读取文件toto.v时,我挑起了_CoqProject文件的读取

要点教训:确保 Basics.vo 文件存在,然后确保您正在处理的缓冲区是通过同一目录的读取操作获得的。如果需要,请保存、关闭并重新打开以确保是这种情况。