理解 `k : Nat ** 5 * k = n` 签名

2024-01-20

以下函数编译:

onlyModByFive : (n : Nat) -> (k : Nat ** 5 * k = n) -> Nat
onlyModByFive n k = 100

但有什么作用k以其代表Nat ** 5 * k = n syntax?

另外,我该如何称呼它?这是我尝试过的,但我不明白输出。

*Test> onlyModByFive 5 5
When checking an application of function Main.onlyModByFive:
        (k : Nat ** plus k (plus k (plus k (plus k (plus k 0)))) = 5) is not a
        numeric type

答案来源-https://groups.google.com/d/msg/idris-lang/ZPi9wCd95FY/eo3tRijGAAAJ https://groups.google.com/d/msg/idris-lang/ZPi9wCd95FY/eo3tRijGAAAJ


(k : Nat) ** (5 * k = n)是一个依赖对,由以下组成

  • 第一个元素k : Nat
  • 第二个元素prf : 5 * k = n

换句话说,这是一种存在主义类型,它说“存在一些k : Nat这样5 * k = n“。为了具有建设性,你必须给出这样的k并证明它确实满足5 * k = n.

在你的例子中,如果你部分申请onlyModByFive to 5,你会得到某种类型的东西

onlyModModByFive 5 : ((k : Nat) ** (5 * k = 5)) -> Nat

所以第二个参数必须是类型(k : Nat) ** (5 * k = 5)。只有一种选择k我们可以在这里通过将其设置为1,并证明5 * 1 = 5:

foo : Nat
foo = onlyModByFive 5 (1 ** Refl)

这有效是因为5 * 1减少到5,所以我们必须证明5 = 5,这可以通过使用轻松完成Refl : a = a直接(统一a ~ 5).

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

理解 `k : Nat ** 5 * k = n` 签名 的相关文章

  • scala - 泛型中的任何与下划线

    Scala 中以下泛型定义有何不同 class Foo T lt List and class Bar T lt List Any 我的直觉告诉我它们大致相同 但后者更明确 我发现前者可以编译但后者不能编译的情况 但无法指出确切的差异 Th
  • 我可以仅使用类型而不是具体变量来获取 Rust 数组的长度吗?

    我想将以下 C 代码重写为 Rust using storage array
  • 如何在 Idris 中表达范围有效性?

    我正在尝试在 Idris 中构建一个简单的调查表单 目前正在努力验证用户输入 该输入以字符串形式出现 所提出问题的类型 目前我有以下几种类型 data Question Type where QCM numOptions Nat gt qu
  • 存在类型如何与路径依赖类型重叠?

    起始 Scala 3 存在类型已dropped http dotty epfl ch docs reference dropped features existential types html原因之一如下 存在类型在很大程度上与路径依赖类
  • 为什么我们需要容器?

    作为借口 标题模仿了标题为什么我们需要单子 https stackoverflow com questions 28139259 why do we need monads 有容器 http www sciencedirect com sc
  • F# 类型提供程序相关的嵌套类型

    我正在尝试构建一个嵌套的 TypeProviderProvidedProperty根据父级的类型值生成 我想要的结果如下 r bin Debug library dll open Library TypeProviders type sdm
  • 推断类型相等的 if 和 else 的约束

    我正在尝试填补以下代码片段中的漏洞 import Data Proxy import GHC TypeLits import Data Type Equality import Data Type Bool import Unsafe Co
  • 异常类型和数据构造函数

    我不知道我怎么没有注意到这一点 但是数据构造函数和函数定义都不能使用除 和它的变种 gt 等 由于 gt 的友善签名 即使在 XPolyKinds 这是我尝试过的代码 LANGUAGE DataKinds LANGUAGE KindSign
  • Haskell 中的单例类型

    作为对各种依赖类型形式化技术进行调查的一部分 我遇到了一篇论文 提倡使用单例类型 只有一个居民的类型 作为支持依赖类型编程的一种方式 根据此消息来源 在 Haskell 中 运行时值和编译时类型之间存在分离 由于引入的类型 值同构 在使用单
  • 使用异质等式 =

    到目前为止我所拥有的是 module Foo postulate P P postulate NP NP complexityProof P NP complexityProof complexityProof rhs 但在尝试加载文件时
  • 由 Scala 宏生成时,依赖类型似乎“不起作用”

    为这个挥手的标题道歉 我不完全确定如何简洁地表达这个问题 因为我以前从未遇到过这样的事情 背景资料 我有以下特征 其中类型U是为了举行无形可扩展记录 https github com milessabin shapeless wiki Fe
  • 什么是依赖类型?

    有人可以向我解释依赖类型吗 我对 Haskell Cayenne Epigram 或其他函数式语言缺乏经验 因此您可以使用的术语越简单 我就越感激 考虑一下 在所有像样的编程语言中 您都可以编写函数 例如 def f arg result
  • 如何构建具有依赖类型长度的列表?

    将我的脚趾浸入依赖类型的水域中 我对规范的 具有静态类型长度的列表 示例进行了破解 LANGUAGE DataKinds GADTs KindSignatures a kind declaration data Nat Z S Nat da
  • 为什么较新的依赖类型语言没有采用 SSReflect 的方法?

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

    我试图理解归纳类型 精益中的定理证明 第 7 章 https leanprover github io theorem proving in lean 07 Inductive Types html 我给自己设定了一个任务 证明自然数的后继
  • 映射存在类型列表

    我有一个要映射的存在类型对象的列表 像这样的东西 sealed abstract class IntBox val v Int case object IB1 extends IntBox 1 case object IB2 extends
  • 如何在Scala中表达这个类型?存在类型类(即隐式)限制吗?

    我正在使用 Play 框架的 JSON 库 它使用类型类来实现Json toJson功能 http www playframework org documentation api 2 0 4 scala index html play ap
  • 伊德里斯中的快速排序

    我正在学习 Idris 我想我会尝试为 Vect 类型实现快速排序 但我在使用实用方法时遇到了困难 该方法应该给定一个主元元素和一个向量 将向量分成两部分 一个元素的元素 主元 另一个元素的元素 gt 主元 这对于列表来说很简单 split
  • Idris - 自定义相关数据类型上的映射函数失败

    我对 idris 和依赖类型相对较新 遇到了以下问题 我创建了一个类似于向量的自定义数据类型 infixr 1 data TupleVect Nat gt Nat gt Type gt Type where Empty TupleVect
  • Haskell 单例:我们可以通过 SNat 获得什么

    我正在尝试使用 Haskell 单例 在论文中使用单例进行依赖类型编程 http cs brynmawr edu rae papers 2012 singletons paper pdf并在他的博客文章中单例 v0 9 发布 https t

随机推荐

  • Java 问题:MAC 操作系统中的内存和 CPU 使用情况

    我正在开发适用于 MAC 和 Windows 的 javaFx 应用程序 我发现与 Windows 相比 该应用程序在 MAC 中使用了极大的内存和 cpu 使用率 当我在 Windows 任务管理器中查看应用程序的活动时 它显示平均 80
  • Android 连接时在后台发送数据

    基本上 我需要我的应用程序在建立与网络的连接时向服务器发送一些数据 并且它必须在后台运行 就是这样 有没有办法让我的服务在连接时自动启动 或者我应该使用常规服务来测试连接并以 30 分钟的间隔运行该服务 我应该使用 AlarmManager
  • 无法将客户端 VPN 终端节点连接到 VPC 中的 RDS

    我使用一个安全组设置了一个客户端 VPN 端点 客户端 CIDR 10 0 132 0 22 与两个私有子网 10 0 2 0 24 和 10 0 3 0 24 关联 我还有一个使用相同的两个子网和相同的安全组的 RDS 数据库 安全组有一
  • 如何使用 aws-cli 删除 s3 中 1 个月及之前的文件?

    我的存储桶已经有很多文件 我想删除 1 个月或更早的文件 我想删除文件而不设置对象过期 有没有办法使用 aws cli 来做到这一点 谢谢 Found 一篇博文 http shout setfive com 2011 12 05 delet
  • 有没有一种编程方式可以知道 Node.js 应用程序正在 Heroku 中运行?

    我可以调用一些变量或函数来了解 Node js 应用程序是否正在 Heroku 中运行吗 就像是 if process heroku console log I m in Heroku 您使用通常的环境变量 只需在 Heroku 实例上设置
  • Openlayers获取鼠标下图块的图片url

    我正在寻找鼠标下图块的图像 url 使用最新版本v4 6 4 有任何想法吗 谢谢 图块源类包含有关图块网格的所有信息 tileSource getTileGrid 您可以访问它的加载函数 http openlayers org en lat
  • 控制器 @Mixin 在重新编译正在运行的应用程序后才起作用

    在我最新的 grails 2 3 0 项目中 我使用的是 Mixin混合辅助类的注释以保持我的controller更干 如果在控制器内进行了一些更改以强制重新编译控制器 则 mixin 才可以工作 初始编译后 grails run app
  • C中的printf如何对浮点数进行舍入?

    我正在尝试实施printf我想知道如何printf对浮点数进行舍入 因为我找不到一般规则 例如 如果输入 gt printf f 1f 2f 5f 12f 0 000099 0 000099 0 000099 0 000099 0 0000
  • Spring Integration jdbc:inbound-channel-adapter - 将 max-rows-per-poll 动态设置为节流

    我有一个 JDBC inbound channel adapter 设置 max rows per poll 动态以限制在通道上传递的消息 我有一个容量为 200 的 QueueChannel 入站通道适配器会将消息发送到此 QueueCh
  • 以编程方式切换复选框

    我有一个需要检查 不可检查的项目的 ListView 我已经设置了一个 ArrayAdapter 当前使用 android R layout simple list item multiple choice 作为行 并且所有内容都显示得很好
  • 如何使用 Javascript 获取网站上所有可用图片 URL 的列表?

    我很好奇 DownThemAll 是如何做到这一点的 他们使用 JavaScript 吗 如何使用 Javascript 获取网站中所有 url 的列表 使用集合 Links document links href Images docum
  • 在箱线图中添加每组的观察数

    继这个问题之后 如何在 ggplot2 箱线图中添加每组的观察数量并使用组平均值 https stackoverflow com questions 15660829 我想添加每组的观察数量ggplot箱线图也是如此 但我添加了一种颜色ae
  • Emacs Org 模式:执行简单的 python 代码

    如何在 Emacs 的 Org 模式下执行非常简单的 Python 代码 第一个示例工作正常 但是我无法让它给出最简单计算的结果 works begin src python def foo x if x gt 0 return x 10
  • 原型范围不起作用

    我在应用程序中创建了一个原型作用域 bean 并使用 setter 将其注入到另一个 bean 中 但是当我在类中使用注入的 bean 时 它总是使用相同的实例而不是每次都使用新实例 这是代码的快照
  • 如何更改选项卡栏项目的默认灰色?

    我尝试更改默认的灰色Tab Bar项目 但 Xcode 发现错误 我使用了一些代码 该代码是 import UIKit extension UIImage func makeImageWithColorAndSize color UICol
  • paypal 10544 网关拒绝错误的原因

    您好 请告诉我 paypal DoDirectPayment 10544 Gateway Decline 错误的可能原因 我查了很多资料都找不到原因 首先是强制性的 愚蠢的人类把戏 问题 您确定您使用的卡是有效的信用卡吗 如果您在现场 而不
  • 捕获 stdout 和 stderr 到管道

    我想从子进程中读取 stderr 和 stdout 但它不起作用 main rs use std process Command Stdio use std io BufRead BufReader fn main let mut chil
  • 如何更改 git 历史记录中的文件路径?

    这是我所拥有的 我的代码的 git 存储库 projects proj1 no git repo here yet subproj1 lt current git repo here 这就是我想要的 一个 git 存储库 它现在正在跟踪使用
  • 显示 R 中函数的源代码[重复]

    这个问题在这里已经有答案了 我可以用lm or class knn查看源代码 但我未能显示 princomp 的代码 这个函数 或其他东西 是用 R 编写的还是使用了其他字节码 我也无法使用来自的建议找到源代码如何显示包中 S4 函数的源代
  • 理解 `k : Nat ** 5 * k = n` 签名

    以下函数编译 onlyModByFive n Nat gt k Nat 5 k n gt Nat onlyModByFive n k 100 但有什么作用k以其代表Nat 5 k n syntax 另外 我该如何称呼它 这是我尝试过的 但我