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

# 5 Primitive soluble groups

### Sections

1. Converting between irreducible soluble matrix groups and primitive soluble groups
2. Finding primitive pc groups with given properties
3. Finding primitive soluble permutation groups with given properties
4. Recognising primitive soluble groups
5. Obsolete functions

An abstract finite group G is called primitiveif it has a maximal subgroup M with trivial core. Note that the permutation action of G on the cosets of M is faithful and primitive. Conversely, if G is a primitive permutation group, then a point stabilizer M of G is a maximal subgroup with trivial core. However, a permutation group which is primitive as an abstract group need not be primitive as a permutation group.

Now assume that G is primitive and soluble. Then there exists a unique conjugacy class of such maximal subgroups M; the index of M in G is called the degreeof G. Moreover, M complements the socle N of G. THe socle N coincides with the Fitting subgroup of G; it is the unique minimal normal subgroup N of G. Therefore, the index of M in G is a prime power, pn, say. Regarding N as a Fp-vector space, M acts as an irreducible subgroup of GL(n,p) on N. Conversely, if M is an irreducible soluble subgroup of GL(n,p), and V = Fpn, then the split extension of V by M is a primitive soluble group. This establishes a well known bijection between the isomorphism types (or, equivalently, the Sym(pn)-conjugacy classes) of primitive soluble permutation groups of degree p<n> and the conjugacy classes of irreducible soluble subgroups of GL(n, p).

The IRREDSOL package provides functions for translating between primitive soluble groups and irreducible soluble matrix groups, which are described in Section Converting between irreducible soluble matrix groups and primitive soluble groups. Moreover, there are functions for finding primitive soluble groups with given properties, see Sections Finding primitive pc groups with given properties and Finding primitive soluble permutation groups with given properties.

## 5.1 Converting between irreducible soluble matrix groups and primitive soluble groups

- `PrimitivePcGroup(`n`,`p`,`d`,`k`) F`
- `PrimitiveSolublePermGroup(`n`,`p`,`d`,`k`) F`
- `PrimitiveSolvablePermGroup(`n`,`p`,`d`,`k`) F`

  These functions return the primitive soluble pc group resp. primitive soluble permutation group obtainewd as the natural split extension of V = Fpn by `IrreducibleSolubleMatrixGroup`(n,p,d,k). Here, n is a positive integer, p is a prime, d divides n and k occurs in the list `IndicesIrreducibleSolubleMatrixGroups`(n,p,d) (see IndicesIrreducibleSolubleMatrixGroups).

  As long as the relevant group data is not unloaded manually (see UnloadAbsolutelyIrreducibleSolubleGroupData), the functions `PrimitivePcGroup` and `PrimitiveSolublePermGroup` will return the same group when called multiple times with the same arguments.

- `PrimitivePcGroupIrreducibleMatrixGroup(`G`) F`
- `PrimitivePcGroupIrreducibleMatrixGroupNC(`G`) F`

  For a given irreducible soluble matrix group G over a prime field, this function returns a primitive pc group H which is the split extension of G with its natural underlying vector space V. The `NC` version does not check whether G is over a prime field, or whether G is irreducible. The group H has an attribute `Socle` (see Socle), corresponding to V. If the package CRISP is loaded, then the attribute `SocleComplement` (see CRISP reference manual crisp:SocleComplement) is set to a subgroup of H isomorphic with G.

      gap> PrimitivePcGroupIrreducibleMatrixGroup(
      >       IrreducibleSolubleMatrixGroup(4,2,2,3));
      <pc group of size 160 with 6 generators>

- `PrimitivePermGroupIrreducibleMatrixGroup(`G`) F`
- `PrimitivePermGroupIrreducibleMatrixGroupNC(`G`) F`

  For a given irreducible soluble matrix group G over a prime field, this function returns a primitive permutation group H, representing the affine action of G on its natural vector space V. The `NC` version does not check whether G is over a prime field, or whether G is irreducible. The group H has an attribute `Socle` (see Socle), corresponding to V. If the package CRISP is loaded, then the attribute `SocleComplement` (see crisp:SocleComplement in the CRISP manual) is set to a subgroup of H isomorphic with G.

      gap> PrimitivePermGroupIrreducibleMatrixGroup(
      >       IrreducibleSolubleMatrixGroup(4,2,2,3));
      <permutation group of size 160 with 6 generators>

- `IrreducibleMatrixGroupPrimitiveSolubleGroup(`G`) F`
- `IrreducibleMatrixGroupPrimitiveSolvableGroupNC(`G`) F`

  For a given primitive soluble group G, this function returns a matrix group obtained from the conjugation action of G on its unique minimal normal subgroup N, regarded as a vector space over Fp, where p is the exponent of N. The Fp-basis of N is chosen arbitrarily, so that the matrix group returned is unique only up to conjugacy in the relevant GL(n, p). The NC version does not check whether G is primitive and soluble.

      gap> IrreducibleMatrixGroupPrimitiveSolubleGroup(SymmetricGroup(4));
      Group([ <an immutable 2x2 matrix over GF2>,
        <an immutable 2x2 matrix over GF2> ])

  ## 5.2 Finding primitive pc groups with given properties

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

  This function returns a list of all primitive soluble pc 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 a pc 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 `Degree` or one of its equivalents, see below.

  The following functions func_i are handled particularly efficiently.

  - `Degree`, `NrMovedPoints`, `LargestMovedPoint`
  - `Order`, `Size`

  Note that there is also a function `IteratorPrimitivePcGroups` (see IteratorPrimitivePcGroups) which allows one to run through the list produced by `AllPrimitivePcGroups` without having to store all the groups in the list simultaneously.

      gap> AllPrimitivePcGroups(Degree, [1..255], Order, [168]);
      [ <pc group of size 168 with 5 generators> ]

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

  This function returns one primitive soluble pc group G in the IRREDSOL library for which the return value of funci(G) lies in arg_i, or `fail` if no such group exists. The arguments func_1, func_2, ..., must be GAP functions which take a pc 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 `Degree` or one of its, equivalents, `NrMovedPoints` or `LargestMovedPoint`.

  For a list of functions which are handled particularly efficiently, see AllPrimitivePcGroups.

      gap> OnePrimitivePcGroup(Degree, [256], Order, [256*255]);
      <pc group of size 65280 with 11 generators>

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

  This function returns an iterator which runs through the list of all primitive soluble pc 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 a pc group as their only 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 `Degree` or one of its, equivalents, `NrMovedPoints` or `LargestMovedPoint`. For a list of functions which are handled particularly efficiently, see AllPrimitivePcGroups.

  Using

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

  is functionally equivalent to

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

  (see Iterators for details) but does not compute all relevant pc groups at the same time. This may save some memory.

  ## 5.3 Finding primitive soluble permutation groups with given properties

- `AllPrimitiveSolublePermGroups(`func_1`,` arg_1`,` func_2`,` arg_2`, ...) F`
- `AllPrimitiveSolvablePermGroups(`func_1`,` arg_1`,` func_2`,` arg_2`, ...) F`

  This function returns a list of all primitive soluble permutation groups G corresponding to irreducible matrix groups 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 a permutation 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 `Degree` or one of its equivalents, see below.

  The following functions func_i are handled particularly efficiently.

  - `Degree`, `NrMovedPoints`, `LargestMovedPoint`
  - `Order`, `Size`

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

      gap> AllPrimitiveSolublePermGroups(Degree, [1..100], Order, [72]);
      [ Group([ (1,4,7)(2,5,8)(3,6,9), (1,2,3)(4,5,6)(7,8,9), (2,4)(3,7)(6,8),
            (2,3)(5,6)(8,9), (4,7)(5,8)(6,9) ]),
        Group([ (1,4,7)(2,5,8)(3,6,9), (1,2,3)(4,5,6)(7,8,9), (2,5,3,9)(4,8,7,6),
            (2,7,3,4)(5,8,9,6), (2,3)(4,7)(5,9)(6,8) ]),
        Group([ (1,4,7)(2,5,8)(3,6,9), (1,2,3)(4,5,6)(7,8,9), (2,5,6,7,3,9,8,4) ]) ]
      gap> List(last, IdGroup);
      [ [ 72, 40 ], [ 72, 41 ], [ 72, 39 ] ]

- `OnePrimitiveSolublePermGroup(`func_1`,` arg_1`,` func_2`,` arg_2`, ...) F`
- `OnePrimitiveSolvablePermGroup(`func_1`,` arg_1`,` func_2`,` arg_2`, ...) F`

  This function returns one primitive soluble permutation group G corresponding to irreducible matrix groups in the IRREDSOL library for which the return value of funci(G) lies in arg_i, or `fail` if no such group exists. The arguments func_1, func_2, ..., must be GAP functions which take a permutation 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 `Degree` or one of its, equivalents, `NrMovedPoints` or `LargestMovedPoint`.

  For a list of functions which are handled particularly efficiently, see AllPrimitiveSolublePermGroups.

      gap> OnePrimitiveSolublePermGroup(Degree, [1..100], Size, [123321]);
      fail

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

  This function returns an iterator which runs through the list of all primitive soluble 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 a pc group as their only 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 `Degree` or one of its, equivalents, `NrMovedPoints` or `LargestMovedPoint`. For a list of functions which are handled particularly efficiently, see AllPrimitiveSolublePermGroups.

  Using

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

  is functionally equivalent to

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

  (see Iterators for details) but does not compute all relevant permutation groups at the same time.

  ## 5.4 Recognising primitive soluble groups

- `IdPrimitiveSolubleGroup(`G`) F`
- `IdPrimitiveSolubleGroupNC(`G`) F`
- `IdPrimitiveSolvableGroup(`G`) F`
- `IdPrimitiveSolvableGroupNC(`G`) F`

  returns the id of the primitive soluble group G. This is the same as the id of `IrreducibleMatrixGroupPrimitiveSolubleGroup`(G), see IrreducibleMatrixGroupPrimitiveSolubleGroup and IdIrreducibleSolubleMatrixGroup. Note that two primitive soluble groups are isomorphic if, and only if, their ids returned by `IdPrimitivePcGroup` are the same. The NC version does not check whether G is primitive and soluble.

      gap> G := SmallGroup(432, 734);
      <pc group of size 432 with 7 generators>
      gap> IdPrimitiveSolubleGroup(G);
      [ 2, 3, 1, 2 ]
      gap> G := AlternatingGroup(4);
      Alt( [ 1 .. 4 ] )
      gap> IdPrimitiveSolubleGroup(G);
      [ 2, 2, 2, 1 ]

- `RecognitionPrimitiveSolubleGroup(`G`,`wantiso`) F`
- `RecognitionPrimitiveSolvableGroup(`G`,`wantiso`) F`

  This function returns a record r which identifies the primitive soluble group G. The component `id` is always present and contains the id of G. if wantiso is `true`, then the component `iso` is bound to an isomorphism from G into a primitive pc group.

  ## 5.5 Obsolete functions

- `PrimitiveSolublePermutationGroup(`n`,`q`,`d`,`k`) F`
- `PrimitiveSolvablePermutationGroup(`n`,`q`,`d`,`k`) F`
- `PrimitivePermutationGroupIrreducibleMatrixGroup(`G`) F`
- `PrimitivePermutationGroupIrreducibleMatrixGroupNC(`G`) F`
- `AllPrimitiveSolublePermutationGroups(`func_1`,` arg_1`,` func_2`,` arg_2`, ...) F`
- `AllPrimitiveSolvablePermutationGroups(`func_1`,` arg_1`,` func_2`,` arg_2`, ...) F`
- `IteratorPrimitivePermutationGroups(`func_1`,` arg_1`,` func_2`,` arg_2`, ...) F`
- `OnePrimitiveSolublePermutationGroup(`func_1`,` arg_1`,` func_2`,` arg_2`, ...) F`
- `OnePrimitiveSolvablePermutationGroup(`func_1`,` arg_1`,` func_2`,` arg_2`, ...) F`

  These functions have been renamed from ...`PermutationGroup`...to ...`PermGroup`.... The above function names are deprecated.

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