Coq:定义子类型

2023-12-25

我有一个类型,比如说

Inductive Tt := a | b | c.

定义它的子类型的最简单和/或最好的方法是什么?假设我希望子类型仅包含构造函数a and b。一种方法是对二元素类型进行参数化,例如布尔:

Definition filt (x:bool): Tt := match x with
  | true => a
  | false => b end.
Check filt true: Tt.

这是可行的,但如果您的表达式具有以这种方式定义的多个(可能相互依赖的)子类型,则非常尴尬。此外,它只能工作一半,因为没有定义子类型。为此,我必须另外定义例如

Notation _Tt := ltac: (let T := type of (forall {x:bool}, filt x) in exact T).
Fail Check a: _Tt. (*The term "filt x" has type "Tt" which should be Set, Prop or Type.*)

在这种情况下也不起作用。另一种方法是使用类型类,例如

Class s_Tt: Type := s: Tt.
Instance a':s_Tt := a.
Instance b':s_Tt := b.
Check a: s_Tt.
Check b': Tt.
Check c: s_Tt.

如您所见,这是行不通的:c仍然在s_Tt(即使类型推断应该在实例中工作得更好)。最后来个强制

Parameter c0:> bool -> Tt.
Notation a_ := true.
Notation b_ := false.
Notation Tt_ := bool.
Check a_: Tt_.
Check b_: Tt.
Fail Check a: Tt_.

有效,但是,当然,a and b不能用作已定义子类型的术语(这总是很方便,有时也是必要的)

我认为子集类型不应该是这个问题的答案(子集类型的术语永远不是其(适当的)超集的术语)。也许有更好的方法来使用类型类来达到此目的?


None

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

Coq:定义子类型 的相关文章

  • 检查列表是否包含 R 中的另一个列表

    我想检查一个列表 或等效的向量 是否包含在另一个列表中 而不是它是否是其子集 让我们假设我们有 r lt c 1 1 s lt c 5 2 t lt c 1 2 5 该函数的行为应如下 is contained r t 1 FALSE as
  • R - 根据两列识别并删除重复行

    我有一些数据看起来像这样 Course ID Text ID 33 17 33 17 58 17 5 22 8 22 42 25 42 25 17 26 17 26 35 39 51 39 由于没有编程背景 我发现很难清楚地表达我的问题 但
  • 将 MongoDB 文档映射到具有类型但没有嵌入文档的案例类

    Subset https github com osinka subset看起来像一个有趣的 薄的 MongoDB 包装器 在给出的示例之一中 有推文和用户 然而 User is a 子文档 of Tweet 在经典 SQL 中 这将被规范
  • 使用两个标准对 R 中的数据帧进行子集化,其中之一是正则表达式

    我有一个类似这样的数据集 col a col b col c 1 abc boy 1 2 abc boy 2 1 abc girl 1 2 abc girl 2 我只需要根据col b and col c 然后更改中的值col c 就像这样
  • R xts 对象将 xts 对象子集为特定小时内多天的日内数据

    xts 对象中有没有办法执行与下面相同的操作 但对于具有多天日内数据的 xts 对象 下面的工作原理就像一个时钟 但只显示一天的数据 如果我从 22 号到 26 号通过 xts 它就不会 似乎无法一次性完成多天 xts 中的日内数据子集化
  • Coq案例分析和函数返回子集类型的重写

    我正在做一个关于使用子集类型编写经过认证的函数的简单练习 想法是先写一个前驱函数 pred forall n n nat n gt 0 m nat S m n 1 然后使用这个定义给定一个函数 pred2 forall n n nat n
  • 在 R 中:带有向量变量的子集或 dplyr::filter

    df lt data frame a LETTERS 1 4 b rnorm 4 vals lt c B D 我可以过滤 子集df值在val with dplyr filter df a in vals subset df a in val
  • 在 R 中绘制顺序(时间序列)数据的子集

    我有一个类似于下面的数据框 称为 df 我想绘制这些数据的子集 例如May 2012 to June 2014 我一直在使用绘图函数来绘制整个数据框 但是 当我将其分成绘图的子集时 无论我选择数据的哪一部分 我都会得到相同的绘图 Jan F
  • R:循环数据框,根据日期提取数据子集

    我有一个大型数据框 其中包含如下所示的数据 date w x y z region 1 2012 01 21 43 12 3 NORTH 2 2012 02 32 54 21 16 NORTH 3 2012 03 14 32 65 32 N
  • 我可以将 Coq 证明提取为 Haskell 函数吗?

    自从学了一点 Coq 以来 我就想学着写一个所谓的除法算法的 Coq 证明 它实际上是一个逻辑命题 forall n m nat exists q nat exists r nat n q m r 我最近利用我学到的知识完成了这项任务软件基
  • H2O R 中的子集化

    我有一个 h2o 对象 子集的标准 R sub1 lt trans trans Type 1 我在水中也尝试过同样的方法 它不工作 sub1 lt trans trans Type 1 我也尝试过 sub1 lt h2o exec tran
  • Oracle 中的 MD5 (DBMS_OBFUSCATION_TOOLKIT.MD5)

    我正在尝试编写一个函数 从我到处收集的位中获取 MD5 哈希值 我想获得哈希的小写十六进制表示 到目前为止我有这个 CREATE OR REPLACE FUNCTION MD5 CADENA IN VARCHAR2 RETURN DBMS
  • 如何在java中从大小为n的集合中迭代生成k个元素子集?

    我正在研究一个难题 涉及分析所有大小为 k 的子集并找出哪个是最佳的 我编写了一个解决方案 该解决方案在子集数量较小时有效 但对于较大的问题 它会耗尽内存 现在我正在尝试将用 python 编写的迭代函数转换为 java 以便我可以在创建每
  • Coq:多个构造函数的单一表示法

    是否可以在 Coq 中为多个构造函数定义单一符号 如果构造函数的参数类型不同 则可以从中推断出它们 一个最小的 非 工作示例 Inductive A Set a b c C gt A d D gt A with C Set c1 c2 wi
  • 在依赖类型的函数式编程语言中,扁平化列表是否更容易?

    在 haskell 中寻找一个可以展平任意深度嵌套列表的函数时 即应用的函数concat递归并在最后一次迭代时停止 使用非嵌套列表 我注意到这需要有一个更灵活的类型系统 因为随着列表深度的变化 输入类型也会变化 确实 有几个 stackov
  • HTTPbis - bis 是什么意思?

    我经常看到 bis 附加到协议版本 例如 v 34bis 或 httpbis bis 是什么意思或代表什么 我认识的一位电信工程师认为它可能起源于法国 正如其他人已经说过的 bis 来自 两次 或 重复 http oxforddiction
  • 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 上
  • R 如何按行值进行分组、拆分或子集

    这是上一个问题的延续R 如何按行值分组 分裂 https stackoverflow com questions 64602607 r how to group by row value split 输入数据帧的变化是 id str c x
  • 教 coq 检查终止

    Coq 与许多其他参数不同 它接受一个可选的显式参数 该参数可用于指示定点定义的递减结构 根据 Gallina 规范 1 3 4 Fixpoint ident params struct ident0 type0 term0 定义语法 但从
  • 序列和与 GCD

    大约一个月前 我在编程挑战中遇到了这个问题 但社论尚未发布 所以我在这里问 有一个大小为 N 的数组 A 求 A 的 K 个长度子序列的总和 GCD Example 如果 A 1 2 3 且 K 2 1 2 3 总和 1 GCD 3 1 3

随机推荐

  • 如何在数据库中保存标签(关键字)?

    我想使用 php 和 mysql 创建一个简单的标签系统 以便用户可以通过表单添加一些标签 我的问题是我应该将标签保存为单个数据库列中的数组吗 例如 tag1 tag2 tag3 或者我应该在数据库表中有单独的列 我应该在每列中保存每个标签
  • PowerShell 按嵌套字段选择和分组

    我有以下对象结构 resources Array resource PSCustomObject 名称 字符串 Tags PSCustomObject 所有者 字符串 more 所以我可以做 resources 0 Tags Owner并获
  • 在 iOS 中使用 AVCapture 捕获视频时进行缩放

    我正在使用 AVCapture 捕获视频并保存它 但我需要提供缩放选项 例如捏合缩放或通过缩放按钮 此外 视频的保存方式应与显示的方式完全相同 我的意思是当放大时 应以缩放的方式保存 如有任何帮助 链接将不胜感激 我设置 AVCapture
  • perl 正则表达式中的 OR 条件

    我正在尝试编写一个脚本 通过 Perl 中的正则表达式执行 OR 函数 我编写了一段代码 其中如果字符串包含 D 或 E 后跟 P 则应该打印 D或E后跟P 否则 D或E后不跟P 假设如果我给出 s ABCDEABCDEPABCDEAB 它
  • SameSite Cookie 标头和 Websocket 不起作用

    在我们设置 SameSite None 之前 我们的游戏无法在任何第 3 方网站上运行 正如这段视频中所示 https youtu be AYCvCrZyDk https youtu be AYCvCrZyDk 网站已加载 但网络套接字无法
  • OCaml 中的惰性“n 选择 k”

    作为枚举集合的更大问题的一部分 我需要编写一个 OCaml 函数 choose 它接受一个列表并输出为由该列表的元素组成的所有可能的大小为 k 的序列的列表 不重复序列 这可以可以通过排列相互获得 它们在最终列表中的顺序无关 例如 choo
  • 如何在reactjs中使用formData添加多个图像

    我是 Reactjs 新手 我正在使用环回存储连接器来存储图像 文件 现在我的问题是使用上传多个文件formData my code constructor props super props this state car photo Ca
  • 按项目分组时,测试显示在测试资源管理器的“外部”类别下

    Whenever I try to run tests on Test Explorer from Visual Studio 2012 SOME test are being categorized as External even th
  • 在两个数字和一个稀有数字之间生成随机数

    我可以使用这个在c中生成两个数字之间的随机数 arc4random high low 1 low 那么现在我的要求是 我想让一个数字变得稀有 这意味着如果 高 5 低 1 稀有 3 比 3 出现的次数比 1 2 4 和 5 少得多 Than
  • #1062 - 密钥 1 的重复条目“1” - 未找到重复条目

    因此 当尝试向字段添加自动增量时 会出现 1062 Duplicate entry 1 for key 1 我尝试删除主键并重新添加它 效果很好 我认为如果有重复项就不会 但是当我尝试向该字段添加自动增量时 它会抛出错误 它为我提供了一个运
  • 在bash脚本中使用Linux命令的正确方法

    就其路径而言 在 bash 脚本中使用 Linux 命令的最佳和最正确的方法是什么 仅使用正确吗ip addr show 依赖于 shell 路径 PATH https pubs opengroup org onlinepubs 96999
  • glMultiDrawIndirect 和 DrawElementsIndirectCommands 不渲染所有对象

    我似乎正在使用glMultiDraw间接 MDI 和 或绘制元素间接命令 DEIC 不正确 因为我无法正确渲染所有对象 该方法尝试对相似的对象和纹理重用绘制命令 实例化 ish 在所有位置绘制所有对象 调试 方法仅对每个对象 两个三角形 使
  • Javascript提示并提醒输入一个数字,它会循环,你将输入数字以获得它的平均值

    我有下面带有循环的 javascript 代码 但我无法得到它的平均值 我不确定我的代码有什么问题 就像第一个提示你输入一个数字 它会循环 你输入数字 比如你输入了多少 你会得到所有数字的总和 完成后得到它的平均值 这是我的代码 函数 sh
  • 使用 nginx、letsencrypt 和 uwsgi 配置时无法获得安全连接

    我正在努力解决无法通过安全连接获取 Flask 应用程序的问题 每当我打开网站时 都会看到一个黄色感叹号 表示我的连接不安全 我看过所有教程 但似乎不明白为什么会发生这种情况 有人可以帮助我吗 下面是配置 UWSGI命令 screen uw
  • 如何处理使用Android MediaRecorder录制的文件

    我正在使用 Android 网站上的以下示例进行音频录制 http developer android com guide topics media audio capture html http developer android com
  • 如何在标准 Web 表单 .Net 中返回 JSON 对象

    目标是调用一个执行该操作的方法 然后返回一个 JSON 对象 我是 JSON 新手 我有一个default aspx 其中包含以下代码 现在我想要 Default aspx cs 中的普通方法在此处的单击事件上运行 day click fu
  • OpenCV houghLinesP 参数

    我很难在 Python 中使用 HoughLinesP 和 OpenCV 找到该图像中棋盘上的线 为了理解 HoughLinesP 的参数 我提出了以下代码 import numpy as np import cv2 from matplo
  • 使用四开版制作双面漂亮的 PDF

    免责声明 我借用了最多的代码使用四开本制作漂亮的 PDF https nrennie rbind io blog making pretty pdf quarto 我的代码可以正常工作classoption oneside 但有问题clas
  • 如何在 Couchbase 中捕获保存或更新事件

    我希望能够在 Couchbase 中更新或创建文档时进行一些数据操作 文档可以通过 Sync Gateway 或我们自己的代码 从 http 服务流式传输数据 到达我们的数据库 如果有一个地方可以拦截所有更新 那就太好了 我们正在针对这些数
  • Coq:定义子类型

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