  
  [1X44 [33X[0;0YMatrix Groups[133X[101X
  
  [33X[0;0YMatrix groups are groups generated by invertible square matrices.[133X
  
  [33X[0;0YIn  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.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xm1 := [ [ Z(3)^0, Z(3)^0,   Z(3) ],[127X[104X
    [4X[25X>[125X [27X           [   Z(3), 0*Z(3),   Z(3) ],[127X[104X
    [4X[25X>[125X [27X           [ 0*Z(3),   Z(3), 0*Z(3) ] ];;[127X[104X
    [4X[25Xgap>[125X [27Xm2 := [ [   Z(3),   Z(3), Z(3)^0 ],[127X[104X
    [4X[25X>[125X [27X           [   Z(3), 0*Z(3),   Z(3) ],[127X[104X
    [4X[25X>[125X [27X           [ Z(3)^0, 0*Z(3),   Z(3) ] ];;[127X[104X
    [4X[25Xgap>[125X [27Xm := Group( m1, m2 );[127X[104X
    [4X[28XGroup([128X[104X
    [4X[28X[[128X[104X
    [4X[28X  [ [ Z(3)^0, Z(3)^0, Z(3) ], [ Z(3), 0*Z(3), Z(3) ],[128X[104X
    [4X[28X      [ 0*Z(3), Z(3), 0*Z(3) ] ],[128X[104X
    [4X[28X  [ [ Z(3), Z(3), Z(3)^0 ], [ Z(3), 0*Z(3), Z(3) ],[128X[104X
    [4X[28X      [ Z(3)^0, 0*Z(3), Z(3) ] ] ])[128X[104X
  [4X[32X[104X
  
  
  [1X44.1 [33X[0;0YIsMatrixGroup (Filter)[133X[101X
  
  [33X[0;0YFor  most  operations,  [5XGAP[105X  only provides methods for finite matrix groups.
  Many  calculations  in  finite  matrix  groups  are  done via so-called [21Xnice
  monomorphisms[121X  (see  Section  [14X40.5[114X)  that  represent  a  faithful  action on
  vectors.[133X
  
  [1X44.1-1 IsMatrixGroup[101X
  
  [33X[1;0Y[29X[2XIsMatrixGroup[102X( [3Xgrp[103X ) [32X Category[133X
  
  [33X[0;0YThe category of matrix groups.[133X
  
  
  [1X44.2 [33X[0;0YAttributes and Properties for Matrix Groups[133X[101X
  
  [1X44.2-1 DimensionOfMatrixGroup[101X
  
  [33X[1;0Y[29X[2XDimensionOfMatrixGroup[102X( [3Xmat-grp[103X ) [32X attribute[133X
  
  [33X[0;0YThe dimension of the matrix group.[133X
  
  [1X44.2-2 DefaultFieldOfMatrixGroup[101X
  
  [33X[1;0Y[29X[2XDefaultFieldOfMatrixGroup[102X( [3Xmat-grp[103X ) [32X attribute[133X
  
  [33X[0;0YIs a field containing all the matrix entries. It is not guaranteed to be the
  smallest field with this property.[133X
  
  [1X44.2-3 FieldOfMatrixGroup[101X
  
  [33X[1;0Y[29X[2XFieldOfMatrixGroup[102X( [3Xmatgrp[103X ) [32X attribute[133X
  
  [33X[0;0YThe  smallest field containing all the matrix entries of all elements of the
  matrix  group  [3Xmatgrp[103X.  As  the calculation of this can be hard, this should
  only   be   used   if   one   [13Xreally[113X   needs   the   smallest   field,   use
  [2XDefaultFieldOfMatrixGroup[102X ([14X44.2-2[114X) to get (for example) the characteristic.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XDimensionOfMatrixGroup(m);[127X[104X
    [4X[28X3[128X[104X
    [4X[25Xgap>[125X [27XDefaultFieldOfMatrixGroup(m);[127X[104X
    [4X[28XGF(3)[128X[104X
  [4X[32X[104X
  
  [1X44.2-4 TransposedMatrixGroup[101X
  
  [33X[1;0Y[29X[2XTransposedMatrixGroup[102X( [3Xmatgrp[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns  the  transpose  of  the  matrix  group [3Xmatgrp[103X. The transpose of the
  transpose of [3Xmatgrp[103X is identical to [3Xmatgrp[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG := Group( [[0,-1],[1,0]] );[127X[104X
    [4X[28XGroup([ [ [ 0, -1 ], [ 1, 0 ] ] ])[128X[104X
    [4X[25Xgap>[125X [27XT := TransposedMatrixGroup( G );[127X[104X
    [4X[28XGroup([ [ [ 0, 1 ], [ -1, 0 ] ] ])[128X[104X
    [4X[25Xgap>[125X [27XIsIdenticalObj( G, TransposedMatrixGroup( T ) );[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X44.2-5 IsFFEMatrixGroup[101X
  
  [33X[1;0Y[29X[2XIsFFEMatrixGroup[102X( [3XG[103X ) [32X Category[133X
  
  [33X[0;0Ytests whether all matrices in [3XG[103X have finite field element entries.[133X
  
  
  [1X44.3 [33X[0;0YActions of Matrix Groups[133X[101X
  
  [33X[0;0YThe basic operations for groups are described in Chapter [14X41[114X, special actions
  for  [13Xmatrix[113X  groups mentioned there are [2XOnLines[102X ([14X41.2-12[114X), [2XOnRight[102X ([14X41.2-2[114X),
  and [2XOnSubspacesByCanonicalBasis[102X ([14X41.2-15[114X).[133X
  
  [33X[0;0YFor  subtleties  concerning  multiplication from the left or from the right,
  see [14X44.7[114X.[133X
  
  [1X44.3-1 ProjectiveActionOnFullSpace[101X
  
  [33X[1;0Y[29X[2XProjectiveActionOnFullSpace[102X( [3XG[103X, [3XF[103X, [3Xn[103X ) [32X function[133X
  
  [33X[0;0YLet  [3XG[103X  be  a  group of [3Xn[103X by [3Xn[103X matrices over a field contained in the finite
  field  [3XF[103X.  [2XProjectiveActionOnFullSpace[102X  returns  the image of the projective
  action of [3XG[103X on the full row space [22X[3XF[103X^[3Xn[103X[122X.[133X
  
  [1X44.3-2 ProjectiveActionHomomorphismMatrixGroup[101X
  
  [33X[1;0Y[29X[2XProjectiveActionHomomorphismMatrixGroup[102X( [3XG[103X ) [32X function[133X
  
  [33X[0;0Yreturns  an action homomorphism for a faithful projective action of [3XG[103X on the
  underlying  vector  space.  (Note: The action is not necessarily on the full
  space, if a smaller subset can be found on which the action is faithful.)[133X
  
  [1X44.3-3 BlowUpIsomorphism[101X
  
  [33X[1;0Y[29X[2XBlowUpIsomorphism[102X( [3Xmatgrp[103X, [3XB[103X ) [32X function[133X
  
  [33X[0;0YFor a matrix group [3Xmatgrp[103X and a basis [3XB[103X of a field extension [22XL / K[122X such that
  the  entries  of  all matrices in [3Xmatgrp[103X lie in [22XL[122X, [2XBlowUpIsomorphism[102X returns
  the  isomorphism  with source [3Xmatgrp[103X that is defined by mapping the matrix [22XA[122X
  to [10XBlownUpMat[110X[22X( A, [3XB[103X )[122X, see [2XBlownUpMat[102X ([14X24.13-4[114X).[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:= GL(2,4);;[127X[104X
    [4X[25Xgap>[125X [27XB:= CanonicalBasis( GF(4) );;  BasisVectors( B );[127X[104X
    [4X[28X[ Z(2)^0, Z(2^2) ][128X[104X
    [4X[25Xgap>[125X [27Xiso:= BlowUpIsomorphism( g, B );;[127X[104X
    [4X[25Xgap>[125X [27XDisplay( Image( iso, [ [ Z(4), Z(2) ], [ 0*Z(2), Z(4)^2 ] ] ) );[127X[104X
    [4X[28X . 1 1 .[128X[104X
    [4X[28X 1 1 . 1[128X[104X
    [4X[28X . . 1 1[128X[104X
    [4X[28X . . 1 .[128X[104X
    [4X[25Xgap>[125X [27Ximg:= Image( iso, g );[127X[104X
    [4X[28X<matrix group with 2 generators>[128X[104X
    [4X[25Xgap>[125X [27XIndex( GL(4,2), img );[127X[104X
    [4X[28X112[128X[104X
  [4X[32X[104X
  
  
  [1X44.4 [33X[0;0YGL and SL[133X[101X
  
  [33X[0;0Y(See also section [14X50.2[114X.)[133X
  
  [1X44.4-1 IsGeneralLinearGroup[101X
  
  [33X[1;0Y[29X[2XIsGeneralLinearGroup[102X( [3Xgrp[103X ) [32X property[133X
  [33X[1;0Y[29X[2XIsGL[102X( [3Xgrp[103X ) [32X property[133X
  
  [33X[0;0YThe  General  Linear  group  is  the group of all invertible matrices over a
  ring. This property tests, whether a group is isomorphic to a General Linear
  group.  (Note  that  currently  only a few trivial methods are available for
  this operation. We hope to improve this in the future.)[133X
  
  [1X44.4-2 IsNaturalGL[101X
  
  [33X[1;0Y[29X[2XIsNaturalGL[102X( [3Xmatgrp[103X ) [32X property[133X
  
  [33X[0;0YThis  property  tests, whether a matrix group is the General Linear group in
  the  right  dimension over the (smallest) ring which contains all entries of
  its elements. (Currently, only a trivial test that computes the order of the
  group is available.)[133X
  
  [1X44.4-3 IsSpecialLinearGroup[101X
  
  [33X[1;0Y[29X[2XIsSpecialLinearGroup[102X( [3Xgrp[103X ) [32X property[133X
  [33X[1;0Y[29X[2XIsSL[102X( [3Xgrp[103X ) [32X property[133X
  
  [33X[0;0YThe  Special  Linear  group  is  the group of all invertible matrices over a
  ring,  whose determinant is equal to 1. This property tests, whether a group
  is  isomorphic  to  a  Special Linear group. (Note that currently only a few
  trivial methods are available for this operation. We hope to improve this in
  the future.)[133X
  
  [1X44.4-4 IsNaturalSL[101X
  
  [33X[1;0Y[29X[2XIsNaturalSL[102X( [3Xmatgrp[103X ) [32X property[133X
  
  [33X[0;0YThis  property  tests, whether a matrix group is the Special Linear group in
  the  right  dimension over the (smallest) ring which contains all entries of
  its elements. (Currently, only a trivial test that computes the order of the
  group is available.)[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XIsNaturalGL(m);[127X[104X
    [4X[28Xfalse[128X[104X
  [4X[32X[104X
  
  [1X44.4-5 IsSubgroupSL[101X
  
  [33X[1;0Y[29X[2XIsSubgroupSL[102X( [3Xmatgrp[103X ) [32X property[133X
  
  [33X[0;0YThis  property  tests,  whether  a matrix group is a subgroup of the Special
  Linear  group in the right dimension over the (smallest) ring which contains
  all entries of its elements.[133X
  
  
  [1X44.5 [33X[0;0YInvariant Forms[133X[101X
  
  [1X44.5-1 InvariantBilinearForm[101X
  
  [33X[1;0Y[29X[2XInvariantBilinearForm[102X( [3Xmatgrp[103X ) [32X attribute[133X
  
  [33X[0;0YFor a matrix group [3Xmatgrp[103X, [2XInvariantBilinearForm[102X returns a record containing
  at  least  the components [10Xmatrix[110X, whose value is a matrix [22XM[122X, and [10XbaseDomain[110X,
  whose value is a field.[133X
  
  [33X[0;0YThis  record  describes  a bilinear form that is invariant under [3Xmatgrp[103X. For
  every generator [22Xg[122X of [3Xmatgrp[103X, the equation [22Xg ⋅ M ⋅ g^tr = M[122X holds.[133X
  
  [33X[0;0YThe   attribute  value  is  set  for  example  in  groups  constructed  with
  [2XSymplecticGroup[102X              ([14X50.2-5[114X).             Together             with
  [2XIsFullSubgroupGLorSLRespectingBilinearForm[102X  ([14X44.5-2[114X),  it  can  be  used for
  efficient membership tests in [3Xmatgrp[103X.[133X
  
  [1X44.5-2 IsFullSubgroupGLorSLRespectingBilinearForm[101X
  
  [33X[1;0Y[29X[2XIsFullSubgroupGLorSLRespectingBilinearForm[102X( [3Xmatgrp[103X ) [32X property[133X
  
  [33X[0;0YIf this property is set then the matrix group [3Xmatgrp[103X is the full subgroup of
  [10XGL[110X[22X(d,   q)[122X  or  [10XSL[110X[22X(d,  q)[122X  respecting  the  form  stored  as  the  value  of
  [2XInvariantBilinearForm[102X ([14X44.5-1[114X) for [3Xmatgrp[103X.[133X
  
  [33X[0;0YThe value [22Xd[122X is the [2XDimensionOfMatrixGroup[102X ([14X44.2-1[114X) value of [3Xmatgrp[103X, and [22Xq[122X is
  the   size   of   the   [10XbaseDomain[110X   component   of  the  record  stored  as
  [2XInvariantBilinearForm[102X ([14X44.5-1[114X).[133X
  
  [33X[0;0YThe  property [2XIsSubgroupSL[102X ([14X44.4-5[114X) of [3Xmatgrp[103X determines whether [10XGL[110X or [10XSL[110X is
  meant for [2XIsFullSubgroupGLorSLRespectingBilinearForm[102X.[133X
  
  [1X44.5-3 InvariantBilinearFormUpToScalars[101X
  
  [33X[1;0Y[29X[2XInvariantBilinearFormUpToScalars[102X( [3Xmatgrp[103X ) [32X attribute[133X
  
  [33X[0;0YThis  attribute  describes  a  bilinear form that is invariant up to scalars
  under  the  matrix  group  [3Xmatgrp[103X.  The  form  is given by a record with the
  component  [10Xmatrix[110X  which  is  a  matrix [22XJ[122X such that for every generator [22Xg[122X of
  [3Xmatgrp[103X  the  equation  [22Xg  ⋅  J  ⋅  g^tr  =  λ(g)  J[122X  holds,  for [22Xλ(g)[122X in the
  [2XFieldOfMatrixGroup[102X ([14X44.2-3[114X) value of [3Xmatgrp[103X.[133X
  
  [1X44.5-4 IsFullSubgroupGLRespectingBilinearFormUpToScalars[101X
  
  [33X[1;0Y[29X[2XIsFullSubgroupGLRespectingBilinearFormUpToScalars[102X( [3Xmatgrp[103X ) [32X property[133X
  
  [33X[0;0YThis  property tests whether the matrix group [3Xmatgrp[103X is the full subgroup of
  GL   respecting,   up   to   scalars,  the  form  stored  as  the  value  of
  [2XInvariantBilinearFormUpToScalars[102X ([14X44.5-3[114X) for [3Xmatgrp[103X.[133X
  
  [1X44.5-5 InvariantSesquilinearForm[101X
  
  [33X[1;0Y[29X[2XInvariantSesquilinearForm[102X( [3Xmatgrp[103X ) [32X attribute[133X
  
  [33X[0;0YFor  a  matrix  group  [3Xmatgrp[103X,  [2XInvariantSesquilinearForm[102X  returns  a record
  containing  at  least  the components [10Xmatrix[110X, whose value is a matrix [22XM[122X, and
  [10XbaseDomain[110X, whose value is a field [22XF[122X.[133X
  
  [33X[0;0YThis  record  describes  a sesquilinear form that is invariant under [3Xmatgrp[103X.
  For  every  generator  [22Xg[122X of [3Xmatgrp[103X, the equation [22Xg ⋅ M ⋅ (g^tr)^f = M[122X holds,
  where  [22Xf[122X  is  an automorphism of [22XF[122X. If [22XF[122X has [22Xq^2[122X elements then [22Xf[122X raises each
  element  of  [22XF[122X  to  its  [22Xq[122X-th  power.  ([22Xf[122X  can be obtained as a power of the
  [2XFrobeniusAutomorphism[102X ([14X59.4-1[114X) value of [22XF[122X.)[133X
  
  [33X[0;0YThe   attribute  value  is  set  for  example  in  groups  constructed  with
  [2XGeneralUnitaryGroup[102X            ([14X50.2-3[114X).            Together            with
  [2XIsFullSubgroupGLorSLRespectingSesquilinearForm[102X  ([14X44.5-6[114X), it can be used for
  efficient membership tests in [3Xmatgrp[103X.[133X
  
  [1X44.5-6 IsFullSubgroupGLorSLRespectingSesquilinearForm[101X
  
  [33X[1;0Y[29X[2XIsFullSubgroupGLorSLRespectingSesquilinearForm[102X( [3Xmatgrp[103X ) [32X property[133X
  
  [33X[0;0YIf this property is set then the matrix group [3Xmatgrp[103X is the full subgroup of
  [10XGL[110X[22X(d,   q)[122X  or  [10XSL[110X[22X(d,  q)[122X  respecting  the  form  stored  as  the  value  of
  [2XInvariantSesquilinearForm[102X ([14X44.5-5[114X) for [3Xmatgrp[103X.[133X
  
  [33X[0;0YThe value [22Xd[122X is the [2XDimensionOfMatrixGroup[102X ([14X44.2-1[114X) value of [3Xmatgrp[103X, and [22Xq[122X is
  the   size   of   the   [10XbaseDomain[110X   component   of  the  record  stored  as
  [2XInvariantSesquilinearForm[102X ([14X44.5-5[114X).[133X
  
  [33X[0;0YThe  property [2XIsSubgroupSL[102X ([14X44.4-5[114X) of [3Xmatgrp[103X determines whether [10XGL[110X or [10XSL[110X is
  meant for [2XIsFullSubgroupGLorSLRespectingSesquilinearForm[102X.[133X
  
  [1X44.5-7 InvariantQuadraticForm[101X
  
  [33X[1;0Y[29X[2XInvariantQuadraticForm[102X( [3Xmatgrp[103X ) [32X attribute[133X
  
  [33X[0;0YFor   a   matrix  group  [3Xmatgrp[103X,  [2XInvariantQuadraticForm[102X  returns  a  record
  containing  at  least  the components [10Xmatrix[110X, whose value is a matrix [22XQ[122X, and
  [10XbaseDomain[110X, whose value is a field [22XF[122X.[133X
  
  [33X[0;0YThe quadratic form [22Xq[122X on the natural [22XF[122X-vector space [22XV[122X on which [3Xmatgrp[103X acts is
  given  by  [22Xq(v)  = v Q v^tr[122X, and the invariance under [3Xmatgrp[103X is given by the
  equation  [22Xq(v)  =  q(v  M)[122X  for  all  [22Xv  ∈ V[122X and [22XM[122X in [3Xmatgrp[103X. (Note that the
  invariance of [22Xq[122X does [13Xnot[113X imply that the matrix [22XQ[122X is invariant under [3Xmatgrp[103X.)[133X
  
  [33X[0;0YThe function [22Xq[122X is defined relative to an invariant symmetric bilinear form [22Xb[122X
  (see [2XInvariantBilinearForm[102X  ([14X44.5-1[114X)),  via  the equation [22Xq(λ x + μ y) = λ^2
  q(x) + λ μ b(x,y) + μ^2 q(y)[122X, see [CCN+85, Chapter 3.4]. If [22Xb[122X is represented
  by  the matrix [22XB[122X then this implies [22XB = Q + Q^tr[122X. In characteristic different
  from  [22X2[122X,  we  have [22Xq(x) = b(x,x)/2[122X, so [22XQ[122X can be chosen as the strictly upper
  triangular  part of [22XB[122X plus half of the diagonal part of [22XB[122X. In characteristic
  [22X2[122X,  [22XB[122X  does not determine [22XQ[122X but still [22XQ[122X can be chosen as an upper (or lower)
  triangular matrix.[133X
  
  [33X[0;0YWhenever the [2XInvariantQuadraticForm[102X value is set in a matrix group then also
  the [2XInvariantBilinearForm[102X ([14X44.5-1[114X) value can be accessed, and the two values
  are compatible in the above sense.[133X
  
  [33X[0;0YThe   attribute  value  is  set  for  example  in  groups  constructed  with
  [2XGeneralOrthogonalGroup[102X           ([14X50.2-6[114X).           Together           with
  [2XIsFullSubgroupGLorSLRespectingQuadraticForm[102X  ([14X44.5-8[114X),  it  can  be used for
  efficient membership tests in [3Xmatgrp[103X.[133X
  
  [1X44.5-8 IsFullSubgroupGLorSLRespectingQuadraticForm[101X
  
  [33X[1;0Y[29X[2XIsFullSubgroupGLorSLRespectingQuadraticForm[102X( [3Xmatgrp[103X ) [32X property[133X
  
  [33X[0;0YIf this property is set then the matrix group [3Xmatgrp[103X is the full subgroup of
  [10XGL[110X[22X(d,   q)[122X  or  [10XSL[110X[22X(d,  q)[122X  respecting  the  form  stored  as  the  value  of
  [2XInvariantQuadraticForm[102X ([14X44.5-7[114X) for [3Xmatgrp[103X.[133X
  
  [33X[0;0YThe value [22Xd[122X is the [2XDimensionOfMatrixGroup[102X ([14X44.2-1[114X) value of [3Xmatgrp[103X, and [22Xq[122X is
  the   size   of   the   [10XbaseDomain[110X   component   of  the  record  stored  as
  [2XInvariantQuadraticForm[102X ([14X44.5-7[114X).[133X
  
  [33X[0;0YThe  property [2XIsSubgroupSL[102X ([14X44.4-5[114X) of [3Xmatgrp[103X determines whether [10XGL[110X or [10XSL[110X is
  meant for [2XIsFullSubgroupGLorSLRespectingQuadraticForm[102X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:= Sp( 2, 3 );;[127X[104X
    [4X[25Xgap>[125X [27Xm:= InvariantBilinearForm( g ).matrix;[127X[104X
    [4X[28X[ [ 0*Z(3), Z(3)^0 ], [ Z(3), 0*Z(3) ] ][128X[104X
    [4X[25Xgap>[125X [27X[ 0, 1 ] * m * [ 1, -1 ];       # evaluate the bilinear form[127X[104X
    [4X[28XZ(3)[128X[104X
    [4X[25Xgap>[125X [27XIsFullSubgroupGLorSLRespectingBilinearForm( g );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27Xg:= SU( 2, 4 );;[127X[104X
    [4X[25Xgap>[125X [27Xm:= InvariantSesquilinearForm( g ).matrix;[127X[104X
    [4X[28X[ [ 0*Z(2), Z(2)^0 ], [ Z(2)^0, 0*Z(2) ] ][128X[104X
    [4X[25Xgap>[125X [27X[ 0, 1 ] * m * [ 1, 1 ];        # evaluate the sesquilinear form[127X[104X
    [4X[28XZ(2)^0[128X[104X
    [4X[25Xgap>[125X [27XIsFullSubgroupGLorSLRespectingSesquilinearForm( g );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XIsSubgroupSL( g );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27Xg:= GO( 1, 2, 3 );;[127X[104X
    [4X[25Xgap>[125X [27Xm:= InvariantBilinearForm( g ).matrix;[127X[104X
    [4X[28X[ [ 0*Z(3), Z(3)^0 ], [ Z(3)^0, 0*Z(3) ] ][128X[104X
    [4X[25Xgap>[125X [27X[ 0, 1 ] * m * [ 1, 1 ];        # evaluate the bilinear form[127X[104X
    [4X[28XZ(3)^0[128X[104X
    [4X[25Xgap>[125X [27Xq:= InvariantQuadraticForm( g ).matrix;[127X[104X
    [4X[28X[ [ 0*Z(3), Z(3)^0 ], [ 0*Z(3), 0*Z(3) ] ][128X[104X
    [4X[25Xgap>[125X [27X[ 0, 1 ] * q * [ 0, 1 ];        # evaluate the quadratic form[127X[104X
    [4X[28X0*Z(3)[128X[104X
    [4X[25Xgap>[125X [27XIsFullSubgroupGLorSLRespectingQuadraticForm( g );[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  
  [1X44.6 [33X[0;0YMatrix Groups in Characteristic 0[133X[101X
  
  [33X[0;0YMost  of  the  functions  described  in  this and the following section have
  implementations  which use functions from the [5XGAP[105X package [5XCaratInterface[105X. If
  [5XCaratInterface[105X  is  not  installed  or not compiled, no suitable methods are
  available.[133X
  
  [1X44.6-1 IsCyclotomicMatrixGroup[101X
  
  [33X[1;0Y[29X[2XIsCyclotomicMatrixGroup[102X( [3XG[103X ) [32X Category[133X
  
  [33X[0;0Ytests whether all matrices in [3XG[103X have cyclotomic entries.[133X
  
  [1X44.6-2 IsRationalMatrixGroup[101X
  
  [33X[1;0Y[29X[2XIsRationalMatrixGroup[102X( [3XG[103X ) [32X property[133X
  
  [33X[0;0Ytests whether all matrices in [3XG[103X have rational entries.[133X
  
  [1X44.6-3 IsIntegerMatrixGroup[101X
  
  [33X[1;0Y[29X[2XIsIntegerMatrixGroup[102X( [3XG[103X ) [32X property[133X
  
  [33X[0;0Ytests whether all matrices in [3XG[103X have integer entries.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XA:=[[0,1,0],[0,0,1],[1,0,0]];;[127X[104X
    [4X[25Xgap>[125X [27XB:=[[0,0,1],[0,1,0],[-1,0,0]];;[127X[104X
    [4X[25Xgap>[125X [27XC:=[[E(4),0,0],[0,E(4)^(-1),0],[0,0,1]];;[127X[104X
    [4X[25Xgap>[125X [27XIsIntegerMatrixGroup(Group(A, B));[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XIsIntegerMatrixGroup(Group(A, C));[127X[104X
    [4X[28Xfalse[128X[104X
  [4X[32X[104X
  
  [1X44.6-4 IsNaturalGLnZ[101X
  
  [33X[1;0Y[29X[2XIsNaturalGLnZ[102X( [3XG[103X ) [32X property[133X
  
  [33X[0;0Ytests  whether  [3XG[103X  is [22XGL_n(ℤ)[122X in its natural representation by [22Xn × n[122X integer
  matrices. (The dimension [22Xn[122X will be read off the generating matrices.)[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XIsNaturalGLnZ( GL( 2, Integers ) );[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X44.6-5 IsNaturalSLnZ[101X
  
  [33X[1;0Y[29X[2XIsNaturalSLnZ[102X( [3XG[103X ) [32X property[133X
  
  [33X[0;0Ytests  whether  [3XG[103X  is [22XSL_n(ℤ)[122X in its natural representation by [22Xn × n[122X integer
  matrices. (The dimension [22Xn[122X will be read off the generating matrices.)[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XIsNaturalSLnZ( SL( 2, Integers ) );[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X44.6-6 InvariantLattice[101X
  
  [33X[1;0Y[29X[2XInvariantLattice[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns a matrix [22XB[122X, whose rows form a basis of a [22Xℤ[122X-lattice that is invariant
  under  the rational matrix group [3XG[103X acting from the right. It returns [9Xfail[109X if
  the  group  is  not  unimodular.  The  columns  of  the  inverse of [22XB[122X span a
  [22Xℤ[122X-lattice invariant under [3XG[103X acting from the left.[133X
  
  [1X44.6-7 NormalizerInGLnZ[101X
  
  [33X[1;0Y[29X[2XNormalizerInGLnZ[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yis  an attribute used to store the normalizer of [3XG[103X in [22XGL_n(ℤ)[122X, where [3XG[103X is an
  integer  matrix  group of dimension [3Xn[103X. This attribute is used by [10XNormalizer(
  GL( n, Integers ), G )[110X.[133X
  
  [1X44.6-8 CentralizerInGLnZ[101X
  
  [33X[1;0Y[29X[2XCentralizerInGLnZ[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yis an attribute used to store the centralizer of [3XG[103X in [22XGL_n(ℤ)[122X, where [3XG[103X is an
  integer  matrix group of dimension [3Xn[103X. This attribute is used by [10XCentralizer(
  GL( n, Integers ), G )[110X.[133X
  
  [1X44.6-9 ZClassRepsQClass[101X
  
  [33X[1;0Y[29X[2XZClassRepsQClass[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0YThe  conjugacy  class in [22XGL_n(ℚ)[122X of the finite integer matrix group [3XG[103X splits
  into  finitely  many  conjugacy  classes  in  [22XGL_n(ℤ)[122X. [10XZClassRepsQClass( [3XG[103X[10X )[110X
  returns representative groups for these.[133X
  
  [1X44.6-10 IsBravaisGroup[101X
  
  [33X[1;0Y[29X[2XIsBravaisGroup[102X( [3XG[103X ) [32X property[133X
  
  [33X[0;0Ytest   whether   [3XG[103X  coincides  with  its  Bravais  group  (see  [2XBravaisGroup[102X
  ([14X44.6-11[114X)).[133X
  
  [1X44.6-11 BravaisGroup[101X
  
  [33X[1;0Y[29X[2XBravaisGroup[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns  the  Bravais  group of a finite integer matrix group [3XG[103X. If [22XC[122X is the
  cone of positive definite quadratic forms [22XQ[122X invariant under [22Xg ↦ g Q g^tr[122X for
  all  [22Xg  ∈  [3XG[103X[122X, then the Bravais group of [3XG[103X is the maximal subgroup of [22XGL_n(ℤ)[122X
  leaving  the  forms  in that same cone invariant. Alternatively, the Bravais
  group  of  [3XG[103X  can also be defined with respect to the action [22Xg ↦ g^tr Q g[122X on
  positive  definite  quadratic forms [22XQ[122X. This latter definition is appropriate
  for  groups  [3XG[103X  acting  from  the  right  on row vectors, whereas the former
  definition is appropriate for groups acting from the left on column vectors.
  Both definitions yield the same Bravais group.[133X
  
  [1X44.6-12 BravaisSubgroups[101X
  
  [33X[1;0Y[29X[2XBravaisSubgroups[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns  the  subgroups  of  the  Bravais  group  of [3XG[103X, which are themselves
  Bravais groups.[133X
  
  [1X44.6-13 BravaisSupergroups[101X
  
  [33X[1;0Y[29X[2XBravaisSupergroups[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns the subgroups of [22XGL_n(ℤ)[122X that contain the Bravais group of [3XG[103X and are
  Bravais groups themselves.[133X
  
  [1X44.6-14 NormalizerInGLnZBravaisGroup[101X
  
  [33X[1;0Y[29X[2XNormalizerInGLnZBravaisGroup[102X( [3XG[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns the normalizer of the Bravais group of [3XG[103X in the appropriate [22XGL_n(ℤ)[122X.[133X
  
  
  [1X44.7 [33X[0;0YActing OnRight and OnLeft[133X[101X
  
  [33X[0;0YIn [5XGAP[105X, matrices by convention act on row vectors from the right, whereas in
  crystallography  the  convention  is to act on column vectors from the left.
  The  definition  of  certain  algebraic objects important in crystallography
  implicitly depends on which action is assumed. This holds true in particular
  for  quadratic  forms  invariant under a matrix group. In a similar way, the
  representation  of  affine  crystallographic groups, as they are provided by
  the   [5XGAP[105X   package   [5XCrystGap[105X,   depends   on   which  action  is  assumed.
  Crystallographers  are  used to the action from the left, whereas the action
  from  the  right  is  the  natural one for [5XGAP[105X. For this reason, a number of
  functions  which  are important in crystallography, and whose result depends
  on  which action is assumed, are provided in two versions, one for the usual
  action  from  the  right,  and  one for the crystallographic action from the
  left.[133X
  
  [33X[0;0YFor  every  such  function,  this  fact  is explicitly mentioned. The naming
  scheme  is  as  follows:  If  [10XSomeThing[110X  is  such  a function, there will be
  functions  [10XSomeThingOnRight[110X  and  [10XSomeThingOnLeft[110X,  assuming action from the
  right  and  from  the  left,  respectively.  In addition, there is a generic
  function  [10XSomeThing[110X,  which returns either the result of [10XSomeThingOnRight[110X or
  [10XSomeThingOnLeft[110X,  depending  on  the global variable [2XCrystGroupDefaultAction[102X
  ([14X44.7-1[114X).[133X
  
  [1X44.7-1 CrystGroupDefaultAction[101X
  
  [33X[1;0Y[29X[2XCrystGroupDefaultAction[102X [32X global variable[133X
  
  [33X[0;0Ycan  have  either  of the two values [10XRightAction[110X and [10XLeftAction[110X. The initial
  value  is [10XRightAction[110X. For functions which have variants OnRight and OnLeft,
  this  variable determines which variant is returned by the generic form. The
  value   of   [2XCrystGroupDefaultAction[102X   can  be  changed  with  the  function
  [2XSetCrystGroupDefaultAction[102X ([14X44.7-2[114X).[133X
  
  [1X44.7-2 SetCrystGroupDefaultAction[101X
  
  [33X[1;0Y[29X[2XSetCrystGroupDefaultAction[102X( [3Xaction[103X ) [32X function[133X
  
  [33X[0;0Yallows  one  to set the value of the global variable [2XCrystGroupDefaultAction[102X
  ([14X44.7-1[114X).  Only  the  arguments  [10XRightAction[110X  and  [10XLeftAction[110X  are  allowed.
  Initially, the value of [2XCrystGroupDefaultAction[102X ([14X44.7-1[114X) is [10XRightAction[110X.[133X
  
