如何在coq中创建参考书目源文件

时间:2014-04-15 07:54:31

标签: coq

我想在coq中创建一个文件参考书目,我有一个自动机模型,

Record automaton :Type:=
   mk_auto {
       states : Set;
       actions :Set;
       initial : states;
       transitions : states -> actions -> list states
     }.

(*States*)
Inductive st :Set:= q0 | q1 | q2.

(*Actions*)
Inductive acts:Set:= a | b | c.

(*Transitions*)
Definition trans (q:st)(x:acts) :list st :=
match q, x with
     | q0, a =>  cons q1 nil
     | q1, b =>  cons q0 nil
     | q1, c =>  cons q2 nil
     | _,_ =>    nil (A:=_)
end.

 (* Automate A1 *)
 Definition A1 := mk_auto st acts q0 trans.
 Print A1.

我想在不同的文件中使用记录模型。

Record automaton :Type:=
mk_auto {
    states : Set;
    ctions :Set;
    initial : states;
    transitions : states -> actions -> list states
}.

感谢您的回复。

1 个答案:

答案 0 :(得分:0)

我不确定你的“参考书目”文件是什么意思,但如果你想从其他文件创建一个可以Import的库,你只需要用你的.v文件制作一个记录定义,并使用coqc进行编译。它将创建一个.vo文件,您可以通过Require Import your_file.方案重复使用该文件。 您可以将.vo文件放在与当前.v文件相同的文件夹中,或者如果我没记错的话,请参阅文档以向Coq(Add LoadPath)添加搜索路径。

干杯, 诉

编辑:在您的评论之后,这是我尝试构建库,它可能会帮助您检查出现了什么问题:

vinz@####:/tmp/foo$ cat test.v
Record automaton :Type:= mk_auto {
    states : Set;
    actions :Set;
    initial : states;
    transitions : states -> actions -> list states
}.
vinz@####:/tmp/foo$ ls
test.v
vinz@####:/tmp/foo$ coqc test.v
vinz@####:/tmp/foo$ ls
test.glob  test.v  test.vo

EDIT2:如果.vo文件与您当前正在编辑的.v位于同一目录中,coqide似乎很高兴。一般方案是在Add Loadpath "/path/to/the/vo/file".之前写Require Import。这应该涵盖你的上一期