我继承了一个古老的Isabelle项目,并希望将其更新为与Isabelle 2016合作。当项目启动时,它通常会启动:
theory my_theory
imports Main uses "my_theory.ML"
begin
lemma my_lemma: ...
by ...
end
uses关键字似乎不再存在,所以我尝试将其更改为:
theory my_theory
imports Main
begin
ML_file "my_theory.ML"
lemma my_lemma: ...
by ...
end
这确实包含了正确的文件,但我最终在ML文件中出现了错误,这些错误可能与也可能没有关联,例如Undefined fact: "my_lemma"
在@ {thm my_lemma}的代码行上。
我的更改是使用ML_file
命令正确包含ML文件吗?这是否会对我收到的ML错误产生影响?
答案 0 :(得分:3)
我不熟悉uses
关键字;在我开始使用Isabelle之前必须放弃一段时间。
ML_file
应该是要走的路;但是,您必须在开始/结束理论的ML_file
和begin
命令之间编写end
。此外,ML_file
调用必须在之后定义您在ML文件中使用的任何内容(常量,事实,定理集合,简单,......)
在您的示例中,它应如下所示:
theory my_theory
imports Main
begin
lemma my_lemma: ...
by ...
ML_file "my_theory.ML"
end
请注意,Isabelle发生了很大变化。您拥有的任何ML代码 - 特别是如果它已经过时 - 在使用现代Isabelle版本之前可能需要进行大量更改。从头开始重写它可能更容易。这就是为什么Isabelle项目应该被放入Archive of Formal Proofs,在那里它们被开发人员更新为Isabelle系统的任何变化。法新社以外的任何伊莎贝尔项目都可能在几年内屈服于腐败。