Instance Intersection_proper {A}: Proper (Same_set ==> Same_set ==> Same_set) (Intersection A).

(* Specifications: *)
Lemma Included_Disjoint: forall A P Q P' Q', Included P P' -> Included Q Q' -> Disjoint A P' Q' -> Disjoint A P Q.
Lemma Union_left_Disjoint: forall A P Q R, Disjoint A (Union A P Q) R <-> Disjoint A P R /\ Disjoint A Q R.
Lemma Union_right_Disjoint: forall A P Q R, Disjoint A R (Union A P Q) <-> Disjoint A R P /\ Disjoint A R Q.
Lemma Included_Complement_Disjoint: forall A P Q, (Included P (Complement _ Q)) <-> Disjoint A P Q.
Lemma Disjoint_comm: forall A P Q, Disjoint A P Q <-> Disjoint A Q P.
Lemma Disjoint_Empty_set_right: forall {A} (P: Ensemble A), Disjoint A P (Empty_set A).
Lemma Disjoint_Empty_set_left: forall {A} (P: Ensemble A), Disjoint A (Empty_set A) P.
Lemma Included_trans: forall {A} (P Q R: Ensemble A), Included P Q -> Included Q R -> Included P R.
Lemma Intersection1_Included: forall {A} P Q R, Included P R -> Included (Intersection A P Q) R.
Lemma Intersection2_Included: forall {A} P Q R, Included Q R -> Included (Intersection A P Q) R.
Lemma Included_refl: forall A P, @Included A P P.