消除subst来证明平等

2024-03-09

我试图将 mod-n 计数器表示为间隔的一部分[0, ..., n-1]分为两部分:

data Counter : ℕ → Set where
  cut : (i j : ℕ) → Counter (suc (i + j))

使用它,定义两个关键操作很简单(为简洁起见,省略了一些证明):

_+1 : ∀ {n} → Counter n → Counter n
cut i zero    +1 = subst Counter {!!} (cut zero i)
cut i (suc j) +1 = subst Counter {!!} (cut (suc i) j)

_-1 : ∀ {n} → Counter n → Counter n
cut zero    j -1 = subst Counter {!!} (cut j zero)
cut (suc i) j -1 = subst Counter {!!} (cut i (suc j))

当试图证明这一点时,问题就出现了+1 and -1是倒数。我不断遇到需要消除器的情况substs 介绍,即类似的东西

subst-elim : {A : Set} → {B : A → Set} → {x x′ : A} → {x=x′ : x ≡ x′} → {y : B x} → subst B x=x′ y ≡ y
subst-elim {A} {B} {x} {.x} {refl} = refl

但这结果(在某种程度上)回避了这个问题:类型检查器不接受它,因为subst B x=x' y : B x' and y : B x...


如果您使用 stdlib 中的 Relation.Binary.HeterogeneousEquality,则可以指定 subst-elim 的类型。 然而,我可能只是在 with 或 rewrite 子句中对 x ≠ x′ 的最终证明进行模式匹配,因此您不必制作显式的消除器,因此没有打字问题。

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

消除subst来证明平等 的相关文章

  • Agda:用数字解析字符串

    我正在尝试用 Agda 中的自然数解析字符串 例如 结果stringListTo 1 2 3 应该Just 1 2 3 我当前的代码不太正确 或者无论如何都不太好 但它可以工作 但是它返回类型 Maybe List Maybe 问题是 功能
  • 如何在镜头式单板库中为更高种类的类型实现孔和上下文?

    安德拉斯 科瓦奇提出了这个问题回应之前问题的答案 在镜头式单板库中 用于存储各种类型 gt 基于班级 class Uniplate1 f where uniplate1 Applicative m gt f a gt forall b f
  • GHC 抱怨类型检查器强制执行的非详尽模式

    我有以下代码 LANGUAGE DataKinds GADTs TypeOperators data Vect v a where Nil Vect a Vec a gt Vect v a gt Vect v a instance Eq a
  • 有限的数字如何运作? (依赖类型)

    我对依赖类型语言感兴趣 有限数对我来说似乎非常有用 例如 安全地索引固定大小的数组 但这个定义对我来说并不清楚 Idris 中有限数的数据类型可以如下 Agda 中可能类似 data FiniteNum Natural gt Type wh
  • 为什么我们需要容器?

    作为借口 标题模仿了标题为什么我们需要单子 https stackoverflow com questions 28139259 why do we need monads 有容器 http www sciencedirect com sc
  • GADT - 应用和用处?

    我正在使用 learnyouahaskell 来介绍 GADT 并且我对它们可能的用途很感兴趣 据我了解 它们的主要特点是允许显式类型设置 Such as data Users a where GetUserName Int gt User
  • 什么是累积宇宙和“* : *”?

    在阿格达 有Set n 我认为 Set n将 Haskell 风格的值类型种类层次结构扩展到无限级别 那是 Set 0是正常类型的宇宙 Set 1是正常类型的宇宙 Set 2是正常类型的宇宙 等等 相比之下 伊德里斯拥有所谓的 宇宙累积层次
  • 依赖类型:依赖对类型与不相交联合有何相似之处?

    我一直在研究依赖类型 我了解以下内容 Why 通用量化 https en wikipedia org wiki Universal quantification被表示为依赖函数类型 x A B x means 对全部x类型的A有一个类型的值
  • 如何从范围内的约束族派生类型类实例?

    edit 我又跟进了一个具体问题 https stackoverflow com questions 70088443 how can i use a constraint family thats in scope to prove in
  • 专门构造函数上的模式匹配

    这几天我一直在为一个问题绞尽脑汁 但我的 Agda 技能不是很强 我正在尝试在仅在特定索引处定义的索引数据类型上编写一个函数 这仅适用于数据构造函数的某些专门化 我不知道如何定义这样的函数 我试图将我的问题简化为一个更小的例子 该设置涉及自
  • 使用标准库对 Agda 中的对/列表进行字典顺序排序

    Agda标准库包含一些模块Relation Binary Non StrictLex 目前仅适用于Product and List 我们可以使用这些模块轻松构建一个实例 例如IsStrictTotalOrder对于自然数对 即 open i
  • 如何处理 Agda 不确定是否在 with 语句中生成构造函数的情况?

    我有以下代码 open import Data Nat open import Agda Builtin Char open import Data Maybe digit Maybe digit n with compare n prim
  • AGDA 中极浅嵌入 VHDL 的指南

    对于我的编程语言项目 我正在 agda 中做一个非常浅且简单的 VHDL 数字电路嵌入 目的是写出语法 静态语义 动态语义 然后写一些证明来展示我们对材料的理解 到目前为止我已经编写了以下代码 data Ckt Set where var
  • 如何在 Haskell 中派生 GADT 的数据实例?

    我有一个 GADT 它只与两个不同的参数一起使用 ForwardPossible 和 Used when a forward definition is possible data ForwardPossible ForwardPossib
  • Agda 中的递归方案

    不用说 Haskell 中的标准构造 newtype Fix f Fix getFix f Fix f cata Functor f gt f a gt a gt Fix f gt a cata f f fmap cata f getFix
  • 为什么较新的依赖类型语言没有采用 SSReflect 的方法?

    我在 Coq 的 SSReflect 扩展中发现了两个约定 它们似乎特别有用 但我还没有看到它们在较新的依赖类型语言 Lean Agda Idris 中得到广泛采用 首先 可能的谓词被表示为布尔返回函数而不是归纳定义的数据类型 默认情况下
  • Agda 中实例参数的问题

    我正在尝试遵循 McBride s 的代码如何维持邻居秩序 https personal cis strath ac uk conor mcbride pub Pivotal pdf 并且无法理解为什么 Agda 我正在使用 Agda 2
  • 类 GADT 类型变量的未来角色?

    A 昨天的问题 https stackoverflow com q 41135212 3072788有一个定义HList 来自HList https hackage haskell org package HList 0 4 1 0 doc
  • 在依赖类型的函数式编程语言中,扁平化列表是否更容易?

    在 haskell 中寻找一个可以展平任意深度嵌套列表的函数时 即应用的函数concat递归并在最后一次迭代时停止 使用非嵌套列表 我注意到这需要有一个更灵活的类型系统 因为随着列表深度的变化 输入类型也会变化 确实 有几个 stackov
  • 通过(单子)join 和 fmap 进行终止检查替换

    我正在使用大小类型 并且有一个用于键入术语的替换函数 如果我直接给出定义 则终止检查 但如果我通过 单子 连接和 fmap 对其进行分解 则不会进行终止检查 OPTIONS sized types module Subst where op

随机推荐

  • 通过同一程序集的反射生成代码

    我已经开始涉足 T4 一开始相处得很好 但后来遇到了一个实际上非常明显并且可能无法解决的问题 但也许有一种方法我只是缺乏知道或看到的经验 给定以下课程 public class T4Test CodeActivity protected o
  • 无法连接,因为目标机器主动拒绝 127.0.0.1:2382

    我正在尝试连接 SSAS 引擎 SQL Server Denali 但失败并出现以下错误 无法建立连接 因为目标计算机主动拒绝它 127 0 0 1 2382 SSAS 服务在网络服务帐户下运行 SQL 浏览器服务在本地系统帐户上运行 你运
  • 仅使用 Yocto/bitbake 快速重建设备树?

    因此 每次修改设备树时 我通常会更改自定义配方中的 dts 并重建映像 重建需要很长时间 因为它会重建整个内核 然后需要构建镜像 最后部署到目标设备 我是否缺少任何仅重建设备树的技巧 UPDATE 我已将 g0hl1n 的答案标记为正确答案
  • 面板数据中汇总回归模型的模型预测

    我正在尝试生成一个预测模型 在该模型中 我每年都会进行多次汇总回归 基于前几年 从而允许系数随时间变化 这在提供的示例数据中可能没有意义 但在我的示例中实际上是这样做的 这是我到目前为止的想法 我将代码调整为 plm 包中的可重现示例 数据
  • 不同文化信息之间的日期时间转换

    我想在国家 地区之间创建不同的转换 并且我正在使用 C 我正在尝试将日期时间转换为另一个日期时间 格式为 dd mmm yyyy CultureInfo ci CultureInfo CreateSpecificCulture langua
  • seq2seq 中的 TimeDistributed(Dense) 与 Dense

    鉴于下面的代码 encoder inputs Input shape 16 70 encoder LSTM latent dim return state True encoder outputs state h state c encod
  • 在 Maven 中设置注释处理器生成的源目录

    我正在尝试将使用注释处理器生成源的构建移动到 Maven 我尝试按如下方式配置 maven compiler plugin
  • Angular6 - 读取文本/纯文本的响应正文

    我正在执行注册操作 当用户成功注册时 我会在后端返回他的 ID 例如 105 当注册失败 用户已存在 时 我返回 USER EXISTS 我已经在 Postman 上检查了请求 响应正文是正确的 在这两种情况下 我都会返回 纯文本 文本 但
  • Django 双向ManyToMany - 如何防止在第二个模型上创建表?

    我有两个模型 每个模型都有一个共享的 ManyToMany 使用 db table 字段 但是如何防止syncdb 尝试为第二个模型创建共享表呢 class Model1 models Model othermodels ManyToMan
  • 您可以使用 Spark SQL/Hive/Presto 直接从 Parquet/S3 复制到 Redshift 吗?

    我们有大量的服务器数据存储在S3 很快将在Parquet格式 数据需要进行一些转换 因此它不能直接从 S3 复制 我将使用Spark访问数据 但我想知道是否可以跳过一个步骤并运行查询来提取 转换数据 然后复制它 而不是使用 Spark 操作
  • 如何将一个 xhtml 文档中的 div 部分提取到另一个 xhtml 文档中

    我正在尝试使用 xslt 将一个 xhtml 文档中的 div 部分提取到另一个 xhtml 文档中 然而 我没有成功 相反 xslt 转换产生了有线输出 假设要转换以下xhtml文档 some blabla div div class t
  • 无损分解与依赖关系保留

    其中任何一个都暗示另一个吗 我的逻辑是 如果保留所有依赖关系 则不会丢失信息 同样 如果分解是无损的 则一定不会违反功能依赖关系 因此本质上 依赖关系保存是确保分解无损的一种方法 我很难接受 否认它 那么这两者是否可以相互保证 或者是否存在
  • 如何从 URL 中排除单词或字符串 - 正则表达式

    我使用以下正则表达式来匹配 PHP 中的所有类型的 URL 效果非常好 reg exUrl b w www s lt gt w d punct s s 但现在 我想排除 Youtube youtu be 和 Vimeo URL 经过研究后我
  • 如何在实体框架中获取 SQL Server 序列的下一个值?

    我想使用 SQL Serversequence objects http msdn microsoft com en IN library ff878091 aspx在实体框架中显示编号规则 然后将其保存到数据库中 在当前场景中 我正在通过
  • 使用 Hotmail smtp 在 PHP 中发送邮件

    我正在尝试使用 Hotmail Smtp 以 PHP 发送邮件 但我收到如下错误 2014 03 13 06 59 01 CLIENT gt SERVER EHLO site com 2014 03 13 06 59 01 CLIENT g
  • 将数学表达式与正则表达式匹配?

    例如 这些是有效的数学表达式 a b c a b 1 50 apple 0 5 boy 1 这些是无效的数学表达式 a b 1 5 0 two consecutive signs two consecutive operators inva
  • 如何使元素对点击透明但仍然可见?

    我有兴趣在 iframe 之类的东西上放置一个嵌入框阴影 虽然将 div 覆盖在 iframe 上的策略可以提供预期的视觉显示 但 div 随后会阻止 iframe 本身上的点击 Sample http jsfiddle net YqXPg
  • GroupBy 列标题前缀上的列

    我有一个数据框 其列名以一组前缀列表开头 我想获取数据框中按以相同前缀开头的列分组的值的总和 df pd DataFrame 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 columns abc abd wxy wxz p
  • 无窗托盘图标应用程序

    好吧 我是 WPF 的新手 但我必须使用 wpf 开发标题中的内容 但不依赖 MVVM 我已经遵循了这个 仅具有托盘图标的 WPF 应用程序 https stackoverflow com questions 1472633 wpf app
  • 消除subst来证明平等

    我试图将 mod n 计数器表示为间隔的一部分 0 n 1 分为两部分 data Counter Set where cut i j Counter suc i j 使用它 定义两个关键操作很简单 为简洁起见 省略了一些证明 1 n Cou