Set Warnings "-extraction-opaque-accessed,-extraction".
Set Warnings "-notation-overridden,-parsing".
Set Implicit Arguments.
Unset Strict Implicit.
Unset Printing Implicit Defensive.
(* 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 "x \in A" := (A x) (at level 70, only parsing) : set_scope.
Definition set_eq {A} (m1 m2 : set A) :=
forall (a : A), m1 a <-> m2 a.
Infix "<-->" := set_eq (at level 70, no associativity) : set_scope.
Open Scope set_scope.

Lemma set_eq_trans T B (A C : set T) : A <--> B -> B <--> C -> A <--> C.