Ответ 1
data Fin : Nat -> Set where
Fin - тип данных, параметризованный натуральным числом (или: Fin
- это функция уровня типа, которая принимает Nat
и возвращает a Set
(базовый тип), то есть для любого натурального числа n
Fin n
является Set
).
fzero : {n : Nat} -> Fin (succ n)
Для всех натуральных чисел n
fzero
является членом типа /set Fin (succ n)
(из которого следует, что для всех положительных чисел (т.е. всех naturals, кроме нуля) n
fzero
является членом Fin n
).
fsucc : {n : Nat} -> Fin n -> Fin (succ n)
Для всех натуральных чисел n
и всех значений m
типа Fin n
, fsucc m
является членом типа Fin (succ n)
.
Итак, fzero
является членом Fin n
для всех n
, кроме нуля, и fsucc m
является членом Fin n
для всех n
, которые представляют число, большее чем fsucc m
.
В основном Fin n
представляет набор всех натуральных чисел, меньших, чем n
, то есть всех допустимых индексов для списков размера n
.