Definition min_elt :
    forall s : t,
    {x : elt | In x s /\ For_all (fun y => ~ E.lt y x) s} + {Empty s}.Definition max_elt :
    forall s : t,
    {x : elt | In x s /\ For_all (fun y => ~ E.lt x y) s} + {Empty s}.Definition elt := elt.Definition t := t.Definition In := In.Definition Equal s s' := forall a : elt, In a s <-> In a s'.Definition Subset s s' := forall a : elt, In a s -> In a s'.Definition Empty s := forall a : elt, ~ In a s.Definition For_all (P : elt -> Prop) (s : t) :=
    forall x : elt, In x s -> P x.Definition Exists (P : elt -> Prop) (s : t) :=
    exists x : elt, In x s /\ P x.Definition eq_In := In_1.Definition eq := Equal.Definition lt := lt.Definition eq_refl := eq_refl.Definition eq_sym := eq_sym.Definition eq_trans := eq_trans.Definition lt_trans := lt_trans.Definition lt_not_eq := lt_not_eq.Definition compare := compare.Module E := E.Module ME := OrderedTypeFacts E.Definition empty : t := let (s, _) := empty in s.

Lemma empty_1 : Empty empty.