induction n. apply incexc3_basecase. intros.
set(a:=subtype_elt(head AH)). elim(Vb a). intros i_ i_H.
2:unfold a. 2:apply in_part_subtype_elt.
set(V_:=modify_seq V i_(minus_part(V i_)a)).
set(V_':=modify_seq V' i_(V' i_-1)).
assert(V_'a:forall i:fin c,has_n_elements(V_' i)(V_ i)).
apply (P7 n G A AH AH' AH'' c V Va Vb Vc V' V'a i_ i_H).
assert(V_a:forall(i:fin c)(g:G),in_part g(V_ i)
->in_part g(seq_set(Seqtl(Map_embed AH)))).
apply (P4 n G A AH AH' AH'' c V Va Vb Vc V' V'a i_ i_H).
assert(V_b:forall g:G,in_part g(seq_set(Seqtl(Map_embed AH)))
->exists i:fin c,in_part g(V_ i)).
apply (P5 n G A AH AH' AH'' c V Va Vb Vc V' V'a i_ i_H).
assert(V_c:forall g:G,in_part g(seq_set(Seqtl(Map_embed AH)))
->forall i i':fin c,in_part g(V_ i)->in_part g(V_ i')->i=' i').
apply (P6 n G A AH AH' AH'' c V Va Vb Vc V' V'a i_ i_H).
assert(DSTNCT:distinct(seq_set_seq(Seqtl(Map_embed AH)))).
apply seq_set_seq_preserves_distinct.
apply Seqtl_preserves_distinct.
apply Map_embed_preserves_distinct. exact AH''.
apply Trans with(nsum c V_'+1).
apply Trans with(nsum c(modify_seq V_' i_(V_' i_+1))).
apply nsum_comp. apply Sym.
apply Trans with(modify_seq V_' i_(V' i_-1+1)).
apply modify_comp. apply pluscomp2. unfold V_'.
apply modify_seq_defprop. apply Refl. apply Refl.
apply Trans with(modify_seq V_' i_(S(pred(V' i_))-1+1)).
apply modify_comp. 2:apply Refl. 2:apply Refl.
induction(V' i_). simpl. auto. simpl. auto.
apply Trans with(modify_seq V_' i_(S(pred(V' i_)))).
apply modify_comp. 2:apply Refl. 2:apply Refl.
rewrite plus_comm. simpl. intuition.
apply Trans with(modify_seq V_' i_(V' i_)).
apply modify_comp. 2:apply Refl. 2:apply Refl.
apply Sym. change(V' i_=S(pred(V' i_))).
apply S_pred with (n:=V' i_)(m:=0).
exact(Q8 G a(V i_)(V' i_)(V'a i_)i_H). unfold V_'.
apply undo_modify.
apply nsum_increment4. apply Refl. apply Trans with(n+1).
2:rewrite plus_comm. 2:simpl. 2:auto. apply pluscomp2.
apply(IHn G (seq_set(Seqtl(Map_embed AH)))
(seq_set_seq(Seqtl(Map_embed AH)))
(sqtlsqtl n G A AH AH' AH'')DSTNCT c V_ V_a V_b V_c V_' V_'a).
Qed.
Definition Orb7_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 S.
intros. apply(Build_Predicate
(Pred_fun:=fun s:S=>exists g:G,f(couple g p)=' s)).
unfold pred_compatible. intros s1 s2 H H1. elim H. intros g H2.
exists g. apply Trans with s1. exact H2. apply Sym. exact H1.
Defined.

(* Specifications: *)
Lemma finfull:forall(G:Setoid)(n:Nat)(H:has_n_elements n G),
has_n_elements n(full G).