%!TEX root = manual.tex
% !TeX TS-program = pdftex
% !TEX spellcheck =en_GB
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%%  normal.tex              CRISP documentation            Burkhard Höfling
%%
%%  Copyright © 2015 Burkhard Höfling
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Chapter{Lists of normal subgroups}

The algorithms in {\CRISP} can also be used to compute certain normal subgroups of a finite soluble
group efficiently. In particular, {\CRISP} provides fast methods for computing all normal subgroups, all minimal normal subgroups, and the socle of a finite soluble group.


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Functions for normal and characteristic subgroups}\null

\>NormalSubgroups(<grp>) A

For finite soluble groups <grp>, {\CRISP} provides an efficient method to compute `NormalSubgroups' (see "ref:NormalSubgroups"). 

\>CharacteristicSubgroups(<grp>) A

returns a list containing all characteristic subgroups of the finite soluble group~<grp>. 
`CharacteristicSubgroups' calls `AllInvSgrsWithQPropUnderAction'.

\>MinimalNormalSubgroups(<grp>) A

\index{minimal normal subgroups}\relax
{\CRISP} provides an efficient method to compute a list of all minimal normal subgroups of <grp> (see "ref:MinimalNormalSubgroups"). 


\>MinimalNormalPSubgroups(<grp>, <p>) A

\index{minimal normal $p$-subgroups}\relax
For a prime <p>, this function computes a list of all <p>-subgroups which are minimal among the nontrivial
normal subgroups of <grp>. 

\>AbelianMinimalNormalSubgroups(<grp>) A

\index{minimal normal subgroups}\relax
This computes a list of all minimal normal subgroups of <grp> which are abelian. If <grp> is soluble, this list coincides with the list of all
minimal normal subgroups of <grp>.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Functions for the socle of finite groups}\null

\>Socle(<grp>) A

{\CRISP} provides a method for `Socle' (see "ref:Socle") for which works for 
all finite soluble groups <grp>. The socle of a group <grp> is the subgroup 
generated by all minimal normal subgroups of <grp>. See also "SolubleSocle" and
"PSocle" below.

\beginexample
gap> Size(Socle( DirectProduct(DihedralGroup(8), CyclicGroup(12))));
12
\endexample

\>AbelianSocle(<grp>) A
\>SolubleSocle(<grp>) A
\>SolvableSocle(<grp>) A

This function computes the soluble socle of <grp>. The soluble socle of a group <grp> is the
subgroup  generated by all minimal normal soluble subgroups of <grp>.

\>SocleComponents(<grp>) A

This function returns a list of minimal normal subgroups of <grp> such 
that the socle of <grp> (see "Socle") is the direct product of these minimal normal
subgroups. Note that, in general, this decomposition is not unique. Currently,
this function is only implemented for finite soluble groups. See also 
"SolubleSocleComponents" and  "PSocleComponents".

\>AbelianSocleComponents(<grp>) A
\>SolubleSocleComponents(<grp>) A
\>SolvableSocleComponents(<grp>) A

This function returns a list of soluble minimal normal subgroups of <grp> such
that the socle of <grp> (see "Socle") is the direct product of these minimal normal
subgroups. Note that, in general, this decomposition is not unique.

\>PSocle(<grp>, <p>) A

If $p$ is a prime, the $p$-socle of a group <grp> is the subgroup 
generated by all minimal normal $p$-subgroups of <grp>.

\>PSocleComponents(<grp>, <p>) A

For a prime $p$, this function returns a list of minimal normal $p$-subgroups of <grp>
such  that the $p$-socle of <grp> (see "PSocle") is the direct product of these minimal normal
subgroups. Note that, in general, this decomposition is not unique.

\>PSocleSeries(<grp>, <p>) A

For a prime <p>, this function returns an ascending <grp>-composition series of the <p>-socle of <grp>.


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%E
%%

