Module Fin.
Inductive t : nat -> Set :=
| FZ (n : nat) : t (S n)
| FS (n : nat) (i : t n) : t (S n).
#[global] Arguments FZ {n}%nat.
#[global] Arguments FS {n}%nat (i).
Definition evalFin {n : nat} (i : Fin.t n) : nat :=
proj1_sig (runFin i).

Lemma evalFin_unfold {n : nat} (i : Fin.t n) :
evalFin i =
match i with
| FZ => O
| FS i' => S (evalFin i')
end.