(***)
intros. unfold has_n_elements in C. elim C. clear C. intros v
C. elim C. clear C. intros v' v''. exists(comp_map_map M v).
split. simpl. unfold eq_part. intro e. split. simpl. intro H.
clear H. elim(S e). intros f f'. elim(has_index
(Map_to_equal_subsets v'(set_to_full F)f)). intros i iH. exists
i. simpl in iH. unfold comp_map_fun. apply Trans with(M f).
exact f'. apply Map_compatible_prf. exact iH. simpl. auto.
unfold distinct. intros i j IJ. simpl. unfold comp_map_fun.
assert(V:~v i=' v j). apply v''. exact IJ. unfold not. intro.
apply V. apply I. assumption. Qed.

Lemma samecardA:forall(E F:Setoid)(M:MAP E F)
(S:surjective M)(I:injective M)(n:Nat)(C:has_n_elements n E),
has_n_elements n F.