Arguments Same_set {U} B C.

(* Specifications: *)
Lemma Same_set_refl: forall A (S : Ensemble A), Same_set S S. Proof. intros; split; intro; tauto. Qed.
Lemma Same_set_sym: forall A (S1 S2 : Ensemble A), Same_set S1 S2 -> Same_set S2 S1. Proof. intros; destruct H; split; auto. Qed.
Lemma Same_set_trans: forall A (S1 S2 S3: Ensemble A), Same_set S1 S2 -> Same_set S2 S3 -> Same_set S1 S3.
Lemma Complement_Empty_set: forall A, Same_set (Complement A (Empty_set _)) (Full_set _).
Lemma Intersection_comm: forall A P Q, Same_set (Intersection A P Q) (Intersection A Q P).
Lemma Intersection_assoc: forall A P Q R, Same_set (Intersection A (Intersection A P Q) R) (Intersection A P (Intersection A Q R)).
Lemma Union_comm: forall A P Q, Same_set (Union A P Q) (Union A Q P).
Lemma Union_assoc: forall A P Q R, Same_set (Union A (Union A P Q) R) (Union A P (Union A Q R)).
Lemma Intersection_Union_distr_l: forall A P Q R,
Same_set (Intersection A (Union A Q R) P)
(Union A (Intersection A Q P) (Intersection A R P)).
Lemma Intersection_Union_distr_r: forall A P Q R,
Same_set (Intersection A P (Union A Q R))
(Union A (Intersection A P Q) (Intersection A P R)).