%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%W  Cubefree.tex        Cubefree documentation             Heiko Dietrich
%%
%Y  2005
%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\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> ) 

The <order> is the size of the desired groups and therefore has to be a
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> ) 

The <order> is the size of the desired groups and therefore has to be a
cubefree integer. The output is a complete and irredundant list of isomorphism
type representatives of solvable groups of this size.

\>ConstructAllCFNilpotentGroups( <order> ) 

The <order> is the size of the desired groups and therefore has to be a
cubefree integer. The output is a complete and irredundant list of isomorphism
type representatives of nilpotent groups of this size.

\>ConstructAllCFSimpleGroups( <order> ) 

The <order> is the size of the desired groups and therefore has to be a
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 required order.

\>ConstructAllCFFrattiniFreeGroups( <order> ) 

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

\>CountAllCFGroupsUpTo( <n> )

The input is an 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 IsBound$(L[i])=false$ otherwise, $1\leq i \leq n$. The SmallGroups library is used whenever
possible. If called CountAllCFGroups(<n>,<false>), then only the numbers of
squarefree groups are taken from the SmallGroups library.

\>NumberCFGroups( <n> )

The input is a cubefree integer <n> and the output is the number of all
cubefree groups of order <n>. The SmallGroups library is used whenever
possible. If called NumberCFGroups(<n>,<false>), then only the numbers of
squarefree groups are taken from the SmallGroups library.


\>NumberCFSolvableGroups( <n> )

The input is a cubefree integer <n> and the output is the number of all
cubefree solvable groups of order <n>. The SmallGroups library is used whenever
possible. If called NumberCFSolvableGroups(<n>,<false>), then only the numbers of
squarefree groups are taken from the SmallGroups library.

\>IsCubeFreeInt( <n> )

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


\>IsSquareFreeInt( <n> )

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

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

The current version of this method 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 an abbreviated and 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.gi'.

Since the {\GrpConst} package contains a very efficient method to construct the
groups of squarefree order, it might be more practical to use
<AllSmallGroups> (see \GrpConst) instead of <ConstructAllCFGroups> in the
squarefree case.

*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 and NumberCFGroups*

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. It is easy to modify
the code to one's priorities.

*IrreducibleSubgroupsOfGL*

The size of the input of <IrreducibleSubgroupsOfGL> is bounded by the
ability of \GAP ~to compute 'large' finite fields since the used algorithm to
construct the irreducible groups uses finite fields of
order at least $q^3$. Therefore, if $q$ is already a 'large' prime-power, then
$q^3$ might be too large for \GAP ~to construct GF$(q^3)$. 



*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 running time 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

