Arguments exponentP {A n}.

(* Specifications: *)
Lemma trivg_exponent G : (G :==: 1) = (exponent G %| 1).
Lemma exponent1 : exponent [1 gT] = 1%N.
Lemma exponentJ A x : exponent (A :^ x) = exponent A.
Lemma exponent_witness G : nilpotent G -> {x | x \in G & exponent G = #[x]}.
Lemma exponent_cycle x : exponent <[x]> = #[x].
Lemma pi_of_exponent G : \pi(exponent G) = \pi(G).
Lemma exponent_Hall pi G H : pi.-Hall(G) H -> exponent H = (exponent G)`_pi.
Lemma exponent_Zgroup G : Zgroup G -> exponent G = #|G|.
Lemma cprod_exponent A B G :
A \* B = G -> lcmn (exponent A) (exponent B) = (exponent G).
Lemma dprod_exponent A B G :
A \x B = G -> lcmn (exponent A) (exponent B) = (exponent G).
Lemma sub_LdivT A n : (A \subset 'Ldiv_n()) = (exponent A %| n).
Lemma LdivJ n A x : 'Ldiv_n(A :^ x) = 'Ldiv_n(A) :^ x.
Lemma abelian_exponent_gen A : abelian A -> exponent <<A>> = exponent A.
Lemma abelem_pgroup p A : p.-abelem A -> p.-group A.
Lemma abelemP p G :
prime p ->
reflect (abelian G /\ forall x, x \in G -> x ^+ p = 1) (p.-abelem G).
Lemma abelem_order_p p G x : p.-abelem G -> x \in G -> x != 1 -> #[x] = p.
Lemma cyclic_abelem_prime p X : p.-abelem X -> cyclic X -> X :!=: 1 -> #|X| = p.
Lemma cycle_abelem p x : p.-elt x || prime p -> p.-abelem <[x]> = (#[x] %| p).
Lemma exponent2_abelem G : exponent G %| 2 -> 2.-abelem G.
Lemma prime_abelem p G : prime p -> #|G| = p -> p.-abelem G.
Lemma abelem_cyclic p G : p.-abelem G -> cyclic G = (logn p #|G| <= 1).
Lemma abelemS p H G : H \subset G -> p.-abelem G -> p.-abelem H.
Lemma abelemJ p G x : p.-abelem (G :^ x) = p.-abelem G.
Lemma dprod_abelem p A B G :
A \x B = G -> p.-abelem G = p.-abelem A && p.-abelem B.
Lemma is_abelem_pgroup p G : p.-group G -> is_abelem G = p.-abelem G.
Lemma is_abelemP G : reflect (exists2 p, prime p & p.-abelem G) (is_abelem G).
Lemma pElemP p A E : reflect (E \subset A /\ p.-abelem E) (E \in 'E_p(A)).
Lemma pElemI p A B : 'E_p(A :&: B) = 'E_p(A) :&: subgroups B.
Lemma card_pnElem p n A E : E \in 'E_p^n(A) -> #|E| = (p ^ n)%N.
Lemma pnElem_prime p n A E : E \in 'E_p^n.+1(A) -> prime p.
Lemma pnElemS p n A B : A \subset B -> 'E_p^n(A) \subset 'E_p^n(B).
Lemma pnElemI p n A B : 'E_p^n(A :&: B) = 'E_p^n(A) :&: subgroups B.
Lemma card_p1Elem p A X : X \in 'E_p^1(A) -> #|X| = p.
Lemma TIp1ElemP p A X Y :
X \in 'E_p^1(A) -> Y \in 'E_p^1(A) -> reflect (X :&: Y = 1) (X :!=: Y).
Lemma card_p1Elem_pnElem p n A E :
E \in 'E_p^n(A) -> #|'E_p^1(E)| = (\sum_(i < n) p ^ i)%N.
Lemma card_p1Elem_p2Elem p A E : E \in 'E_p^2(A) -> #|'E_p^1(E)| = p.+1.
Lemma nElemP n G E : reflect (exists p, E \in 'E_p^n(G)) (E \in 'E^n(G)).
Arguments nElemP {n G E}.
Lemma nElem0 G : 'E^0(G) = [set 1%G].
Lemma nElem1P G E :
reflect (E \subset G /\ exists2 p, prime p & #|E| = p) (E \in 'E^1(G)).
Lemma nElemS n G H : G \subset H -> 'E^n(G) \subset 'E^n(H).
Lemma nElemI n G H : 'E^n(G :&: H) = 'E^n(G) :&: subgroups H.
Lemma def_pnElem p n G : 'E_p^n(G) = 'E_p(G) :&: 'E^n(G).
Lemma pmaxElemP p A E :
reflect (E \in 'E_p(A) /\ forall H, H \in 'E_p(A) -> E \subset H -> H :=: E)
(E \in 'E*_p(A)).
Lemma pmaxElem_LdivP p G E :
prime p -> reflect ('Ldiv_p('C_G(E)) = E) (E \in 'E*_p(G)).
Lemma pmaxElemS p A B :
A \subset B -> 'E*_p(B) :&: subgroups A \subset 'E*_p(A).
Lemma pmaxElemJ p A E x : ((E :^ x)%G \in 'E*_p(A :^ x)) = (E \in 'E*_p(A)).
Lemma grank_min B : 'm(<<B>>) <= #|B|.
Lemma grank_witness G : {B | <<B>> = G & #|B| = 'm(G)}.
Lemma p_rank_witness p G : {E | E \in 'E_p^('r_p(G))(G)}.
Lemma p_rank_geP p n G : reflect (exists E, E \in 'E_p^n(G)) (n <= 'r_p(G)).
Lemma p_rank_gt0 p H : ('r_p(H) > 0) = (p \in \pi(H)).
Lemma p_rank1 p : 'r_p([1 gT]) = 0.
Lemma p_rank_abelem p G : p.-abelem G -> 'r_p(G) = logn p #|G|.
Lemma p_rankS p A B : A \subset B -> 'r_p(A) <= 'r_p(B).
Lemma p_rankElem_max p A : 'E_p^('r_p(A))(A) \subset 'E*_p(A).
Lemma p_rankJ p A x : 'r_p(A :^ x) = 'r_p(A).
Lemma p_rank_Sylow p G H : p.-Sylow(G) H -> 'r_p(H) = 'r_p(G).
Lemma p_rank_Hall pi p G H : pi.-Hall(G) H -> p \in pi -> 'r_p(H) = 'r_p(G).
Lemma p_rank_pmaxElem_exists p r G :
'r_p(G) >= r -> exists2 E, E \in 'E*_p(G) & 'r_p(E) >= r.
Lemma rank1 : 'r([1 gT]) = 0.
Lemma rank_gt0 G : ('r(G) > 0) = (G :!=: 1).
Lemma rank_witness G : {p | prime p & 'r(G) = 'r_p(G)}.
Lemma rank_pgroup p G : p.-group G -> 'r(G) = 'r_p(G).
Lemma rank_Sylow p G P : p.-Sylow(G) P -> 'r(P) = 'r_p(G).
Lemma rank_abelem p G : p.-abelem G -> 'r(G) = logn p #|G|.
Lemma nt_pnElem p n E A : E \in 'E_p^n(A) -> n > 0 -> E :!=: 1.
Lemma rank_geP n G : reflect (exists E, E \in 'E^n(G)) (n <= 'r(G)).
End ExponentAbelem.