Definition ordinal_finMixin :=
  Eval hnf in UniqFinMixin ord_enum_uniq mem_ord_enum.Canonical ordinal_finType := Eval hnf in FinType ordinal ordinal_finMixin.Definition widen_ord n m le_n_m i := Ordinal (@widen_ord_proof n m i le_n_m).Definition cast_ord n m eq_n_m i := Ordinal (@cast_ord_proof n m i eq_n_m).

(* Specifications: *)
Lemma cast_ord_comp n1 n2 n3 eq_n2 eq_n3 i : @cast_ord n2 n3 eq_n3 (@cast_ord n1 n2 eq_n2 i) = cast_ord (etrans eq_n2 eq_n3) i.
Lemma cast_ordK n1 n2 eq_n : cancel (@cast_ord n1 n2 eq_n) (cast_ord (esym eq_n)).
Lemma cast_ordKV n1 n2 eq_n : cancel (cast_ord (esym eq_n)) (@cast_ord n1 n2 eq_n).
Lemma cast_ord_inj n1 n2 eq_n : injective (@cast_ord n1 n2 eq_n).