packages feed

ivor-0.1.5: lib/fin.tt

Load "basics.tt";
Load "lt.tt";

Data Fin : (n:Nat)*
    = fz : (k:_)(Fin (S k))
    | fs : (k:_)(i:Fin k)(Fin (S k));

Match weaken : (n:_)(i:Fin n)->(Fin (S n)) =
    weaken _ (fz _) = fz _
  | weaken _ (fs _ i) = fs _ (weaken _ i);

Match fin2Nat : (n:_)(i:Fin n)->Nat =
    fin2Nat _ (fz _) = O
  | fin2Nat _ (fs _ i) = S (fin2Nat _ i);