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 to_from_fin_mult {m n} : forall i : Fin (m * n), to_fin_mult (from_fin_mult i) = i.