- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要使用标准库中称为 Coq.Arith.PeanoNat ( https://coq.inria.fr/library/Coq.Arith.PeanoNat.html ) 的部分。
我尝试过导入整个 Arith 库或仅导入此模块,但我无法使用它。
我尝试过的所有其他库都可以正常工作。当我做 Require Import Bool.
我编译并且可以正确使用它。根据 Print Bool.
我可以看看下面的格式里面的所有函数:
Module
Bool
:= Struct
Definition...
.
.
.
End
Require Import Arith.PeanoNat.
时或
Require Import Arith.
我将其作为即时输出:
[Loading ML file z_syntax_plugin.cmxs ... done]
[Loading ML file quote_plugin.cmxs ... done]
[Loading ML file newring_plugin.cmxs ... done]
<W> Grammar extension: in [tactic:simple_tactic], some rule has been masked
<W> Grammar extension: in [tactic:simple_tactic], some rule has been masked
<W> Grammar extension: in [tactic:simple_tactic], some rule has been masked
<W> Grammar extension: in [tactic:simple_tactic], some rule has been masked
<W> Grammar extension: in [tactic:simple_tactic], some rule has been masked
Print Arith.PeanoNat
它输出:
Module Arith := Struct End
,它似乎是空的。当我尝试使用库中的任何内容时,例如
le_le
在 bool 比较下,我得到标准
Error: leb_le not a defined object.
我已经更新了 Coq 和库,但我不知道这里会发生什么。感谢您在解决此库问题方面的意见。
最佳答案
如果我没记错的话,Require
是加载文件的关键字。 Import
与管理 namespace 有关。它们经常一起使用,如 Require Import PeanoNat.
,但他们确实在做两件不同的事情。
当使用 DirName/FileName.vo
加载 coq 文件 ( Require
) ,就好像FileName.vo
的内容包裹在 Module DirName.FileName
中... End.
然后使用 DirName.FileName.Name
访问文件中定义的所有内容.
文件本身可以有模块 M
在里面,然后到达 M
的内容,必须输入 DirName.FileName.ModuleName.Name1
等等Import
用于将所有定义提升到顶层。通过做Import DirName.FileName.ModuleName
模块 Name1
现在被导入到顶层,并且可以在没有长路径的情况下被引用。
在上面的示例中,文件 Arith/PeanoNat.vo
定义模块 Nat
.实际上,这就是它所定义的全部。所以如果你这样做 Require Import Arith.PeanoNat
你得到 PeanoNat.Nat
在顶层。然后 Import PeanoNat.Nat
会带Nat
到顶层。注意你不能做Require Import PeanoNat.Nat
因为它不是 .vo
文件。
Coq 有时可以找到 .vo
文件,而无需指定整个路径,因此您也可以执行 Require Import PeanoNat.
coq 会找到该文件。如果您想知道它在哪里找到的,请执行 Locate PeanoNat.
Coq < Require Import PeanoNat.
Coq < Locate PeanoNat.
Module Coq.Arith.PeanoNat
Nat
也可以从
PeanoNat.
以外的其他地方获得
Coq < Require Import Nat.
Warning: Notation _ + _ was already used in scope nat_scope
Warning: Notation _ * _ was already used in scope nat_scope
Warning: Notation _ - _ was already used in scope nat_scope
Coq < Locate Nat.
Module Coq.Init.Nat
Import
图书馆,你
Require
它。您使用
Import
不必使用完整路径名。我希望这可以帮助您调试正在发生的事情。
关于coq - 如何在 Coq 中导入库 : Coq. Arith.PeanoNat?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36621752/
我是一名优秀的程序员,十分优秀!