引入先前证明的定理作为假设

2024-01-01

假设我已经在coq中证明了某个定理,稍后我想将其作为假设引入到另一个定理的证明中。有没有一种简洁的方法来做到这一点?

当我想做一些诸如案例证明之类的事情时,我通常会出现这种需要。我发现做到这一点的一种方法是assert陈述定理,然后立即证明它,但这似乎有点麻烦。例如,我倾向于写这样的东西:

Require Import Arith.EqNat.

Definition Decide P := P \/ ~P.

Theorem decide_eq_nat: forall x y: nat, Decide (x = y).
Proof.
  intros x y. remember (beq_nat x y) as b eqn:E. destruct b.
    left. apply beq_nat_eq. assumption.
    right. apply beq_nat_false. symmetry. assumption. Qed.

Theorem silly: forall x y: nat, x = y \/ x <> y.
Proof.
  intros x y.
  assert (Decide (x = y)) as [E|N] by apply decide_eq_nat.
    left. assumption.
    right. assumption. Qed.

但是有没有比输入整个内容更简单的方法呢?assert [statement] by apply [theorem] thing?


您可以使用pose proof theorem_name as X., where X是您要介绍的名字。


如果您要立即销毁它,您还可以:destruct (decide_eq_nat x y).

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

引入先前证明的定理作为假设 的相关文章

  • 如何禁止简单策略展开算术表达式?

    The simpl策略展开诸如2 a 匹配树 这看起来一点也不简单 例如 Goal forall i Z fun x gt x i 3 i 3 simpl 导致 forall i Z match i with 0 gt 3 Z pos y
  • 使用 lambda 参数重写 Coq

    我们有一个函数可以将元素插入到列表的特定索引中 Fixpoint inject into A x A l list A n nat option list A match n l with 0 gt Some x l S k gt None
  • 如何从外部软件调用证明助手Coq

    如何从外部软件调用证明助手Coq Coq 有一些 API 吗 Coq 命令行界面是否足够丰富 可以在文件中传递参数并在文件中接收响应 我对 Java 或 C 桥感兴趣 这是合理的问题 Coq 并不是一种常见的商业软件 人们可以从中获得开发人
  • 在 Coq 中实现向量加法

    在某些依赖类型语言 例如 Idris 中实现向量加法相当简单 根据维基百科上的例子 import Data Vect default total pairAdd Num a gt Vect n a gt Vect n a gt Vect n
  • Coq 中归纳集的归纳子集

    我有一个用三个构造函数构建的归纳集 Inductive MF Set D MF cn MF gt MF gt MF dn Z gt MF gt MF 我想以某种方式定义一个新的归纳集 B 使得 B 是 MF 的子集 仅包含从 D 和 dn
  • 归纳命题在 Coq 中如何运作?

    我正在阅读软件基础中的 IndProp 和 Adam Chlipala 的第 4 章书 但我在理解归纳命题时遇到了困难 为了运行示例 让我们使用 Inductive ev nat gt Prop ev 0 ev 0 ev SS forall
  • 类型参数和索引之间的区别?

    我是依赖类型的新手 对两者之间的区别感到困惑 似乎人们通常说类型是由另一种类型参数化 and 按某个值索引 但是 在依赖类型语言中 类型和术语之间不是没有区别吗 参数和指数之间的区别是根本性的吗 您能否举例说明它们在编程和定理证明中的含义差
  • Coq:定义子类型

    我有一个类型 比如说 Inductive Tt a b c 定义它的子类型的最简单和 或最好的方法是什么 假设我希望子类型仅包含构造函数a and b 一种方法是对二元素类型进行参数化 例如布尔 Definition filt x bool
  • Coq:将信息保存在匹配语句中

    我正在构建一个递归函数match在清单上l 在里面cons分支我需要使用以下信息l cons a l 为了证明递归函数终止 但是 当我使用match l信息丢失 我该如何使用match保留信息 这是函数 drop and drop lemm
  • 有没有办法禁用 Coq 中的特定符号?

    我希望在 Coqide 中 证明状态不使用某种符号 但仍使用所有其他符号 这可能吗 据我在文档中的理解 这是不可能的 您也许可以使用打开 关闭范围 但我不确定它是否有效 因为明确指出只要有可能 符号将用于打印
  • 如何有效地查找 Coq 中定义标识符的位置?

    在大多数 IDE 或文本编辑器中 您可以右键单击某个术语 它会将您带到定义该术语的文件 CoqIDE好像没有这个 所以我一直在做coqdoc myfile v html 然后转到生成的 HTML 文档 但该文件中唯一可点击的术语是针对 Co
  • 在 Coq 中,重写适用于 = 但不适用于 <-> (iff)

    我在证明期间有以下内容 我需要替换normal form step t with value t因为有一个已证明的定理存在等价 H1 t1 gt t1 normal form step t1 t2 tm H2 t2 gt t2 normal
  • 如何在 Coq 简化过程中应用一次函数?

    据我了解 Coq 中的函数调用是不透明的 有时 我需要使用unfold应用它然后fold将函数定义 主体恢复为其名称 这通常很乏味 我的问题是 是否有更简单的方法来应用函数调用的特定实例 作为一个最小的例子 对于一个列表l 证明右附加 没有
  • 在 Coq 中使用依赖类型(安全第 n 个函数)

    我正在尝试学习 Coq 但我发现很难从我读到的内容中实现飞跃软件基础 and 依赖类型的认证编程到我自己的用例 特别是 我想我应该尝试制作一个经过验证的版本nth列表上的函数 我设法写了这个 Require Import Arith Req
  • Prop 和 Type 的不同归纳原理

    我注意到 Coq 综合了关于 Prop 和 Type 等式的不同归纳原理 有人对此有解释吗 平等定义为 Inductive eq A Type x A A gt Prop eq refl x x 与之相关的归纳原理有以下类型 eq ind
  • 如何一步步检查 Coq 中更复杂的策略的作用?

    我试图经历那些著名的和精彩的软件基础书籍 https softwarefoundations cis upenn edu lf current Basics html lab30但我举了一个例子simpl and reflexivity 只
  • 可以在 Coq 的蕴涵中使用 destruct 吗?

    destruct可以用来分割and or在柯克 不过好像也可以用暗示 例如我想证明 P gt P Lemma test P P gt P Proof unfold not intro pffpf apply pffpf intro pff
  • Coq 中 MSet 的使用示例

    MSets https coq inria fr library Coq MSets MSets html似乎是 OCaml 式有限集的最佳选择 可悲的是 我找不到示例用途 如何定义一个空的MSet或单身人士MSet 我怎样才能结合两个MS
  • 在 Coq 中查找 ++ 等定义和符号

    我们如何获得这些符号的定义 类型 例如 or of List 我努力了 Search Search Search SearchAbout and Check Check Check 然而它们都不起作用 SearchAbout 确实显示了一些
  • 标准库证明中定义的 Z.le 是否无关紧要?

    在 Coq 标准库中 有一个枚举类型称为comparison具有三个元素Eq Lt Gt 这用于定义小于或小于或等于运算符ZArith m lt n定义为m n Lt and m lt n定义为m n lt gt Gt 根据赫德伯格定理 U

随机推荐

  • Java程序中“无法解析驱动程序”

    我是编程世界的新手 所以我不知道如何解决这个问题 Test public void LoginEmail driver findElement By id email button sendKeys email protected cdn
  • 安全 Web 服务 (NTLM) - Jmeter

    我正在尝试使用 Jmeter 测试 Web 服务 Web 服务受 NTLM 身份验证 Windows 保护 我可以使用加载 WSDLWebService SOAP Request采样器 目前 仅当我将代理服务器与本文中提到的 BurpSui
  • 定义宏中的括号

    是什么时候必要的将定义宏的整个 右 表达式放在括号中 如果我做类似的事情 define SUM x y x y 我必须将正确的表达式放入括号中 因为 在 C 中的优先级较低 如果我在以下上下文中使用它 它将不起作用SUM x y 5U 如果
  • 实现SelectableDataModel

    XHTML 方面
  • 在python中将rgb转换为lab的快速方法

    有没有在Python3中使用D50 sRGB将RGB转换为LAB的快速方法 Python 色彩数学 https github com gtaylor python colormath太慢了 skimage http scikit image
  • 使用 Directory.Build.Prop for .NET Framework 添加包

    我有一个 Visual Studio 解决方案 我尝试在所有项目中使用构建 prop 文件添加代码分析器 我的项目依赖于 NET Core 以及框架 我有以下 Directory Build Prop 文件
  • 为什么我收到有关 Java 实用程序类的警告

    我正在学习 Java 和 OOPS 在 Eclipse 中编写基本的 Hello World 时 我看到一个黄色三角形告诉我 实用程序类不应具有公共或默认构造函数 我无法理解为什么会发生这种情况 这意味着什么 我做错了什么 class He
  • Rails 使用正在运行的构建器编写 xml

    我想在我的网站中使用 hipay 所以我需要在操作中生成一个 xml 然后通过帖子发送到 hipay 网站 我的问题是 我如何动态创建 xml 然后在同一操作中通过邮寄发送此 xml 我的控制器中的示例 def action generat
  • 张量流/tflearn 输入形状

    我正在尝试创建一个 lstm rnn 来生成音乐序列 训练数据是大小为 4 的向量序列 表示一些要训练的歌曲中每个音符的各种特征 包括 MIDI 音符 从我的阅读来看 我想要做的是对于每个输入样本 输出样本是下一个大小为 4 的向量 即 它
  • Vb.net 2010,如何同时使用两个过滤器

    我想一次使用两列在 Visual Basic 中过滤 datagridview 例如 我想过滤主题列和姓氏列 我目前使用此代码 me studentbindingsource filter Subject code like ComboBo
  • 使用带有令牌的 Google API [Django 和 AllAuth]

    我在 Django 应用程序上使用 AllAuth 来管理用户身份验证 这样我的用户就可以连接他们的 Google 帐户 并且我获得一个 google API 令牌 具有适当的范围 我想使用该令牌来访问 google API 在我的例子中是
  • 使用 Genymontion 进行本机反应抛出并发异常

    我有基本的反应本机应用程序并尝试在 Genymon 中运行 目前我遇到错误 java util concurrent ExecutionException java lang RuntimeException ReferenceError
  • 请解释一下这些 Python Fetch 类型

    这些抓取有什么区别 请给我一个参考网站的例子 以得到清晰的想法 我仍然对此感到困惑 res cr dictfetchall res2 cr dictfetchone res3 cr fetchall res4 cr fetchone cr
  • symfony2动态数据库连接使用主义

    我试图在 Symfony 2 中建立多个数据库连接 但无法做到这一点 我在 Google 和 stack overflow 中进行了广泛的搜索 但在任何地方都是通过 config yml 文件或动态数据库完成的 其中所有数据库都具有相同的
  • @RequestMapping 注释中“params”的含义?

    我知道 RequestMapping 注释在基于 Spring MVC 的应用程序中使用 我遇到了这段代码 RequestMapping method POST params someParam 我明白了method 然而我不知道什么par
  • 从指针到成员的映射

    Note in case this feels like an X Y problem scroll below the separator for how I arrived at this question 我正在寻找一种方法来存储指向
  • 如何在 QML 中创建矩形滚动条

    就像网页一样 当内容超出矩形时 就会出现滚动条 还有其他人可以帮助我吗 我尝试过使用列表视图 但无法在矩形中使用它 文档中有一个例子 如何使用ScrollBar https doc qt io qt 5 qml qtquick contro
  • 如何使用 Intellij 插件创建自定义实时模板

    我想创建一个可与我的插件一起使用的自定义实时模板 我知道如何使用 设置 对话框创建自定义实时模板 但我希望能够将实时模板作为我的插件的一部分分发 怎么样实时模板在插件中定义 在应用程序中注册它的入口点在哪里 Thanks 使用12 1 5
  • SASS:获取现有背景字符串的值并添加到其中?

    我想在 SASS Compass 中额外构建背景 而不考虑现有的背景字符串 我可以通过写入全局变量来完成 但看起来很草率 Pseudo mixin add icon add a background icon mixin add gradi
  • 引入先前证明的定理作为假设

    假设我已经在coq中证明了某个定理 稍后我想将其作为假设引入到另一个定理的证明中 有没有一种简洁的方法来做到这一点 当我想做一些诸如案例证明之类的事情时 我通常会出现这种需要 我发现做到这一点的一种方法是assert陈述定理 然后立即证明它