Unipotent Elements
Chevie.Urad
Chevie.Urad.UnipotentGroup
Chevie.Chars.decompose
Chevie.Urad.abelianpart
Chevie.Urad.reorder
Chevie.Urad
— ModuleThis module contains functions for computing with unipotent elements of reductive groups; specifically to compute with elements of the unipotent radical of a Borel subgroup of a connected algebraic reductive group; these functions were initially written by Olivier Dudas in GAP3, partly inspired by older C code of Jean Michel.
The unipotent radical of a Borel subgroup is the product in any order of the root subgroups associated to the positive roots. We fix an order, which gives a canonical form to display elements and to compare them.
The computations use the Steinberg relations between root subgroups, which come from the choice of a Chevalley basis of the Lie algebra. The reference we follow is Carter1972, chapters 4 to 6.
We start with a root datum specified by a Weyl group W
and build a struct UnipotentGroup
which contains information about the maximal unipotent subgroup of the corresponding reductive group, that is the unipotent radical of the Borel subgroup determined by the positive roots.
julia> W=coxgroup(:E,6)
E₆
julia> U=UnipotentGroup(W)
UnipotentGroup(E₆)
Now, if α=roots(W,2)
, we construct the element u_α(4)
of the root subgroup u_α
:
julia> U(2=>4)
u2(4)
If we do not specify the coefficient we make by default u_α(1)
, so we have also:
julia> U(2)^4
u2(4)
We can make more complicated elements:
julia> U(2=>4)*U(4=>5)
u2(4)u4(5)
julia> U(2=>4,4=>5)
u2(4)u4(5)
If the roots are not in order the element is normalized:
julia> U(4=>5,2=>4)
u2(4)u4(5)u8(-20)
It is possible to display the decomposition of the roots in simple roots instead of their index:
julia> xdisplay(U(4=>5,2=>4);root=true)
u₀₁₀₀₀₀(4)u₀₀₀₁₀₀(5)u₀₁₀₁₀₀(-20)
The coefficients in the root subgroups can be elements of arbitrary rings. Here is an example using Mvp
's:
julia> W=coxgroup(:E,8);U=UnipotentGroup(W)
UnipotentGroup(E₈)
julia> u=U(map(i->i=>Z(2)*Mvp(Symbol("x",Char(i+0x2080))),1:8)...)
u1(x₁)u2(x₂)u3(x₃)u4(x₄)u5(x₅)u6(x₆)u7(x₇)u8(x₈)
julia> cut(xrepr(u^16;limit=true,root=true),before="u",width=60)
u₂₂₃₄₃₂₁₀(x₁²x₂²x₃³x₄⁴x₅³x₆²x₇)
u₁₂₃₄₃₂₁₁(x₁x₂²x₃³x₄⁴x₅³x₆²x₇x₈)
u₁₂₂₄₃₂₂₁(x₁x₂²x₃²x₄⁴x₅³x₆²x₇²x₈)
u₁₂₂₃₃₃₂₁(x₁x₂²x₃²x₄³x₅³x₆³x₇²x₈)
u₂₂₃₄₃₂₁₁(x₁²x₂²x₃³x₄⁴x₅³x₆²x₇x₈)
u₁₂₂₄₃₃₂₁(x₁x₂²x₃²x₄⁴x₅³x₆³x₇²x₈)
u₁₂₂₄₄₃₂₁(x₁x₂²x₃²x₄⁴x₅⁴x₆³x₇²x₈)
u₂₂₃₄₃₃₂₁(x₁²x₂²x₃³x₄⁴x₅³x₆³x₇²x₈)
u₁₂₃₄₄₃₂₁(x₁x₂²x₃³x₄⁴x₅⁴x₆³x₇²x₈)
u₂₂₃₄₄₃₂₁(x₁²x₂²x₃³x₄⁴x₅⁴x₆³x₇²x₈)
u₂₃₃₅₄₃₂₁(x₁²x₂³x₃³x₄⁵x₅⁴x₆³x₇²x₈)
u₂₂₄₅₄₃₂₁(x₁²x₂²x₃⁴x₄⁵x₅⁴x₆³x₇²x₈)
u₂₃₄₆₅₄₃₂(x₁²x₂³x₃⁴x₄⁶x₅⁵x₆⁴x₇³x₈²)
julia> u^32
()
The above computation shows that in characteristic 2 the exponent of the unipotent group of E₈
is 32. More precisely, squaring doubles the height of the involved roots, so in the above u¹⁶
involves only roots of height 16 or more.
Various actions are defined on unipotent elements. Elements of the Weyl group act (through certain representatives) as long as no root subgroup is in their inversion set:
julia> W=coxgroup(:G,2)
G₂
julia> U=UnipotentGroup(W);@Mvp x,y
julia> u=U(1=>x,3=>y)
u1(x)u3(y)
julia> u^W(2,1)
u4(y)u5(x)
julia> u^W(1)
ERROR: u1(x)u3(y) should have no coefficient on root 1
Semisimple elements act by conjugation:
julia> s=SemisimpleElement(W,[E(3),2])
SemisimpleElement{Cyc{Int64}}: <ζ₃,2>
julia> u^s
u1(ζ₃x)u3(2ζ₃y)
As well as unipotent elements:
julia> u^U(2)
u1(x)u3(x+y)u4(-x-2y)u5(x+3y)u6(x²+3xy+3y²)
Chevie.Urad.UnipotentGroup
— TypeA struct UnipotentGroup
represents the unipotent radical 𝐔
of a Borel subgroup of a reductive group G
.
See Carter1972, section 4.2 for details on the following. A Chevalley basis of the Lie algebra of 𝐔
is a basis eᵣ
, where each eᵣ
is in the corresponding root subspace, such that [eᵣ,eₛ]=Nᵣₛ e_{r+s}
for some integer constants Nᵣₛ
. The constants Nᵣₛ
for general roots are computed from the case where r
and s
are positive roots whose sum is a root; such a pair (r,s)
is called special.
Constants Cᵣₛᵢⱼ
are defined, see Carter1972, 5.2.3, by
$u_s(u)u_r(t)=u_r(t)u_s(u)\prod_{i,j>0}u_{ir+js}(C_{rsij}(-t)^iu^j)$
Where ir+js
runs over the positive integral combinations of r
and s
which are roots, taken in lexicographic order on (i,j)
. The constants Cᵣₛᵢⱼ
are computed from the constants Nᵣₛ
, see Carter1972, bottom of page 61 and top of page 76.
The fields of struct Unipotent Group
are:
W
: the Weyl group ofG
order
: the total order on the roots used to normalize products of root subgroups (by default1:nref(W)
)special: a
NamedTuplefor each special pair of roots
(r,s)`r
index ofr
s
index ofs
rs
index ofr+s
N
: the constantNᵣₛ
comm
: stores theCᵣₛᵢⱼ
as the list of quadruples(i,j,ir+js,Cᵣₛᵢⱼ)
.
julia> U=UnipotentGroup(coxgroup(:G,2))
UnipotentGroup(G₂)
julia> U.special
10-element Vector{@NamedTuple{r::Int64, s::Int64, rs::Int64, N::Int64, comm::Vector{NTuple{4, Int64}}}}:
(r = 1, s = 2, rs = 3, N = 1, comm = [(1, 1, 3, 1), (1, 2, 4, -1), (1, 3, 5, 1), (2, 3, 6, 2)])
(r = 2, s = 3, rs = 4, N = 2, comm = [(1, 1, 4, 2), (2, 1, 5, 3), (1, 2, 6, -3)])
(r = 2, s = 4, rs = 5, N = 3, comm = [(1, 1, 5, 3)])
(r = 1, s = 5, rs = 6, N = 1, comm = [(1, 1, 6, 1)])
(r = 3, s = 4, rs = 6, N = 3, comm = [(1, 1, 6, 3)])
(r = 2, s = 1, rs = 3, N = -1, comm = [(1, 1, 3, -1), (2, 1, 4, -1), (3, 1, 5, -1), (3, 2, 6, -1)])
(r = 3, s = 2, rs = 4, N = -2, comm = [(1, 1, 4, -2), (2, 1, 6, -3), (1, 2, 5, 3)])
(r = 4, s = 2, rs = 5, N = -3, comm = [(1, 1, 5, -3)])
(r = 5, s = 1, rs = 6, N = -1, comm = [(1, 1, 6, -1)])
(r = 4, s = 3, rs = 6, N = -3, comm = [(1, 1, 6, -3)])
Chevie.Urad.reorder
— Function'reorder(U,l[,order])'
This function takes a list of pairs 'r=>c' representing a unipotent element, where 'r' is a root and 'c' the corresponding coefficient, and puts it in canonical form, reordering the terms to agree with 'U.order' using the commutation relations. If a second argument is given, this is used instead of 'U.order'.
julia> U=UnipotentGroup(coxgroup(:G,2))
UnipotentGroup(G₂)
julia> l=reorder(U,[2=>4,1=>2])
6-element Vector{Pair{Int64, Int64}}:
1 => 2
2 => 4
3 => -8
4 => 32
5 => -128
6 => 512
julia> reorder(U,l,6:-1:1)
2-element Vector{Pair{Int64, Int64}}:
2 => 4
1 => 2
Chevie.Urad.abelianpart
— Function'abelianpart(u::UnipotentElement)'
If 𝐔
is the unipotent subgroup and D(𝐔)
its derived subgroup, this function returns the projection of the unipotent element 'u' on 𝐔/D(𝐔)
, that is its coefficients on the simple roots.
julia> U=UnipotentGroup(coxgroup(:G,2));@Mvp x,y
julia> u=U(2=>y,1=>x)
u1(x)u2(y)u3(-xy)u4(xy²)u5(-xy³)u6(2x²y³)
julia> abelianpart(u)
u1(x)u2(y)
Chevie.Chars.decompose
— Functiondecompose(ct::CharTable,c::Vector;exact=true)
decompose class function c
(given by its values on conjugacy classes) on irreducible characters as given by CharTable
ct
. By default c
is expected to be a virtual character so the result will be an integer vector. If c
is not a virtual character give the keyword exact=false
to get a correct result.
decompose(w,u::UnipotentElement)
w
should be an element of the Weyl group corresponding to u
. If 𝐔
is the unipotent radical of the Borel subgroup determined by the positive roots, and 𝐔⁻
the opposite unipotent radical, this function decomposes u
into its component in 𝐔 ∩ ʷ𝐔⁻
and its component in 𝐔 ∩ ʷ𝐔
.
julia> W=coxgroup(:G,2)
G₂
julia> U=UnipotentGroup(W);@Mvp x,y
julia> u=U(2=>y,1=>x)
u1(x)u2(y)u3(-xy)u4(xy²)u5(-xy³)u6(2x²y³)
julia> decompose(W(1),u)
2-element Vector{UnipotentElement{Mvp{Int64, Int64}}}:
u1(x)
u2(y)u3(-xy)u4(xy²)u5(-xy³)u6(2x²y³)
julia> decompose(W(2),u)
2-element Vector{UnipotentElement{Mvp{Int64, Int64}}}:
u2(y)
u1(x)