当证明已经完成但给出“无法完善任何待定目标”错误时,为什么我不能在 Isabelle 中明确说明我的情况?

2023-11-30

我正在阅读具体语义的第五章。

我在处理这个玩具示例证明时遇到了一些错误:

lemma
  shows "¬ ev (Suc 0)"

我知道这超出了需要(因为by cases)神奇地解​​决了所有问题并给出了完整的证明,但我想明确说明这些情况。

我试过这个:

lemma
  shows "¬ ev (Suc 0)"
proof (rule notI)
  assume "ev (Suc 0)"
  then show False 
  proof (cases)
  case ev0
    then show ?case by blast
  next
    case evSS
    then show ?case sorry
qed

但如果我把鼠标放在?cases我收到伊莎贝尔(类型检查器?)验证者的投诉:

proof (chain)
picking this:

Failed to refine any pending goal 
Local statement fails to refine any pending goal
Failed attempt to solve goal by exported rule:
  HOL.induct_true

这个错误是什么意思?

为什么我不能用以下方式明确证明case这里的语法?即使这是微不足道的?


问题是,如何立即结案?

如果没有需要证明的情况,您可以立即使用 qed 关闭证明。

稍后会引用,但我无法使其适用于真正的证明。


自动生成的校样大纲有时是错误的。这就是一个这样的案例。

之所以cases在这里解决您的目标是它对案例进行了一些预先简化(如 §6.5.2 中所述)伊莎贝尔/伊萨尔参考手册)。这足以使这两种情况在这里自动消失,因为它们显然是不可能的。因此,你的证明状态没有剩下的证明义务,而 Isar 只允许你用show你还需要证明。这就是您收到错误消息的原因Failed to refine any pending goal:根本就没有悬而未决的目标。

您可以禁用预简化cases使用(no_simp)参数,即

proof (cases (no_simp))

但请注意cases没有定义?case变量,因为它不会改变目标。只需使用?thesis反而。

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

当证明已经完成但给出“无法完善任何待定目标”错误时,为什么我不能在 Isabelle 中明确说明我的情况? 的相关文章

  • Isabelle/HOL 验证器核心

    Question Isabelle HOL验证器的核心算法是什么 我正在寻找方案元循环评估器级别的东西 澄清 我只对Verifier 而不是自动定理证明的策略 Context 我想从头开始实现一个简单的证明验证器 纯粹出于教育原因 而不是用
  • 当证明已经完成但给出“无法完善任何待定目标”错误时,为什么我不能在 Isabelle 中明确说明我的情况?

    我正在阅读具体语义的第五章 我在处理这个玩具示例证明时遇到了一些错误 lemma shows ev Suc 0 我知道这超出了需要 因为by cases 神奇地解 决了所有问题并给出了完整的证明 但我想明确说明这些情况 我试过这个 lemm
  • 在 Isabelle 等中定义不同类型的不相交并集

    我问了一系列问题 直到我可以在 Isabelle 中定义以下简单模型 但我仍然坚持得到我想要的东西 我尝试用一 个例子来非常简短地描述这个问题 Example 假设我有两节课Person and Car Person owns汽车还有dri
  • Isabelle/HOL 中的对象级含义

    我发现 Isabelle HOL 中的许多定理更喜欢元级蕴涵 gt 代替 gt 对象逻辑级别 即高阶逻辑含义 伊莎贝尔维基说粗略地说 应该使用元级别含义将规则语句中的假设与结论分开 除此之外 关于对象和元级别含义的使用我应该了解什么 我发现
  • 尝试像集合和子集一样对待类型类和子类型

    这个问题与我之前的SO问题有关类型类 我问这个问题是为了设置一个有关语言环境的未来问题 我不认为类型类适合我想要做的事情 但是类型类的工作方式让我了解了我想要从语言环境中得到什么 下面 当我使用大括号表示法时 0 0 它不代表普通的 HOL
  • Isabelle:向量中的最大值

    我想找到自然数向量中的最大值 然而 向量 即 vec 是与集合或列表不同的类型 我考虑了几个行不通的想法 比如调平或提升 vec 的类型或递归函数的定义 您建议采用什么解决方案来获得向量中的最大值 IMPORTS src HOL Algeb
  • 避免 Z3 中的量词

    我正在尝试 Z3 其中结合了算术 量词和等式的理论 这似乎不是很有效 事实上 在可能的情况下用所有实例化的基础实例替换量词似乎更有效 考虑以下示例 其中我对函数的唯一名称公理进行了编码f需要两个参数Obj并返回解释的排序S 该公理指出 每个
  • 如何使用持久堆图像在 Isabelle/jEdit 中更快地加载理论?

    假设我有一个目录isabelle afp存储了很多理论的地方 该目录是一个库 我不打算更改其中的文件 我想加快 Isabelle jEdit 的启动时间 默认情况下 所有理论isabelle afp我当前的理论取决于重新处理 我怎样才能跳过
  • 如何阅读 Coq 对 proj1_sig 的定义?

    In Coq sig定义为 Inductive sig A Type P A gt Prop Type exist forall x A P x gt sig P 我读为 sig P 是一种类型 其中 P 是一个接受 A 并返回 Prop
  • 伊莎贝尔证明加法的交换律

    我试图证明 Isabelle HOL 中自定义的交换律add功能 我设法证明了关联性 但我坚持这一点 的定义add fun add nat nat nat where add 0 n n add Suc m n Suc add m n 关联
  • 使用 prolog 显示布尔逻辑失败的原因

    假设我有以下布尔逻辑 Z A or B and A or C 是否可以使用序言 可能与某些库一起 来找出 Z 为假的原因并以以下格式返回答案 Z 为假 因为 A 或 b 和 c 为假 如果我替代some已知值 或全部 例如 c true 它
  • 伊莎贝尔和斯卡拉[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在考虑创建 Eclipse PDE 并且需要与 Isabelle 进行通信 我确实发现一些出版物声
  • 如何在 MMT 中粘合/识别两个结构中的内含物?

    我想形式化形式语言及其语义MMT https uniformal github io 并定义一个一般概念语义等价两种语义 one句法 准确地说 对后者进行编码实际上是一种识别 粘合 我不知道如何在 MMT 中做到这一点 接下来让我详细说明我
  • Isabelle 返回数字而不是 Suc(Suc( ... 0 ))

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

    我想获得与相关的 LaTeX 代码这个理论 https github com rjraya Isabelle blob master curves Hales thy 以前的答案仅提供文档的链接 让我描述一下我做了什么 我去了目录Hales
  • 伊莎贝尔语中“case _ of _”是什么意思

    在读的时候这个关于商类型的答案 https stackoverflow com a 67237629 14656198 我偶然发现了这个结构 case of 经检查手册 https isabelle in tum de doc isar r
  • 修复区域设置扩展中的类型变量

    鉴于此代码 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
  • 应该如何理解“引理”函数的一般类型?

    也许这是一个愚蠢的问题 这是引用自the 哈索主义 paper https personal cis strath ac uk conor mcbride pub hasochism pdf 解决这个问题的一种方法是对引理进行编码 由下式给
  • 证明后继者对等式的替代性质

    我试图理解归纳类型 精益中的定理证明 第 7 章 https leanprover github io theorem proving in lean 07 Inductive Types html 我给自己设定了一个任务 证明自然数的后继
  • Coq:承认断言

    有没有办法在 Coq 中承认断言 假设我有一个这样的定理 Theorem test forall m n nat m n n m Proof intros n m assert H1 m m n m S n Admitted Abort 上

随机推荐