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