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

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(使用前将#替换为@)

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

  • Coq:变量参数列表上的 Ltac 定义?

    在尝试创建循环可变长度参数列表的 Ltac 定义时 我在 Coq 8 4pl2 上遇到了以下意外行为 谁能给我解释一下吗 Ltac ltac loop X match X with 0 gt idtac done gt fun Y gt i
  • 对 Coq 导入感到困惑

    有人可以告诉我之间的区别吗 Require Name Require Import Name Import Name Require 加载外部库 通常来自标准库或user contribs 文件夹 Import 导入模块中的名称 例如 如果
  • 使用由明确定义的归纳定义的递归函数进行计算

    当我使用Function在 Coq 中定义一个非结构递归函数 当要求进行特定计算时 生成的对象会表现得很奇怪 事实上 不是直接给出结果 而是Eval compute in 指令返回一个相当长 通常为 170 000 行 的表达式 Coq 似
  • 如何指示两种 Coq 电感类型尺寸的减小

    我正在尝试定义game组合游戏的归纳型 我想要一个比较方法来判断两个游戏是否相同lessOrEq greatOrEq lessOrConf or greatOrConf 然后我可以检查两个游戏是否相等 如果它们都是 lessOrEq and
  • Coq 将不存在的语句转换为 forall 语句

    我是 Coq 的新手 这是我的问题 我有一个声明说 H forall x term exists y term P x y P y x 我猜它相当于 forall x y term P x y P y x gt false 但我可以使用哪种
  • Coq:将信息保存在匹配语句中

    我正在构建一个递归函数match在清单上l 在里面cons分支我需要使用以下信息l cons a l 为了证明递归函数终止 但是 当我使用match l信息丢失 我该如何使用match保留信息 这是函数 drop and drop lemm
  • 证明匹配语句

    为了解决一个练习 我有以下代表整数的定义 Inductive bin Type Zero bin Twice bin gt bin TwiceOne bin gt bin 这个想法是 Twice x is 2 x 两次一x is 2 x 1
  • 如何在 Coq 中禁用我的自定义符号?

    我定义了一个符号来模拟命令式编程 Notation a gt gt b b a at level 50 然而之后 所有函数应用表达式都表示为 gt gt 样式 例如 在 Coq Toplevel 的证明模式下 我可以看到 bs nat gt
  • 如何将假设中的具体变量更改为存在量化变量?

    假设我有一个这样的假设 FooProp a b 我想将假设改为这种形式 exists a FooProp a b 我怎样才能做到这一点 我知道我能做到assert exists a FooProp a b by eauto但我试图找到一个不
  • 在 Coq 中使用依赖类型(安全第 n 个函数)

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

    OCaml 的 Hindley Milner 类型系统不允许命令式多态性 类似于 System F 除非通过最近对记录类型的扩展 这同样适用于 F 然而 有时需要将用命令式多态性 例如 Coq 编写的程序翻译成此类语言 Coq 的 OCam
  • 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 只
  • 我可以在“coqtop - nois”下定义策略吗?

    coqtop nois Welcome to Coq 8 7 0 October 2017 Coq lt Ltac i idtac Toplevel input characters 0 4 gt Ltac i idtac gt Error
  • Coq :> 符号

    这可能是非常微不足道的 但我找不到任何关于 gt 符号在 Coq 中含义的信息 有什么区别 U 类型 和 W gt 类型 这取决于符号出现的位置 例如 如果它位于记录声明内 它会指示 Coq 添加相应的记录投影作为强制 具体来说 假设我们有
  • Coq:添加“强归纳”策略

    对自然数的 强 或 完全 归纳意味着当证明 n 上的归纳步骤时 您可以假设该属性对于任何 k 都成立 Theorem strong induction forall P nat gt Prop forall n nat forall k n
  • 可以在 Coq 的蕴涵中使用 destruct 吗?

    destruct可以用来分割and or在柯克 不过好像也可以用暗示 例如我想证明 P gt P Lemma test P P gt P Proof unfold not intro pffpf apply pffpf intro pff
  • Coq案例分析和函数返回子集类型的重写

    我正在做一个关于使用子集类型编写经过认证的函数的简单练习 想法是先写一个前驱函数 pred forall n n nat n gt 0 m nat S m n 1 然后使用这个定义给定一个函数 pred2 forall n n nat n
  • Coq:多个构造函数的单一表示法

    是否可以在 Coq 中为多个构造函数定义单一符号 如果构造函数的参数类型不同 则可以从中推断出它们 一个最小的 非 工作示例 Inductive A Set a b c C gt A d D gt A with C Set c1 c2 wi
  • 为什么逻辑连接词和布尔值在 Coq 中是分开的?

    我有 JavaScript Ruby 编程背景 并且习惯了 true false 的工作方式 在 JS 中 true false false true 然后你可以使用这些真 假值 like var a true b false a b So

随机推荐

  • 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陈述定理 然后立即证明它