Reductive groups, semisimple elements
- Chevie.Semisimple
- Chevie.Semisimple.SubTorus
- Chevie.Semisimple.algebraic_center
- Chevie.Semisimple.coweights
- Chevie.Semisimple.fundamental_group
- Chevie.Semisimple.intermediate_group
- Chevie.Semisimple.isisolated
- Chevie.Semisimple.quasi_isolated_reps
- Chevie.Semisimple.semisimple_centralizer_representatives
- Chevie.Semisimple.structure_rational_points_connected_centre
- Chevie.Semisimple.torsion_subgroup
- Chevie.Semisimple.weightinfo
- Chevie.Semisimple.weights
- PermGroups.Groups.centralizer
Chevie.Semisimple β ModuleAlgebraic groups and semi-simple elements
Let  us fix an  algebraically closed field  K and let  π be a connected reductive  algebraic group over K. Let π be a maximal torus of π, let X(π)  be the  character group  of π  (resp. Y(π)  the dual lattice of one-parameter  subgroups  of  π)  and  Ξ¦  (resp  Ξ¦^) the roots (resp. coroots) of π with respect to π.
Then  π is  determined up  to isomorphism  by the  root datum (X(π),Ξ¦, Y(π),Ξ¦^).  In algebraic terms, this consists  in giving a free β€-lattice X=X(π) of dimension the rank of π (which is also called the rank of π),  and a root system Ξ¦ β X,  and similarly giving the dual roots Ξ¦^β Y=Y(π).
This  is obtained  by a  slight generalisation  of our  setup for a Coxeter group W. This time we assume that the canonical basis of the vector space V  on which W  acts is a  β€-basis of X,  and Ξ¦ is  specified by a matrix  simpleroots(W) whose rows are the  simple roots expressed in this basis  of X. Similarly  Ξ¦^ is described  by a matrix simplecoroots(W) whose  rows are the simple  coroots in the basis  of Y dual to the chosen basis of X. The duality pairing between X and Y is the canonical one, that  is  the  pairing  between  vectors  xβ  X  and  yβ  Y is given by transpose(x)*y. Thus, we must have the relation simplecoroots(W)*permutedims(simpleroots(W))=cartan(W).
We  get this by using the function rootdatum, whose arguments are the two matrices simpleroots(W) and simplecoroots(W) described above. The roots need not generate V, so the matrices need not be square. For example, the root datum of the linear group of rank 3 can be obtained as:
julia> W=rootdatum([-1 1 0;0 -1 1],[-1 1 0;0 -1 1])
AβΞ¦β
julia> reflrep(W,W(1))
3Γ3 Matrix{Int64}:
 0  1  0
 1  0  0
 0  0  1here  the  Weyl  group  is  the  symmetric  group  on  3  letters acting by permutation of the basis of X. The dimension of X, size(simpleroots(W),2),  is the rank and  the dimension of the subspace generated   by   the   roots,   size(simpleroots(W),1),   is  called  the semi-simple rank. In the example the rank is 3 and the semisimple rank is
The  default form  W=coxgroup(:A,2) defines  the adjoint  algebraic group (the group in its isogeny class with a trivial centre). In this case Ξ¦ is a   basis  of  X,   so  simpleroots(W)  is   the  identity  matrix  and simplecoroots(W) is the Cartan matrix cartan(W) of the root system.
The   form  coxgroup(:A,2,sc=true)   constructs  the   semisimple  simply connected  algebraic  group,  where  simpleroots(W)  is the transposed of cartan(W) and simplecoroots(W) is the identity matrix.
An  extreme form of root data can  be specified more conveniently: when W is  the trivial coxgroup() (in this case π is a torus), the root datum has  no roots, thus  is entirely determined  by the rank  r. The function torus(r)  constructs  such  a  root  datum  (it could be also obtained by giving two 0Γr matrices to rootdatum).
Finally,  the rootdatum function also understands some familiar names for the  algebraic groups for which it gives the results that could be obtained by giving the appropriate simpleroots(W) and simplecoroots(W) matrices:
julia> rootdatum(:gl,3)   # same as the previous example
glβThe types of root data which are understood are  :gl, :pgl, :sl, :slmod, :tgl :sp, :csp, :psp, :so, :pso, :cso, :halfspin,    :gpin, :spin, :E6, :E6sc, :CE6, :E7, :E7sc, :CE7, :E8, :F4, :G2.
Semisimple elements
We  construct semi-simple elements in two ways. The first way is for finite order  elements of π, which over an algebraically closed field K are in bijection  with elements  of Yβ  β /β€  whose denominator  is prime to the characteristic of K. These are represented as a vector of Rationals r such  that 0β€r<1. The function ss  constructs such a semisimple element from a vector of Rationals.
More generally a torus π over a field K is isomorphic to (KΛ£)^n where n  is the dimension  of π, so  a vector of  elements of KΛ£  is a more general representation which is produced by the function SemisimpleElement;  in  this  setting  the  result  of  ss is naturally interpreted  as a  Vector{Root1}, so  it can  also be obtained by calling SemisimpleElement which such a vector.
julia> G=rootdatum(:sl,4)
slβ
julia> ss(G,[1//3,1//4,3//4,2//3])
SemisimpleElement{Root1}: <ΞΆβ,ΞΆβ,ΞΆβΒ³,ΞΆβΒ²>
julia> SemisimpleElement(G,[E(3),E(4),E(4,3),E(3,2)])
SemisimpleElement{Root1}: <ΞΆβ,ΞΆβ,ΞΆβΒ³,ΞΆβΒ²>
julia> L=reflection_subgroup(G,[1,3])
Aβββββ=AβΓAβΞ¦β
julia> C=algebraic_center(L)
(Z0 = SubTorus(Aβββββ=AβΓAβΞ¦β,[1 2 1]), AZ = Group(SemisimpleElement{Root1}[<1,1,-1>]), descAZ = [[1, 2]], ZD = Group(SemisimpleElement{Root1}[<-1,1,1>, <1,1,-1>]))
julia> T=torsion_subgroup(C.Z0,3)
Group(SemisimpleElement{Root1}[<ΞΆβ,ΞΆβΒ²,ΞΆβ>])
julia> e=sort(elements(T))
3-element Vector{SemisimpleElement{Root1}}:
 <1,1,1>
 <ΞΆβ,ΞΆβΒ²,ΞΆβ>
 <ΞΆβΒ²,ΞΆβ,ΞΆβΒ²>In  the above, the Levi subgroup  L of SLβ consisting of block-diagonal matrices  of shape  2Γ2 is  constructed. The  function algebraic_center returns  a named tuple with : the  neutral component Zβ° of the center Z of L, represented by a basis of Y(Zβ°), a complement subtorus S of π to  Zβ°  represented  similarly  by  a  basis  of  Y(S), and semi-simple elements  representing the classes of Z modulo  Zβ° , chosen in S. The classes  Z/Zβ° also biject to the fundamental  group as given by the field .descAZ,  see algebraic_center for  an explanation. Finally the semi-simple elements of order 3 in Zβ° are computed.
julia> e[3]^G(2)
SemisimpleElement{Root1}: <ΞΆβΒ²,1,ΞΆβΒ²>
julia> orbit(G,e[3])
6-element Vector{SemisimpleElement{Root1}}:
 <ΞΆβΒ²,ΞΆβ,ΞΆβΒ²>
 <ΞΆβΒ²,1,ΞΆβΒ²>
 <ΞΆβ,1,ΞΆβΒ²>
 <ΞΆβΒ²,1,ΞΆβ>
 <ΞΆβ,1,ΞΆβ>
 <ΞΆβ,ΞΆβΒ²,ΞΆβ>Here  is the same  computation as above  performed with semisimple elements whose  coefficients are in the  finite field FF(4), representing elements of slβ(π½β).
julia> G=rootdatum(:sl,4)
slβ
julia> s=SemisimpleElement(G,Z(4).^[1,2,1])
SemisimpleElement{FFE{2}}: <Zβ,ZβΒ²,Zβ>
julia> s^G(2)
SemisimpleElement{FFE{2}}: <Zβ,1,Zβ>
julia> orbit(G,s)
6-element Vector{SemisimpleElement{FFE{2}}}:
 <Zβ,ZβΒ²,Zβ>
 <Zβ,1,Zβ>
 <ZβΒ²,1,Zβ>
 <Zβ,1,ZβΒ²>
 <ZβΒ²,1,ZβΒ²>
 <ZβΒ²,Zβ,ZβΒ²>We can compute the centralizer $C_π (s)$ of a semisimple element in π:
julia> G=coxgroup(:A,3)
Aβ
julia> s=ss(G,[0,1//2,0])
SemisimpleElement{Root1}: <1,-1,1>
julia> centralizer(G,s)
Aβββββ=(AβAβ)Ξ¦βThe  result is an  ExtendedReflectionGroup; the reflection  group part is the Weyl group of $C_π β°(s)$ and the extended part are representatives of $C_π  (s)$  modulo  $C_πβ°(s)$  taken  as  diagram  automorphisms of the reflection  part.  Here  it  is  printed  as  a  coset  $C_π β°(s)Ο$ which generates $C_π (s)$.
Chevie.Semisimple.SubTorus β TypeSubTorus(W,Y::Matrix{<:Integer})
The  function  returns  the  subtorus  π  of  the  maximal torus π of the reductive  group represented by the Weyl group  W such that Y(π) is the (pure)  sublattice of  Y(π) generated  by the  (integral) vectors  Y. A basis  of Y(π) in  Hermite normal form  (for easy memebership testing) is computed  and stored in the field S.gens of the returned SubTorus struct. A  basis of Y(π) adapted to Y(π) is  also computed. This means a set of integral   vectors,  stored  in  S.complement,   is  computed  such  that M=vcat(S.gens,S.complement)   is   a   basis   of   Y(π)  (equivalently MβGL(Z^{rank(W)}).  An  error  is  raised  if  Y does not define a pure sublattice.
julia> W=coxgroup(:A,4)
Aβ
julia> SubTorus(W,[1 2 3 4;2 3 4 1;3 4 1 1])
SubTorus(Aβ,[1 0 3 -13; 0 1 2 7; 0 0 4 -3])
julia> SubTorus(W,[1 2 3 4;2 3 4 1;3 4 1 2])
ERROR: not a pure sublattice
Stacktrace:
 [1] error(::String) at ./error.jl:33
 [2] Chevie.Weyl.SubTorus(::FiniteCoxeterGroup{Perm{Int16},Int64}, ::Matrix{Int64}) at /home/jmichel/julia/Chevie.jl/src/Weyl.jl:1082
 [3] top-level scope at REPL[25]:1Chevie.Semisimple.fundamental_group β Functionfundamental_group(W)
This  function returns the fundamental group of the algebraic group defined by  the Coxeter  group struct  W. This  group is  returned as  a group of diagram  automorphisms  of  the  corresponding  affine Weyl group, which is represented  as a group of permutations of the set of simple roots enriched by the lowest root of each irreducible component. The definition we take of the  fundamental group of a (not necessarily semisimple) reductive group is (Pβ© Y(π))/Q where P is the coweight lattice (the dual lattice in Y(π)β β of the  root  lattice)  and  Q  is  the  coroot  latice. The bijection between elements  of P/Q and  diagram automorphisms is  explained in the context of non-irreducible groups for example in Β§3.B BonnafΓ©2005.
julia> W=coxgroup(:A,3) # the adjoint group
Aβ
julia> fundamental_group(W) # the 12th root is the lowest one
Group((1,2,3,12))
julia> W=rootdatum(:sl,4) # the semisimple simply connected group
slβ
julia> fundamental_group(W)
Group(Perm{Int16}[])Chevie.Semisimple.intermediate_group β Functionintermediate_group(W, indices)
returns a rootdatum which represents a semisimple algebraic group between the   adjoint  group,  obtained  by  a  call  like  rootdatum(:pgl,4)  or coxgroup(:A,3), and the simply connected semi-simple group, obtained by a call  like  rootdatum(:sl,4)  or  coxgroup(:A,3;sc=true). This group is specified  by a subset of the minuscule weights, the weights whose scalar product  with each  coroot is  in -1,0,1  (a weight  is an element of the weight  lattice  P,  the  lattice  dual  to  the  coroot  lattice). The non-trivial  characters of the  (algebraic) center of  a semi-simple simply connected  algebraic group are in bijection with the minuscule weights, and also  in bijection  with P/Q  where Q  is the  root lattice.  If W is irreducible,  the minuscule  weights are  part of  the basis  of the weight lattice  given by the fundamental weights, which is the dual basis of the simple  coroots. They can therefore be specified  by an index in the Dynkin diagram.  The  indices  of  minuscule  weights  in the dynkin diagram are indices  where the coefficient of  the highest root on  the simple roots is 1. The constructed intermediate group has lattice X(π) generated by the root  lattice and the given minuscule weights. If W is not irreducible, a minuscule  weight is a sum of minuscule weights in different components; an element of indices is thus itself a list, interpreted as representing the sum of the corresponding weights.
julia> W=coxgroup(:A,3)
Aβ
julia> fundamental_group(intermediate_group(W,Int[])) # adjoint
Group((1,2,3,12))
julia> fundamental_group(intermediate_group(W,Int[2])) # intermediate
Group((1,3)(2,12))Chevie.Semisimple.quasi_isolated_reps β Methodquasi_isolated_reps(W,p=0)
W  should be a Weyl  group corresponding to an  algebraic group π over an algebraically  closed field  of characteristic  0. This  function returns a list  of  semisimple  elements  for  π,  which  are  representatives of the π-orbits  of quasi-isolated  semisimple elements.  It follows the algorithm given  in  Bonnafe2005.  If  a  second  argument p is given,  it  gives  representatives  of  those quasi-isolated elements which exist in characteristic p.
julia> W=coxgroup(:E,6);l=quasi_isolated_reps(W)
5-element Vector{SemisimpleElement{Root1}}:
 <1,1,1,1,1,1>
 <1,-1,1,1,1,1>
 <1,1,1,ΞΆβ,1,1>
 <ΞΆβ,1,1,1,1,ΞΆβ>
 <1,ΞΆβ,ΞΆβ,1,ΞΆβ,1>
julia> map(s->isisolated(W,s),l)
5-element Vector{Bool}:
 1
 1
 1
 0
 0
julia> W=rootdatum(:E6sc);l=quasi_isolated_reps(W)
7-element Vector{SemisimpleElement{Root1}}:
 <1,1,1,1,1,1>
 <-1,1,1,-1,1,-1>
 <ΞΆβ,1,ΞΆβΒ²,1,ΞΆβ,ΞΆβΒ²>
 <ΞΆβΒ²,1,ΞΆβ,1,ΞΆβ,ΞΆβΒ²>
 <ΞΆβΒ²,1,ΞΆβ,1,ΞΆβΒ²,ΞΆβ>
 <ΞΆββ΅,1,ΞΆβΒ²,1,ΞΆβ,ΞΆβΒ²>
 <ΞΆβΒ²,1,ΞΆβ,1,ΞΆβΒ²,ΞΆββ΅>
julia> map(s->isisolated(W,s),l)
7-element Vector{Bool}:
 1
 1
 1
 1
 1
 1
 1
julia> Semisimple.quasi_isolated_reps(W,3)
2-element Vector{SemisimpleElement{Root1}}:
 <1,1,1,1,1,1>
 <-1,1,1,-1,1,-1>Chevie.Semisimple.isisolated β Functionisisolated(WF::Spets,t::SemisimpleElement{Root1})
WF  should be  a Coxeter  coset representing  an algebraic  coset π β
Ο, where  π is a connected  reductive group (represented by W=Group(WF)), and  Ο  is  a  quasi-central  automorphism  of  π defined by WF. The element  t should be a semisimple element of π. The function returns a boolean describing whether tΟ is isolated, that is whether the Weyl group of C_π (tΟ)β° is not in any proper parabolic subgroup of W^Ο.
julia> WF=rootdatum(:u,6)
uβ
julia> l=quasi_isolated_reps(WF)
4-element Vector{SemisimpleElement{Root1}}:
 <1,1,1,1,1,1>
 <ΞΆβ,ΞΆβ,ΞΆβ,ΞΆβΒ³,ΞΆβΒ³,ΞΆβΒ³>
 <ΞΆβ,ΞΆβ,1,1,ΞΆβΒ³,ΞΆβΒ³>
 <ΞΆβ,1,1,1,1,ΞΆβΒ³>
julia> isisolated.(Ref(WF),l)
4-element BitVector:
 1
 1
 1
 0Chevie.Semisimple.torsion_subgroup β Functiontorsion_subgroup(S::SubTorus,n)
This  function  returns  the  subgroup  of  semi-simple  elements  of order dividing n in the subtorus S.
julia> G=rootdatum(:sl,4)
slβ
julia> L=reflection_subgroup(G,[1,3])
Aβββββ=AβΓAβΞ¦β
julia> C=algebraic_center(L)
(Z0 = SubTorus(Aβββββ=AβΓAβΞ¦β,[1 2 1]), AZ = Group(SemisimpleElement{Root1}[<1,1,-1>]), descAZ = [[1, 2]], ZD = Group(SemisimpleElement{Root1}[<-1,1,1>, <1,1,-1>]))
julia> T=torsion_subgroup(C.Z0,3)
Group(SemisimpleElement{Root1}[<ΞΆβ,ΞΆβΒ²,ΞΆβ>])
julia> sort(elements(T))
3-element Vector{SemisimpleElement{Root1}}:
 <1,1,1>
 <ΞΆβ,ΞΆβΒ²,ΞΆβ>
 <ΞΆβΒ²,ΞΆβ,ΞΆβΒ²>Chevie.Semisimple.algebraic_center β Functionalgebraic_center(W)
W  should  be  a  Weyl  group,  or  an extended Weyl group. This function returns  a description  of the  center Z of  the algebraic  group π defined by W as a named tuple with the following fields:
Z0: the neutral component Zβ° of Z as a subtorus of π.
AZ: representatives in Z of A(Z):=Z/Zβ° given as a group of semisimple elements.
ZD:  center of the derived subgroup of π given as a group of semisimple elements.
descAZ:  if W  is not  an extended  Weyl group,  describes A(Z)  as a quotient  of the center  pi of the  simply connected covering  of π (an incarnation of the fundamental group). It contains a list of elements given as  words  in  the  generators  of  pi  which  generate the kernel of the quotient map.
julia> G=rootdatum(:sl,4)
slβ
julia> L=reflection_subgroup(G,[1,3])
Aβββββ=AβΓAβ
ulia> C=algebraic_center(L)
(Z0 = SubTorus(Aβββββ=AβΓAβΞ¦β,[1 2 1]), AZ = Group(SemisimpleElement{Root1}[<1,1,-1>]), descAZ = [[1, 2]], ZD = Group(SemisimpleElement{Root1}[<-1,1,1>, <1,1,-1>]))
julia> G=coxgroup(:A,3)
Aβ
julia> s=ss(G,[0,1//2,0])
SemisimpleElement{Root1}: <1,-1,1>
julia> C=centralizer(G,s)
Aβββββ=(AβAβ)Ξ¦β
julia> algebraic_center(C)
(Z0 = SubTorus(Aβββββ=AβΓAβΞ¦β,Matrix{Int64}(undef, 0, 3)), AZ = Group(SemisimpleElement{Root1}[<1,-1,1>]))Chevie.Semisimple.weightinfo β Functionweightinfo(W)
W  is a  Coxeter group  record describing  an algebraic  group π, or a IypeIrred. The function is independent of the isogeny type of π(so just depends  on refltype(W), that is  on the root system).  It returns a dict with the following keys:
- :minusculeWeightsthe minuscule weights, described as their position in the list of fundamental weights. For non-irreducible groups, a weight is the sum of at most one weight in each irreducible component. It is represented as the list of its components. For consistency, in the case of an irreducible system, a weight is represented as a one-element list.
- :minusculeCoweightsthe minuscule coweights, represented in the same manner as the minuscule weights
- :decompositionsfor each coweight, its decomposition in terms of the generators of the adjoint fundamental group (given by the list of the exponents of the generators). Together with the next field it enables to work out the group structure of the adjoint fundamental group.
- :modulithe list of orders of the generators of the fundamental group.
- :AdjointFundamentalGroupthe list of generators of the adjoint fundamental group, given as permutations of the extended root basis.
- :CenterSimplyConnectedA list of semisimple elements generating the center of the universal covering of π
- :chosenAdaptedBasisA basis of the weight lattice adapted to the root lattice. In the basis of the fundamental weights, the root lattice is given by- C=transpose(cartan(W)). The property specifying the- :chosenAdaptedBasisis that the Hermite normal form of- C*chosenAdaptedBasisis almost in Smith normal form (it is diagonal but the diagonal entries may be permuted compared to the Smith normal form; the non-trivial entries are in the positions corresponding to the generators of the fundamental group as indicated by- :decompositions).
julia> weightinfo(coxgroup(:A,2)*coxgroup(:B,2))
Dict{Symbol, Array} with 8 entries:
  :moduli                  => [3, 2]
  :minusculeWeights        => [[1, 3], [1], [2, 3], [2], [3]]
  :decompositions          => [[2, 1], [2, 0], [1, 1], [1, 0], [0, 1]]
  :highestroot             => [5, 7]
  :chosenAdaptedBasis      => [1 -1 0 0; 0 1 0 0; 0 0 1 0; 0 0 0 1]
  :minusculeCoweights      => [[1, 4], [1], [2, 4], [2], [4]]
  :CenterSimplyConnected   => Vector{Rational{Int64}}[[1//3, 2//3, 0, 0], [0, 0β¦
  :AdjointFundamentalGroup => [(1,12,2), (4,14)]Chevie.Semisimple.weights β Functionweights(W) simple weights in the basis of X(T)
Chevie.Semisimple.coweights β Functioncoweights(W) simple coweights in the basis of Y(T)
PermGroups.Groups.centralizer β Methodcentralizer(W,s::SemisimpleElement)
W  should  be  a  Weyl  group  or  an extended reflection group and s a semisimple  element of the  algebraic group G  corresponding to W. This function  returns the  Weyl group  of $C_G(s)$,  which describes  it. The stabilizer  is an extended reflection group, with the reflection group part equal to the Weyl group of $C_{Gβ°}(s)$, and the diagram automorphism part being those induced by $C_G(s)$.
julia> G=coxgroup(:A,3)
Aβ
julia> s=ss(G,[0,1//2,0])
SemisimpleElement{Root1}: <1,-1,1>
julia> centralizer(G,s)
Aβββββ=(AβAβ)Ξ¦βChevie.Semisimple.semisimple_centralizer_representatives β Functionsemisimple_centralizer_representatives(W [,p]) or sscentralizer_reps
W  should be a Weyl group corresponding  to an algebraic group π. This function  returns a list describing representatives  π of π-orbits of reductive  subgroups  of  π  which  are  the  identity component of the centralizer of a semisimple element. Each group π is specified by a list h   of  reflection  indices  in  W   such  that  π  corresponds  to reflection_subgroup(W,h).  If a  second argument  p is  given, only the list of the centralizers which occur in characteristic p is returned.
julia> W=coxgroup(:G,2)
Gβ
julia> sscentralizer_reps(W)
6-element Vector{Vector{Int64}}:
 []
 [1]
 [2]
 [1, 2]
 [1, 5]
 [2, 6]
julia> reflection_subgroup.(Ref(W),sscentralizer_reps(W))
6-element Vector{FiniteCoxeterSubGroup{Perm{Int16},Int64}}:
 Gβββ=Ξ¦βΒ²
 Gββββ=AβΞ¦β
 Gββββ=AΜβΞ¦β
 Gβ
 Gββββ
β=Aβ
 Gβββββ=AΜβΓAβ
julia> sscentralizer_reps(W,2)
5-element Vector{Vector{Int64}}:
 []
 [1]
 [2]
 [1, 2]
 [1, 5]Chevie.Semisimple.structure_rational_points_connected_centre β Functionstructure_rational_points_connected_centre(W,q)
W  should be  a Coxeter  group or  a Coxeter  coset representing a finite reductive  group $π ^F$, and q should  be the prime power associated to the  isogeny F. The function returns the abelian invariants of the finite abelian group $Zβ°π ^F$ where Zβ°π is the connected center of π.
In  the following example one determines the structure of π(π½β) where π runs over all the maximal tori of SLβ.
julia> l=twistings(rootdatum(:sl,4),Int[])
5-element Vector{Spets{FiniteCoxeterSubGroup{Perm{Int16},Int64}}}:
 Aβββ=Ξ¦βΒ³
 Aβββ=Ξ¦βΒ²Ξ¦β
 Aβββ=Ξ¦βΞ¦βΒ²
 Aβββ=Ξ¦βΞ¦β
 Aβββ=Ξ¦βΞ¦β
julia> structure_rational_points_connected_centre.(l,3)
5-element Vector{Vector{Int64}}:
 [2, 2, 2]
 [2, 8]
 [4, 8]
 [26]
 [40]