%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%W  Cubefree.tex        Cubefree documentation             Heiko Dietrich
%%
%H  $Id: $
%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Chapter{Functionality of the Cubefree package}

\atindex{Functionality of the Cubefree package}{@functionality %
                                            of the {\Cubefree} package}

This chapter describes the methods available from the {\Cubefree} package.



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{New methods}

This section lists the implemented functions.


\>ConstructAllCFGroups( <order> ) F

The input <order> has to be a positive cubefree integer. The output is a complete and irredundant list of isomorphism
type representatives of groups of this size. If possible, the groups are given
as pc groups and as permutations groups otherwise.

\>ConstructAllCFSolvableGroups( <order> ) F

The input <order> has to be a positive cubefree integer. The output is a complete and irredundant list of isomorphism
type representatives of solvable groups of this size. The groups are given as pc groups.

\>ConstructAllCFNilpotentGroups( <order> ) F

The input <order> has to be a positive cubefree integer. The output is a complete and irredundant list of isomorphism
type representatives of nilpotent groups of this size. The groups are given as pc groups.

\>ConstructAllCFSimpleGroups( <order> ) F

The input <order> has to be a positive cubefree integer. The output is a complete and irredundant list of isomorphism
type representatives of simple groups of this size. In particular, there
exists either none or exactly one simple group of the given order.

\>ConstructAllCFFrattiniFreeGroups( <order> ) F

The input <order> has to be a positive cubefree integer. The output is a complete and irredundant list of isomorphism
type representatives of Frattini-free groups of this size.

\>NumberCFGroups( <n>[, <bool> ] ) F

The input <n> has to be a positive cubefree integer and the output is the number of all
cubefree groups of order <n>. The SmallGroups library  is used whenever
possible, i.e. when $n\leq 50000$. Only if <bool> is set to false, then only the numbers of
squarefree groups are taken from the SmallGroups library.


\>NumberCFSolvableGroups( <n>[, <bool> ] ) F 

The input <n> has to be a positive cubefree integer and the output is the number of all
cubefree solvable groups of order <n>. The SmallGroups library is used whenever
possible, i.e. when $n\leq 50000$. Only if <bool> is set to false, then only the numbers of
squarefree groups are taken from the SmallGroups library.


\>CountAllCFGroupsUpTo( <n>[, <bool> ]) F  

The input is a positive integer <n> and the output is a list $L$ of size <n> such that
$L[i]$ contains the number of isomorphism types of groups of order $i$ if $i$
is cubefree and $L[i]$ is not bound, otherwise, $1\leq i \leq n$. The SmallGroups library is used whenever
possible, i.e. when $n\leq 50000$. Only if <bool> is set to false, then only the numbers of
squarefree groups are taken from the SmallGroups library.


\>IsCubeFreeInt( <n> ) P

The output is <true> if <n> is a cubefree integer and <false> otherwise.


\>IsSquareFreeInt( <n> ) P

The output is <true> if <n> is a squarefree integer and <false> otherwise.

\>IrreducibleSubgroupsOfGL( <n>, <q> ) O

The current version of this function allows only <n>=2. The input <q> has to be a prime-power <q>$=p^r$ with $p\geq 5$ a prime. The output
is a list of all irreducible subgroups of GL$(2,q)$ up to conjugacy.

\>RewriteAbsolutelyIrreducibleMatrixGroup( <G> )

The input $G$ has to be an absolutely irreducible matrix group over a finite
field GF$(q)$. If possible, the output is
$G$ rewritten over the subfield of GF$(q)$ generated by the traces of the
elements of $G$. If no rewriting is possible, then the
input $G$ is returned. 


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Comments on the implementation}

This section provides some useful information about the implementations.


*ConstructAllCFGroups*

The function `ConstructAllCFGroups' constructs all groups of a given
cubefree order up to isomorphism using the Frattini Extension Method as described in \cite{Di05},
  \cite{DiEi05}, \cite{BeEia}, and \cite{BeEib}. One step in the Frattini
  Extension Method is to compute Frattini extensions 
  and for this purpose some already implemented
methods of the required \GAP ~package \GrpConst ~are used. 

Since `ConstructAllCFGroups' requires only
some special types of irreducible subgroups of GL$(2,p)$ (e.g. of cubefree order), it
contains a modified internal version of
`IrreducibleSubgroupsOfGL'. This means that the latter is not called explicitely by
`ConstructAllCFGroups'.

To reduce runtime, the generators of the reducible subgroups of GL$(2,p)$,
$2\leq p \leq 100$ a prime, are stored in the file 'diagonalMatrices.dat'.



*ConstructAllCFSimpleGroups and ConstructAllCFNilpotentGroups*

The construction of simple or nilpotent groups of cubefree
order is rather easy, see \cite{Di05} or \cite{DiEi05}. In particular, the
methods used in these cases are independent from the methods used in the general cubefree case.



*CountAllCFGroupsUpTo*

As described in \cite{Di05} and \cite{DiEi05}, every cubefree group $G$ has
the form $G=A\times I$ where $A$ is trivial or non-abelian simple and $I$ is
solvable. Further, there is a one-to-one correspondence between the solvable
cubefree groups and <some> solvable Frattini-free groups. This one-to-one
correspondence allows to count the number of groups of a given cubefree order without
computing any Frattini extension.
To reduce runtime, the
computed irreducible and reducible subgroups of the general linear groups
GL$(2,p)$ and also the number of the computed solvable
Frattini-free groups are stored during the whole computation. This is very
memory consuming but reduces the runtime significantly. The alternative is to run a loop over `NumberCFGroups'.

*IrreducibleSubgroupsOfGL*

If the input is a matrix group over GF$(q)$, then the algorithm needs to construct GF$(q^3)$ internally. 



*RewriteAbsolutelyIrreducibleMatrixGroup*

The function `RewriteAbsolutelyIrreducibleMatrixGroup' as described
algorithmically in
\cite{GlHo97} is probabilistic. If the input is $G\leq$GL$(d,p^r)$, then the
expected runtime is $O(rd^3)$.


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Accuracy check}

We have compared the results of `ConstructAllCFGroups' with the library of
cubefree groups of {\GrpConst}. Further, we compared the number and size of the
solvable groups constructed by `IrreducibleSubgroupsOfGL' with the library of {\Irredsol}.


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

