Instance Included_proper (V: Type): Proper (Same_set ==> Same_set ==> iff) (@Included V).

(* Specifications: *)
Lemma left_Included_Union {A: Type}: forall P Q, Included P (Union A P Q).
Lemma right_Included_Union {A: Type}: forall P Q, Included Q (Union A P Q).
Lemma Union_Empty_left {A: Type}: forall P, Same_set (Union _ (Empty_set A) P) P.
Lemma Union_Empty_right {A: Type}: forall P, Same_set (Union _ P (Empty_set A)) P.
Lemma Intersection_Full_left {A: Type}: forall P, Same_set (Intersection _ (Full_set A) P) P.
Lemma Intersection_Full_right {A: Type}: forall P, Same_set (Intersection _ P (Full_set A)) P.
Lemma Intersection_Empty_left {A: Type}: forall P, Same_set (Intersection _ (Empty_set A) P) (Empty_set A).
Lemma Intersection_Empty_right {A: Type}: forall P, Same_set (Intersection _ P (Empty_set A)) (Empty_set A).
Lemma Intersection_absort_right: forall U (A B: Ensemble U), Included A B -> Same_set (Intersection _ A B) A.
Lemma Intersection_absort_left: forall U (A B: Ensemble U), Included B A -> Same_set (Intersection _ A B) B.
Lemma Complement_Included_rev: forall (U: Type) P Q, Included P Q -> Included (Complement U Q) (Complement U P).
Instance Intersection_proper {A}: Proper (Same_set ==> Same_set ==> Same_set) (Intersection A).
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.
Definition app_same_set {A: Type} {P Q: Ensemble A} (H: Same_set P Q) (x: A): P x <-> Q x := proj1 (Same_set_spec A P Q) H x.