Isabelle/HOL 验证器核心

2023-11-27

Question

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

我正在寻找方案元循环评估器级别的东西。

澄清

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

Context

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

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

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

Thanks!


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

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

在 Isabelle 中,内核基础设施相当复杂,但与系统的其他部分相比仍然非常小。内核实际上分层为“微内核”(the Thm module)和“纳米内核”(the Context module). Thm产生thm米尔纳 LCF 方法意义上的值,以及Context照顾theory您产生的任何结果的证书,以及本地推理的证明上下文(特别是 Isar 证明语言)。

如果您想了解有关 LCF 式证明器的更多信息,我建议您还可以查看HOL-光这可能是 LCF 系列中最小的现实系统,从人们已经用它完成大型应用的意义上来说,它是现实的。 HOL-Light 的一大优点是它的实现很容易理解,但这种极简主义也有一些缺点:它不能完全保护用户在其 ML 环境(即 OCaml 而不是 SML)中做无意义的事情。由于各种技术原因,OCaml 默认情况下并不像标准 ML 那样“安全”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Isabelle/HOL 验证器核心 的相关文章

  • 什么样的类型定义在本地环境中是合法的?

    在伊莎贝尔的NEWS文件 我发现 命令 typedef 现在可以在本地理论上下文中工作 无需 引入对参数或假设的依赖 这不是 可以在 Isabelle Pure HOL 中实现 请注意 逻辑环境可能 包含本地 typedef 的多种解释 具
  • 上下文无关语言问题(泵引理)

    我知道这与编程没有直接关系 但我想知道是否有人知道如何将泵引理应用于以下证明 显示L a n b n c m n m 不是上下文无关的语言 我对应用泵送引理非常有信心 但这一点真的让我很恼火 你怎么认为 编辑 我完全把你引入了错误的轨道 当
  • Isabelle/HOL 验证器核心

    Question Isabelle HOL验证器的核心算法是什么 我正在寻找方案元循环评估器级别的东西 澄清 我只对Verifier 而不是自动定理证明的策略 Context 我想从头开始实现一个简单的证明验证器 纯粹出于教育原因 而不是用
  • 使用单射函数的反值

    我试图证明这个引理 lemma assumes x inv f y and inj f and x undefined shows y range f using assms try 但 Nitpick 告诉我这个说法并不正确 Trying
  • 简化自然色的漂亮印刷

    假设我编写了一个用于反转列表的函数 我想用value命令 只是为了向自己保证我可能做对了 但输出看起来很糟糕 value reverse 1 8 3 gt 1 1 1 1 1 1 1 1 1 1 1 1 a list 如果我告诉伊莎贝尔将这
  • Isabelle/HOL 中的对象级含义

    我发现 Isabelle HOL 中的许多定理更喜欢元级蕴涵 gt 代替 gt 对象逻辑级别 即高阶逻辑含义 伊莎贝尔维基说粗略地说 应该使用元级别含义将规则语句中的假设与结论分开 除此之外 关于对象和元级别含义的使用我应该了解什么 我发现
  • 代码应该简短/简洁吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在编写数学证明时 一个目标是继续压缩证明 证明变得更加优雅 但不一定更具可读性 压缩可以帮助您更好地理解 因为您可以删除不必要的字符和冗长的内容
  • 伊莎贝尔语中的“arith”和“presburger”有什么区别?

    到目前为止 我在伊莎贝尔遇到的每一个目标都可以通过使用来解决arith也可以通过以下方式解决presburger反之亦然 例如 lemma odd n nat Suc 2 n div 2 n by presburger or arith 这
  • 证明具有 n 个叶子的二叉树的高度至少为 log n

    我已经能够创建一个证明 显示树中的最大总节点数等于 n 2 h 1 1 并且从逻辑上我知道二叉树的高度是 log n 可以绘制它出来看看 但我很难构建一个正式的证明来证明一棵有 n 片叶子的树 至少 有 log n 我遇到或能够组合在一起的
  • 隐藏运算符以避免 AST 中出现歧义

    我正在尝试伊莎贝尔官方教程中的列表示例 我更换了 with 和 with 具有与 Haskell 相同的语法 现在我收到有关 AST 中含糊之处的警告 我知道我可以隐藏功能hide const但这对于中缀表示法的运算符不起作用 如何在伊莎贝
  • 将数字排列成最大数 - 算法证明

    有众所周知的算法问题 http www programcreek com 2014 02 leetcode largest number java 给定数字数组 例如 1 20 3 14 在这种情况下 以尽可能形成最大数字的方式排列数字32
  • 伊莎贝尔和斯卡拉[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在考虑创建 Eclipse PDE 并且需要与 Isabelle 进行通信 我确实发现一些出版物声
  • Isabelle/HOL 中的 primrec 和 fun 有什么区别?

    我正在阅读 Isabelle 教程 并试图澄清我对 primrec 和 fun 的使用的概念 到目前为止我搜索过的内容 包括答案here https lists cam ac uk mailman htdig cl isabelle use
  • 查找元素彼此相距最远的子集

    我有一个面试问题 我似乎无法弄清楚 给定一个大小为 N 的数组 找到大小为 k 的子集 使得子集中的元素彼此相距最远 换句话说 最大化元素之间的最小成对距离 Example Array 1 2 6 10 k 3 answer 1 6 10
  • Isabelle 返回数字而不是 Suc(Suc( ... 0 ))

    当我使用value为了找出返回自然数的函数的某个值 我总是以 0 的迭代后继函数的形式获得答案 即Suc Suc 0 有时可能很难阅读 有没有办法直接输出Isabelle返回的数字 这是我不久前想修复的问题 但显然我忘记了 卡西吉奈特的猜测
  • 伊莎贝尔中的“real_of_int”和“real”?

    什么是real of int real and int在伊莎贝尔 它们听起来有点像类型 但通常类型的写法类似于x real这些写法就像real x 我无法证明以下陈述 S n x x S n x C x C n x S x 我注意到伊莎贝尔
  • 如何让 typedef 类型从类型类的母类型继承运算符

    发布答案后续问题 Brian 提供了答案 并建议使用提升和转移的解决方案 然而 我找不到足够的关于举重和转移的教程信息 无法知道如何调整他的答案来完成我需要做的事情 在这里 我在黑暗中工作 并使用给出的答案作为即插即用模板来提出这个后续问题
  • 稳定的比较排序,时间复杂度为 O(n * log(n)),空间复杂度为 O(1)

    在经历的同时维基百科的排序算法列表 https secure wikimedia org wikipedia en wiki Sorting algorithm Comparison of algorithms我注意到没有稳定的比较排序 h
  • Coq 中的案例分析证明

    我试图证明关于以下函数的命题 Program Fixpoint division m nat n nat measure m nat match lt nat 0 n with false gt 0 true gt match leq na
  • 修复区域设置扩展中的类型变量

    鉴于此代码 locale A fixes foo a locale B A fixes bar a a locale C A fixes baz a begin sublocale B foo foo baz end I get Type

随机推荐

  • 创建 ruby​​ C++ 扩展

    我使用 C 类创建了一个示例 ruby 扩展 当我没有解析该值时它工作正常 但是当我解析参数时它显示错误 这是我的代码 C 头文件 ifndef CIRCLE H define CIRCLE H class Circle public Ci
  • R 中的桑基图

    尝试在 R 的帮助下制作一个相当通用的桑基图networkD3包裹 仅供参考 这是软件包手册中的示例 library networkD3 library jsonlite library magrittr energy lt https c
  • 从 AngularJS Web 应用程序发送电子邮件

    在我的一个 AngularJS Web 应用程序中 我需要通过向相关人员发送电子邮件来确认密码 我怎样才能在 AngularJS 中实现这一点 我是一名 NET 人员 我正在使用 Visual Studio 2013 您还可以考虑使用第三方
  • WPF 子控件的鼠标悬停触发效果

    假设我有这段代码
  • 我的网站的移动版,什么设计宽度是最佳的? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我要创建移动版本的网站 设计时应该选择什么宽度 我知道每个设备都有自己的屏幕宽度 并且很难适应所有设备 我真的很困惑 对移动网站世界来说相当陌生 请帮忙 谢谢 您的方法将取决于您想要 或可
  • Node.js 有模板引擎吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我正在尝试使用 Node
  • 删除 iOS UIBarButtonItem 的标题文本

    我想做的是从 后退 按钮中删除文本UIBarButtonItem 在导航栏上只留下蓝色 V 形 请记住 我正在针对 iOS 7 进行开发 我尝试了多种方法 包括但不限于 这是我不喜欢的图像方法 图像看起来不合适 UIBarButtonIte
  • 在 jupyter 中使用带有 bash 魔法的 python 变量

    我想使用 jupyter 笔记本中运行 bash 命令 bash魔术命令并传递 python 变量 如中所述这个帖子我可以这样做 bash s foo bar cp 1 2 这很好用 然而 当我有一堆这些变量并且 bash 命令很长时 使用
  • MediaRecorder 启动失败:-38

    我搜索了一下这个问题是否没有重复 我看到有些没有答案 有些没有帮助 这是我的代码 private void startRecording mRecorder new MediaRecorder mRecorder setAudioSourc
  • 如何捕获 printf 的输出?

    我正在调用一个函数funcB from funcA funcB使用几个printf语句来输出数据 有没有办法让我通过捕获该数据funcA 我无法修改funcB funcB printf s My Name is printf s I lik
  • 自动重构工具可以找到类似的 Java/Javascript 重复源代码吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我正在寻找一个工具来查找重复或similarJava Javascript 代码 我无法说出 的确切定义 similar 但我希望该工具足够智能 并
  • Elasticsearch在php中匹配子字符串

    下面给出的是我使用elasticsearch生成索引的代码 索引已成功生成 基本上我用它来根据电影名称 演员名称和基因生成自动建议 现在我的要求是 我需要将子字符串与特定字段相匹配 如果我使用 这工作正常 params body query
  • webdriver 的官方定位器策略

    In the 官方 W3C Webdriver 文档 明确指出了位置策略是 State Keyword CSS selector css selector Link text selector link text Partial link
  • 如何对 Windows 窗体单选按钮进行分组?

    如何对 Windows 窗体应用程序中的单选按钮进行分组 很像 ASP NET 的单选按钮列表 所以我可以在从选项中选择的每种情况之间进行切换 将一个组的所有单选按钮放入容器对象中 例如Panel or a GroupBox 这将在 Win
  • 将字符串化的字典列表转换回字典列表

    我知道要将字典转换为字符串 从字符串转换 我使用json loads and json dumps 但是 当给定表示字典列表的字符串时 这些方法会失败 例如 sample entry type test topic obama interv
  • 将 UpdatePanel 替换为 JQuery

    我使用 UpdatePanel 异步调用页面中的按钮单击事件 该事件调用另一个类中的方法 该方法在输出上写出 XML 文件 有没有办法用 JQuery 而不是 UpdatePanel 来做到这一点 使用 jQuery 来处理点击事件 然后在
  • 实体框架可以在没有交集对象的情况下处理多对多关系吗?

    使用数据库优先模型 假设我们有经典表Student Course and StudentCourse 后者显然有FKsStudent and Course 如果将此模型导入 EF 您将为每个模型生成一个对象 这Student and Cou
  • 服务限制默认值?

    Hi 根据这个link默认值WCF 4 0这是 最大并发会话数 16 处理器数量 最大并发会话数 MaxConcurrentCalls MaxConcurrentSessions 100 处理器计数 最大并发会话数 100 处理器数量 我知
  • 从 gevent-subprocess 获取实时标准输出?

    我试图通过 POPEN 立即获取进程的标准输出 使用 gevent 1 0 readline 和 read 仍然会阻塞进程并等待进程完成 有什么线索吗 是的 我到处寻找一个简单的解决方案 没有线程它必须是可能的 对吗 import geve
  • Isabelle/HOL 验证器核心

    Question Isabelle HOL验证器的核心算法是什么 我正在寻找方案元循环评估器级别的东西 澄清 我只对Verifier 而不是自动定理证明的策略 Context 我想从头开始实现一个简单的证明验证器 纯粹出于教育原因 而不是用