Definition injective (f : MAP A B) : Prop :=
  forall x y : A, Equal (f x) (f y) -> Equal x y.Definition surjective (f : MAP A B) : Prop :=
  forall y : B, exists x : A, Equal y (f x).Definition bijective (f : MAP A B) : Prop := injective f /\ surjective f.

(* Specifications: *)
Lemma injective_comp : forall (A B : Setoid) (f f' : MAP A B), injective f -> Equal f f' -> injective f'.
Lemma surjective_comp : forall (A B : Setoid) (f f' : MAP A B), surjective f -> Equal f f' -> surjective f'.
Lemma bijective_comp : forall (A B : Setoid) (f f' : MAP A B), bijective f -> Equal f f' -> bijective f'.
Lemma bijective_injective : forall (A B : Setoid) (f : MAP A B), bijective f -> injective f.
Lemma bijective_surjective : forall (A B : Setoid) (f : MAP A B), bijective f -> surjective f.