IsPrimitive( G [, factorisations] )
IsPrimitive
takes as input a matrix group G over a finite field and
seeks to decide whether or not G acts primitively. The function
returns a list containing two values: a boolean and a G-module
record, module, for G. If the boolean is false
, then G is
imprimitive and BlockSystemFlag (module)
returns a block system
(described in MinBlocks).
If IsPrimitive
discovers that G acts semilinearly, then it cannot
decide whether or not G acts primitively and returns "unknown"
.
The second optional argument is a list of possible factorisations of d, the dimension of G. For each [r, s] in this list where rs = d, the function seeks to decide whether G preserves a non-trivial system of imprimitivity having r blocks of size s.
SmashGModule
is called by IsPrimitive
.
The algorithm is described in [7].
GAP 3.4.4