SmashGModule( module, S [,flag] )
SmashGModule
seeks to find a decomposition of a G-module with respect
to a normal subgroup of G.
module is a module for a finite group G of matrices over a finite field and S is a set of matrices, generating a subgroup of G.
SmashGModule
attempts to find some way of decomposing the module with
respect to the normal subgroup < S > ^G. It returns true
if some decomposition is found, false
otherwise.
It first ensures that G acts absolutely irreducibly and that S
contain at least one non-scalar matrix. If either of these conditions
fails, then it returns false
. The function returns true
if it
succeeds in verifying that either G acts imprimitively, or
semilinearly, or preserves a tensor product, or preserves a symmetric
tensor product (that is, permutes the tensor factors) or G normalises a
group which is extraspecial or a 2-group of symplectic type. Each of
these decompositions, if found, involves < S > ^G in a
natural way. Components are added to the record module which indicate
the nature of a decomposition. Details of these components can be found
in Components of a $G$-module record. If no decomposition is found,
the function returns false
. In general, the answer false
indicates
that there is no such decomposition with respect to < S
> ^G. However, SmashGModule
may fail to find a symmetric tensor
product decomposition, since the detection of such a decomposition relies
on the choice of random elements.
SmashGModule
adds conjugates to S until a decomposition of the
underlying vector space as a sum of irreducible <
S> -modules is found. The functions SemiLinearDecomposition
,
TensorProductDecomposition
, SymTensorProductDecomposition
, and
ExtraSpecialDe-composition
now search for decompositions.
At the end of the call to SmashGModule
, S may be larger than at the
start (but its normal closure has not changed).
The only permitted value for the optional parameter flag is the string
"PartialSmash"
. If "PartialSmash"
is supplied, SmashGModule
returns false
as soon as it is clear that G is not the normaliser of
a p-group nor does it preserve a symmetric tensor product decomposition
with respect to < S > ^G.
The algorithm is described in [6].
GAP 3.4.4