%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Chapter{Introduction}

\atindex{Nilmat package}{@Nilmat package}

This package is for computing with nilpotent matrix groups over a
field $\F$, where $\F$ is a finite field $GF(q)$ or the rational
number field $\Q$.

\package{Nilmat} contains an implementation of algorithms
developed over the past few years, available in theoretical form
in the papers \cite{DF04,DF05b,DF06,DF07}. The theory of nilpotent
matrix groups is an essential part of linear group theory. Many
structural and classification results for nilpotent linear groups
are known (see e.g. \cite{Sup76,Weh73}), and specialized methods
for handling these groups have been developed. The computational
advantages of nilpotent linear groups have been addressed in
\cite{DF05a}. For a full description of most of the algorithms of
this package, further general information, and historical remarks,
see \cite{DF06,DF07}.

One purpose of \package{Nilmat} is testing nilpotency of a
subgroup $G$ of $GL(n,\F)$. If $G\< GL(n,\Q)$ is found to be
nilpotent then the package provides a function for deciding
whether $G$ is finite. If $G\< GL(n,q)$ is found to be nilpotent
then the package provides a function that returns the Sylow
subgroups of $G$. Additional functions allow one to test whether a
nilpotent subgroup $G$ of $GL(n,\F)$ is completely reducible or
unipotent, and to compute the order of $G$ if it is finite.

Another feature of \package{Nilmat} is a library of nilpotent
primitive matrix groups. Specifically, for each integer $n>1$ and
prime power $q$, this library returns a complete and irredundant
list of $GL(n,q)$-conjugacy class representatives of the
nilpotent primitive subgroups of $GL(n,q)$.

The problem of constructing nilpotent matrix groups is interesting
in its own right. We have included in the package functions
concerned with this problem. For example, one such function
constructs maximal absolutely irreducible nilpotent subgroups of
$GL(n,q)$.

Related research on solvable and polycyclic matrix groups was
carried out by Bj\accent127orn Assmann and Bettina Eick in
\cite{AE05,AE07}. Most of the algorithms in \cite{AE05} were
implemented in the {\GAP} package \package{Polenta}, on which
\package{Nilmat} partially relies.

This work has emanated from research conducted with the financial
support of Science Foundation Ireland and the German Academic
Exchange Service (DAAD).
