Isabelle / HOL中验证者的核心

时间:2013-02-05 09:24:16

标签: proof isabelle

问题

Isabelle / HOL验证器的核心算法是什么?

我正在寻找一个计划水平评估员的水平。

澄清

我只对 Verifier 感兴趣,而不是自动定理证明的策略。

上下文

我想从头开始实施一个简单的验证验证器(纯粹出于教育原因,而不是用于生产用途。)

我想了解Isabelle / HOL的核心 Verifier 算法。我不关心用于自动定理证明的策略/代码。

我怀疑核心 Verifier 算法非常简单(而且优雅)。但是,我找不到它。

谢谢!

2 个答案:

答案 0 :(得分:10)

Isabelle是证明检查器的“LCF系列”的成员,这意味着您有一个特殊的模块---推理内核 - 所有推论都在其中运行以生成抽象数据类型thm的值。这有点像操作系统内核处理系统调用。相对于内核实现的正确性,您可以通过这种方式生成的所有内容都是“正确的构造”。由于证明器(标准ML)的编程语言环境具有非常强的静态类型正确性属性,因此推理内核的构造正确性会延续到证明助手实现的其余部分,这可能非常庞大。

所以原则上你有一个相对较小的“可信内核”部分和一个非常大的“应用程序用户空间”。特别是,大多数Isabelle / HOL实际上是Isabelle用户土地中图书馆理论和附加工具(主要是SML)的大集合。

在Isabelle中,内核基础结构非常复杂,但与系统的其他部分相比仍然非常小。事实上,内核分为“微内核”(the Thm module)和“纳米内核”(the Context module)。在Milner的LCF方法中,Thm生成thm值,Context为您生成的任何结果处理theory证明,以及本地推理的证据上下文(特别是在Isar证明语言中)。

如果你想了解更多关于LCF风格的证明,我建议你再看HOL-Light这可能是LCF家族中最小的现实系统,从某种意义上说,人们用它做了很大的应用。 HOL-Light具有很大的优势,它的实现可以很容易理解,但这种极简主义也有一些不利之处:它不能完全保护用户在其ML环境中无意义,这是OCaml而不是SML。由于各种技术原因,OCaml默认情况下不像标准ML那样“安全”。

答案 1 :(得分:2)

如果你解读伊莎贝尔的来源,例如

http://isabelle.in.tum.de/dist/Isabelle2013_linux.tar.gz

您将在

中找到核心定义

的src /纯/ thm.ML

并且,您已经想要解决这样一个项目:

http://www.proof-technologies.com/holzero/

后来添加:另一个更严肃的项目是

https://team.inria.fr/parsifal/proofcert/