Import 从另一个文件导入Coq变量

Import 从另一个文件导入Coq变量,import,coq,Import,Coq,我在公理的基础上证明了场的一些基本性质,现在我继续定义向量空间的公理。特别是,Field.v包含以下行: (***********) (* IMPORTS *) (***********) Require Import Setoid Morphisms. Variable (F:Type). Variable (zero:F). Variable (one :F). Variable (add: F -> F -> F). Variable (mul: F -> F -&

我在公理的基础上证明了场的一些基本性质,现在我继续定义向量空间的公理。特别是,
Field.v
包含以下行:

(***********)
(* IMPORTS *)
(***********)
Require Import Setoid Morphisms.

Variable (F:Type).
Variable (zero:F).
Variable (one :F).  
Variable (add: F -> F -> F).
Variable (mul: F -> F -> F).
Variable (eq: F -> F -> Prop).
我将它导入到一个名为
VectorSpace.v
的文件中,但Coq抱怨它不知道
F

(*******************)
(* GENERAL IMPORTS *)
(*******************)
Require Import Setoid Morphisms.

(*******************)
(* PROJECT IMPORTS *)
(*******************)
Require Import Field.

(****************)
(* Vector Space *)
(****************)
Variable (V:Type).
Variable (zerov:V).
Variable (onev :V).
Variable (addv: V -> V -> V).
Variable (mulv: F -> V -> V).
以下是错误消息:

The reference F was not found in the current environment.
  • 变量
    替换为
    Axiom
    声明

  • 在项目根目录下创建一个包含项目结构的
    \u CoqProject
    文件。例如:

    -Q . MyProject
    Field.v
    VectorSpace.v
    
    现在,您可以使用
    MyProject.Field
    VectorSpace.v
    中引用
    Field.v
    (我相信您以前是从标准库导入
    Field
    模块的)

  • 生成生成文件并编译项目:

    coq_makefile -f _CoqProject -o Makefile
    make
    
  • 如果您在Emacs中使用Proof General,则应该可以交互地运行
    VectorSpace.v
    。我相信CoqIDE对自动化步骤(2)和(3)有一些支持,但我不确定

  • 变量
    替换为
    Axiom
    声明

  • 在项目根目录下创建一个包含项目结构的
    \u CoqProject
    文件。例如:

    -Q . MyProject
    Field.v
    VectorSpace.v
    
    现在,您可以使用
    MyProject.Field
    VectorSpace.v
    中引用
    Field.v
    (我相信您以前是从标准库导入
    Field
    模块的)

  • 生成生成文件并编译项目:

    coq_makefile -f _CoqProject -o Makefile
    make
    

  • 如果您在Emacs中使用Proof General,则应该可以交互地运行
    VectorSpace.v
    。我相信CoqIDE对自动化步骤(2)和(3)有一些支持,但我不确定。

    如果你真的想对整个开发过程中的单个字段进行公理化,请使用
    参数(或
    公理
    ,意思相同)

    相反,
    变量
    用于
    部分
    ,并声明将转换为参数的绑定,这样开发就可以用不同的字段进行实例化

    Variable
    节外有完全不同的含义,因此为了避免混淆,我建议不要以这种方式使用此命令

    变量…

    (...) 在任何部分之外使用
    变量
    命令等同于使用
    本地参数

    本地参数…

    通过导入及其变体的非限定名称,这些参数永远不会被访问。您必须显式地给出它们的完全限定名来引用它们

    ---Coq参考手册

    • 变量
    • 本地参数

    如果您真的想对整个开发中的单个字段进行公理化,请使用
    参数
    (或
    公理
    ,含义相同)

    相反,
    变量
    用于
    部分
    ,并声明将转换为参数的绑定,这样开发就可以用不同的字段进行实例化

    Variable
    节外有完全不同的含义,因此为了避免混淆,我建议不要以这种方式使用此命令

    变量…

    (...) 在任何部分之外使用
    变量
    命令等同于使用
    本地参数

    本地参数…

    通过导入及其变体的非限定名称,这些参数永远不会被访问。您必须显式地给出它们的完全限定名来引用它们

    ---Coq参考手册

    • 变量
    • 本地参数

    感谢您的回答+观察,我实际上没有使用我自己的
    字段.v
    。。。现在一切正常。感谢您的回答+观察,我实际上没有使用自己的
    字段。v
    。。。现在一切正常。