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.
End DepOfNodep.
(** * From dependent signature [Sdep] to non-dependent signature [S]. *)
Module NodepOfDep (M: Sdep) <: S with Module E := M.E.
Module ME := OrderedTypeFacts E.
Definition empty : t := let (s, _) := empty in s.

(* Specifications: *)
Lemma empty_1 : Empty empty.
Definition is_empty (s : t) : bool :=
if is_empty s then true else false.
Lemma is_empty_1 : forall s : t, Empty s -> is_empty s = true.
Lemma is_empty_2 : forall s : t, is_empty s = true -> Empty s.
Definition mem (x : elt) (s : t) : bool :=
if mem x s then true else false.
Lemma mem_1 : forall (s : t) (x : elt), In x s -> mem x s = true.
Lemma mem_2 : forall (s : t) (x : elt), mem x s = true -> In x s.
Definition eq_dec := equal.