<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<!-- %% -->
<!-- %A  grpmat.xml                  GAP documentation            Alexander Hulpke -->
<!-- %% -->
<!-- %% -->
<!-- %Y  (C) 1998 School Math and Comp. Sci., University of St Andrews, Scotland -->
<!-- %Y  Copyright (C) 2002 The GAP Group -->
<!-- %% -->
<Chapter Label="Matrix Groups">
<Heading>Matrix Groups</Heading>

Matrix groups are groups generated by invertible square matrices.
<P/>
In the following example we temporarily increase the line length limit from
its default value 80 to 83 in order to get a nicer output format.
<P/>
<Example><![CDATA[
gap> m1 := [ [ Z(3)^0, Z(3)^0,   Z(3) ],
>            [   Z(3), 0*Z(3),   Z(3) ],
>            [ 0*Z(3),   Z(3), 0*Z(3) ] ];;
gap> m2 := [ [   Z(3),   Z(3), Z(3)^0 ],
>            [   Z(3), 0*Z(3),   Z(3) ],
>            [ Z(3)^0, 0*Z(3),   Z(3) ] ];;
gap> m := Group( m1, m2 );
Group(
[
  [ [ Z(3)^0, Z(3)^0, Z(3) ], [ Z(3), 0*Z(3), Z(3) ],
      [ 0*Z(3), Z(3), 0*Z(3) ] ],
  [ [ Z(3), Z(3), Z(3)^0 ], [ Z(3), 0*Z(3), Z(3) ],
      [ Z(3)^0, 0*Z(3), Z(3) ] ] ])
]]></Example>


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="sect:IsMatrixGroup">
<Heading>IsMatrixGroup (Filter)</Heading>

For most operations, &GAP; only provides methods for finite matrix groups.
Many calculations in finite matrix groups are done via so-called
<Q>nice monomorphisms</Q> (see Section <Ref Sect="Nice Monomorphisms"/>)
that represent a faithful action on vectors.

<#Include Label="IsMatrixGroup">

</Section>


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="Attributes and Properties for Matrix Groups">
<Heading>Attributes and Properties for Matrix Groups</Heading>

<#Include Label="DimensionOfMatrixGroup">
<#Include Label="DefaultFieldOfMatrixGroup">
<#Include Label="FieldOfMatrixGroup">
<#Include Label="TransposedMatrixGroup">
<#Include Label="IsFFEMatrixGroup">

</Section>


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="Actions of Matrix Groups">
<Heading>Actions of Matrix Groups</Heading>

<#Include Label="[1]{grpmat}">
<#Include Label="ProjectiveActionOnFullSpace">
<#Include Label="ProjectiveActionHomomorphismMatrixGroup">
<#Include Label="BlowUpIsomorphism">

</Section>


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="GL and SL">
<Heading>GL and SL</Heading>

(See also section&nbsp;<Ref Sect="Classical Groups"/>.)

<#Include Label="IsGeneralLinearGroup">
<#Include Label="IsNaturalGL">
<#Include Label="IsSpecialLinearGroup">
<#Include Label="IsNaturalSL">
<#Include Label="IsSubgroupSL">

</Section>


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="Invariant Forms">
<Heading>Invariant Forms</Heading>

<#Include Label="InvariantBilinearForm">
<#Include Label="IsFullSubgroupGLorSLRespectingBilinearForm">
<#Include Label="InvariantBilinearFormUpToScalars">
<#Include Label="IsFullSubgroupGLRespectingBilinearFormUpToScalars">
<#Include Label="InvariantSesquilinearForm">
<#Include Label="IsFullSubgroupGLorSLRespectingSesquilinearForm">
<#Include Label="InvariantQuadraticForm">
<#Include Label="IsFullSubgroupGLorSLRespectingQuadraticForm">

</Section>


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="Matrix Groups in Characteristic 0">
<Heading>Matrix Groups in Characteristic 0</Heading>

Most of the functions described in this and the following section have
implementations which use functions from the &GAP; package
<Package>CaratInterface</Package>.
If <Package>CaratInterface</Package> is not installed or not compiled,
no suitable methods are available.

<#Include Label="IsCyclotomicMatrixGroup">
<#Include Label="IsRationalMatrixGroup">
<#Include Label="IsIntegerMatrixGroup">
<#Include Label="IsNaturalGLnZ">
<#Include Label="IsNaturalSLnZ">
<#Include Label="InvariantLattice">
<#Include Label="NormalizerInGLnZ">
<#Include Label="CentralizerInGLnZ">
<#Include Label="ZClassRepsQClass">
<#Include Label="IsBravaisGroup">
<#Include Label="BravaisGroup">
<#Include Label="BravaisSubgroups">
<#Include Label="BravaisSupergroups">
<#Include Label="NormalizerInGLnZBravaisGroup">

</Section>


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="Acting OnRight and OnLeft">
<Heading>Acting OnRight and OnLeft</Heading>

<#Include Label="[1]{grpramat}">
<#Include Label="CrystGroupDefaultAction">
<#Include Label="SetCrystGroupDefaultAction">

</Section>
</Chapter>


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<!-- %% -->
<!-- %E -->

