import data.fin
open fin nat

definition nz_cases_on {C  : Π n, fin (succ n) → Type}
                       (H₁ : Π n, C n (fz n))
                       (H₂ : Π n (f : fin n), C n (fs f))
                       {n  : nat}
                       (f  : fin (succ n)) : C n f :=
begin
  reverts [n, f],
  show ∀ (n : nat) (f  : fin (succ n)), C n f
  |  m (fz m)  := by apply H₁
  |  m (fs f') := by apply H₂
end
