Instance respectful_set_proper {A B: Type}: Proper (Same_set ==> pointwise_relation A (@eq B) ==> Same_set) respectful_set.Instance image_set_proper2 {A B: Type}: Proper (Same_set ==> eq ==> Same_set) (@image_set A B).

(* Specifications: *)
Lemma resp_Included: forall {A B: Type} (X Y: Ensemble B) (f: A -> B), Included X Y -> Included (respectful_set X f) (respectful_set Y f).
Lemma resp_Same_set: forall {A B: Type} (X Y: Ensemble B) (f: A -> B), Same_set X Y -> Same_set (respectful_set X f) (respectful_set Y f).
Lemma resp_Intersection: forall {A B: Type} (X Y: Ensemble B) (f: A -> B), Same_set (respectful_set (Intersection _ X Y) f) (Intersection _ (respectful_set X f) (respectful_set Y f)).
Lemma resp_Union: forall {A B: Type} (X Y: Ensemble B) (f: A -> B) , Same_set (respectful_set (Union _ X Y) f) (Union _ (respectful_set X f) (respectful_set Y f)).
Lemma resp_Complement: forall {A B: Type} (X: Ensemble B) (f: A -> B), Same_set (respectful_set (Complement _ X) f) (Complement _ (respectful_set X f)).
Lemma resp_Disjoint: forall {A B: Type} (X Y: Ensemble B) (f: A -> B), Disjoint _ X Y -> Disjoint _ (respectful_set X f) (respectful_set Y f).
Lemma resp_Empty: forall {A B: Type} (f: A -> B), Same_set (respectful_set (Empty_set _) f) (Empty_set _).
Lemma image_Included: forall {A B: Type} (f: A -> B) (X Y: Ensemble A), Included X Y -> Included (image_set X f) (image_set Y f).
Lemma image_Same_set: forall {A B: Type} (f: A -> B) (X Y: Ensemble A), Same_set X Y -> Same_set (image_set X f) (image_set Y f).
Lemma image_Intersection: forall {A B: Type} (X Y: Ensemble A) (f: A -> B), Included (image_set (Intersection _ X Y) f) (Intersection _ (image_set X f) (image_set Y f)).
Lemma image_Union: forall {A B: Type} (X Y: Ensemble A) (f: A -> B), Same_set (image_set (Union _ X Y) f) (Union _ (image_set X f) (image_set Y f)).
Lemma image_Disjoint_rev: forall {A B: Type} (X Y: Ensemble A) (f: A -> B), Disjoint _ (image_set X f) (image_set Y f) -> Disjoint _ X Y.
Lemma image_Empty: forall {A B: Type} (f: A -> B), Same_set (image_set (Empty_set _) f) (Empty_set _).
Lemma image_single: forall {A B: Type} (a: A) (f: A -> B), Same_set (image_set (eq a) f) (eq (f a)).