繁体   English   中英

了解有关Agda的实践考试

[英]Understanding practice exam about Agda

我正在使用agda进行编程语言基础的实践考试,并且存在以下问题:

您将获得以下Agda声明:

data Even : N → Set where
 ezero : Even 0
 esuc : { n : N }  → Even n  → Even (2+ n)

假设已导入标准自然数库。 回答以下的问题:

a) ezero的类型是什么?

b)是否有类型Even 1

c) Even 2类型有多少项? 列出他们

d)描述如果我们将esuc的返回类型更改为Even (n+2)而不是Even (2+n)可能发生的一个潜在问题。

我们没有提供解决方案手册。 这个问题似乎很基本,但我不确定其中任何一个,我认为前三个答案是:

一套

b)甚至没有1个类型的项

c)一类偶数2的项

d)不知道

这些问题的答案以及简短的解释将不胜感激。 谢谢

ezero的类型是什么?

可以从数据声明中读取数据构造函数ezero的类型: ezero : Even 0表示其类型为Even 0

是否有类型Even 1

不,没有。 这可以通过区分大小写来看出:如果有一个术语,则以两个构造函数之一开始。 并且由于它们具有特定的回报指数,因此必须与1统一。

  • ezero将强制执行1 = 0
  • esuc表示存在一个n,使得1 = 2+ n

这两种情况都是不可能的。

偶数2类型有多少个术语? 列出他们

恰好有一个: esuc ezero 随着一个类似于在上一个问题推理,我们可以证明ezeroesuc (esuc p)对于某些p )不会做。

描述一下如果将esuc的返回类型更改为Even (n+2)而不是Even (2+n)可能发生的一个潜在问题。

考虑plus-Even : {mn : N} → Even m → Even n → Even (m + n)的证明plus-Even : {mn : N} → Even m → Even n → Even (m + n) 由于(+)是通过对第一个参数的归纳定义的,因此您将无法在单步情况下立即应用esuc 您将需要使用重写将目标的类型从Even ((m +2) + n) (或Even (m + (n +2))取决于您对哪个参数进行归纳)重组为Even ((m + n) +2)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM