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 1
here 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 Rational
s r
such that 0β€r<1
. The function ss
constructs such a semisimple element from a vector of Rational
s.
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]:1
Chevie.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,12,3,2))
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)
This computes a rootdatum
representing a semisimple algebraic group intermediate between the adjoint group β- obtained by a call like rootdatum(:pgl,4)
β- and the simply connected semi-simple group β- obtained by a call like rootdatum(:sl,4)
. The group is specified by specifying a subset of the minuscule weights, which are weights whose scalar product with every coroot is in -1,0,1
(the weights are the elements of the weight lattice, the lattice in X(π)β β
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; this set is also in bijection with P/Q
where P
is the weight lattice and 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 thus be specified by an index
in the Dynkin diagram. The constructed group has lattice X(π)
generated by the sum of the root lattice and the weights with the given indices
. 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,12,3,2))
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
0
Chevie.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:
:minusculeWeights
the 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.:minusculeCoweights
the minuscule coweights, represented in the same manner as the minuscule weights:decompositions
for 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.:moduli
the list of orders of the generators of the fundamental group.:AdjointFundamentalGroup
the list of generators of the adjoint fundamental group, given as permutations of the extended root basis.:CenterSimplyConnected
A list of semisimple elements generating the center of the universal covering of π:chosenAdaptedBasis
A basis of the weight lattice adapted to the root lattice. In the basis of the fundamental weights, the root lattice is given byC=transpose(cartan(W))
. The property specifying the:chosenAdaptedBasis
is that the Hermite normal form ofC*chosenAdaptedBasis
is 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]