将假设中的 ~exists 转换为 forall

2024-02-20

我陷入了假设的境地~ (exists k, k <= n+1 /\ f k = f (n+2))并希望将其转换为等效的(我希望如此)假设forall k, k <= n+1 -> f k <> f (n+2).

这是一个小例子:

Require Import Coq.Logic.Classical_Pred_Type.
Require Import Omega.

Section x.
  Variable n : nat.
  Variable f : nat -> nat.
  Hypothesis Hf : forall i, f i <= n+1.
  Variable i : nat.
  Hypothesis Hi : i <= n+1.
  Hypothesis Hfi: f i = n+1.
  Hypothesis H_nex : ~ (exists k, k <= n+1 /\ f k = f (n+2)).
  Goal (f (n+2) <= n).

我尝试使用not_ex_all_not from Coq.Logic.Classical_Pred_Type.

Check not_ex_all_not.
not_ex_all_not
     : forall (U : Type) (P : U -> Prop),
       ~ (exists n : U, P n) -> forall n : U, ~ P n

apply not_ex_all_not in H_nex.
Error: Unable to find an instance for the variable n.

我不明白这个错误意味着什么,所以作为随机猜测我尝试了这个:

apply not_ex_all_not with (n := n) in H_nex.

它成功了但是H_nex现在完全是废话:

H_nex : ~ (n <= n+1 /\ f n = f (n + 2))

另一方面,如果H_nex表示为forall:

  Hypothesis H_nex : forall k, k <= n+1 -> f k <> f (n+2).
  specialize (H_nex i).
  specialize (Hf (n+2)).
  omega.

我发现类似的question https://stackoverflow.com/questions/21644359/coq-convert-non-exist-to-forall-statement但未能将其应用到我的案例中。


如果您想使用not_ex_all_not引理,你想要证明的东西需要看起来像引理。例如。你可以先证明以下几点:

Lemma lma {n:nat} {f:nat->nat} : ~ (exists k, k <= n /\ f k = f (n+1)) -> 
                                 forall k, ~(k <= n /\ f k = f (n+1)).
  intro H.
  apply not_ex_all_not.
  trivial.
Qed.

然后证明其余部分:

Theorem thm (n:nat) (f:nat->nat) : ~ (exists k, k <= n /\ f k = f (n+1)) -> 
                                  forall k, k <= n -> f k <> f (n+1).
  intro P.
  specialize (lma P). intro Q.
  intro k.
  specialize (Q k).
  tauto.
Qed.  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将假设中的 ~exists 转换为 forall 的相关文章

  • Coq 中的 `destruct` 和 `case_eq` 策略有什么区别?

    我明白了destruct因为它将归纳定义分解为其构造函数 我最近看到case eq我不明白它有什么不同 1 subgoals n nat k nat m M t nat H match M find elt nat n m with Som
  • 如何在 Coq 中自动证明实数的简单相等?

    我正在寻找的是auto类似的策略可以证明简单的等式 例如 1 2 2 4 到目前为止 我手动尝试过的是使用ring simplify and field simplify来证明等式 即使这样效果也不好 Coq 8 5b3 下面的例子有效 R
  • 当 Coq 中使用自己的可判定性时,评估计算不完整

    The Eval compute命令并不总是计算为简单表达式 考虑代码 Require Import Coq Lists List Require Import Coq Arith Peano dec Import ListNotation
  • Coq:将信息保存在匹配语句中

    我正在构建一个递归函数match在清单上l 在里面cons分支我需要使用以下信息l cons a l 为了证明递归函数终止 但是 当我使用match l信息丢失 我该如何使用match保留信息 这是函数 drop and drop lemm
  • 引入先前证明的定理作为假设

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

    我无法加载 CoqIde 中同一文件夹中的模块 我正在尝试从 Software Foundations 加载源代码 我正在包含 SF 源代码的文件夹中运行 coqidecoqide or coqide 然后打开并运行该文件后 我收到此错误
  • Coq 无法在 Z 上计算有根据的函数,但它可以在 nat 上运行

    我正在 为我自己 写一篇关于如何在 Coq 中进行有根据的递归的解释 参见 Coq Art 书 第 15 2 章 首先我做了一个基于的示例函数nat效果很好 但后来我又做了一次Z 当我使用Compute来评估它 它并没有一直降低到Z价值 为
  • 如何阅读 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
  • 在 Coq 中证明可逆列表是回文

    这是我对回文的归纳定义 Inductive pal X Type list X gt Prop pal0 pal pal1 forall x X pal x pal2 forall x X l list X pal l gt pal x l
  • Coq - 在不丢失信息的情况下归纳函数

    当尝试对函数的结果 返回归纳类型 执行案例分析时 我在 Coq 中遇到了一些麻烦 当使用通常的策略时 比如elim induction destroy等等 信息就会丢失 我举个例子 我们首先有一个像这样的函数 Definition f n
  • 依赖类型的 Church 编码:从 Coq 到 Haskell

    在 Coq 中 我可以为长度为 n 的列表定义 Church 编码 Definition listn A Type nat gt Type fun m gt forall X nat gt Type X 0 gt forall m A gt
  • 我可以在“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 中的 Modus Ponens 和 Modus Tollens

    我想要针对这些简单的推理规则使用 Ltac 策略 在 Modus Ponens 中 如果我有H P gt Qand H1 P Ltac mp H H1将添加Q到上下文为H2 Q 在 Modus Tollens 中 如果我有H P gt Qa
  • Coq :> 符号

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

    我注意到在 Coq 的有理数定义中 零的倒数被定义为零 通常 除以零是没有明确定义 合法 允许的 Require Import QArith Lemma inv zero is zero 0 0 Proof unfold Qeq refle
  • 如何在构造微积分中提取Sigma的第二个元素?

    我尝试这样做 A gt B A gt gt t r gt x a gt B x gt r gt r gt t B t A x A gt y B x gt x x A gt y B x gt y 请注意 由于该函数返回的值取决于 sigma
  • Coq案例分析和函数返回子集类型的重写

    我正在做一个关于使用子集类型编写经过认证的函数的简单练习 想法是先写一个前驱函数 pred forall n n nat n gt 0 m nat S m n 1 然后使用这个定义给定一个函数 pred2 forall n n nat n
  • 没有可判定的相等性或排除中间值的鸽巢证明

    在软件基础中IndProp v https softwarefoundations cis upenn edu lf current IndProp html lab244一个人被要求证明鸽巢原理 并且可以使用排除中间 但有人提到这并不是绝
  • 标准库证明中定义的 Z.le 是否无关紧要?

    在 Coq 标准库中 有一个枚举类型称为comparison具有三个元素Eq Lt Gt 这用于定义小于或小于或等于运算符ZArith m lt n定义为m n Lt and m lt n定义为m n lt gt Gt 根据赫德伯格定理 U
  • “auto”如何与双条件(关闭)交互

    我注意到 那auto忽略双条件 这是一个简化的示例 Parameter A B Prop Parameter A iff B A lt gt B Theorem foo1 A gt B Proof intros H apply A iff

随机推荐

  • webpack 从多个入口文件导出类

    我正在使用 webpack 捆绑一个框架供第三方使用 该框架应该公开多个 ES6 类 我以模块化方式构建 每个文件编写一个类 我想要做的是将所有这些文件构建在一起 并将它们捆绑在给定的 命名空间 下 例子 苹果 jsexport class
  • 从字符串获取python类对象[重复]

    这个问题在这里已经有答案了 可能的重复 Python 中的动态模块导入 https stackoverflow com questions 301134 dynamic module import in python 可能是一个简单的问题
  • 运行 Maven 安装时如何跳过许可证检查?

    I ran a mvn clean install在我从事的一个大型 Java 项目中 由于某些文件没有正确的许可证头 该项目一直失败 好吧 这不是我现在关心的问题 我该如何跳过呢 我看到的实际错误是 Failed to execute g
  • 计算 Java 函数的签名

    有没有办法computeJava 类的方法的签名 一个签名 like Ljava lang String V表示一个函数 它采用String 作为论据并返回void 什么是rule计算签名 它始终是一组括号 其中包含参数的类型指示符 一个接
  • 如何使用 Grand Central Dispatch 并行化数独求解器?

    作为编程练习 我刚刚编写了一个使用回溯算法的数独求解器 请参阅维基百科 http en wikipedia org wiki Algorithmics of sudoku Example of a brute force Sudoku so
  • python中如何检查变量是否为空?

    我想知道python是否有任何函数 例如php空函数 http php net manual en function empty php 它检查变量是否为空并符合以下条件 an empty string 0 0 as an integer
  • Git 在提交之前存储特定文件

    我不确定我正在寻找的是不是git stash但这就是我想做的 我有为本地使用定制的配置文件 这些文件已经存在于 Git 中 现在 如果我添加新功能 更改其他文件 我想存储我的配置并点击提交 并且仅提交与我的新功能相关的文件 如果我使用 gi
  • ASP.NET Core如何执行Linux shell命令?

    我在 Linux 上有一个 ASP NET Core Web 应用程序 我想执行 shell 命令并从命令中获取结果 有没有办法从 ASP NET Core 应用程序中执行 Linux shell 命令并将值返回到变量中 string Ru
  • 我可以将变量设置为未定义或将未定义作为参数传递吗?

    我对 JavaScript 有点困惑undefined and null values 什么是if testvar 实际上呢 它是否测试undefined and null要不就undefined 一旦定义了变量 我可以将其清除回undef
  • 过滤后的 CollectionView 给出错误的计数

    根据文档 http msdn microsoft com en us library system windows data collectionview count aspx 过滤后的 CollectionView 的 Count 应该只
  • jQuery 将输入类型=文本更改为文本区域

    我有一个隐藏字段 在放置事件之后 它需要转换为 文本区域 This excerpt parent find excerpt attr type textarea excerpt val textarea 产生的 属性无法更改 error 这
  • 如何创建自定义魔法文件数据库

    Unixfile命令使用 神奇 文件数据库来确定文件包含的数据类型 而与文件名或扩展名无关 我需要制作自定义魔法数据库用于测试目的 但我无法找到如何创建一个数据库 You can man magic有关如何创建您自己的魔法文件的说明 然后使
  • 与 shell 通配符和正则表达式的混淆

    发起人为reply https stackoverflow com questions 1320721 postgres regex and nested queries something like unix pipes 1322144
  • 无法将类型“System.Drawing.Image”隐式转换为“System.Drawing.Bitmap”`

    声明了一个位图 private Bitmap img1 null private Bitmap img2 null 选择图像后将被放置打开文件对话框 选定的图像被放置在一个数组中 imgName openFD FileNames 然后按钮1
  • firestore:权限缺失或不足

    我在登录时使用角色 允许读取 写入 if request auth uid null 我获取数据没问题 但是当我注销用户时 我收到错误 缺少权限或权限不足 首先我认为这是因为我没有取消订阅我尝试过的 Observable rxjs oper
  • Android Renderscript Allocation.USAGE_SHARED 崩溃

    我在运行使用渲染脚本的应用程序时发生崩溃 不幸的是 logcat 没有给出任何具体细节 b Bitmap createBitmap ib getWidth ib getHeight ib getConfig Allocation mInAl
  • Prettier 弄乱了 jsx 片段

    function App return lt gt lt Navbar gt lt Users gt gt 按 ctrl 将更改保存到 function App return lt gt lt Navbar gt lt Users gt l
  • 将 Python 解释器历史记录导出到文件?

    很多时候 在实际写入文件之前 我会使用 Python 解释器来检查变量并逐步执行命令 然而到最后 我的解释器中有大约 30 个命令 并且必须将它们复制 粘贴到文件中才能运行 有没有办法可以将 Python 解释器历史记录导出 写入到文件中
  • 在 SwiftUI 中,只有当用户将手指放在屏幕上时,什么手势才能执行代码?

    什么手势只有当用户将手指放在屏幕上时才能执行代码 运行某些代码不应该是原因 手势 的影响 我想要的是当用户将手指放在屏幕上时运行某些代码 如果用户将手指移开 代码就会停止运行 例如 some view unknownGesture runn
  • 将假设中的 ~exists 转换为 forall

    我陷入了假设的境地 exists k k lt n 1 f k f n 2 并希望将其转换为等效的 我希望如此 假设forall k k lt n 1 gt f k lt gt f n 2 这是一个小例子 Require Import Co