Fixpoint from_fin_mult {m n} : Fin (m * n) -> Fin m * Fin n :=
match m with
| 0 => fun i =>
match i with
end
| S k => fun i =>
match from_fin_sum i with
| inl j => (inl tt, j)
| inr j =>
match from_fin_mult j with
| (k1, k2) => (inr k1, k2)
end
end
end.

Lemma Fin_enum_correct (n : nat) : forall i, In i (Fin_enum n).