如何阅读 ex_intro 的定义?

2023-11-23

我正在阅读Mike Nahas 的 Coq 入门教程,其中说:

“ex_intro”的参数是:

  • 谓词
  • 证人
  • 与证人一起提出的谓词的证明

我在看定义:

Inductive ex (A:Type) (P:A -> Prop) : Prop :=
  ex_intro : forall x:A, P x -> ex (A:=A) P.

我在解析它时遇到困难。表达式的哪些部分forall x:A, P x -> ex (A:=A) P对应于这三个论点(谓词、证人和证明)?


要理解 Mike 的意思,最好启动 Coq 解释器并查询ex_intro:

Check ex_intro.

然后您应该看到:

ex_intro
     : forall (A : Type) (P : A -> Prop) (x : A), P x -> exists x, P x

这说的是ex_intro不仅需要 3 个参数,还需要 4 个参数:

  • 您要量化的事物的类型,A;
  • 谓词P : A -> Prop;
  • 证人x : A; and
  • 的证明P x,断言x是有效证人。

如果你把所有这些东西结合起来,你就会得到一个证明exists x : A, P x。例如,@ex_intro nat (fun n => n = 3) 3 eq_refl是一个证明exists n, n = 3.

因此,实际类型之间的差异ex_intro您在定义中读到的内容是,前者包含标头中给出的所有参数 - 在本例中,A and P.

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

如何阅读 ex_intro 的定义? 的相关文章

  • 对 Coq 导入感到困惑

    有人可以告诉我之间的区别吗 Require Name Require Import Name Import Name Require 加载外部库 通常来自标准库或user contribs 文件夹 Import 导入模块中的名称 例如 如果
  • 当目标是类型时,为什么 Coq 不允许反转、析构等?

    When refine正在运行一个程序 我试图通过以下方式结束证明inversion on a False假设当目标是Type 这是我尝试做的证明的简化版本 Lemma strange1 forall T Type 0 gt 0 gt T
  • 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

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

    我正在编写一种玩具语言 其中 AST 中的节点可以有任意数量的子节点 Num has 0 Arrow有 2 个 等等 您可以致电这些接线员 此外 AST 中可能只有一个节点被 聚焦 我们对数据类型进行索引Z如果它有焦点 或者H如果没有 我需
  • Coq - 在 if ... then ... else 中使用 Prop (True | False)

    我对 Coq 有点陌生 我正在尝试实现插入排序的通用版本 我正在实现一个以比较器作为参数的模块 该 Comparator 实现了比较运算符 如 is eq is le is neq 等 在插入排序中 为了插入 我必须比较输入列表中的两个元素
  • 引入先前证明的定理作为假设

    假设我已经在coq中证明了某个定理 稍后我想将其作为假设引入到另一个定理的证明中 有没有一种简洁的方法来做到这一点 当我想做一些诸如案例证明之类的事情时 我通常会出现这种需要 我发现做到这一点的一种方法是assert陈述定理 然后立即证明它
  • Coq 无法在 Z 上计算有根据的函数,但它可以在 nat 上运行

    我正在 为我自己 写一篇关于如何在 Coq 中进行有根据的递归的解释 参见 Coq Art 书 第 15 2 章 首先我做了一个基于的示例函数nat效果很好 但后来我又做了一次Z 当我使用Compute来评估它 它并没有一直降低到Z价值 为
  • 如何有效地查找 Coq 中定义标识符的位置?

    在大多数 IDE 或文本编辑器中 您可以右键单击某个术语 它会将您带到定义该术语的文件 CoqIDE好像没有这个 所以我一直在做coqdoc myfile v html 然后转到生成的 HTML 文档 但该文件中唯一可点击的术语是针对 Co
  • 证明匹配语句

    为了解决一个练习 我有以下代表整数的定义 Inductive bin Type Zero bin Twice bin gt bin TwiceOne bin gt bin 这个想法是 Twice x is 2 x 两次一x is 2 x 1
  • 如何在 Coq 中切换当前目标?

    是否可以切换当前目标或子目标来在 Coq 中进行证明 例如 我有一个这样的目标 来自 eexists 1 1 s gt 0 r1 r1 s1 s r3 r3 s2 我想做的是split并首先证明正确的连接 我认为这将给出存在变量的值 s 并
  • 如何在 Coq 简化过程中应用一次函数?

    据我了解 Coq 中的函数调用是不透明的 有时 我需要使用unfold应用它然后fold将函数定义 主体恢复为其名称 这通常很乏味 我的问题是 是否有更简单的方法来应用函数调用的特定实例 作为一个最小的例子 对于一个列表l 证明右附加 没有
  • Coq 中的“错误:宇宙不一致”是什么意思?

    我正在努力通过软件基础 http www cis upenn edu bcpierce sf current 目前正在做教堂数字的练习 这是自然数的类型签名 Definition nat forall X Type X gt X gt X
  • Coq QArith 除以零就是零,为什么?

    我注意到在 Coq 的有理数定义中 零的倒数被定义为零 通常 除以零是没有明确定义 合法 允许的 Require Import QArith Lemma inv zero is zero 0 0 Proof unfold Qeq refle
  • Coq 中 MSet 的使用示例

    MSets https coq inria fr library Coq MSets MSets html似乎是 OCaml 式有限集的最佳选择 可悲的是 我找不到示例用途 如何定义一个空的MSet或单身人士MSet 我怎样才能结合两个MS
  • 我如何编写行为类似于“破坏...作为”的策略?

    在coq中 destruct https coq inria fr distrib current refman Reference Manual010 html hevea tactic65策略有一个接受 连接析取引入模式 的变体 该模式
  • 如何处理 Coq 中 Program Fixpoint 生成的非常大的项?

    我试图在 Coq 中定义并证明正确的函数 该函数可以有效地比较两个排序列表 由于它并不总是在结构较小的项上递归 第一个或第二个列表较小 Fixpoint不会接受它 所以我尝试使用Program Fixpoint反而 当尝试使用策略证明函数的
  • 在 coq 的 then 部分中使用 if expression = true 的证明

    对于所有 1 Require Import ZArith Znumtheory Local Open Scope Z scope Require Coq Program Tactics Require Coq Program Wf Lemm
  • 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 上
  • 证明依赖类型实例之间的相等性

    当尝试形式化对应于代数结构的类 例如所有幺半群的类 时 自然的设计是创建一个类型monoid a Type 作为对所有必需字段进行建模的产品类型 元素e a 一个操作员app a gt a gt a 证明幺半群定律得到满足等 在此过程中 我

随机推荐

  • 当需要相同类型的多个实例时,使用 Unity 进行 DI

    我需要这方面的帮助 我使用 Unity 作为容器 并且想将同一类型的两个不同实例注入到我的构造函数中 class Example Example IQueue receiveQueue IQueue sendQueue IQueue 是在我
  • OrderedDict 在 Python 3.7 中会变得多余吗?

    来自Python 3 7 变更日志 插入顺序保存性质dict物体已宣布成为 Python 语言规范的正式部分 这是否意味着OrderedDict会变得多余吗 我能想到的唯一用途是保持与旧版本 Python 的向后兼容性 旧版本的 Pytho
  • Boost::Asio,SSL 连接问题

    我已经尝试解决我的问题几天了 但就是无法解决 我尝试使用 Boost Asio 库和 OpenSSL 进行 SSL 连接 有一个示例代码 如何做到这一点 http www boost org doc libs 1 55 0 doc html
  • 如何使用selenium获取特定元素的html源?

    我正在查看的页面包含 div p text 1 p h1 text 2 h1 text 3 p text 4 p div 我想获取 div 中的所有文本 除了
  • 阿特金分段筛可能吗?

    我知道可以实现埃拉托斯特尼筛法 以便它连续找到素数而没有上限 分段筛 我的问题是 阿特金 伯恩斯坦筛法可以用同样的方式实现吗 相关问题 C 如何使阿特金筛增量 然而相关问题只有1个答案 即 对于所有筛子都是不可能的 这显然是不正确的 Atk
  • 文件 InfoPlist.strings 无法打开

    谁能帮帮我吗 我应该如何修复错误 无法打开文件 InfoPlist strings 因为没有这样的文件 它是在我从 SVN 更新我的项目后出现的 实际上我的项目中有 InfoPlist strings 我不知道为什么 Xcode 没有看到它
  • 写入现有 Excel 文件

    package jexcel jxl nimit import java awt Label import java io File import java io IOException import jxl Cell import jxl
  • 删除数据表中的主键

    有没有办法从数据表中删除主键或者有没有办法先删除 PK 的约束 然后删除列本身 Thanks UPDATED dtTable Columns Add new System Data DataColumn PRIMARY KEY typeof
  • 通过伪经典实例化掌握原型继承(JavaScript)

    我正在尝试通过 JavaScript 使用继承来通过测试套件 下面是我到目前为止的代码片段 var Infant function this age 0 this color pink this food milk Infant proto
  • 将双精度型转换为 int

    转换的最佳方法是什么double to an int 应该使用演员阵容吗 如果您想要默认的向零截断行为 则可以使用强制转换 或者 您可能想使用Math Ceiling Math Round Math Floor等等 尽管之后你仍然需要演员阵
  • 将字符串转换为日期时间(使用 SSIS)

    我想将值 5 27 2013 16 42 37 490000 从平面文件 DT STR 读取 插入到 SQL Server 表的列 日期时间 中 如果我尝试在派生列中使用 DT DBDATE 或 DT DBTIMESTAMP 对其进行强制转
  • 忽略 Xcode4 中的“属性不可用”警告

    我在工具栏项中使用了很多 自定义标识符 这在 Xcode4 中很好 但在构建项目时它给了我一堆警告 属性不可用 Interface Builder 3 2 之前版本中的自定义标识符 有没有办法在Xcode4中忽略这些警告 当我搜索 真正的
  • Chart.js 中饼图的点击事件

    我有一个关于 Chart js 的问题 我使用提供的文档绘制了多个饼图 我想知道单击其中一个图表的某个切片是否可以根据该切片的值进行 ajax 调用 例如 如果这是我的data var data value 300 color F7464A
  • 学习MFC编程的先决条件[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我懂一点 C 和 C 我现在正在处理的项目是大量的 MFC 编程 有经验的人可以告诉我学习MFC的前提条件吗 另外 什么是最好的学习来源 有什么特别
  • 堆插入的 O(1) 平均情况复杂度的论证

    索赔要求二进制堆的维基百科页面插入是 O logn 在最坏的情况下 但平均 O 1 所需的操作数量仅取决于新元素必须上升到满足堆性质的层数 因此插入操作的最坏情况时间复杂度为 O logn 但平均情况复杂度为 O 1 The 链接页面试图证
  • 基数树/patricia trie 中的前缀搜索

    我目前正在实现一个基数树 帕特里夏特里 无论你想怎么称呼它 我想用它在功能严重不足的硬件上的字典中进行前缀搜索 它应该或多或少像自动完成一样工作 即 e 显示与键入的前缀匹配的单词列表 我的实现是基于关于这篇文章 但其中的代码不包括前缀搜索
  • kotlin合约的目的是什么

    正在阅读 apply 函数代码源并发现 contract callsInPlace block InvocationKind EXACTLY ONCE 并且合约有一个空体 实验性的 ContractsDsl ExperimentalCont
  • “_csv.writer”对象没有属性“write”

    我不确定这里出了什么问题 我有一个想要过滤的 csv 文件 我想删除以 开头的所有行以及第三列是字符串 chrM 的所有行 我基本上将我的代码设置为类似于这里的答案 类型错误 需要一个字符缓冲区对象 但我收到错误 import re imp
  • 为 NSNotificationCenter = Swift deinit() 调用 .removeObserver 的正确位置?

    我读过很多关于为 NSNotificationCenter 调用 removeObserver 的正确位置的建议 因为 viewDidUnload 不是一个选项 我只是想知道 Swift 中新的 deinit 是否是一个不错的选择 nick
  • 如何阅读 ex_intro 的定义?

    我正在阅读Mike Nahas 的 Coq 入门教程 其中说 ex intro 的参数是 谓词 证人 与证人一起提出的谓词的证明 我在看定义 Inductive ex A Type P A gt Prop Prop ex intro for