Semisimple elements
Chevie.SemisimpleChevie.Semisimple.SemisimpleElementChevie.Semisimple.ExtendedReflectionGroupChevie.Semisimple.algebraic_centerChevie.Semisimple.fixed_pointsChevie.Semisimple.isisolatedChevie.Semisimple.quasi_isolated_repsChevie.Semisimple.semisimple_centralizer_representativesChevie.Semisimple.ssChevie.Semisimple.structure_rational_points_connected_centreChevie.Semisimple.torsion_subgroupPermGroups.Groups.centralizer
Chevie.Semisimple — Module
Semisimple elements
Let 𝐆 a reductive group and 𝐓 a maximal torus. 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 expressing such an element in the basis of Y(𝐓). 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.SemisimpleElement — Type
SemisimpleElement(W,v)
constructs a semisimple element of the reductive group associated to the Weyl group W whose coefficients on Y(𝐓) are specified by v.
Chevie.Semisimple.ss — Function
ss(W,v)
constructs a semisimple element of finite order of the reductive group associated to the Weyl group W. This is specified by an element of Y(𝐓)⊗ℚ/ℤ specified by a vector of rational v (which are taken modZ). The elements of v are displayed as Root1.
julia> ss(rootdatum(:sl,4),[1//3,1//4,3//4,2//3])
SemisimpleElement{Root1}: <ζ₃,ζ₄,ζ₄³,ζ₃²>Chevie.Semisimple.quasi_isolated_reps — Method
quasi_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 (Bonnafé, 2005; Theorem 4.6). 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 — Function
isisolated(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 — Function
torsion_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 — Function
algebraic_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>]))PermGroups.Groups.centralizer — Method
centralizer(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. This 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)$. The algorithm follows (Bonnafé, 2005; proposition 3.14).
julia> G=coxgroup(:A,3)
A₃
julia> s=ss(G,[0,1//2,0])
SemisimpleElement{Root1}: <1,-1,1>
julia> centralizer(G,s) # the brackets around the A₁ means they are permuted
A₃₍₁₃₎=(A₁A₁)Φ₂Chevie.Semisimple.semisimple_centralizer_representatives — Function
semisimple_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₂₍₂₎=Ã₁Φ₁
G₂
G₂₍₁₅₎=A₂
G₂₍₂₆₎=Ã₁×A₁
julia> sscentralizer_reps(W,2)
5-element Vector{Vector{Int64}}:
[]
[1]
[2]
[1, 2]
[1, 5]Chevie.Semisimple.structure_rational_points_connected_centre — Function
structure_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]Chevie.Semisimple.fixed_points — Function
fixed_points(T::SubTorus,m)
Let σ be an automorphism of T represented as a matrix m∈ GL(X(T)). The function returns $(T^{σ0},σ$-stable representatives of $T/T^{σ0})$
It uses the formula in (Digne and Michel, 2018; 1.2(1)) for $T/T^{σ0}$ which is Ker(1+σ+σ^2+...)/Im(σ-Id).
Chevie.Semisimple.ExtendedReflectionGroup — Function
ExtendedReflectionGroup(W,mats)
ExtendedReflectionGroup(W,perms)
An extended reflection group is the semi-direct product of a reflection group W on the space V by a group of diagram automorphisms (elements of GL(V) which normalize W). It is represented as a collection of reflection cosets which generate it.
In the first form, mats are the automorphisms given as elements of GL(V). In the second form, the automorphisms are specified by the permutations they induce on the roots of W.