Isabelle / HOL验证器的核心算法是什么?
我正在寻找一个计划水平评估员的水平。
我只对 Verifier 感兴趣,而不是自动定理证明的策略。
我想从头开始实施一个简单的验证验证器(纯粹出于教育原因,而不是用于生产用途。)
我想了解Isabelle / HOL的核心 Verifier 算法。我不关心用于自动定理证明的策略/代码。
我怀疑核心 Verifier 算法非常简单(而且优雅)。但是,我找不到它。
谢谢!
答案 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/
后来添加:另一个更严肃的项目是