Module ME := OrderedTypeFacts E.
Definition empty : t := let (s, _) := empty in s.
Definition is_empty (s : t) : bool :=
if is_empty s then true else false.
Definition mem (x : elt) (s : t) : bool :=
if mem x s then true else false.
Definition eq_dec := equal.
Definition equal (s s' : t) : bool :=
if equal s s' then true else false.
Definition subset (s s' : t) : bool :=
if subset s s' then true else false.
Definition choose (s : t) : option elt :=
match choose s with
| inleft (exist _ x _) => Some x
| inright _ => None
end.

Lemma choose_3 : forall s s' x x',
choose s = Some x -> choose s' = Some x' -> Equal s s' -> E.eq x x'.