simpl in |- *.
unfold Map_eq in |- *.
auto with algebra.
Qed.
Hint Resolve map_ext: algebra.
Section Maps1_2.
Comments "We define now injections, surjections and bijections.".
Variable A B : Setoid.
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.
End Maps1_2.
Comments "These definitions are coherent with equality of maps:".

(* Specifications: *)
Lemma injective_comp :
forall (A B : Setoid) (f f' : MAP A B),
injective f -> Equal f f' -> injective f'.