IsSemiLinear( G )
IsSemiLinear takes as input a matrix group G over a finite field and
seeks to decide whether or not G acts semilinearly.
The function returns a list containing two values: a boolean and a
G-module record, module, for G. If the boolean is true, then G
is semilinear and information about the decomposition can be obtained
using SemiLinearPartFlag (module), LinearPartFlag (module), and
Components of a $G$-module record for an explanation of these.
If IsSemiLinear discovers that G acts imprimitively, it cannot decide
whether or not G acts semilinearly and returns "unknown".
SmashGModule is called by IsSemiLinear.
The algorithm is described in [6].
GAP 3.4.4