Introduction

Contents

Introduction to Matrix Groups

A matrix group G may be defined over any ring R for which Magma has a method for computing the inverse of a matrix. However, the availability of machinery for determining structural information is dependent upon the properties of the base ring R.

We distinguish several different cases.

(i)
If the ring R is a finite field then the group must be finite. If the group has moderate degree and it is possible to find a low dimensional subspace of the natural vector space for G whose orbit under G has length bounded by a million or so, then it is possible to construct a stabilizer chain representation for the group similar to that used for permutation groups (the BSGS representation [But76]). In order to increase the chances of finding a short orbit the Murray-O'Brien [MO95] strategy for selecting base points is used. The availability of a BSGS representation allows the structure of the group to be investigated in detail.

(ii)
If the coefficient ring R is a finite field but the degree and size of the group are such that it is not possible to construct a useful BSGS representation then the group may be investigated using techniques based on a theorem of Aschbacher that classifies the maximal subgroups of GL(n, q). This approach is under intensive development by Leedham-Green, O'Brien and others. Code implementing some parts is documented in Chapter ALMOST SIMPLE GROUPS.

(iii)
If the ring R is the Euclidean Ring Z/mZ, then the group must be finite. If the group has moderate degree and it is possible to find a vector in the natural R-module for G whose orbit has length bounded by a million or so, then again it is possible to compute structural information using the BSGS representation.

(iv)
If the ring R has infinite cardinality and satisfies certain properties, Magma can sometimes determine whether the group is finite or infinite. In particular, this can be done when R is the ring of integers, the field of rational numbers, or an algebraic number field (including cyclotomic and quadratic fields). If G is infinite, and has not been created as a Lie group, then Magma currently provides little beyond basic arithmetic on elements.

(v)
If the ring R has infinite cardinality but the group G is finite and R is either a field or an Euclidean Domain then it may be possible to construct a BSGS representation as above and thereby undertake structural computation.

(vi)
If an (infinite) matrix group can be created as a Lie group then machinery based on Lie Theory may be used to analyse the group. The facilities for Lie groups are described in Chapter GROUPS OF LIE TYPE.

Matrix groups over rings of infinite cardinality may be created regardless as to whether they are finite or not. If the coefficient ring R is either the ring of integers, the rational field, a quadratic field, a cyclotomic field, or a number field a matrix group may then be tested for finiteness by use of the function IsFinite. However, most functions that determine structural properties of a group apply only to finite groups.

The Support

Matrix groups may be defined over any ring for which Magma has a method for computing matrix inverses. However, the structure algorithms assume that the group is finite and is defined over either a field, an Euclidean Domain or the Euclidean Ring Z/mZ.

The Category of Matrix Groups

The family of matrix groups over a particular ring R forms a category where the objects are the matrix groups and the morphisms are group homomorphisms. The collection of all matrix groups forms a family of categories indexed by the category of rings. The Magma designation for this family of categories of matrix groups is GrpMat.

The Construction of a Matrix Group

A group of n x n matrices defined over the ring R is created as a subgroup of the general linear group GL(n, R). Thus the construction of a general matrix group is a two step process:

(i)
The appropriate general linear group, GL(n, R), is constructed;

(ii)
The required group G is then defined as a subgroup of GL(n, R).

For convenience, a constructor MatrixGroup< ... >, which combines these two steps, is provided.

V2.28, 13 July 2023