我想在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
}.
感谢您的回复。
答案 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
。这应该涵盖你的上一期