Require Import HoTT.Basics Fin.

(** ** Tactics *)

Ltac FinIndOn X := repeat
  match type of X with
  | Fin 0 => destruct X
  | Empty => destruct X
  | Unit => destruct X
  | Fin ?n => destruct X as [X|X]
  | ?L + Unit => destruct X as [X|X]
  end.

(** This tactic can be used to generate n cases from a goal like forall (x : Fin n), _ *)
Ltac FinInd := let X := fresh "X" in intro X; FinIndOn X.
