End FinTypeOrd.
(* notation to let us write I_n instead of (ordinal_finType n) *)
Notation "[ 'fin_ordMixin' 'of' T ]" :=
(fin_ordMixin _ : Ordered.mixin_of [eqType of T]) (at level 0).
Definition ordinal_ordMixin n := [fin_ordMixin of 'I_n].
Canonical Structure ordinal_ordType n := OrdType 'I_n (ordinal_ordMixin n).
Section SeqOrd.
Variable (T : ordType).
Fixpoint ords x  : pred (seq T) :=
fun y => match x , y with
| [::] , [::] => false
| [::] ,  t :: ts => true
| x :: xs , y :: ys => if x == y then ords xs ys
else ord x y
| _ :: _ , [::] => false
end.

(* Specifications: *)
Lemma irr_ords : irreflexive ords.
Lemma total_ords : forall x y, [|| ords x y, x == y | ords y x].
Definition seq_ordMixin := OrdMixin irr_ords trans_ords total_ords.