vacio unitario subconjunto infinitos finitos ejemplos conjuntos conjunto clases agda

agda - unitario - subconjunto



Una definiciĆ³n para conjuntos finitos en Agda (1)

Soy nuevo en Agda. Estoy leyendo el documento "Dependent Types at Work" de Ana Bove y Peter Dybjer. No entiendo la discusión de los Conjuntos Finitos (en la página 15 en mi copia).

El papel define un tipo de Fin :

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

Debo estar perdiendo algo obvio. No entiendo cómo funciona esta definición. ¿Podría alguien simplemente traducir la definición de fin al inglés cotidiano? Eso podría ser todo lo que necesito para entender esta parte del documento.

Gracias por tomarse el tiempo para leer mi pregunta. Lo aprecio.


data Fin : Nat -> Set where

Fin es un tipo de datos parametrizado por un número natural (o: Fin es una función de nivel de tipo que toma un Nat y devuelve un Set (tipo básico), es decir, para cualquier número natural n Fin n es un Set ).

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

Para todos los números naturales, n fzero es un miembro del tipo / conjunto Fin (succ n) (de lo cual se deduce que para todos los números positivos (es decir, todos los naturales, excepto cero) n fzero es un miembro de Fin n ).

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

Para todos los números naturales n y todos los valores m de tipo Fin n , fsucc m es un miembro de tipo Fin (succ n) .

Entonces fzero es un miembro de Fin n para todos n excepto cero y fsucc m es un miembro de Fin n para todos n que representan un número mayor que fsucc m .

Básicamente, Fin n representa el conjunto de todos los números naturales más pequeños que n , es decir, de todos los índices válidos para listas de tamaño n .