(** * [E.eq] and [Equal] are setoid equalities *)

#[global]
Instance E_ST : Equivalence E.eq.#[global]
Instance Equal_ST : Equivalence Equal.#[global]
Instance In_m : Proper (E.eq ==> Equal ==> iff) In.#[global]
Instance is_empty_m : Proper (Equal==> Logic.eq) is_empty.#[global]
Instance Empty_m : Proper (Equal ==> iff) Empty.#[global]
Instance mem_m : Proper (E.eq ==> Equal ==> Logic.eq) mem.#[global]
Instance singleton_m : Proper (E.eq ==> Equal) singleton.#[global]
Instance add_m : Proper (E.eq==>Equal==>Equal) add.#[global]
Instance remove_m : Proper (E.eq==>Equal==>Equal) remove.#[global]
Instance union_m : Proper (Equal==>Equal==>Equal) union.#[global]
Instance inter_m : Proper (Equal==>Equal==>Equal) inter.#[global]
Instance diff_m : Proper (Equal==>Equal==>Equal) diff.#[global]
Instance Subset_m : Proper (Equal==>Equal==>iff) Subset.#[global]
Instance subset_m : Proper (Equal ==> Equal ==> Logic.eq) subset.#[global]
Instance equal_m : Proper (Equal ==> Equal ==> Logic.eq) equal.

(* Specifications: *)
Lemma Subset_refl : forall s, s[<=]s.
Lemma Subset_trans : forall s s' s'', s[<=]s'->s'[<=]s''->s[<=]s''.