(***)
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 f. split. simpl. intro H.
clear H. elim(S f). intros e e'. elim(has_index
(Map_to_equal_subsets v'(set_to_full E)e)). intros i iH. exists
i. simpl in iH. unfold comp_map_fun. apply Trans with(M e).
exact e'. 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.
Definition Stab2_s(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):part_set G.
(***)
intros. apply(Build_Predicate(Pred_fun:=fun g:G=>f(couple g p)
=' p)). unfold pred_compatible. intros g g' H H'. apply Trans
with(f(couple g p)). apply Map_compatible_prf. apply
couple_comp. exact H'. apply Refl. exact H. Defined.

(* Specifications: *)
Lemma LEFTACTION_reg_left:
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))))
(x:G)(y z:S)(H:f(couple x y)=' f(couple x z)),y=' z.