# Normal Subgroups and Subgroup Series

## Characteristic Subgroups

### `Centre(G): GrpPC -> GrpPC`

### `Center(G): GrpPC -> GrpPC`

The centre of the group $G$.

### `CommutatorSubgroup(G): GrpPC -> GrpPC`

### `DerivedSubgroup(G): GrpPC -> GrpPC`

### `DerivedGroup(G): GrpPC -> GrpPC`

The derived subgroup of the group $G$.

### `FittingSubgroup(G): GrpPC -> GrpPC`

### `FittingGroup(G): GrpPC -> GrpPC`

The Fitting subgroup of the group $G$.

### `FrattiniSubgroup(G): GrpPC -> GrpPC`

The Frattini subgroup of the group $G$.

### `PrefrattiniSubgroup(G): GrpPC -> GrpPC`

A prefrattini subgroup of the group $G$.

### `FrattiniQuotientRank(G): GrpPC -> GrpPC`

The rank of the Frattini quotient of the $p$-group $G$.

### `Hypercentre(G): GrpPC -> GrpPC`

### `Hypercenter(G): GrpPC -> GrpPC`

The hypercentre of the group $G$, i.e. the stationary term in the upper central series for $G$.

### `MinimalNormalSubgroups(G): GrpPC -> [GrpPC]`

A sequence containing all minimal normal subgroups of $G$.

### `pCore(G, S): GrpPC, { RngIntElt} -> GrpPC`

### `pCore(G, S): GrpPC, RngIntElt -> GrpPC`

The maximal normal $\pi$-subgroup of $G$, $O_{\pi}(G)$, where $\pi$ is defined by $S$. The argument $S$ may be a set of primes, a single prime, or the negation of a single prime. If $S = -p$, then $O_{p'}(G)$ is returned.

### `Socle(G): GrpPC -> GrpPC`

The socle of $G$.

## Subgroup Series

### `PrimaryAbelianBasis(G): GrpPC -> [ GrpPCElt ], [ RngIntElt ]`

### `AbelianBasis(G): GrpPC -> [ GrpPCElt ], [ RngIntElt ]`

Given an abelian group $G$, return sequences $B$ and $I$ such that ${\rm order}(B[i]) = I[i]$ and $\langle B\rangle = G$ and the terms of $I$ give the types of each $p$-primary component of $G$. The non-primary form uses the Smith form invariants, i.e. each element of the sequence divides the next.

### `PrimaryAbelianInvariants(G): GrpPC -> [RngIntElt]`

### `AbelianInvariants(G): GrpPC -> [RngIntElt]`

Given an abelian group $G$, return a sequence $Q$ containing the types of each $p$-primary component of $G$. The non-primary form gives the Smith form invariants, i.e. each element of the sequence divides the next.

### `ChiefSeries(G): GrpPC -> [GrpPC]`

A chief series for the group $G$. The series is returned as a sequence of subgroups of $G$.

### `CompositionSeries(G): GrpPC -> [GrpPC]`

A composition series for the group $G$. The series is returned as a sequence of subgroups of $G$. The $i$-th term of the composition series has a presentation given by the generators `G.i` through `G.NPCgens(G)` and relations involving those generators only.

### `CompositionFactors(G): GrpPC -> SeqEnum`

A sequence of integer tuples that describe the composition factors, ordered according to some composition series for the group $G$. Since each factor will be a cyclic group of prime order, the tuples will each be of the form $<19,0,q>$ representing the cyclic group of order $q$. The sequence has a custom print routine.

### `CompositionSeries(G, i): GrpPC, RngIntElt -> [GrpPC]`

The $i+1$-th entry of the composition series for the group $G$. Its presentation is given by the generators `G.(i+1)` through `G.m`, where $m$ is the number of pc-generators of $G$ and relations involving these generators only.

### `DerivedSeries(G): GrpPC -> [GrpPC]`

The derived series of the group $G$. The series is returned as a sequence of subgroups.

### `DerivedLength(G): GrpPC -> RngIntElt`

The derived length of the group $G$.

### `ElementaryAbelianSeries(G): GrpPC -> [GrpPC]`

An elementary abelian series is a chain of normal subgroups with the property that the quotient of each pair of successive terms in the series is elementary abelian. The elementary abelian series for the group $G$ is returned as a sequence of subgroups.

### `ElementaryAbelianSeriesCanonical(G): GrpPC -> [GrpPC]`

Gives a similar result to using `ElementaryAbelianSeries`, except the series returned depends only on the isomorphism type of the group, and consists of characteristic subgroups. This function may be slower than `ElementaryAbelianSeries`.

### `LowerCentralSeries(G): GrpPC -> [GrpPC]`

The lower central series for the group $G$. The series is returned as a sequence of subgroups.

### `NilpotencyClass(G): GrpPC -> RngIntElt`

If $G$ is nilpotent, return the nilpotence class of $G$. Otherwise, -1 is returned.

### `pCentralSeries(G, p): GrpPC, RngIntElt -> [GrpPC]`

The $p$-central series for $G$, where $p$ is a prime dividing $|G|$. The series is returned as a sequence of subgroups. The $p$-central series $P_1 \triangleright P_2  \triangleright \cdots \triangleright  P_i$ of a soluble group $G$ is defined inductively as follows:

**•**
$P_1 = G$,

**•**
$P_{i+1} = (G, P_i)P_i^p$, for $i > 0$.

### `SubnormalSeries(G, H): GrpPC, GrpPC -> [GrpPC]`

Given a group $G$ and a subgroup $H$ of $G$, return a sequence of subgroups commencing with $G$ and terminating with $H$, such that each subgroup is normal in the previous one. If $H$ is not subnormal in $G$, the empty sequence is returned.

### `UpperCentralSeries(G): GrpPC -> [GrpPC]`

The upper central series of $G$. The series is returned as a sequence of subgroups.

### `Example: EAS (ex-54e655)`

The elementary abelian series of the group $D_3 \wr D_5$ has terms of the following orders:

```magma
> H := DihedralGroup(GrpPerm, 5);
> G := WreathProduct(DihedralGroup(GrpPC, 3), DihedralGroup(GrpPC, 5),
>       [H.2, H.1]);
> EAS := ElementaryAbelianSeries(G);
> for i := 1 to #EAS do
>    print FactoredOrder(EAS[i]);
> end for;
    [ <2, 6>, <3, 5>, <5, 1> ]
    [ <2, 4>, <3, 5>, <5, 1> ]
    [ <2, 4>, <3, 5> ]
    [ <3, 5> ]
    []

```

Hence the elementary abelian factors can be seen to have sizes $2^2$, $5$, $2^4$, and $3^5$, reading from top to bottom.

## Series for $p$-groups

The following functions are only defined for a pc-group which is a $p$-group.

### `Agemo(G, i): GrpPC, RngIntElt -> GrpPC`

Given a $p$-group $G$, return the characteristic subgroup of $G$ generated by the elements $x^{p^i}$, $x \in G$, where $i$ is a positive integer.

### `Omega(G, i): GrpPC, RngIntElt -> GrpPC`

Given a $p$-group $G$, return the characteristic subgroup of $G$ generated by the elements of order dividing $p^i$, where $i$ is a positive integer.

### `JenningsSeries(G): GrpPC -> [GrpPC]`

Given a $p$-group $G$, return the Jennings series for $G$. The series is returned as a sequence of subgroups. The Jennings series $J_1 \triangleright J_2 \triangleright \cdots \triangleright J_i \cdots$ of a $p$-group $G$ is defined inductively as follows:

**•**
$J_1 = G$,

**•**
$J_{i+1} = <(J_i, G), J_k^p>$, with $k = \lceil (i+1)/p\rceil$, $i > 0$.

### `pClass(G): GrpPC -> RngIntElt`

The lower exponent-$p$ class of the $p$-group $G$.

### `pRanks(G): GrpPC -> [ RngIntElt ]`

A sequence whose $i$-th entry is the number of pc-generators for the lower exponent-$p$ class $i$ quotient of the $p$-group $G$.

## Normal Subgroups and Complements

### `NormalSubgroups(G): GrpPC -> SeqEnum`

The collection of all normal subgroups of $G$ returned as a sequence.

### `NormalLattice(G): GrpPC -> SubGrpLat`

The lattice of normal subgroups of $G$.

### `MinimalNormalSubgroup(G): GrpPC -> GrpPC`

An elementary abelian minimal normal subgroup of the soluble group $G$.

### `MinimalNormalSubgroup(G, N): GrpPC -> GrpPC`

Given a non-trivial, normal subgroup $N$ of $G$, return an elementary abelian minimal normal subgroup of $G$ contained in $N$.

### `Complements(G, N): GrpPC, GrpPC -> SeqEnum`

Given a normal subgroup $N$ of $G$, return conjugacy class representatives of all complements of $N$ in $G$. This function implements the first cohomology computation described in [[Celler *et al.*, 1990](../../references.md#cite-cnw-compls)].

### `NormalComplements(G, N): GrpPC, GrpPC -> SeqEnum`

Given a normal subgroup $N$ of $G$, return all normal complements of $N$ in $G$. This function implements the first cohomology computation described in [[Celler *et al.*, 1990](../../references.md#cite-cnw-compls)].

### `NormalComplements(G, H, N): GrpPC, GrpPC, GrpPC -> SeqEnum`

Given a normal subgroup $N$ of $G$, and a normal subgroup $H$ of $G$ containing $N$, return all complements of $N$ in $H$ which are normal in $G$. This function implements the first cohomology computation described in [[Celler *et al.*, 1990](../../references.md#cite-cnw-compls)].

### `Example: Normal Complements (ex-12efb9)`

We define the direct product of an extraspecial group of order $3^3$ and $D_3$ and let $N$ be the first factor of this product. Inside the Sylow 3-subgroup, we see that $N$ has 11 classes of complements, three of which are normal.

```magma
> A := ExtraSpecialGroup(GrpPC,3,1);
> B := DihedralGroup(GrpPC,3);
> G,f,p := DirectProduct(A,B);
> N := f[1](A);
> S3 := Sylow(G,3);
> cS := Complements(S3,N);
> [Index(S3,Normalizer(S3,t)):t in cS];
[ 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3 ]

```

We can compute only the normal complements by using `NormalComplements`.

```magma
> ncS := NormalComplements(S3,N);
> #ncS;
3

```

We can check that precisely one of these three complements is actually normal in $G$.

```magma
> [IsNormal(G,t):t in ncS];
[ true, false, false ]

```

Since $N$ has a $G$-normal complement in $S3$, we must have $S3$ normal in $G$. We can verify this. Using the three-parameter version of `NormalComplements` we can directly compute the $G$-normal complements of $N$ in $S3$.

```magma
> IsNormal(G,S3);
true
> ncG := NormalComplements(G,S3,N);
> #ncG;
1
> #NormalComplements(G,N);
1

```
