Old Isabelle项目使用'使用'导入ml文件我该如何替换它?

时间:2016-06-14 12:59:47

标签: ml isabelle

我继承了一个古老的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错误产生影响?

1 个答案:

答案 0 :(得分:3)

我不熟悉uses关键字;在我开始使用Isabelle之前必须放弃一段时间。

ML_file应该是要走的路;但是,您必须在开始/结束理论的ML_filebegin命令之间编写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系统的任何变化。法新社以外的任何伊莎贝尔项目都可能在几年内屈服于腐败。