(***)
Opaque omit. intros. set(w:=comp_map_map F v).
simpl. unfold eq_part. intro x. split. intro H.
assert(H1:in_part x(seq_set w)). apply in_part_comp_r with A.
assumption. exact Y. elim H1. clear H H1. intros k kH. simpl.
unfold comp_map_fun.
(***)
elim(classic(i=' k)).
intro IK. elim(omit_removes' v IJ). intros j1 j1H. exists j1.
apply Trans with (F(v j)). 2:apply Map_compatible_prf. 2:exact
j1H. apply Trans with(w k). exact kH. apply Trans with(w i).
apply Map_compatible_prf. exact(Sym IK). exact W.
(***)
intro IK. elim(omit_removes' v IK). intros k1 k1H. exists k1.
apply Trans with(F(v k)). exact kH. apply Map_compatible_prf.
exact k1H.
(***)
intro H. elim H. clear H. intros k kH. simpl in kH. unfold
comp_map_fun in kH. apply in_part_comp_r with(seq_set w).
2:exact(Sym Y). simpl. unfold comp_map_fun. elim
(omit_removes v i k). intros k1 k1H.
(***)
elim(classic(i=' k1)).
intro IK. exists j. apply Trans with(w i). 2:exact W. apply
Trans with (F(omit v i k)). exact kH. apply Trans with(w k1).
unfold w. simpl. unfold comp_map_fun. apply Map_compatible_prf.
exact(Sym k1H). apply Map_compatible_prf. exact(Sym IK).
(***)
intro IK. exists k1. apply Trans with(F(omit v i k)). exact kH.
apply Map_compatible_prf. exact(Sym k1H). Qed. Transparent omit.

(* Specifications: *)
Lemma existbij2_c:forall(G:Setoid)(E:Setoid)(A:part_set E)
(F:MAP G E),
(forall(c:Nat)(v:seq c G)(H:distinct v)
(H':A=' seq_set(comp_map_map F v)),~distinct(comp_map_map F v))
->
(exists c:Nat,exists v:seq c G,distinct v/\
A=' seq_set(comp_map_map F v)/\~distinct(comp_map_map F v))
->False.