如何阅读 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:变量参数列表上的 Ltac 定义?

    在尝试创建循环可变长度参数列表的 Ltac 定义时 我在 Coq 8 4pl2 上遇到了以下意外行为 谁能给我解释一下吗 Ltac ltac loop X match X with 0 gt idtac done gt fun Y gt i
  • 使用由明确定义的归纳定义的递归函数进行计算

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

    我有一个用三个构造函数构建的归纳集 Inductive MF Set D MF cn MF gt MF gt MF dn Z gt MF gt MF 我想以某种方式定义一个新的归纳集 B 使得 B 是 MF 的子集 仅包含从 D 和 dn
  • 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 但我可以使用哪种
  • 类型参数和索引之间的区别?

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

    我正在构建一个递归函数match在清单上l 在里面cons分支我需要使用以下信息l cons a l 为了证明递归函数终止 但是 当我使用match l信息丢失 我该如何使用match保留信息 这是函数 drop and drop lemm
  • 用约翰·梅杰的等式重写

    约翰 梅杰的等式带有以下重写引理 Check JMeq ind r JMeq ind r forall A Type x A P A gt Prop P x gt forall y A JMeq y x gt P y 很容易将其概括为 Le
  • 引入先前证明的定理作为假设

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

    是否可以切换当前目标或子目标来在 Coq 中进行证明 例如 我有一个这样的目标 来自 eexists 1 1 s gt 0 r1 r1 s1 s r3 r3 s2 我想做的是split并首先证明正确的连接 我认为这将给出存在变量的值 s 并
  • 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
  • 依赖类型的 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
  • 如何一步步检查 Coq 中更复杂的策略的作用?

    我试图经历那些著名的和精彩的软件基础书籍 https softwarefoundations cis upenn edu lf current Basics html lab30但我举了一个例子simpl and reflexivity 只
  • 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 中的案例分析证明

    我试图证明关于以下函数的命题 Program Fixpoint division m nat n nat measure m nat match lt nat 0 n with false gt 0 true gt match leq na
  • Coq 中 MSet 的使用示例

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

    我正在尝试实现一个函数 该函数可以简单地计算包中某些 nat 的出现次数 只是列表的同义词 这就是我想做的 但它不起作用 Require Import Coq Lists List Import ListNotations Definiti
  • 为什么coq互感类型必须具有相同的参数?

    下列的亚瑟的建议 https stackoverflow com a 17304209 403875 我改变了我的Fixpoint相互关系Inductive这种关系 建立 游戏之间的不同比较 而不是 深入研究 但现在我收到一条全新的错误消息
  • 没有可判定的相等性或排除中间值的鸽巢证明

    在软件基础中IndProp v https softwarefoundations cis upenn edu lf current IndProp html lab244一个人被要求证明鸽巢原理 并且可以使用排除中间 但有人提到这并不是绝

随机推荐

  • 当需要相同类型的多个实例时,使用 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