(** The dependent-style [compare] *)

  Definition eq (m1 m2 : t) := LO.eq_list (elements m1) (elements m2).Definition lt (m1 m2 : t) := LO.lt_list (elements m1) (elements m2).Definition compare (s s':t) : Compare lt eq s s'.(* Proofs about [eq] and [lt] *)

  Definition selements (m1 : t) :=
   LO.MapS.Build_slist (P.elements_sort (is_bst m1)).Definition seq (m1 m2 : t) := LO.eq (selements m1) (selements m2).Definition slt (m1 m2 : t) := LO.lt (selements m1) (selements m2).

Lemma lt_trans : forall m1 m2 m3 : t, lt m1 m2 -> lt m2 m3 -> lt m1 m3.