Agda中有限集的定义

时间:2011-08-26 18:34:04

标签: agda

我是Agda的新手。我正在阅读Ana Bove和Peter Dybjer的论文“工作中的依赖类型”。我不理解有限集的讨论(我的副本中的第15页)。

本文定义了Fin类型:

data Fin : Nat -> Set where
    fzero : {n : Nat} -> Fin (succ n)
    fsucc : {n : Nat} -> Fin n -> Fin (succ n)

我必须遗漏一些明显的东西。我不明白这个定义是如何工作的。有人可以简单地将Fin的定义翻译成日常英语吗?这可能就是我需要理解本文的这一部分。

感谢您抽出宝贵时间阅读我的问题。我很感激。

1 个答案:

答案 0 :(得分:21)

data Fin : Nat -> Set where

Fin是一个由自然数参数化的数据类型(或:Fin是一个类型级函数,它接受Nat并返回Set(基本类型),即任何自然数n Fin n都是Set)。

    fzero : {n : Nat} -> Fin (succ n)

对于所有自然数n fzero是类型/集合Fin (succ n)的成员(对于所有正数(即除了零之外的所有自然数据)都遵循该成员{{1} } nfzero)的成员。

Fin n

对于所有自然数 fsucc : {n : Nat} -> Fin n -> Fin (succ n) 以及n类型的所有值mFin n都是fsucc m类型的成员。


所以Fin (succ n)是所有fzero Fin n的成员,除了零,n是所有fsucc m Fin n的成员表示大于n的数字。

基本上fsucc m表示小于Fin n的所有自然数的集合,即大小为n的列表的所有有效索引。