Parameter
  surjective_image_full :
    forall (E F : Setoid) (f : MAP E F),
    surjective f -> Equal (image_map f) (full F).

(* Specifications: *)
Lemma finite_surjective_injective : forall (E F : Setoid) (f : MAP E F) (n : nat), cardinal (full E) n -> cardinal (full F) n -> surjective f -> injective f.
Lemma not_included_exist : forall (E : Setoid) (A B : part_set E), included B A -> ~ Equal B A -> exists x : E, in_part x A /\ ~ in_part x B.
Lemma cardinal_included : forall (E : Setoid) (A : part_set E) (n : nat), cardinal A n -> forall B : part_set E, included B A -> exists m : nat, cardinal B m /\ m <= n.
Lemma map_not_injective : forall (A B : Setoid) (f : MAP A B) (n m : nat), cardinal (full A) n -> cardinal (full B) m -> m < n -> ~ injective f.