簡體   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