了解有关 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 的 return 类型更改为 Even (n+2)
而不是 Even (2+n)
。
我们没有提供解决方案手册。这个问题看起来很基本,但我不确定 these.I 认为前三个问题的答案是:
a) 设置
b) 没有 Even 1 类型的项
c) Even 2 类型的一项
d) 不知道
如能回答这些问题并提供简要说明,我们将不胜感激。谢谢
What is the type of ezero
?
数据构造函数ezero
的类型可以从数据声明中读取:ezero : Even 0
声明它的类型为Even 0
.
Are there any terms of type Even 1
?
不,没有。这可以通过区分大小写看出:如果有一个术语,那么它将以两个构造函数之一开始。而且因为它们有特定的 return 索引,所以它们必须与 1
.
统一
ezero
将强制执行 1 = 0
esuc
意味着有一个 n 使得 1 = 2+ n
这两种情况都是不可能的。
How many terms are of type Even 2? List them
只有一个:esuc ezero
。通过与上一个问题类似的推理,我们可以证明 ezero
和 esuc (esuc p)
(对于某些 p
)不会。
Describe one potential problem that might occur if we change the return type of esuc
to be Even (n+2)
instead of Even (2+n)
.
考虑证明 plus-Even : {m n : N} → Even m → Even n → Even (m + n)
。因为 (+)
是通过对其第一个参数的归纳法定义的,所以您将无法立即在步骤案例中应用 esuc
。您将需要使用重写来预先将目标类型从 Even ((m +2) + n)
(或 Even (m + (n +2))
取决于您执行归纳的参数)重新组织为 Even ((m + n) +2)
。
我正在使用 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 的 return 类型更改为 Even (n+2)
而不是 Even (2+n)
。
我们没有提供解决方案手册。这个问题看起来很基本,但我不确定 these.I 认为前三个问题的答案是:
a) 设置
b) 没有 Even 1 类型的项
c) Even 2 类型的一项
d) 不知道
如能回答这些问题并提供简要说明,我们将不胜感激。谢谢
What is the type of
ezero
?
数据构造函数ezero
的类型可以从数据声明中读取:ezero : Even 0
声明它的类型为Even 0
.
Are there any terms of type
Even 1
?
不,没有。这可以通过区分大小写看出:如果有一个术语,那么它将以两个构造函数之一开始。而且因为它们有特定的 return 索引,所以它们必须与 1
.
ezero
将强制执行1 = 0
esuc
意味着有一个 n 使得1 = 2+ n
这两种情况都是不可能的。
How many terms are of type Even 2? List them
只有一个:esuc ezero
。通过与上一个问题类似的推理,我们可以证明 ezero
和 esuc (esuc p)
(对于某些 p
)不会。
Describe one potential problem that might occur if we change the return type of
esuc
to beEven (n+2)
instead ofEven (2+n)
.
考虑证明 plus-Even : {m n : N} → Even m → Even n → Even (m + n)
。因为 (+)
是通过对其第一个参数的归纳法定义的,所以您将无法立即在步骤案例中应用 esuc
。您将需要使用重写来预先将目标类型从 Even ((m +2) + n)
(或 Even (m + (n +2))
取决于您执行归纳的参数)重新组织为 Even ((m + n) +2)
。