理解 `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` 签名 的相关文章

随机推荐

  • 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 另外 我该如何称呼它 这是我尝试过的 但我