(***)
intros. elim(classic(distinct(comp_map_map F v))). intro
DISTINCT. exists c. exists(comp_map_map F v). split. exact sF.
exact DISTINCT. intro NOT_DISTINCT.
(***)
elim(classic(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))).
intro P. elimtype False. apply existbij2_c with(A:=A)(F:=F).
exact P. exists c. exists v. split. exact V''. split. exact sF.
exact NOT_DISTINCT.
(***)
intro NOT_P. apply NNPP. unfold not. intro H. apply NOT_P.
unfold not. intros c0 v0 distinct0 Fcovers0 Fderiv0. apply H.
exists c0. exists(comp_map_map F v0). auto. Qed.

(* Specifications: *)
Lemma lacomp:forall(G:group)(S:Setoid)(f:Map(cart G S)S)
(LA1:forall(s:S),f(couple(monoid_unit G)s)=' s)
(LA2:forall(g1 g2:G)(s:S),
f(couple(g1+' g2)s)=' f(couple g1(f(couple g2 s))))
(p:S), fun_compatible(fun g:G=>f(couple g p)).