Definition compare : forall s s', Compare lt eq s s'.Module E := O.Definition elt := E.t.Definition t := M.t.Implicit Type s : t.Implicit Type x y : elt.Implicit Type f : elt -> bool.Definition In : elt -> t -> Prop := M.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 := forall x, In x s -> P x.Definition Exists (P : elt -> Prop) s := exists x, In x s /\ P x.Definition empty : t := M.empty.Definition is_empty : t -> bool := M.is_empty.Definition mem : elt -> t -> bool := M.mem.Definition add : elt -> t -> t := M.add.Definition singleton : elt -> t := M.singleton.Definition remove : elt -> t -> t := M.remove.Definition union : t -> t -> t := M.union.Definition inter : t -> t -> t := M.inter.Definition diff : t -> t -> t := M.diff.Definition eq : t -> t -> Prop := M.eq.Definition eq_dec : forall s s', {eq s s'}+{~eq s s'}:= M.eq_dec.Definition equal : t -> t -> bool := M.equal.Definition subset : t -> t -> bool := M.subset.Definition fold : forall A : Type, (elt -> A -> A) -> t -> A -> A := M.fold.Definition for_all : (elt -> bool) -> t -> bool := M.for_all.Definition exists_ : (elt -> bool) -> t -> bool := M.exists_.Definition filter : (elt -> bool) -> t -> t := M.filter.Definition partition : (elt -> bool) -> t -> t * t:= M.partition.Definition cardinal : t -> nat := M.cardinal.Definition elements : t -> list elt := M.elements.Definition choose : t -> option elt := M.choose.Module MF := FSetFacts.WFacts M.#[global]
 Instance In_compat : Proper (E.eq==>Logic.eq==>iff) In.#[global]
 Instance eq_equiv : Equivalence eq := _.

Lemma equal_spec : equal s s' = true <-> Equal s s'.