Section GeneratedGroup.
Variable gT : finGroupType.
Implicit Types x y z : gT.
Implicit Types A B C D : {set gT}.
Implicit Types G H K : {group gT}.

(* Specifications: *)
Lemma subset_gen A : A \subset <<A>>.
Lemma genGid G : <<G>> = G.
Lemma gen_prodgP A x :
reflect (exists n, exists2 c, forall i : 'I_n, c i \in A & x = \prod_i c i)
(x \in <<A>>).
Lemma genD A B : A \subset <<A :\: B>> -> <<A :\: B>> = <<A>>.
Lemma genV A : <<A^-1>> = <<A>>.
Lemma genJ A z : <<A :^z>> = <<A>> :^ z.
Lemma conjYg A B z : (A <*> B) :^z = A :^ z <*> B :^ z.
Lemma genD1id A : <<A^#>> = <<A>>.
Lemma joing_idl A B : <<A>> <*> B = A <*> B.
Lemma joing_idPr A G : reflect (A <*> G = G) (A \subset G).
Lemma joingA : associative joingT.
Lemma mulG_subG G H K : (G * H \subset K) = (G \subset K) && (H \subset K).
Lemma comm_joingE G H : commute G H -> G <*> H = G * H.
Lemma joinGC : commutative joinGT.
Lemma bigprodGE I r (P : pred I) (F : I -> {group gT}) :
(\prod_(i <- r | P i) F i)%G :=: << \bigcup_(i <- r | P i) F i >>.
Lemma mem_commg A B x y : x \in A -> y \in B -> [~ x, y] \in [~: A, B].
Lemma comm_subG A B G : A \subset G -> B \subset G -> [~: A, B] \subset G.
Lemma commGC A B : [~: A, B] = [~: B, A].
Lemma conjsRg A B x : [~: A, B] :^ x = [~: A :^ x, B :^ x].
End GeneratedGroup.