End lt_spec.
#[global]
Instance lt_strorder : StrictOrder lt.
Local Instance compare_compat_1 : Proper (eq==>Logic.eq==>Logic.eq) compare.
#[global]
Instance compare_compat : Proper (eq==>eq==>Logic.eq) compare.
Local Instance lt_compat : Proper (eq==>eq==>iff) lt.
(** Specification of [add] *)

(* Specifications: *)
Lemma add_spec: forall s x y, In y (add x s) <-> y=x \/ In y s.
(** Specification of [remove] *)
Lemma remove_spec: forall s x y, In y (remove x s) <-> In y s /\ y<>x.
(** Specification of [singleton] *)
Lemma singleton_spec : forall x y, In y (singleton x) <-> y=x.
(** Specification of [union] *)
Lemma union_spec: forall s s' x, In x (union s s') <-> In x s \/ In x s'.
(** Specification of [inter] *)
Lemma inter_spec: forall s s' x, In x (inter s s') <-> In x s /\ In x s'.
(** Specification of [diff] *)
Lemma diff_spec: forall s s' x, In x (diff s s') <-> In x s /\ ~ In x s'.
(** Specification of [fold] *)
Lemma fold_spec: forall s (A : Type) (i : A) (f : elt -> A -> A),
fold f s i = fold_left (fun a e => f e a) (elements s) i.