(***)
intros. cut(in_part(subtype_elt x)(Orb7_s G S f LA1 LA2 p)).
2:apply in_part_subtype_elt. intro H. elim H. clear H. intros
y Y.
(***)
assert(RESULT_IN_HX:forall h:Stab2_s G S f LA1 LA2 p,
Pred_fun(Hx_s G S f LA1 LA2 p x)(y+' subtype_elt h)). intro h.
simpl. apply Trans with(f(couple y p)). apply Trans with
(f(couple y(f(couple(subtype_elt h)p)))). apply LA2. apply
Map_compatible_prf. apply couple_comp. apply Refl. elim h.
simpl. auto. exact Y.
(***)
assert(Q:fun_compatible(fun h:Stab2_s G S f LA1 LA2 p=>Id(Hx_s
G S f LA1 LA2 p x)(Build_subtype(RESULT_IN_HX h)))). unfold
fun_compatible. intros h h' H. simpl. unfold
subtype_image_equal. simpl. auto with algebra. exists(Build_Map
Q). split.
(***)
unfold injective. intros h h' H. simpl. unfold
subtype_image_equal. simpl. apply GROUP_reg_left with(x:=y).
exact H.
(***)
unfold surjective. intro h''. assert(R:Pred_fun(Stab2_s G S f
LA1 LA2 p)((min y)+' subtype_elt h'')). simpl. apply
(LEFTACTION_reg_left G S f LA1 LA2 y). apply Trans with(f
(couple(y+'((min y)+' subtype_elt h''))p)). apply Sym. apply
LA2. apply Trans with(subtype_elt x). 2:exact(Sym Y). apply
Trans with(f(couple(subtype_elt h'')p)). apply
Map_compatible_prf. apply couple_comp. 2:apply Refl. apply
Trans with(y+'(min y)+' subtype_elt h''). apply Sym. apply
SGROUP_assoc. apply Trans with((zero G)+' subtype_elt h'').
auto with algebra. auto with algebra. elim h''. simpl. auto.
(***)
exists(Build_subtype R). simpl. red. simpl. apply Trans with(y
+'(min y)+'subtype_elt h''). 2:apply SGROUP_assoc. apply Trans
with((zero G)+'subtype_elt h''). auto with algebra. auto with
algebra. Qed.

(* Specifications: *)
Lemma collide:forall(E:Setoid)(n:Nat)(E':has_n_elements n E)
(A:Setoid)(m:Nat)(A':has_n_elements m A)(H:~m='n)
(M:MAP E A)(sM:surjective M), ~injective M.