(***)
intros. unfold is_finite_set in H. elim H. clear H. intros c H.
elim H. clear H. intros v vH.
assert(Q:seq_set(Map_embed(comp_map_map F v))=' A).
simpl. unfold eq_part. intro e. split. simpl. intro H.
elim H. clear H. intros i iH. apply in_part_comp_l with
(subtype_elt(comp_map_fun F v i)). apply in_part_subtype_elt.
exact iH. intro H.
(***)
unfold surjective in sF. elim(sF(Build_subtype(P:=A)
(subtype_elt:=e)H)). intros e' e'H. elim(has_index
(Map_to_equal_subsets vH(set_to_full E)e')). intros i iH.
simpl. exists i. unfold comp_map_fun.
apply Trans with(subtype_elt(F(seq_set v
(Map_to_equal_subsets vH(set_to_full E)e')))). simpl.
exact e'H. simpl. apply subtype_elt_comp.
apply Map_compatible_prf. exact iH.
(***)
elim(classic(distinct(Map_embed(comp_map_map F v)))). intro H.
exists c. exists(Map_embed(comp_map_map F v)). split. apply Sym.
exact Q. exact H.
(***)
intro H. apply NNPP. unfold not. intro this.
apply existbij_c with(A:=A). intros what the heck. unfold not.
intro is. apply this. exists what. exists the. split.
exact heck. exact is.
exists c. exists(Map_embed(comp_map_map F v)). split.
apply Sym. exact Q. exact H. Qed.

(* Specifications: *)
Lemma stillsurj2:forall(G E:Setoid)(A:part_set E)(F:MAP G E)
(c:Nat)(v:seq(S c)G)
(Y:A=' seq_set(comp_map_map F v))
(i j:fin(S c))(IJ:~i=' j)
(W:comp_map_map F v i=' comp_map_map F v j),
A=' seq_set(comp_map_map F(omit v i)).