%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%%  matgroups.tex         IRREDSOL documentation           Burkhard H\"ofling
%%
%%  @(#)$Id: matgroups.tex,v 1.2 2003/07/29 10:51:31 gap Exp $
%%
%%  Copyright (C) 2003 by Burkhard H\"ofling, 
%%  Institut f\"ur Geometrie, Algebra und Diskrete Mathematik
%%  Technische Universit\"at Braunschweig, Germany
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Chapter{Additional functionality for matrix groups}

This chapter explains some attributes, properties and operations which may
be useful for working with matrix groups. Some of these are part of the 
GAP library and have been included for the sake of completeness, and some
are provided by the package {\IRREDSOL}. Note that groups constructed
by functions in {\IRREDSOL} already have the appropriate properties and
attributes. 


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Basic attributes for matrix groups}

\>DegreeOfMatrixGroup(<G>) F
\>Degree(<G>)!{for matrix groups} O
\>DimensionOfMatrixGroup(<G>) A
\>Dimension(<G>)!{for matrix groups} O

This is the degree of the matrix group or, equivalently, the dimension of the
natural underlying vector space. See also "ref:DimensionOfMatrixGroup".

\>FieldOfMatrixGroup(<G>) A

This is the field generated by the matrix entries of the elements of <G>. See also 
"ref:FieldOfmatrixGroup".


\>CharacteristicOfField(<G>) A
\>Characteristic(<G>)!{for matrix groups} O

This is the characteristic of `FieldOfMatrixGroup' (see "FieldOfMatrixGroup").


\>RepresentationIsomorphism(<G>) A

This attribute stores an isomorphism $<H> \to <G>$, where <H> is a group
in which computations can be carried out more efficiently than in <G>, and 
the isomorphism can be evalueated easily.
It is usually advantageous to carry out computations in <H>, and to translate
them to <G> via `RepresentationIsomorphism'(<G>). (Note that the inverse 
mapping of `RepresentationIsomorphism' is not required to be efficient.)


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Irreducibility and maximality of matrix groups}

\>IsIrreducibleMatrixGroup(<G>) A
\>IsIrreducibleMatrixGroup(<G>, <F>) O
\>IsIrreducible(<G> [, <F>])!{for matrix groups} O

The matrix group <G> of degree <d> is irreducible over the field <F> if no subspace of $<F>^d$ is
invariant under the action of <G>. If <F> is not
specified, $F = `FieldOfMatrixGroup'(<G>)$ is assumed.

\>IsAbsolutelyIrreducibleMatrixGroup(<G>) A

If present, this attribute is true if <G> is absolutely irreducible, i.~e., irreducible over any
extension field of `FieldOfMatrixGroup'(<G>).

\>`IsMaximalAbsolutelyIrreducibleSolvableMatrixGroup(<G>)'%
{IsMaximalAbsolutelyIrreducibleSolvableMatrixGroup}%
@{`IsMaximalAbsolutelyIrreducibleSolvable\\MatrixGroup'} A

This attribute, if present, is true if, and only if, <G> is absolutely irreducible and maximal among 
the soluble subgroups of $GL(d, F)$, where
$d = `DegreeOfMatrixGroup'(<G>)$ and
$F = `FieldOfMatrixGroup'(<G>)$. 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Primitivity of matrix groups}

\>MinimalBlockDimensionOfMatrixGroup(<G>) A
\>MinimalBlockDimensionOfMatrixGroup(<G>, <F>) O
\>MinimalBlockDimension(<G> [, <F>])!{for matrix groups} O

Let <G> be a matrix group of degree <d> over the field <F>.  A 
decomposition $V_1 \oplus \cdots \oplus V_k$ of $<F>^d$ into <F>-subspaces
$V_i$ is a block system of $<G>$ if the $V_i$ are permuted by the natural
action of <G>. Obviously, all $V_i$ have the same dimension; this is the
dimension of the block system
$V_1 \oplus \cdots \oplus V_k$. The function
`MinimalBlockDimensionOfMatrixGroup' returns the minimum of the dimensions
of all block systems of <G>. If <F> is not specified, $F =
`FieldOfMatrixGroup'(<G>)$ is assumed.

\>IsPrimitiveMatrixGroup(<G>) A
\>IsPrimitiveMatrixGroup(<G>, <F>) O
\>IsLinearlyPrimitive(<G> [, <F>]) F
\>IsPrimitive(<G> [, <F>])!{for matrix groups} O

The matrix group <G> of degree <d> is primitive over the field <F> if it
only has the trivial block system $<F>^d$ or, equivalently, if
$`MinimalBlockDimensionOfMatrixGroup'(<G>, <F>) = d$. If <F> is not
specified, $F = `FieldOfMatrixGroup'(<G>)$ is assumed.


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Conjugating matrix groups into smaller fields}


\>TraceField(<G>) A

This is the field generated by the traces of the elements of <G>. 
If <G> is a matrix group over a finite field, then By Brauer's
theorem, <G> has a conjugate which is a matrix group over `TraceField'(<G>).

\>ConjugatingMatTraceField(<G>) A

If bound, this is a matrix <x> over `FieldOfMatrixGroup'(<G>) such that
$<G>^<x>$ is a  matrix group over `TraceField'(<G>). Currently, there are
only methods available for absolutely irreducible groups <G> (described in
\cite{GH}) and certain trivial cases. 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%E
%%
