# 67.34 Components of a \$G\$-module record

The component `.reducible` is set to `true` if module is known to be reducible, and to `false` if it is known not to be. This component is set by `IsIrreducible` which may also set the components `.subbasis`, `.algEl`, `.algElMat`, `.algElCharPol`, `.algElCharPolFac`, `.algElNullspaceVec` and `.algElNullspaceDim`. If module has been proved reducible, `.subbasis` is a basis for a submodule. Alternatively, if module has been proved to be irreducible, `.algEl` is set to the random element el of the group algebra which has been successfully used by the algorithm to prove irreducibility, represented abstractly, essentially as a sum of words in the generators, and `.algElMat` to the actual matrix X that represents that element. The component `.algElCharPol` is set to the characteristic polynomial p of X and `.algElCharPolFac` to the factor f of X used by the algorithm. (Essentially irreducibility is proved by applying Norton's irreducibility criterion to the matrix f(X); see [5] for further details.) The component `.algElNullspaceVec` is set to an arbitrary vector of the nullspace N of f(X), and `.algElNullspaceDim` to the dimension of N.

The component `.absolutelyReducible` is set to `false` if module is known to be absolutely irreducible, and to `true` if it is known not to be. It is set by `IsAbsolutelyIrreducible`, which also sets the components `.degreeFieldExt`, `.centMat`, `.centMatMinPoly` if module is not absolutely irreducible. In that case, `.degreeFieldExt` is set to the dimension e of the centralising field of module. The component `.centMat` is set to a matrix C, which both centralises each of the matrices in module.generators generating the group action of module and has minimal polynomial f of degree e. The component `.centMatMinPoly` is set equal to f.

The component `.semiLinear` is set to `true` in `SemiLinearDecomposition` if G acts absolutely irreducibly on module but embeds in a group of semilinear automorphisms over an extension field of degree e over the field F. Otherwise it is not set. At the same time, `.degreeFieldExt` is set to e, `.linearPart` is set to a list of matrices S which are normal subgroup generators for the intersection of G with the general linear group in dimension d/e over GF(q^e), and `.centMat` is set to a matrix C which commutes with each of those matrices. Here, C corresponds to scalar multiplication in the module by an element of the extension field GF(q^e). The component `.frobeniusAutomorphisms` is set to a list of integers i, one corresponding to each of the generating matrices g for G in the list `.generators`, such that Cg = gC^{q^{i(g)}}. Thus the generator g acts on the field GF(q^e) as the Frobenius automorphism x rightarrow x^{q^{i(g)}}.

The component `.tensorProduct` is set to `true` in `TensorProductDecomposition` if module can be written as a tensor product of two G-modules with respect to an appropriate basis. Otherwise it is not set. At the same time, `.tensorBasis` is set to the appropriate basis of that space, and `.tensorFactors` to the pair of G-modules whose tensor product is isomorphic to module written with respect to that basis.

The component `.symTensorProduct` is set to `true` in `SymTensorProductDecomposition` if module can be written as a symmetric tensor product whose factors are permuted by the action of G. Otherwise it is not set. At the same time, `.symTensorBasis` is set to the basis with respect to which this decomposition can be found, `.symTensorFactors` to the list of tensor factors, and `.symTensorPerm` to the list of permutations corresponding to the action of each of the generators of G on those tensor factors.

The component `.extraSpecial` is set to `true` in the function `ExtraSpecialDecomposition` if G has been shown to have a normal subgroup H which is an extraspecial r-group for an odd prime r or a 2-group of symplectic type, modulo scalars. Otherwise it is not set. At the same time, `.extraSpecialGroup` is set to the subgroup H, and `.extraSpecialPrime` is set to r.

The component `.imprimitive` is set to `true` if G has been shown to act imprimitively and to `false` if G is primitive. Otherwise it is not set. This component is set in `IsPrimitive`. If G has been shown to act imprimitively, then module has a component `.blockSystem` which has the structure described in `BlockSystemFlag`.

GAP 3.4.4
April 1997