############################################################################
#
#                 Matrix Group package  
#
#                 Version 1.0, January 1997 
#
############################################################################
#
# The Package 
# 
############################################################################

This  library provides  functions which  may  be used to construct and
investigate the structure of matrix groups defined over finite fields.

The  aim  of  the  matrix   package is   to   provide integrated   and
comprehensive   access   to a   collection  of  algorithms,  developed
primarily over the past   decade, for investigating the structure   of
matrix groups defined  over finite   fields.  We  sought to  design  a
package  which    provides easy access   to   existing  algorithms and
implementations, and which both allows  new algorithms to be developed
easily using existing components, and to update existing ones readily.

Some of   the facilities provided  are  necessarily limited,   both on
theoretical and practical    grounds; others  are   *experimental* and
developmental in nature;  we welcome criticism  of  their performance.   
One motivation for  its  release is to encourage  input from others.

############################################################################
Contents of the matrix package
############################################################################

We  summarise the contents of  the package  and provide references for
the relevant algorithms.

(a) Irreducibility, absolutely  irreducibility for $G$-modules; isomorphism  
    testing  for irreducible $G$-modules; see Holt and  Rees [5].  

(b) Decide whether a matrix group  has certain decompositions with respect 
    to a normal  subgroup; see Holt, Leedham-Green,  O'Brien and Rees [6].     

(c) Decide whether a matrix group  is primitive; see Holt, Leedham-Green,
    O'Brien and Rees [7].  

(d) Decide   whether a given  group  contains  a  classical  group in its
    natural representation. Here we  provide access to the algorithms  of
    Celler and Leedham-Green [3] and those of Niemeyer and Praeger [11, 12].
   
(e) A  constructive recognition  process  for  the  special  linear group
    developed by Celler and Leedham-Green [4].

(e) Random element selection; see Celler, Leedham-Green, Murray, Niemeyer
    and  O'Brien [1].    

(f) Matrix order calculation; see Celler and  Leedham-Green [2].  

(g) Base point selection for the Random Schreier-Sims algorithm
    for matrix groups; see Murray and O'Brien [10].

(h) Decide  whether a matrix group preserves  a tensor decomposition; see
    Leedham-Green and O'Brien [8,  9].  

(i) Recursive  exploration  of reducible  groups;  see  Pye [13].   

############################################################################
Accessing  the matrix package
############################################################################

The matrix package contains the following subdirectories:

classic.clg     doc             smash	tensor
classic.np      fixes-3.4       lib             
data            reduce          tst

In  order   to  access    the  functions,  you    must use   the  command
'RequirePackage' to load them.

|    gap> RequirePackage("matrix");|

At some stages, the *tensor code* also requires the "meataxe" package,
and it will attempt to load the package.

To  test  that  the package functions   correctly,  change to  the tst
directory, and use the following command:

|    gap> Read("tst.g");|

The test package takes about  5 minutes of CPU time  on a P6 200  Mhz
machine.

The doc  directory contains the   LaTeX file matrix.tex;  a  processed
version of the manual is suppled as latexme.{dvi,ps}

#############################################################################
#
#References
#
#############################################################################

The interested reader is referred to the following papers
for details of the algorithms used.

[1]
  Frank Celler,  Charles  R. Leedham-Green, Scott H. Murray,  Alice
  C.  Niemeyer,  and E.A.  O'Brien, ``Generating  random elements of a
  finite group'', Comm. Algebra 23, 4931--4948, 1995.

[2]
  Frank Celler  and C.R.   Leedham-Green, ``Calculating the  Order of an
  Invertible Matrix'', ``Groups and Computation II'', 
  Amer. Math. Soc. DIMACS Series 28, 1997.

[3]
  Frank Celler and C.R. Leedham-Green, ``A Non-Constructive Recognition
  Algorithm  for the  Special  Linear and  Other Classical Groups'', 
 ``Groups and Computation II'', Amer. Math. Soc. DIMACS Series 28, 1997.

[4]
  Frank  Celler and C.R.  Leedham-Green,   ``A constructive recognition
  algorithm for the special linear group'', preprint.

[5]
  Derek F. Holt and Sarah Rees,  ``Testing modules for irreducibility'', 
  J. Austral. Math. Soc. Ser. A, 57, 1--16, 1994.

[6] 
  Derek F. Holt, C.R. Leedham-Green, E.A. O'Brien, and Sarah Rees, 
 ``Computing Matrix Group Decompositions with Respect to a Normal Subgroup'', 
 J. Algebra 184, 818--838, 1996.

[7]
  Derek F. Holt, C.R. Leedham-Green, E.A. O'Brien, and Sarah Rees, 
  ``Testing Matrix Groups for Imprimitivity'', 
  J. Algebra 184, 795--817, 1996.

[8] 
  C.R. Leedham-Green and E.A. O'Brien,
  ``Tensor Products are Projective Geometries'',
  to appear J. Algebra.

[9]
   C.R. Leedham-Green and E.A. O'Brien,
   ``Recognising tensor products of matrix groups'',
   to appear Internat. J. Algebra Comput.

[10] 
   Scott H. Murray and E.A. O'Brien,
  ``Selecting Base Points for the Schreier-Sims Algorithm for Matrix Groups'',
   J. Symbolic Comput. 19, 577--584, 1995.

[11]
   Alice C. Niemeyer and  Cheryl E. Praeger 
   ``A Recognition Algorithm for Classical Groups over Finite Fields'',
   submitted to Proceedings of the London Mathematical Society.

[12]
   Alice C. Niemeyer and  Cheryl E. Praeger 
   ``Implementing a Recognition Algorithm for Classical Groups'',
   ``Groups and Computation II'', Amer. Math. Soc. DIMACS Series 28, 1997.

[13]
   Anthony Pye, ``Recognising reducible matrix groups'', 
   in preparation.

############################################################################
# The Developers                                                          
############################################################################

The development and organisation  of this package  was carried out  in
Aachen by Frank Celler, Eamonn O'Brien and Anthony Pye.

In  addition to the new  material, this package combines, updates, and
replaces material from various contributing sources.  These include:

1. Classic package -- originally developed by Celler;

2. Smash  package -- originally  developed by Holt, Leedham-Green,
   O'Brien, and Rees;

3. Niemeyer/Praeger  classical recognition algorithm  -- originally
   developed by Niemeyer;

4. Recursive code -- originally developed by Pye.

As part of the  preparation of this package,  much of  the contributed
code  was  revised  (sometimes significantly)    and streamlined,   in
cooperation with the original developers.

Comments and criticisms are welcome and should be directed to:

Eamonn O'Brien
obrien@math.auckland.ac.nz
