Definition Id : forall A : Setoid, MAP A A.

(* Specifications: *)
Lemma Id_unit_r : forall (A B : Setoid) (f : MAP A B), Equal (comp_map_map f (Id A)) f.
Lemma Id_unit_l : forall (A B : Setoid) (f : MAP A B), Equal (comp_map_map (Id B) f) f.
Lemma Id_is_bijective : forall A : Setoid, bijective (Id A).
Lemma comp_injective : forall (A B C : Setoid) (f : MAP A B) (g : MAP B C), injective (comp_map_map g f) -> injective f.
Lemma comp_surjective : forall (A B C : Setoid) (f : MAP A B) (g : MAP B C), surjective (comp_map_map g f) -> surjective g.
Lemma comp_is_id_then_bijective : forall (A B : Setoid) (f : MAP A B) (g : MAP B A), Equal (comp_map_map g f) (Id A) -> Equal (comp_map_map f g) (Id B) -> bijective f.
Lemma comp_is_id_then_injective : forall (A B : Setoid) (f : MAP A B) (g : MAP B A), Equal (comp_map_map g f) (Id A) -> injective f.
Lemma comp_is_id_then_surjective : forall (A B : Setoid) (f : MAP A B) (g : MAP B A), Equal (comp_map_map f g) (Id B) -> surjective f.