Arguments gen_prodgP {gT A x}.
Arguments joing_idPl {gT G A}.
Arguments joing_idPr {gT A G}.
Arguments mulGsubP {gT K H G}.
Arguments joing_subP {gT A B G}.
Section Cycles.
(* Elementary properties of cycles and order, needed in perm.v.  *)
(* More advanced results on the structure of cyclic groups will  *)
(* be given in cyclic.v.                                         *)
Variable gT : finGroupType.
Implicit Types x y : gT.
Implicit Types G : {group gT}.

(* Specifications: *)
Lemma cycle1 : <[1]> = [1 gT].
Lemma cycle2g x : #[x] = 2 -> <[x]> = [set 1; x].
Lemma cycleP x y : reflect (exists i, y = x ^+ i) (y \in <[x]>).
Lemma expg_order x : x ^+ #[x] = 1.
Lemma expg_mod p k x : x ^+ p = 1 -> x ^+ (k %% p) = x ^+ k.
Lemma expg_mod_order x i : x ^+ (i %% #[x]) = x ^+ i.
Lemma orderV x : #[x^-1] = #[x].
Arguments normP {x A}.
Lemma group_set_normaliser A : group_set 'N(A).
Canonical normaliser_group A := group (group_set_normaliser A).
Lemma normsP A B : reflect {in A, normalised B} (A \subset 'N(B)).
Arguments normsP {A B}.
Lemma memJ_norm x y A : x \in 'N(A) -> (y ^ x \in A) = (y \in A).
Lemma norm_joinEl G H : G \subset 'N(H) -> G <*> H = G * H.
Lemma normJ A x : 'N(A :^ x) = 'N(A) :^ x.
Lemma norm_conj_norm x A B :
x \in 'N(A) -> (A \subset 'N(B :^ x)) = (A \subset 'N(B)).
Lemma class_support_norm A G : G \subset 'N(class_support A G).
Section norm_trans.