(* There are similar definitions in the Ensembles library (Included
   and Same_set); set_eq is not exactly the same as Same_set though
   (only logically equivalent). *)

Definition set T := T -> Prop.Notation "\bigcap_ ( i 'in' A ) F" := (bigcap A (fun i => F))
  (at level 41, F at level 41, i, A at level 50,
           format "'[' \bigcap_ ( i  'in'  A ) '/  '  F ']'") : set_scope.Definition set_eq {A} (m1 m2 : set A) :=
  forall (a : A), m1 a <-> m2 a.

(* Specifications: *)
Lemma set_eq_trans T B (A C : set T) : A <--> B -> B <--> C -> A <--> C.
Lemma set_eq_symm {A} (s1 s2 : set A) : s1 <--> s2 -> s2 <--> s1.
Lemma set_eq_refl {A} (s : set A) : s <--> s.