1 | module Data.Fin.Minus
3 | import public Data.Fin
8 | (-) : (n : Nat) -> Fin (S n) -> Nat
13 | plus_discards_minus : (n : Nat) -> (f : Fin $
S n) -> (n - f) + finToNat f = n
14 | plus_discards_minus k FZ = rewrite plusZeroRightNeutral k in Refl
15 | plus_discards_minus (S k) (FS x) = rewrite sym $
plusSuccRightSucc (k - x) (finToNat x) in
16 | rewrite plus_discards_minus k x in
20 | minus_last_gives_0 : (n : Nat) -> n - Fin.last = 0
21 | minus_last_gives_0 Z = Refl
22 | minus_last_gives_0 (S k) = minus_last_gives_0 k