[Next][Prev] [Right] [Left] [Up] [Index] [Root]

The Database of Irreducible Soluble Matrix Groups

This database contains one representative of each conjugacy class of irreducible soluble subgroups of ( GL)(n, p), p prime, They may be accessed through specifying a group by its label in the database, as described in the section on basic functions, or through searching using predicates, or through a process.

Subsections

Basic Functions

The basic access functions for the database are described in this section. The label of a group in the database is three integers, d, p, i. The first, d >= 2, is the degree of the matrix group. The second, a prime p, specifies the base field of the group. The third is the number of the group in this degree/field set.

IsolGroupDatabase() : -> DB
Open the database and return a reference to it. This reference may be passed to other functions so that they do fewer file operations.
IsolGroup(n, p, i) : RngIntElt, RngIntElt, RngIntElt -> GrpMat
Group(D, n, p, i) : DB, RngIntElt, RngIntElt, RngIntElt -> GrpMat
Given a positive integer o <= 1000 (with o != 512 or 768) and a positive integer n, return the n-th group of order o.
IsolNumberOfDegreeField(n, p) : RngIntElt, RngIntElt -> RngIntElt
The number of groups in the database of degree n over GF(p).
IsolInfo(n, p, i) : RngIntElt, RngIntElt, RngIntElt -> MonStgElt
This function returns a string which gives some information about a group in the database given its label. In particular, it contains the order and primitivity information about the group.
IsolOrder(n, p, i) : RngIntElt, RngIntElt, RngIntElt -> RngIntElt
This function returns the order of a group given its label.
IsolMinBlockSize(n, p, i) : RngIntElt, RngIntElt, RngIntElt -> RngIntElt
This function returns the minimal block size of a group given its label. If it is primitive, it returns 0.
IsolIsPrimitive(n, p, i) : RngIntElt, RngIntElt, RngIntElt -> BoolElt
This function returns whether a group is primitive given its label.
IsolGuardian(n, p, i) : RngIntElt, RngIntElt, RngIntElt -> GrpMat
This function returns the "guardian" of a group given its label, i.e., the maximal subgroup of GL(n, p) of which the group is a subgroup.

Example GrpData_IsolGroup (H34E11)

We find a group of degree 3 and its guardian.

> IsolNumberOfDegreeField(3, 5);
22
> G := IsolGroup(3, 5, 10);
> #G;
62
> GG := IsolGuardian(3, 5, 10);
> #GG;
372
> G;
MatrixGroup(3, GF(5)) of order 62 = 2 * 31
Generators:
  [0 0 1]
  [3 0 4]
  [2 3 1]
> GG;
MatrixGroup(3, GF(5)) of order 372 = 2^2 * 3 * 31
Generators:
  [1 0 0]
  [3 2 2]
  [1 4 2]

  [0 1 0]
  [0 0 1]
  [3 0 4]

Searching with predicates

We may search the database for a group satisfying some predicate. A predicate for a group in this database is one of the following:

IsolGroupSatisfying(f) : Predicate -> GrpMat
Given a predicate f, return a group satisfying it. This function runs through all the stored groups and applies the predicate until it finds a suitable one. If no group is found, an error message is printed.
IsolGroupOfDegreeSatisfying(d, f) : RngIntElt, Predicate -> GrpMat
As IsolGroupSatisfying(f), except it only runs through the groups of degree d.
IsolGroupOfDegreeFieldSatisfying(d,{p, f}) : RngIntElt, RngIntElt, Predicate -> GrpMat
As IsolGroupSatisfying(f), except it only runs through the groups of degree d and defined over GF(p).
IsolGroupsSatisfying(f) : Predicate -> SeqEnum
As IsolGroupSatisfying(f), except a sequence of all such groups is returned.
IsolGroupsOfDegreeSatisfying(d, f) : RngIntElt, Predicate -> SeqEnum
As IsolGroupOfDegreeSatisfying(d, f), except a sequence of all such groups is returned.
IsolGroupsOfDegreeFieldSatisfying(d,{p, f}) : RngIntElt, RngIntElt, Predicate -> SeqEnum
As IsolGroupOfDegreeFieldSatisfying(d, p, f), except a sequence of all such groups is returned.

Processes

A small group process enables iteration over all groups with specified degrees and fields, without having to create and store all such groups together.

A process is created via the function IsolProcess and its variants. The standard process functions IsEmpty, Current, CurrentLabel and Advance can then be applied to the process.

A specifier for degree or field is one of a valid degree (field size), or a tuple < l, h >, of valid degrees (field sizes) which is interpreted to mean all degrees (prime field sizes) in [l, h].

IsolProcess() : -> Process
Return a process which will iterate though all groups in the database.
IsolProcessOfDegree(d) : . -> Process
Return a process which will iterate though all groups in the database of degree d.
IsolProcessOfField(p) : . -> Process
Return a process which will iterate though all groups in the database over the specified field.
IsolProcessOfDegreeField(d, p) : ., . -> Process
Return a process for iterating over all the stored groups with degree specifier d and field specifier p. Initially it points to the first such group (the principal key is the degree).
IsEmpty(p) : Process -> BoolElt
True if the process p has passed its last group.
Current(p) : Process -> GrpMat
Return the current group of the process p.
CurrentLabel(p) : Process -> RngIntElt, RngIntElt, RngIntElt
Return the label of the current group of the process p. That is, return d, n and i such that the current group is IsolGroup(d, n, i).
Advance(~p) : Process ->
Move the process p to its next group.

Example GrpData_sg-process (H34E12)

We use a small group process to look at all the groups of degree 3.

> P := IsolProcessOfDegree(3);    
> ords := {* *};
> repeat
>   Include( ords, #Current(P));
>   Advance( P);
> until IsEmpty(P);
> ords;
{* 31, 62, 93, 7, 124, 96^^4, 39, 12^^2, 186, 13, 192^^2, 48^^4, 
21, 24^^6, 26 *}
 [Next][Prev] [Right] [Left] [Up] [Index] [Root]