78 Algebraic groups and semi-simple elements

Let us fix an algebraically closed field K and let G be a connected reductive algebraic group over K. Let T be a maximal torus of G, let X(T) be the character group of T (resp. Y(T) the dual lattice of one-parameter subgroups) and Φ (resp Φ) the roots (resp. coroots) of G with respect to T.

Then G is determined up to isomorphism by the root datum (X(T),Φ, Y(T),Φ). In algebraic terms, this consists in giving a root system Φ ⊂ X(T), where X(T) is a free Z-lattice of dimension the rank of G, and giving similarly the dual roots Φ⊂ Y(T).

This is obtained by a slight generalization of our setup for a Coxeter group W. This time we assume the canonical basis of the vector space V on which W acts is a Z-basis of X(T), and Φ is specified by a matrix W.simpleRoots whose lines are the simple roots expressed in this basis of V. Similarly Φ is described by a matrix W.simpleCoroots whose lines are the simple coroots in the basis of Y(T) dual to the chosen basis of X(T).

We get that by a new form of the function CoxeterGroup, where the arguments are the two matrices W.simpleRoots and W.simpleCoroots described above. The roots need not generate V, so the matrices need not be square. For instance, the root datum of the linear group of rank 3 can be specified as:

    gap> W := CoxeterGroup( [ [ -1, 1, 0], [ 0, -1, 1 ] ],
    >                       [ [ -1, 1, 0], [ 0, -1, 1 ] ] );
    CoxeterGroup([[-1,1,0],[0,-1,1]],[[-1,1,0],[0,-1,1]])
    gap> MatXPerm( W, W.1);
    [ [ 0, 1, 0 ], [ 1, 0, 0 ], [ 0, 0, 1 ] ]

here the symmetric group on 3 letters acts by permutation of the basis vectors of V --- the semi-simple rank is 2; the integral elements of V correspond to the characters of a maximal torus, and the integral elements of V to one-parameter subgroups of that torus.

The default form W:=CoxeterGroup("A",2) corresponds to the adjoint algebraic group (the group with a trivial center). In that case Φ is a basis of X(T), so W.simpleRoots is the identity matrix and W.simpleCoroots is the Cartan matrix CartanMat(W) of the root system. The form CoxeterGroup("A",2,"sc") constructs the semisimple simply connected algebraic group, where W.simpleRoots is the transposed of CartanMat(W) and W.simpleCoroots is the identity matrix. In general we have the relation W.simpleCoroots*TransposedMat(W.simpleRoots)=CartanMat(W).

There is also a function RootDatum which understands some familiar names for the algebraic groups and gives the results that could be obtained by giving the appropriate matrices W.simpleRoots and W.simpleCoroots:

    gap> RootDatum("sl",3);   # same as CoxeterGroup("A",2,"sc")  
    RootDatum("sl",3)

It is also possible to compute with finite order elements of T. Over an algebraically closed field, finite order elements of T are in bijection with elements of Q/Z⊗ Y(T) whose denominator is prime to the characteristic of the field. These are represented as elements of a vector space of rank r over Q, taken Mod1 whenever the need arises, where Mod1 is the function which replaces the numerator of a fraction with the numerator mod the denominator; the fraction p/q represents a primitive p-th root of unity raised to the p-th power. In this representation, multiplication of roots of unity becomes addition Mod1 of rationals and raising to the power n becomes multiplication by n. We call this the ``additive'' representation of semisimple elements.

Since over an algebraically closed field K the points of T are in bijection with (K×)r it is also possible to represent any point of T over K as a list of r non-zero elements of K. Then the elements of the field are multiplied normally.

Here is an example of computations with semisimple-elements given as list in Q/Z.

    gap> G:=RootDatum("sl",4);
    RootDatum("sl",4)
    gap> L:=ReflectionSubgroup(G,[1,3]);
    ReflectionSubgroup(RootDatum("sl",4), [ 1, 3 ])
    gap> AlgebraicCentre(L);
    rec(
      Z0 := [ [ 1, 2, 1 ] ],
      complement := [ [ 0, 1, 0 ], [ 0, 0, 1 ] ],
      AZ := Group( <0,0,1/2> ) )
    gap> SemisimpleSubgroup(G,last.Z0,3);
    Group( <1/3,2/3,1/3> )
    gap> Elements(last);
    [ <0,0,0>, <1/3,2/3,1/3>, <2/3,1/3,2/3> ]
    gap> s:=last[2];
    <1/3,2/3,1/3>

First, the group G=SL4 is constructed, then the Levi subgroup L consisting of block-diagonal matrices of shape 2× 2. The function AlgebraicCentre returns a record with three fields: a basis of the sub-lattice Y(Z0) of Y(T), where Z0 is the connected component of the identity in the centre Z of L, a basis of a complement lattice of Y(Z0) in Y(T) representing a subtorus S of T complement to Z0, and semi-simple elements which are representatives of the classes of Z modulo Z0 , chosen in S. Then the semi-simple elements of order 3 in Z0 are computed.

    gap> s^G.2;
    <1/3,0,1/3>
    gap> Orbit(G,s);
    [ <1/3,2/3,1/3>, <1/3,0,1/3>, <2/3,0,1/3>, <1/3,0,2/3>, <2/3,0,2/3>,
      <2/3,1/3,2/3> ]

Here is the same computation performed with semisimple elements whose coefficients are in the finite field GF(3):

   gap> s:=SemisimpleElement(G,Z(3)*[1,1,2]);
   <Z(3),Z(3),Z(3)^0>
   gap> s^G.2;
   <Z(3),Z(3)^0,Z(3)^0>
   gap> Orbit(G,s);
   [ <Z(3),Z(3),Z(3)^0>, <Z(3)^0,Z(3),Z(3)^0>, <Z(3),Z(3)^0,Z(3)^0>, 
     <Z(3),Z(3),Z(3)>, <Z(3)^0,Z(3),Z(3)>, <Z(3)^0,Z(3)^0,Z(3)> ]

The function SemisimpleCentralizer computes the centralizer CG(s) of a semisimple element in G:

    gap> G:=CoxeterGroup("A",3);
    CoxeterGroup("A",3)
    gap> s:=SemisimpleElement(G,[0,1/2,0]);
    <0,1/2,0>
    gap> SemisimpleCentralizer(G,s);
    Extended((A1xA1)<1,3>.(q+1))

The result is an extended reflection group; the reflection group part is the Weyl group of CG0(s) and the extended part are representatives of CG(s) modulo CG0(s) taken as diagram automorphisms of the reflection part. Here is is printed as a coset CG0(s)φ which generates CG(s).

Subsections

  1. CoxeterGroup (extended form)
  2. RootDatum
  3. FundamentalGroup for Weyl groups
  4. IntermediateGroup
  5. Mod1
  6. SemisimpleElement
  7. Operations for Semisimple elements
  8. SemisimpleCentralizer
  9. AlgebraicCentre
  10. SemisimpleSubgroup
  11. IsIsolated
  12. IsQuasiIsolated
  13. QuasiIsolatedRepresentatives
  14. SemisimpleCentralizerRepresentatives
  15. StructureRationalPointsConnectedCentre

78.1 CoxeterGroup (extended form)

CoxeterGroup( simpleRoots, simpleCoroots )

CoxeterGroup( C[, "sc"] )

CoxeterGroup( type1, n1, ... , typek, nk[, "sc"] )

The above are extended forms of the function CoxeterGroup allowing to specify more general root data. In the first form a set of roots is given explicitly as the lines of the matrix simpleRoots, representing vectors in a vector space V, as well as a set of coroots as the lines of the matrix simpleCoroots expressed in the dual basis of V. The product C=simpleCoroots*TransposedMat(simpleRoots) must be a valid Cartan matrix. The dimension of V can be greater than Length(C). The length of C is called the semisimple rank of the Coxeter datum, while the dimension of V is called its rank.

In the second form C is a Cartan matrix, and the call CoxeterGroup(C) is equivalent to CoxeterGroup(IdentityMat(Length(C)),C). When the optional "sc" argument is given the situation is reversed: the simple coroots are given by the identity matrix, and the simple roots by the transposed of C (this corresponds to the embedding of the root system in the lattice of characters of a maximal torus in a simply connected algebraic group).

The argument "sc" can also be given in the third form with the same effect.

The following fields in a Coxeter group record complete the description of the corresponding root datum:

simpleRoots:

the matrix of simple roots

simpleCoroots:

the matrix of simple coroots

matgens:

the matrices (in row convention --- that is, the matrices operate from the right) of the simple reflections of the Coxeter group.

This function requires the package "chevie" (see RequirePackage).

78.2 RootDatum

RootDatum(type,rank)

This function returns the root datum for the algebraic group described by type and rank. The types understood as of now are: "gl", "sl", "pgl", "sp", "so", "psp", "pso", "halfspin" and "spin".

   gap> RootDatum("spin",8);# same as CoxeterGroup("D",4,"sc")
     RootDatum("spin",8)

This function requires the package "chevie" (see RequirePackage).

78.3 FundamentalGroup for Weyl groups

FundamentalGroup(W)

This function returns the fundamental group corresponding to the Weyl group record W as diagram automorphisms of the corresponding affine Weyl group induced by W, thus as a group of permutations of the simple roots and the lowest root of each irreducible component. Our definition for the fundamental group of an arbitrary, not necessarily semisimple, reductive group is (P∩ Y(T))/Q where P is the coweight lattice and Q is the coroot latice. The bijection between elements of P/Q and diagram automorphisms is expained in the context of non-irreducible groups for example in Bon05, \S 3.B.

   gap> W:=CoxeterGroup("A",3);
   CoxeterGroup("A",3)
   gap> FundamentalGroup(W);
   Group( ( 1, 2, 3,12) )
   gap> W:=CoxeterGroup("A",3,"sc");
   CoxeterGroup("A",3,"sc")
   gap> FundamentalGroup(W);
   Group( () )

This function requires the package "chevie" (see RequirePackage).

78.4 IntermediateGroup

IntermediateGroup(W, indices)

This computes a Weyl group record representing an algebraic group intermediate between the adjoint group --- obtained by a call like CoxeterGroup("A",3)--- and the simply connected semi-simple group --- obtained by a call like CoxeterGroup("A",3,"sc"). The group is specified by specifying a subset of the minuscule weights, which are weights with scalar product in -1,0,1 with every coroot. The non-trivial elements of the (algebraic) center of a semi-simple simply connected algebraic group are in bijection with the minuscule weights; this set is also in bijection with P/Q where P is the coweight lattice and Q is the coroot lattice. The minuscule weights are specified, if W is irreducible, by the list indices of their position in the Dynkin diagram (see PrintDiagram). The constructed group has lattice Y(T) generated by the sum of the coroot lattice and the weights with the given indices. If W is not irreducible, one may need to specify an intermediate group generated by a sum of weight in different components. An element of indices which is iteself a list is interpreted as representing the sum of the corresponding weights.

    gap> W:=CoxeterGroup("A",3);;
    gap> IntermediateGroup(W,[]); # adjoint
    CoxeterGroup("A",3)
    gap> IntermediateGroup(W,[2]);# intermediate
    CoxeterGroup([ [ 2, 0, -1 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ],[ [ 1, -1, 0 ], 
      [ -1, 2, -1 ], [ 1, -1, 2 ] ])
    gap> FundamentalGroup(last);  
    Group( ( 1, 3)( 2,12) )

This function requires the package "chevie" (see RequirePackage).

78.5 Mod1

Mod1(r)

This is a utility function for working in Q/Z. The argument should be a rational or a list. If r is a rational, it returns (Numerator(r) mod Denominator(r))/Denominator(r). If r is a list, it returns List(r,Mod1).

    gap> Mod1([-2/3,-1,7/4,3]);
    [ 1/3, 0, 3/4, 0 ]

This function requires the package "chevie" (see RequirePackage).

78.6 SemisimpleElement

SemisimpleElement(W,v[,additive])

W should be a root datum, given as a Coxeter group record for a Weyl group, and v a list of length W.rank. The result is a semisimple element record, which has the fields:

.v:
the given list, taken Mod1 if its elements are rationals.

.group:
the parent of the group W.

    gap> G:=CoxeterGroup("A",3);;
    gap> s:=SemisimpleElement(G,[0,1/2,0]);
    <0,1/2,0>

If all elements of v are rational numbers, they are converted by Mod1 to fractions between 0 and 1 representing roots of unity, and these roots of unity are multiplied by adding Mod1 the fractions. In this way any semisimple element of finite order can be represented.

If the entries are not rational numbers, they are assumed to represent elements of a field which are multiplied or added normally. To explicitly control if the entries are to be treated additively or not, a third argument can be given: if true the entries are treated additively, or not if false. For entries to be treated additively, they must belong to a domain for which the method Mod1 had been defined.

This function requires the package "chevie" (see RequirePackage).

78.7 Operations for Semisimple elements

The arithmetic operations *, / and ^ work for semisimple elements. They also have Print and String methods. We first give an element with elements of Q/Z representing roots of unity.

   gap> G:=CoxeterGroup("A",3);
   CoxeterGroup("A",3)
   gap> s:=SemisimpleElement(G,[0,1/2,0]);
   <0,1/2,0>
   gap> t:=SemisimpleElement(G,[1/2,1/3,1/7]);
   <1/2,1/3,1/7>
   gap> s*t;
   <1/2,5/6,1/7>
   gap> t^3;
   <1/2,0,3/7>
   gap> t^-1;
   <1/2,2/3,6/7>
   gap> t^0;
   <0,0,0>
   gap> String(t);
   "<1/2,1/3,1/7>"

then a similar example with elements of GF(5):

   gap> s:=SemisimpleElement(G,Z(5)*[1,2,1]);
   <Z(5),Z(5)^2,Z(5)>
   gap> t:=SemisimpleElement(G,Z(5)*[2,3,4]);
   <Z(5)^2,Z(5)^0,Z(5)^3>
   gap> s*t;
   <Z(5)^3,Z(5)^2,Z(5)^0>
   gap> t^3;
   <Z(5)^2,Z(5)^0,Z(5)>
   gap> t^-1;
   <Z(5)^2,Z(5)^0,Z(5)>
   gap> t^0; 
   <Z(5)^0,Z(5)^0,Z(5)^0>
   gap> String(t);
   "<Z(5)^2,Z(5)^0,Z(5)^3>"

The operation ^ also works for applying an element of its defining Weyl group to a semisimple element, which allows orbit computations:

   gap> s:=SemisimpleElement(G,[0,1/2,0]);
   <0,1/2,0>
   gap> s^G.2;
   <1/2,1/2,1/2>
   gap> Orbit(G,s);
   [ <0,1/2,0>, <1/2,1/2,1/2>, <1/2,0,1/2> ]

The operation ^ also works for applying a root to a semisimple element:

   gap> s:=SemisimpleElement(G,[0,1/2,0]);   
   <0,1/2,0>
   gap> s^G.roots[4];                     
   1/2
   gap> s:=SemisimpleElement(G,Z(5)*[1,1,1]);
   <Z(5),Z(5),Z(5)>
   gap> s^G.roots[4];
   Z(5)^2

Frobenius( WF ):

If WF is a Coxeter coset associated to the Coxeter group W, the function Frobenius returns the associated automorphism which can be applied to semisimple elements, see Frobenius.

   gap> W:=CoxeterGroup("D",4);;WF:=CoxeterCoset(W,(1,2,4));;
   gap> s:=SemisimpleElement(W,[1/2,0,0,0]);
   <1/2,0,0,0>
   gap> F:=Frobenius(WF);
   function ( arg ) ... end
   gap> F(s);
   <0,1/2,0,0>
   gap> F(s,-1);
   <0,0,0,1/2>

These functions require the package "chevie" (see RequirePackage).

78.8 SemisimpleCentralizer

SemisimpleCentralizer( W, s)

W should be a Weyl group record and s a semisimple element for W. This function returns the stabilizer of the semisimple element s in W, which describes also CG(s), if G is the algebraic group described by W. The stabilizer is an extended reflection group, with the reflection group part equal to the Weyl group of CG0(s), and the diagram automorphism part being those induced by CG(s)/CG0(s) on CG0(s).

    gap> G:=CoxeterGroup("A",3);
    CoxeterGroup("A",3)
    gap> s:=SemisimpleElement(G,[0,1/2,0]);
    <0,1/2,0>
    gap> SemisimpleCentralizer(G,s);
    Extended((A1xA1)<1,3>.(q+1))

This function requires the package "chevie" (see RequirePackage).

78.9 AlgebraicCentre

AlgebraicCentre( W )

W should be a Weyl group record, that is a Coxeter group record where .simpleRoots and .simpleCoroots are integral, or an extended Weyl group record. This function returns a description of the centre Z of the algebraic group defined by W (it is a non-connected group for an extended Weyl group) as a record with the following fields:

Z0:
A basis of Y(Z0) (with respect to the canonical basis of Y(T))

complement:
A basis of Y(S), a complement lattice to Z0 in Y(T) where S is a complement torus to Z0 in T.

AZ:
representatives of A(Z):=Z/Z0 given as a subgroup of S (that is, elements of Q/Z⊗ Y(S)).

    gap> G:=CoxeterGroup("A",3,"sc");
    CoxeterGroup("A",3,"sc")
    gap> L:=ReflectionSubgroup(G,[1,3]);
    ReflectionSubgroup(CoxeterGroup("A",3,"sc"), [ 1, 3 ])
    gap> AlgebraicCentre(L);
    rec(
      Z0 := [ [ 1, 2, 1 ] ],
      complement := [ [ 0, 1, 0 ], [ 0, 0, 1 ] ],
      AZ := Group( <0,0,1/2> ) )
    gap>  G:=CoxeterGroup("A",3);;
    gap> s:=SemisimpleElement(G,[0,1/2,0]);;
    gap> SemisimpleCentralizer(G,s);
    Extended((A1xA1)<1,3>.(q+1))
    gap> AlgebraicCentre(last);
    rec(
      Z0 := [  ],
      complement := [ [ 1, 0, 0 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ],
      AZ := Group( <1/2,1/2,1/2> ) )

This function requires the package "chevie" (see RequirePackage).

78.10 SemisimpleSubgroup

SemisimpleSubgroup( W, V, n )

This function returns the subgroup of semi-simple elements of order dividing n in the subtorus S of the maximal torus T of the algebraic group defined by W, where S is represented by V, an integral basis of the sublattice Y(S) of Y(T).

    gap> G:=CoxeterGroup("A",3,"sc");;
    gap> L:=ReflectionSubgroup(G,[1,3]);;
    gap> z:=AlgebraicCentre(L);;
    gap> z.Z0;
    [ [ 1, 2, 1 ] ]
    gap> SemisimpleSubgroup(G,z.Z0,3);
    Group( <1/3,2/3,1/3> )
    gap> Elements(last);
    [ <0,0,0>, <1/3,2/3,1/3>, <2/3,1/3,2/3> ]

This function requires the package "chevie" (see RequirePackage).

78.11 IsIsolated

IsIsolated(W,s)

s should be a semi-simple element for the algebraic group G specified by the Weyl group record W. A semisimple element s of an algebraic group G is isolated if the connected component CG0(s) does not lie in a proper parabolic subgroup of G. This function tests this condition.

   gap> W:=CoxeterGroup("E",6);;
   gap> QuasiIsolatedRepresentatives(W);
   [ <0,0,0,0,0,0>, <0,0,0,1/3,0,0>, <0,1/6,1/6,0,1/6,0>,
     <0,1/2,0,0,0,0>, <1/3,0,0,0,0,1/3> ]
   gap> Filtered(last,x->IsIsolated(W,x));
   [ <0,0,0,0,0,0>, <0,0,0,1/3,0,0>, <0,1/2,0,0,0,0> ]

This function requires the package "chevie" (see RequirePackage).

78.12 IsQuasiIsolated

IsQuasiIsolated(W,s)

s should be a semi-simple element for the algebraic group G specified by the Weyl group record W. A semisimple element s of an algebraic group G is quasi-isolated if CG(s) does not lie in a proper parabolic subgroup of G. This function tests this condition.

   gap> W:=CoxeterGroup("E",6);;
   gap> QuasiIsolatedRepresentatives(W);
   [ <0,0,0,0,0,0>, <0,0,0,1/3,0,0>, <0,1/6,1/6,0,1/6,0>, 
     <0,1/2,0,0,0,0>, <1/3,0,0,0,0,1/3> ]
    gap> Filtered(last,x->IsQuasiIsolated(ReflectionSubgroup(W,[1,3,5,6]),x));
   [ <0,0,0,0,0,0>, <0,0,0,1/3,0,0>, <0,1/2,0,0,0,0> ]

This function requires the package "chevie" (see RequirePackage).

78.13 QuasiIsolatedRepresentatives

QuasiIsolatedRepresentatives(W[,p])

W should be a Weyl group record corresponding to an algebraic group G. This function returns a list of semisimple elements for G, which are representatives of the G-orbits of quasi-isolated semisimple elements. It follows the algorithm given by C. Bonnafé in Bon05. If a second argument p is given, it gives representatives of those quasi-isolated elements which exist in characteristic p.

    gap> W:=CoxeterGroup("E",6);;QuasiIsolatedRepresentatives(W);
    [ <0,0,0,0,0,0>, <0,0,0,1/3,0,0>, <0,1/6,1/6,0,1/6,0>, 
      <0,1/2,0,0,0,0>, <1/3,0,0,0,0,1/3> ]
    gap> List(last,x->IsIsolated(W,x));
    [ true, true, false, true, false ]
    gap> W:=CoxeterGroup("E",6,"sc");;QuasiIsolatedRepresentatives(W);
    [ <0,0,0,0,0,0>, <1/3,0,2/3,0,1/3,2/3>, <1/2,0,0,1/2,0,1/2>,
      <2/3,0,1/3,0,1/3,2/3>, <2/3,0,1/3,0,2/3,1/3>,
      <2/3,0,1/3,0,2/3,5/6>, <5/6,0,2/3,0,1/3,2/3> ]
    gap> List(last,x->IsIsolated(W,x));
    [ true, true, true, true, true, true, true ]

This function requires the package "chevie" (see RequirePackage).

78.14 SemisimpleCentralizerRepresentatives

SemisimpleCentralizerRepresentatives(W [,p])

W should be a Weyl group record corresponding to an algebraic group G. This function returns a list giving representatives \bH of G-orbits of reductive subgroups of G which can be the identity component of the centralizer of a semisimple element. Each group H is specified by a list h of reflection indices in W such that \bH corresponds to ReflectionSubgroup(W,h). If a second argument p is given, only the list of the centralizers which occur in characteristic p is returned.

   gap> W:=CoxeterGroup("G",2);                    
   CoxeterGroup("G",2)
   gap> l:=SemisimpleCentralizerRepresentatives(W);
   [ [  ], [ 1 ], [ 1, 2 ], [ 1, 5 ], [ 2 ], [ 2, 6 ] ]
   gap> List(last,h->ReflectionName(ReflectionSubgroup(W,h)));
   [ "(q-1)^2", "A1.(q-1)", "G2", "A2<1,5>", "~A1<2>.(q-1)", "~A1<2>xA1<6>" ]
   gap> SemisimpleCentralizerRepresentatives(W,2);            
   [ [  ], [ 1 ], [ 1, 2 ], [ 1, 5 ], [ 2 ] ]

This function requires the package "chevie" (see RequirePackage).

78.15 StructureRationalPointsConnectedCentre

StructureRationalPointsConnectedCentre(G,q)

G should be a root datum or a twisted root datum representing a finite reductive group and q should be a prime power. The function returns the abelian invariants of the finite abelian group Z(q) where Z is the connected center of G.

In the following example one determines the structure of T(3) where T runs over all the maximal tori of SL4.

   gap> G:=RootDatum("sl",4);
   RootDatum("sl",4)
   gap> List(Twistings(G,[]),T->StructureRationalPointsConnectedCentre(T,3));
   [ [ 2, 2, 2 ], [ 2, 8 ], [ 4, 8 ], [ 26 ], [ 40 ] ]

This function requires the package "chevie" (see RequirePackage). Previous Up Next
Index

GAP 3.4.4
April 1997