[Top] [Up] [Previous] [Next] [Index]

# 2 Accessing the data library

### Sections

1. Low level access functions
2. Finding matrix groups with given properties

This chapter describes various ways of accessing groups in the data library. It is possible to access individual groups in the lists provided (see Section Low level access functions), or to search for groups with certain properties (see Section Finding matrix groups with given properties).

## 2.1 Low level access functions

The access functions described in this section allow to check for the availability of data, the number of groups in each list calAn,q, individual groups in such a list, and the corresponding irreducible but not absolutely irreducible groups (see Chapter Overview).

- `IsAvailableIrreducibleSolvableGroupData(`n`,` q`) F`

  This function tests whether the irreducible solvable subgroup of GL(n,q) which cannot be written over a proper subfield of Fq are part of the IRREDSOL library.

- `IndicesIrreducibleSolvableMatrixGroups(`n`,` q`,` d`) F`

  Let n, d be positive integers and q a prime power. This function returns a set of integers parametrising the groups in the IRREDSOL library which are subgroups of GL(n,q) that cannot be written over a proper subfield of Fq and have splitting field Fq^d. This set is empty unless d divides n. An error is raised if the relevant data is not available (see IsAvailableIrreducibleSolvableGroupData for information how to check this first).

- `IrreducibleSolvableMatrixGroup(`n`,` q`,` d`,` k`) F`

  Let n be a positive integer and q a prime power. This function returns the k-th irreducible solvable subgroup of GL(n,q) which cannot be written over a proper subfield of Fq. An error is raised if the relevant data is not available (see IsAvailableIrreducibleSolvableGroupData for information how to check this first), or if k is not in `IndicesIrreducibleSolvableMatrixGroups`(n, q, d) (see IndicesIrreducibleSolvableMatrixGroups). For the groups returned, the attrbutes and properies described in Additional functionality for matrix groups are set to their appropriate values.

- `IsAvailableAbsolutelyIrreducibleSolvableGroupData(`n`,` q`) F`

  This function tests whether the absolutely irreducible solvable subgroup of GL(n,q) which cannot be written over a proper subfield of Fq are in the IRREDSOL library.

- `IndicesAbsolutelyIrreducibleSolvableMatrixGroups(`n`,` q`) F`

  Let n be a positive integer and q a prime power. This function returns a set of integers parametrising the absolutely irreducible groups in the IRREDSOL library which are subgroups of GL(n,q) that cannot be written over a proper subfield of Fq.

- `AbsolutelyIrreducibleSolvableMatrixGroup(`n`,` q`,` k`) F`

  Let n be a positive integer and q a prime power. This function returns the k-th absolutely irreducible solvable subgroup of GL(n,q) which cannot be written over a proper subfield of Fq. An error is raised if the relevant data is not available (see IsAvailableAbsolutelyIrreducibleSolvableGroupData for information how to check this first), or if k does not lie in `IndicesAbsolutelyIrreducibleSolvableMatrixGroups`(n, q) (see IndicesAbsolutelyIrreducibleSolvableMatrixGroups). For the groups returned, the attrbutes and properies described in Additional functionality for matrix groups are set to their appropriate values.

- `IndicesMaximalAbsolutelyIrreducibleSolvableMatrixGroups(`n`,` q`) F`

  Let n be a positive integer and q a prime power. This function returns a set of integers parametrising the absolutely irreducible groups in the IRREDSOL library which are subgroups of GL(n,q) that cannot be written over a proper subfield of Fq and which is maximal with respect to being solvable. An error is raised if the relevant data is not available (see IsAvailableAbsolutelyIrreducibleSolvableGroupData for information how to check this first).

      gap> Reread("/Macintosh HD/Applications (Mac OS 9)/gap/4.0/pkg/irredsol/lib/loading.gi");
      gap> inds := IndicesMaximalAbsolutelyIrreducibleSolvableMatrixGroups (2,3);
      [ 2 ] # there is only one maximal solvable subgroup of GL(2,3)
      gap> max := AbsolutelyIrreducibleSolvableMatrixGroup (2,3,2); # construct it
      Group([ [ [ Z(3), 0*Z(3) ], [ 0*Z(3), Z(3)^0 ] ], [ [ Z(3)^0, Z(3) ], [ 0*Z(3), Z(3)^0 ] ],
        [ [ Z(3), Z(3)^0 ], [ Z(3)^0, Z(3)^0 ] ], [ [ 0*Z(3), Z(3)^0 ], [ Z(3), 0*Z(3) ] ],
        [ [ Z(3), 0*Z(3) ], [ 0*Z(3), Z(3) ] ] ])
      gap> max = GL(2,3); # it is the whole GL
      true

  ## 2.2 Finding matrix groups with given properties

  This section describes three functions (`AllIrreducibleSolvableMatrixGroups`, `OneIrreducibleSolvableMatrixGroup`, `IteratorIrreducibleSolvableMatrixGroups`) which allow you to find matrix groups with special properties. These functions are usually more efficient than to construct each group in the library using the functions in Section Low level access functions.

- `AllIrreducibleSolvableMatrixGroups(`func_1`,` arg_1`,` func_2`,` arg_2`, ...) F`

  This function returns a list of all irreducible solvable matrix groups G in the IRREDSOL library for which the return value of funci(G) lies in arg_i. The arguments func_1, func_2, ..., must be GAP functions which take matrix group as their only argument and return a value, and arg_1, arg_2, ..., must be lists. If arg_i is not a list, arg_i is replaced by the list `[`arg_i`]`. One of the functions must be `DegreeOfMatrixGroup` (or one of its equivalents, see below), and one function must be `FieldOfMatrixGroup` (or `Field`). All groups G in the data library have the property that they cannot be written over a subfield of `FieldOfMatrixGroup`(G); see Design of the group library for details. For the groups returned, the attrbutes and properies described in Additional functionality for matrix groups are set to their appropriate values.

  Note that there is also a function `IteratorIrreducibleSolvableMatrixGroups` (see IteratorIrreducibleSolvableMatrixGroups) which allows to run through the list produced by `AllIrreducibleSolvableMatrixGroups` without having to store all of the groups simultaneously.

  The following functions func_i are handled particularly efficiently. For the definitions of most of these functions, see Chapter Additional functionality for matrix groups.

  --
    `DegreeOfMatrixGroup` (or `Degree`, `Dimension`, `DimensionOfMatrixGroup`),
  --
    `CharacteristicOfField` (or `Characteristic`)
  --
    `FieldOfMatrixGroup` (or `Field`)
  --
    `Order` (or `Size`)
  --
    `IsMaximalAbsolutelyIrreducibleSolvableMatrixGroup`
  --
    `IsAbsolutelyIrreducibleMatrixGroup` (or `IsAbsolutelyIrreducible`)
  --
    `MinimalBlockDimensionOfMatrixGroup` (or `MinimalBlockDimension`)
  --
    `IsPrimitiveMatrixGroup` (or `IsPrimitive`, `IsLinearlyPrimitive`)

  Except for groups which are irreducible but not absolutely irreducible and functions `MinimalBlockDimensionOfMatrixGroup` and `IsPrimitiveMatrixGroup` (or their equivalents), the return values of the above functions can be read off the IRREDSOL library without actually constructing the relevant matrix group. But even in this last case, some groups can be ruled out before constructing them.

      # get just those groups which cannot be written over GF(3)
      gap> l := AllIrreducibleSolvableMatrixGroups (Degree, 1, Field, GF(9));;
      gap> List (l, Order);
      [ 4, 8 ]
      # get all irreducible subgroups
      gap> l := AllIrreducibleSolvableMatrixGroups (Degree, 1, Field, Subfields (GF(9)));;
      gap> List (l, Order);
      [ 1, 2, 4, 8 ]
      # get only maximal absolutely irreducible ones
      gap> l := AllIrreducibleSolvableMatrixGroups (Degree, 4, Field, GF(3),
      >             IsMaximalAbsolutelyIrreducibleSolvableMatrixGroup, true);
      gap> SortedList (List (l, Order));
      [ 320, 640, 2304, 4608 ]
      gap> l := AllIrreducibleSolvableMatrixGroups (Degree, 4, Field, GF(3),
      > IsAbsolutelyIrreducibleMatrixGroup, true);;
      gap> Collected (List (l, Order));
      [ [ 20, 1 ], [ 32, 7 ], [ 40, 2 ], [ 64, 10 ], [ 80, 2 ], [ 96, 6 ],
        [ 128, 9 ], [ 160, 3 ], [ 192, 9 ], [ 256, 6 ], [ 288, 1 ], [ 320, 2 ],
        [ 384, 4 ], [ 512, 1 ], [ 576, 3 ], [ 640, 1 ], [ 768, 1 ], [ 1152, 4 ],
        [ 2304, 3 ], [ 4608, 1 ] ]

- `OneIrreducibleSolvableMatrixGroup(`func_1`,` arg_1`,` func_2`,` arg_2`, ...) F`

  This function returns a matrix group G from the IRREDSOL library such that funci(G) lies in arg_i, or `fail` if no such group exists. The arguments func_1, func_2, ..., must be GAP functions taking one argument and returning a value, and arg_1, arg_2, ..., must be lists. If arg_i is not a list, arg_i is replaced by the list `[`arg_i`]`. One of the functions must be `DegreeOfMatrixGroup` (or one of its equivalents, see below), and one function must be `FieldOfMatrixGroup` (or `Field`). All groups G in the data library have the property that they cannot be written over a subfield of `FieldOfMatrixGroup`(G); see see Design of the group library for details. For the group returned, the attrbutes and properies described in Additional functionality for matrix groups are set to their appropriate values.

  For a list of functions which are handled particularly efficiently, see `AllIrreducibleSolvableMatrixGroups` (AllIrreducibleSolvableMatrixGroups).

- `IteratorIrreducibleSolvableMatrixGroups(`func_1`,` arg_1`,` func_2`,` arg_2`, ...) F`

  This function returns an iterator which runs through the list of all matrix groups G in the IRREDSOL library such that funci(G) lies in arg_i. The arguments func_1, func_2, ..., must be GAP functions taking one argument and returning a value, and arg_1, arg_2, ..., must be lists. If arg_i is not a list, arg_i is replaced by the list `[`arg_i`]`. One of the functions must be `DegreeOfMatrixGroup` (or one of its equivalents, see below), and one function must be `FieldOfMatrixGroup` (or `Field`).

  For a list of functions which are handled particularly efficiently, see `AllIrreducibleSolvableMatrixGroups` (AllIrreducibleSolvableMatrixGroups).

  Using

  `IteratorIrreducibleSolvableMatrixGroups`(func_1, arg_1, func_2, arg_2, ...))

  is functionally equivalent to

  `Iterator`(`AllIrreducibleSolvableMatrixGroups`(func_1, arg_1, func_2, arg_2, ...))

  (see Iterators for details) but does not compute all relevant matrix groups at the same time. This may save some memory. For the groups returned, the attrbutes and properies described in Additional functionality for matrix groups are set to their appropriate values.

  [Top] [Up] [Previous] [Next] [Index]