Hecke algebras
Chevie.HeckeAlgebrasChevie.Chars.CharTableChevie.HeckeAlgebras.FactSchurChevie.HeckeAlgebras.HeckeCosetChevie.Chars.representationChevie.Chars.representationChevie.Chars.representationsChevie.Garside.αChevie.HeckeAlgebras.TbasisChevie.HeckeAlgebras.altChevie.HeckeAlgebras.central_monomialsChevie.HeckeAlgebras.char_valuesChevie.HeckeAlgebras.class_polynomialsChevie.HeckeAlgebras.factorized_schur_elementChevie.HeckeAlgebras.factorized_schur_elementsChevie.HeckeAlgebras.heckeChevie.HeckeAlgebras.heckeChevie.HeckeAlgebras.heckeChevie.HeckeAlgebras.isrepresentationChevie.HeckeAlgebras.schur_elementsChevie.HeckeAlgebras.βChevie.PermRoot.reflection_representation
Chevie.HeckeAlgebras — Module
This module implements Hecke algebras associated to finite complex reflection groups and arbitrary Coxeter groups (these algebras are called Iwahori-Hecke algebras in this last case), and also implements the character tables, Schur elements and representations of Hecke algebras for finite groups. For Iwahori-Hecke algebras and for G(d,1,1) this module also implements the standard T basis; see the module KL for Kazhdan-Lusztig bases.
Let (W,S) be a Coxeter system and let mₛₜ be the order of st for s,t∈ S. Let R be a commutative ring with 1 and for s∈ S let uₛ₀,uₛ₁∈ R be elements which depend only on the conjugacy class of s in W (this is the same as requiring that uₛᵢ=uₜᵢ whenever mₛₜ is odd). The Iwahori-Hecke algebra of W over R with parameters uₛᵢ is a deformation of the group algebra of W over R defined as follows: it is the unitary associative R-algebra generated by elements Tₛ, s∈ S subject to the relations:
$(Tₛ-uₛ₀)(Tₛ-uₛ₁)=0$ for all s∈ S (the quadratic relations)
$TₛTₜTₛ…= TₜTₛTₜ…$ with mₛₜ factors on each side (the braid relations)
If uₛ₀=1 and uₛ₁=-1 for all s then the quadratic relations become Tₛ²=1 and the deformation of the group algebra is trivial.
Since the generators Tₛ satisfy the braid relations, H is in fact a quotient of the group algebra of the braid group associated with W. The braid relations also imply that for any reduced expression s_1⋯ s_m of w ∈ W the product Tₛ_₁⋯ Tₛ_ₘ has the same value, that we denote T_w. We have T₁=1; if one of the uₛᵢ is invertible, the {T_w}_{w∈ W} form an R-basis of the Iwahori-Hecke algebra which specializes to the canonical basis of the group algebra R[W] for uₛ₀↦1 and uₛ₁↦-1.
The structure constants (the decomposition of a product T_vT_w in the T_w) basis are obtained as follows. Choose a reduced expression for v, say v=s_1 ⋯ s_k and apply inductively the formula:
$T_sT_w=T_{sw}$ if l(sw)=l(w)+1
$T_sT_w=-uₛ₀uₛ₁T_{sw}+(uₛ₀+uₛ₁)T_w$ if l(sw)=l(w)-1.
If one of uₛ₀ or uₛ₁ is invertible in R, for example uₛ₁, then by changing the generators to T′ₛ=-Tₛ/uₛ₁, and setting qₛ=-uₛ₀/uₛ₁, the braid relations do no change (since when mₛₜ is odd we have uₛᵢ=uₜᵢ) but the quadratic relations become (T′ₛ-qₛ)(T′ₛ+1)=0. This normalisation is the most common form considered in the literature. Another common form in the context of Kazhdan-Lusztig theory, is uₛ₀=√qₛ and uₛ₁=-√qₛ⁻¹. The form provided, with two parameters per generator, is often useful, for instance when constructing the Jones polynomial. If for all s we have uₛ₀=q, uₛ₁=-1 then we call the corresponding algebra the "one-parameter" or "Spetsial" Iwahori-Hecke algebra associated with W.
For some Iwahori-Hecke algebras the character table, and in general Kazhdan-Lusztig bases, require a square root of -uₛ₀uₛ₁. These square roots can be specified with the keyword rootpara of the function hecke constructing the algebra; after this H.rootpara will return the chosen roots. If not specified, we try to extract roots automatically when needed; rootpara(H) informs on the choices made. Note that some mathematical results require an explicit choice of one of the two possible roots which cannot be automatically made thus require a keyword initialisation.
There is a universal choice for R and uₛᵢ: Let uₛᵢ:s∈ S,i∈[0,1] be indeterminates such that uₛᵢ=uₜᵢ whenever mₛₜ is odd, and let A=ℤ[uₛᵢ] be the corresponding polynomial ring. Then the Hecke algebra H of W over A with parameters uₛᵢ is called the generic Iwahori-Hecke algebra of W (we work often with the ring ℤ[uₛᵢ^{±1}] so that basis elements have an inverse). Any Hecke algebra H₁ with parameters vₛᵢ can be obtained by specialization from H, since there is a unique ring homomorphism f:A → R such that f(uₛᵢ)=vₛᵢ for all i. Then via f we can identify H₁ to $R⊗ _A H$.
Certain invariants of the irreducible characters of the one-parameter Hecke algebra play a special role in the representation theory of the underlying finite Coxeter groups, namely the a- and A-invariants. For basic properties of Iwahori-Hecke algebras and their relevance to the representation theory of finite groups of Lie type, see for example (Curtis and Reiner, 1987; Sections 67 and 68).
In the following example, we compute the multiplication table for the 0-Iwahori–Hecke algebra associated with the Coxeter group of type A_2.
julia> W=coxgroup(:A,2)
A₂
julia> H=hecke(W,0) # One-parameter algebra with `q=0`
hecke(A₂,0)
julia> T=Tbasis(H); # Create the `T` basis
julia> b=T.(elements(W)) # the basis
6-element Vector{HeckeElt{:T, HeckeAlgebra{Int64, Perm{Int16}, FiniteCoxeterGroup{Perm{Int16},Int64}}, Int64, Perm{Int16}}}:
T.
T₁
T₂
T₁₂
T₂₁
T₁₂₁
julia> b*permutedims(b) # multiplication table
6×6 Matrix{HeckeElt{:T, HeckeAlgebra{Int64, Perm{Int16}, FiniteCoxeterGroup{Perm{Int16},Int64}}, Int64, Perm{Int16}}}:
T. T₁ T₂ T₁₂ T₂₁ T₁₂₁
T₁ -T₁ T₁₂ -T₁₂ T₁₂₁ -T₁₂₁
T₂ T₂₁ -T₂ T₁₂₁ -T₂₁ -T₁₂₁
T₁₂ T₁₂₁ -T₁₂ -T₁₂₁ -T₁₂₁ T₁₂₁
T₂₁ -T₂₁ T₁₂₁ -T₁₂₁ -T₁₂₁ T₁₂₁
T₁₂₁ -T₁₂₁ -T₁₂₁ T₁₂₁ T₁₂₁ -T₁₂₁Thus, we work with algebras with arbitrary parameters. We will see that this also works on the level of characters and representations.
For general complex reflection groups, the picture is similar. The Hecke algebras are deformations of the group algebras, generalizing those for real reflection groups.
The definition is as a quotient of the algebra of the braid group. We assume now that W is a finite reflection group in the complex vector space V. The braid group associated is the fundamental group Π₁ of the space $(V-\bigcup_{H\in\mathcal H} H)/W$, where $\mathcal H$ is the set of reflecting hyperplanes of W. This group is generated by braid reflections, elements which by the natural map from the braid group to the reflection group project to distinguished reflections. The braid reflections which project to a given W-orbit of reflections are conjugate. Let 𝐬 be a representative of such a conjugacy class of braid reflections, let e be the order of the image of 𝐬 in W, and let $u_{𝐬,0},…,u_{𝐬,e-1}$ be indeterminates. The generic Hecke algebra of W is the $ℤ[u_{𝐬,i}^{± 1}]_{𝐬,i}$-algebra quotient of the braid group algebra by the relations $(𝐬-u_{𝐬,0})…(𝐬-u_{𝐬,e-1})=0$, and an arbitrary Hecke algebra for W is an algebra obtained from this generic algebra by specializing some of the parameters.
The generic Hecke algebras are explicitely described by a presentation of the braid group. The braid group can be presented by homogeneous relations in the braid reflections, called braid relations, described in (Broué et al., 1998) and (Bessis and Michel, 2004) (some of which were obtained using the VKCURVE GAP3-package, also ported to Julia). Furthermore, these presentations are such that the reflection group is presented by the same relations, plus relations describing the order of the generating reflections, called the order relations. Thus the Hecke algebra has a presentation similar to that of W, with the same braid relations but the order relations replaced by a deformed version.
If S⊂ W is the set of distinguished reflections of W which lift to generating braid reflections in the braid group, for each conjugacy class of an s of order e we take indeterminates uₛ₀,…,uₛₑ₋₁. Then the generic Hecke algebra is the $ℤ[uₛᵢ^{±1}]ₛᵢ$-algebra H with generators T_s for each s∈ S presented by the braid relations and the deformed order relations $(T_s-u_{s,0})…(T_s-u_{s,e-1})=0$.
Ariki and Koike have described models of representations for these algebras corresponding to imprimitive complex reflection groups, and Halverson-Ram and some other authors have computed the character tables in this case. Malle has given representation models and the character table for the other 2-dimensional reflection groups, see (Broué and Malle, 1993) and (Malle, 1994); our data has models of all representations, and character tables, for real reflection groups; it contains the same for imprimitive groups and for primitive groups of dimension 2 and 3 (these last representations have been computed in (Malle and Michel, 2010)) and the situation is as follows for other primitive complex groups:
G₂₉andG₃₃character table and representations computed by Michel.G₃₁character table and partial list of representations computed by Michel.G₃₂character table and partial list of representations computed by Malle and Michel.G₃₄partial character table and partial list of representations computed by Michel.
The quotient of the Hecke algebra obtained by the specialisation $u_{𝐬,i}↦ ζₑⁱ$ is isomorphic to the group algebra of W. It was conjectured for 25 years that over a splitting ring the Hecke algebra is itself isomorphic to the group algebra of W over the same ring. This was called the freeness conjecture since the main problem is to show that the Hecke algebra is free of dimension |W|. This has finally been proved in 2020 thanks to the work of many people including (Marin and Pfeiffer, 2017; Chavli, 2018; Tsuchioka, 2020) for exceptional groups. Along the way it has been proven that there exists a set {b_w}_{w∈ W} of elements of the Braid group such that b_1=1 and b_w maps to w by the natural quotient map, such that their images T_w form a basis of the Hecke algebra.
It is conjectured that such a basis T_w can be chosen such that additionnaly the linear form t defined by t(T_w)=0 if w≠ 1 and t(1)=1 is a symmetrizing form for the symmetric algebra H. This is well known for all real reflection groups and has been proved in (Malle and Mathas, 1998) for imprimitive reflection groups and in (Malle and Michel, 2010) for some primitive groups of dimension 2 and 3. (Boura et al., 2020; Boura et al., 2020) have handled some other 2-dimensional cases. For each irreducible character φ of H we define the Schur element Sᵩ associated to φ by the condition that for any element T of H we have t(T)=∑ᵩ φ(T)/Sᵩ. It can be shown that the Schur elements are Laurent polynomials, and they do not depend on the choice of a basis having the above property. Malle has computed these Schur elements, assuming the above conjecture; they are in the Chevie data.
See hecke for various ways of specifying the parameters of a Hecke algebra. Look also at central_monomials, char_values, class_polynomials, schur_elements, isrepresentation, factorized_schur_elements and at the methods for Hecke algebras of CharTable, representations, reflrep.
Taking apart Hecke elements is done with the functions getindex, setindex!, keys, values, iterate.
julia> H=hecke(W,Pol(:q))
hecke(A₂,q)
julia> T=Tbasis(H);
julia> h=T(1,2)^2
qT₂₁+(q-1)T₁₂₁
julia> length(h) # h has 2 terms
2
julia> h[W(2,1)] # coefficient of W(2,1)
Pol{Int64}: q
julia> collect(h) # pairs perm=>coeff
2-element Vector{Any}:
(1,2,6)(3,4,5) => q
(1,5)(2,4)(3,6) => q-1
julia> collect(values(h)) # the coefficients
2-element Vector{Pol{Int64}}:
q
q-1
julia> collect(keys(h)) # the corresponding Perms
2-element Vector{Perm{Int16}}:
(1,2,6)(3,4,5)
(1,5)(2,4)(3,6)
julia> h[W(2,1)]=Pol(3)
Pol{Int64}: 3
julia> h
3T₂₁+(q-1)T₁₂₁Finally, Hecke "algebras" can also be attached to reflection cosets; they are not algebras but modules for the Hecke algebra of the corresponding group. But they also have character tables, class polynomials and representations.
finally, benchmarks on julia 1.8
julia> function test_w0(n)
W=coxgroup(:A,n)
Tbasis(hecke(W,Pol(:q)))(longest(W))^2
end
test_w0 (generic function with 1 method)
julia> @btime test_w0(7);
97.210 ms (1776476 allocations: 127.52 MiB)in GAP3 the analogous function takes 920ms
test_w0:=function(n)local W,T,H;
W:=CoxeterGroup("A",n);H:=Hecke(W,X(Rationals));T:=Basis(H,"T");
return T(LongestCoxeterWord(W))^2;
end;Chevie.HeckeAlgebras.hecke — Method
hecke(W,parameter=1;rootpara=missing)
Hecke algebra for the complex reflection group or Coxeter group W. If no parameter is given, 1 is assumed which gives the group algebra of W.
The following forms are accepted for parameter: if parameter is not a vector or a tuple, it is replaced by the vector fill(parameter,ngens(W)). If it is a vector with one entry, it is replaced with fill(parameter[1],ngens(W)). If parameter is a vector with more than one entry, it should have length ngens(W), each entry representing the parameters for the corresponding generator of W, and entries corresponding to the same W-orbit of generators should be identical. Finally, if parameter is a Tuple, the tuple should have as many entries as there are hyperplane orbits in W and each entry will represent the parameters for the corresponding conjugacy class of braid reflections.
An entry in parameter for a reflection of order e can be either a single scalar value or a Vector of length 'e'. If it is a Vector, it is interpreted as the list [u₀,…,uₑ₋₁] of parameters for that reflection. If it is not a vector, let q be its value; it is then interpreted as specifying the list of parameters for the Spetsial algebra, which are [q,ζₑ,…,ζₑᵉ⁻¹] (thus the list [q,-1] of the one-parameter algebra for Coxeter groups).
When printing an Hecke algebra the parameter list is abbreviated using the same conventions.
Computing characters or representations of Hecke algebra needs sometimes to extract roots of the parameters. These roots are extracted automatically (when possible). To control the roots, which is needed for example to have composable specializations or make sure the same root is used for subgroups, for Coxeter groups it is possible to give explicit roots by giving a keyword argument rootpara: if it is a vector it should contain at the i-th position a square root of -parameter[i][1]*parameter[i][2] (that is, a square root of q if parameter[i]==[q,-1]); if a scalar it is replaced by fill(rootpara,ngens(W)). If not specified the entries in rootpara start as missing. The function rootpara(H) tries to fill automatically missing entries in H.rootpara and returns the result. The same mechanism has been extended to some complex reflection groups generated by 2-reflections and needing only square roots of the parameters to split the Hecke algebra, that is to G₂₄, G₂₉, G₃₁, G₃₃ and G₄,₂,ᵣ.
Example
julia> W=coxgroup(:B,2)
B₂
julia> @Pol q
Pol{Int64}: q
julia> H=hecke(W,q)
hecke(B₂,q)
julia> H.para
2-element Vector{Vector{Pol{Int64}}}:
[q, -1]
[q, -1]
julia> H=hecke(W,q^2,rootpara=-q)
hecke(B₂,q²,rootpara=-q)
julia> H=hecke(W,q^2)
hecke(B₂,q²)
julia> rootpara(H) # automatically computed
2-element Vector{Pol{Int64}}:
q
q
julia> H
hecke(B₂,q²,rootpara=q)
julia> H=hecke(W,[q^2,q^4],rootpara=[q,q^2])
hecke(B₂,Pol{Int64}[q², q⁴],rootpara=Pol{Int64}[q, q²])
julia> H.para,H.rootpara
(Vector{Pol{Int64}}[[q², -1], [q⁴, -1]], Pol{Int64}[q, q²])
julia> H=hecke(W,9,rootpara=3)
hecke(B₂,9,rootpara=3)
julia> H.para,H.rootpara
([[9, -1], [9, -1]], [3, 3])
julia> @Mvp x,y,z,t
julia> H=hecke(W,[[x,y]])
hecke(B₂,Vector{Mvp{Int64, Int64}}[[x, y]])
julia> rootpara(H);H
hecke(B₂,Vector{Mvp{Int64, Int64}}[[x, y]],rootpara=ζ₄x½y½)
julia> H=hecke(W,[[x,y],[z,t]])
hecke(B₂,Vector{Mvp{Int64, Int64}}[[x, y], [z, t]])
julia> rootpara(H);H
hecke(B₂,Vector{Mvp{Int64, Int64}}[[x, y], [z, t]],rootpara=Mvp{Cyc{Int64}, Rational{Int64}}[ζ₄x½y½, ζ₄t½z½])
julia> hecke(coxgroup(:F,4),(q,q^2)).para
4-element Vector{Vector{Pol{Int64}}}:
[q, -1]
[q, -1]
[q², -1]
[q², -1]
julia> hecke(complex_reflection_group(3,1,2),q).para # spetsial parameters
2-element Vector{Vector{Pol{Cyc{Int64}}}}:
[q, ζ₃, ζ₃²]
[q, -1]Chevie.HeckeAlgebras.Tbasis — Function
Tbasis(H::HeckeAlgebra) The T basis of H. It is defined currently for Iwahori-Hecke algebras and for Hecke algebras of cyclic complex reflection groups G(d,1,1). It returns a function, say T, which can take an argument of the following forms
T(i::Integer): the generatorT_swheres=H.W(i).T(i₁,…,iᵣ): the productT(i₁)…T(iᵣ)T([i₁,…,iᵣ]): same asT(i₁,…,iᵣ)T(w)wherew∈ H.W: returnsT_w
julia> H=hecke(coxgroup(:A,2),Pol(:q))
hecke(A₂,q)
julia> T=Tbasis(H);T(longest(H.W))^2
q³T.+(q³-2q²+q)T₂₁+(q³-q²)T₂+(q³-q²)T₁+(q³-2q²+2q-1)T₁₂₁+(q³-2q²+q)T₁₂
julia> W=crg(3,1,1)
G₃‚₁‚₁
julia> H=hecke(crg(3,1,1),Pol(:q))
hecke(G₃‚₁‚₁,q)
julia> T=Tbasis(H);T(1)^3
qT.+(q-1)T₁+(q-1)T₁₁Chevie.HeckeAlgebras.alt — Function
alt(a::HeckeElt{:T})
a should be an element of an Iwahori-Hecke algebra H. alt is the involution on H defined by x↦ bar(x) on coefficients and Tₛ↦ uₛ,₀⁻¹uₛ,₁⁻¹Tₛ. It specializes to tensoring with the sign representation.
julia> W=coxgroup(:G,2);H=hecke(W,Pol(:q))
hecke(G₂,q)
julia> T=Tbasis(H);h=T(1,2)*T(2,1)
q²T.+(q²-q)T₁+(q-1)T₁₂₁
julia> alt(h)
q⁻²T.+(q⁻²-q⁻³)T₁+(q⁻³-q⁻⁴)T₁₂₁Chevie.Garside.α — Method
α(a::HeckeElt{:T})
the anti-involution on the Hecke algebra defined by $T_w↦ T_{inv(w)}$.
Chevie.HeckeAlgebras.β — Function
β(a::HeckeElt{:T})
a should be an element of an Iwahori-Hecke algebra H. β is the involution on H defined by x↦ bar(x) on coefficients and T_w↦q{w0}⁻¹T{w0w}`.
Chevie.Chars.CharTable — Method
CharTable(H::HeckeAlgebra or HeckeCoset)
returns the CharTable of the Hecke algebra H. For the primitive complex reflection group G₃₄ there are missing entries. If W=H.W, the columns of the CharTable are labelled by classnames(W); the i-th column contains the character values for the lift to H of the word classinfo(W).classwords[i] for the element classreps(W)[i] (see char_values for more information).
julia> H=hecke(crg(4),Pol())
hecke(G₄,q)
julia> CharTable(H)
CharTable(hecke(G₄,q))
┌───────────┬──────────────────────────────────────┐
│centralizer│24 24 4 6 6 6 6│
├───────────┼──────────────────────────────────────┤
│ │ . z 2c c zc 1 1z│
├───────────┼──────────────────────────────────────┤
│φ₁‚₀ │ 1 q⁶ q³ q² q⁸ q q⁷│
│φ₁‚₄ │ 1 1 1 ζ₃² ζ₃² ζ₃ ζ₃│
│φ₁‚₈ │ 1 1 1 ζ₃ ζ₃ ζ₃² ζ₃²│
│φ₂‚₅ │ 2 -2 . 1 -1 -1 1│
│φ₂‚₃ │ 2 -2q³ . ζ₃²q -ζ₃²q⁴ q+ζ₃² -q⁴-ζ₃²q³│
│φ₂‚₁ │ 2 -2q³ . ζ₃q -ζ₃q⁴ q+ζ₃ -q⁴-ζ₃q³│
│φ₃‚₂ │ 3 3q² -q . . q-1 q³-q²│
└───────────┴──────────────────────────────────────┘Chevie.HeckeAlgebras.central_monomials — Function
central_monomials(H)
Let H be an Hecke algebra for the finite reflection group W. The function returns the scalars by which the image in H of π acts on the irreducible representations of H.
When W is irreducible, π is the generator of the center of the pure braid group. In general, it is the product of such elements for each irreducible component. When W is a Coxeter group, the image of π in H is $T_{w_0}^2$.
julia> H=hecke(coxgroup(:H,3),Pol(:q))
hecke(H₃,q)
julia> central_monomials(H)
10-element Vector{Pol{Cyc{Int64}}}:
1
q³⁰
q¹²
q¹⁸
q¹⁰
q¹⁰
q²⁰
q²⁰
q¹⁵
q¹⁵Chevie.HeckeAlgebras.class_polynomials — Function
class_polynomials(h::HeckeElt)
returns the class polynomials of the element h of the Iwahori-Hecke algebra or coset given by h.H with respect to the T basis for a set R of representatives of minimal length in the conjugacy classes of the Coxeter group or coset H.W. Such minimal length representatives are given by classreps(H.W). The vector p of these polynomials has the property that if X is the matrix of the values of the irreducible characters of H on T_w (for w∈ R), then the product X*p is the list of values of the irreducible characters on h.
julia> W=coxsym(4)
𝔖 ₄
julia> H=hecke(W,Pol(:q))
hecke(𝔖 ₄,q)
julia> h=Tbasis(H)(longest(W))
T₁₂₁₃₂₁
julia> p=class_polynomials(h)
5-element Vector{Pol{Int64}}:
0
0
q²
q³-2q²+q
q³-q²+q-1The class polynomials were introduced in (Geck and Pfeiffer, 1993).
Chevie.HeckeAlgebras.char_values — Function
char_values(h::HeckeElt)
h is an element of an Iwahori-Hecke algebra H. The function returns the values of the irreducible characters of H on h (the method used is to convert to the T basis, and then use class_polynomials).
julia> W=coxgroup(:B,2)
B₂
julia> H=hecke(W,q^2;rootpara=q)
hecke(B₂,q²,rootpara=q)
julia> char_values(Cpbasis(H)(1,2,1))
5-element Vector{Pol{Int64}}:
-q-q⁻¹
q+q⁻¹
0
q³+2q+2q⁻¹+q⁻³
0char_values(H::HeckeAlgebra,v::Vector{<:Integer})
For an Iwahori-Hecke algebra this computes the character values of H on Tbasis(H)(v).
For H the Hecke algebra of a complex reflection group W this routine computes character values on a lift of the element of W defined by the word v in gens(W).
For complex reflection groups the character table of the generic Hecke algebra of W has been computed (excepted for G₃₄) in the sense that, if s₁,…,sₙ are generators of the braid group lifting the Broué-Malle-Rouquier-Bessis-Michel generators of W, there is at least one element v in each conjugacy class of W and one expression in the generators for it such that the character values of the image Tᵥ in the Hecke algebra of the lift to the braid group are known. Such an expression in the generators will be called a known word (the list of known words is obtained by word.(conjugacy_classes(W)) or classinfo(W).classwords. If the word v is known, the computation is quick using the character table. If not, the function computes the trace of Tᵥ in each irreducible representation. The values returned are missing for missing representations (see representation; there are missing representations for G₃₁, G₃₂ and G₃₄).
julia> W=crg(4)
G₄
julia> H=hecke(W,Pol(:q))
hecke(G₄,q)
julia> char_values(H,[2,1,2])
7-element Vector{Pol{Cyc{Int64}}}:
q³
1
1
0
0
0
-qChevie.HeckeAlgebras.schur_elements — Function
schur_elements(H)
returns the list of Schur elements for the Hecke algebra H
julia> H=hecke(complex_reflection_group(4),Pol(:q))
hecke(G₄,q)
julia> s=schur_elements(H)
7-element Vector{Pol{Cyc{Int64}}}:
q⁸+2q⁷+3q⁶+4q⁵+4q⁴+4q³+3q²+2q+1
2√-3+(6+4√-3)q⁻¹+12q⁻²+(6-4√-3)q⁻³-2√-3q⁻⁴
-2√-3+(6-4√-3)q⁻¹+12q⁻²+(6+4√-3)q⁻³+2√-3q⁻⁴
2+2q⁻¹+4q⁻²+2q⁻³+2q⁻⁴
ζ₃²√-3q³+(3-√-3)q²+3q+3+√-3-ζ₃√-3q⁻¹
-ζ₃√-3q³+(3+√-3)q²+3q+3-√-3+ζ₃²√-3q⁻¹
q²+2q+2+2q⁻¹+q⁻²
julia> CycPol.(s)
7-element Vector{CycPol{Cyc{Int64}}}:
Φ₂²Φ₃Φ₄Φ₆
2√-3q⁻⁴Φ₂²Φ′₃Φ′₆
-2√-3q⁻⁴Φ₂²Φ″₃Φ″₆
2q⁻⁴Φ₃Φ₄
ζ₃²√-3q⁻¹Φ₂²Φ′₃Φ″₆
-ζ₃√-3q⁻¹Φ₂²Φ″₃Φ′₆
q⁻²Φ₂²Φ₄Chevie.HeckeAlgebras.factorized_schur_element — Function
factorized_schur_element(H,phi)
returns the factorized schur_element (see factorized_schur_elements) of the Hecke algebra H for the irreducible character of H of parameter phi (see charinfo(W).charparams)
julia> W=complex_reflection_group(4)
G₄
julia> @Mvp x,y; H=hecke(W,[[1,x,y]])
hecke(G₄,Vector{Mvp{Int64, Int64}}[[1, x, y]])
julia> factorized_schur_element(H,[[2,5]])
-x⁻¹y(xy+1)(x-1)Φ₆(xy⁻¹)(y-1)Chevie.HeckeAlgebras.factorized_schur_elements — Function
factorized_schur_elements(H)
Let H be a Hecke algebra for the complex reflection group W, whose parameters are all (Laurent) monomials in some variables x₁,…,xₙ, and let K be the field of definition of W. Then (Chlouveraki, 2009) has shown that the Schur elements of H take the particular form M ∏ᵩ φ(Mᵩ) where φ runs over a list of K-cyclotomic polynomials, and M and Mᵩ are (Laurent) monomials (in possibly some fractional powers) of the variables xᵢ. The function factorized_schur_elements returns a data structure (see HeckeAlgebras.FactSchur) which shows this factorization.
julia> W=complex_reflection_group(4)
G₄
julia> @Mvp x,y; H=hecke(W,[[1,x,y]])
hecke(G₄,Vector{Mvp{Int64, Int64}}[[1, x, y]])
julia> factorized_schur_elements(H)
7-element Vector{Chevie.HeckeAlgebras.FactSchur}:
x⁻⁴y⁻⁴(xy+1)Φ₁Φ₆(x)Φ₁Φ₆(y)
(x²y⁻¹+1)Φ₁Φ₆(x)Φ₁Φ₆(xy⁻¹)
-x⁻⁴y⁵Φ₁Φ₆(xy⁻¹)(xy⁻²+1)Φ₁Φ₆(y)
-x⁻¹y(xy+1)(x-1)Φ₆(xy⁻¹)(y-1)
-x⁻⁴y(x²y⁻¹+1)(x-1)(xy⁻¹-1)Φ₆(y)
x⁻¹y⁻¹Φ₆(x)(xy⁻¹-1)(xy⁻²+1)(y-1)
x⁻²y(x²y⁻¹+1)(xy+1)(xy⁻²+1)Chevie.HeckeAlgebras.FactSchur — Type
A FactSchur representing a Schur element of the form M∏ᵩφ(Mᵩ) (see factorized_schur_element) is a struct with a field factor which holds the monomial M, and a field vcyc which holds a list of NamedTuples describing each factor Mᵩ in the product. An element of vcyc representing a term φ(Mᵩ) is itself a NamedTuple with fields monomial holding Mᵩ (as an Mvp with a single term), and a field pol holding a CycPol (see CycPol) representing φ.
A few operations are implemented for FactSchur, like *, lcm. They can be evaluated partially or completely keeping as much as possible the factored form.
julia> @Mvp x,y; W=crg(4); H=hecke(W,[[1,x,y]])
hecke(G₄,Vector{Mvp{Int64, Int64}}[[1, x, y]])
julia> p=factorized_schur_element(H,[[2,5]])
-x⁻¹y(xy+1)(x-1)Φ₆(xy⁻¹)(y-1)
julia> q=p(;x=E(3)) # partial evaluation
ζ₃²√-3y⁻¹Φ₁Φ₂Φ′₆²(y)
julia> q(;y=2//1)
-9√-3/2In contrast, the next operation expands p to an Mvp:
julia> HeckeAlgebras.expand(p)
Mvp{Cyc{Rational{Int64}},Rational{Int64}}: -x³y+x³+x²y²-2x²+x²y⁻¹-xy³+2xy-xy⁻¹+y³-2y²+1+x⁻¹y²-x⁻¹yChevie.Chars.representation — Method
representation(H::HeckeAlgebra or HeckeCoset,i)
returns, for the i-th irreducible representation of the Hecke algebra or Hecke coset H, a list of matrices images of the generators of H in a model of the representation (for Hecke cosets, the result is a NamedTuple with fields gens, a representation of hecke(H), and F, the matrix for the automorphism of H in the representation).
This function is based on the classification, and is not yet fully implemented for the Hecke algebras of the groups G₃₁, G₃₂ and G₃₄: we have 50 representations out of 59 for type G₃₁, 30 representations out of 102 for type G₃₂ and 38 representations out of 169 for type G₃₄; nothing is returned for a missing representation.
julia> W=crg(24)
G₂₄
julia> H=hecke(W,Pol(:q))
hecke(G₂₄,q)
julia> representation(H,3)
3-element Vector{Matrix{Pol{Cyc{Int64}}}}:
[q 0 0; -q -1 0; -q 0 -1]
[-1 0 -1; 0 -1 ((1-√-7)/2)q; 0 0 q]
[-1 -1 0; 0 q 0; 0 (1+√-7)/2 -1]The models implemented for imprimitive types G(de,e,n) for n>2 and de>1 (this includes Coxeter type Dₙ), excepted for G(2,2,4), G(3,3,3), G(3,3,4), G(3,3,5) and G(4,4,3), involve rational fractions.
julia> H=hecke(coxgroup(:D,5),Pol(:q))
hecke(D₅,q)
julia> representation(H,7)
5-element Vector{Matrix{Frac{Pol{Int64}}}}:
[q 0 0 0; 0 -1 0 0; 0 0 -1 0; 0 0 0 -1]
[q 0 0 0; 0 -1 0 0; 0 0 -1 0; 0 0 0 -1]
[1/(-q-1) q/(q+1) 0 0; (q²+q+1)/(q+1) q²/(q+1) 0 0; 0 0 -1 0; 0 0 0 -1]
[-1 0 0 0; 0 1/(-q²-q-1) (-q²-q)/(-q²-q-1) 0; 0 (q³+q²+q+1)/(q²+q+1) q³/(q²+q+1) 0; 0 0 0 -1]
[-1 0 0 0; 0 -1 0 0; 0 0 1/(-q³-q²-q-1) (-q³-q²-q)/(-q³-q²-q-1); 0 0 (q⁴+q³+q²+q+1)/(q³+q²+q+1) q⁴/(q³+q²+q+1)]Chevie.Chars.representation — Method
representation(h::HeckeElt,r)
r should be a representation of h.H, or an integer, in which case it means representation(h.H,r). The value of that representation applied to h is returned. Here h.H can be an Hecke algebra or an Hecke coset.
julia> H=hecke(coxsym(4),Pol(:q));T=Tbasis(H);
julia> representation(T(1,2)^2,2)
3×3 Matrix{Pol{Rational{Int64}}}:
-q² -q² 0
q² 0 0
-q -q+1 1Chevie.Chars.representations — Method
representations(H)
returns the list of representations of the Hecke algebra or Hecke coset H (see representation).
julia> WF=rootdatum("2B2")
²B₂
julia> H=hecke(WF,Pol(:x)^2;rootpara=Pol())
hecke(²B₂,x²,rootpara=x)
julia> representations(H)
3-element Vector{NamedTuple{(:gens, :F)}}:
(gens = Matrix{Pol{Int64}}[[x²;;], [x²;;]], F = [1;;])
(gens = Matrix{Pol{Int64}}[[-1;;], [-1;;]], F = [1;;])
(gens = Matrix{Pol{Cyc{Int64}}}[[-1 0; √2x x²], [x² √2x; 0 -1]], F = [0 -1; -1 0])Chevie.HeckeAlgebras.isrepresentation — Function
isrepresentation(H::HeckeAlgebra,r;details=false) or
isrepresentation(W::ComplexReflectionGroup,r;details=false)
returns true or false, according to whether a given set r of elements in bijection with gens(H.W) defines a representation of the Hecke algebra H or not; isrepresentation(W,r) is equivalent to isrepresentation(hecke(W)),r). If details=true the function gives details of the cause of a failure.
julia> H=hecke(coxgroup(:F,4))
hecke(F₄,1)
julia> isrepresentation(H,reflrep(H))
true
julia> isrepresentation(H,Tbasis(H).(1:4))
trueisrepresentation(H::HeckeCoset,r;details=false) or
isrepresentation(W::Spets,r;details=false)
returns true or false, according to whether NamedTuple r defines a representation of H or not. If details=true the function gives details of the cause of a failure. ```
Chevie.PermRoot.reflection_representation — Method
reflection_representation(H::HeckeAlgebra) or reflrep(H)
returns a list of matrices for the generators of H which give the reflection representation of the Iwahori-Hecke algebra H. This is based on a general formula and does not necessarily agree with representation(H,i) where i is the index of the reflection representation, and does not either necessarily specialises to reflrep(H.W).
julia> W=coxgroup(:B,2);H=hecke(W,Pol(:q))
hecke(B₂,q)
julia> reflrep(H)
2-element Vector{Matrix{Pol{Int64}}}:
[-1 0; -q q]
[q -2; 0 -1]
julia> H=hecke(coxgroup(:H,3))
hecke(H₃,1)
julia> reflrep(H)
3-element Vector{Matrix{Cyc{Int64}}}:
[-1 0 0; -1 1 0; 0 0 1]
[1 (-3-√5)/2 0; 0 -1 0; 0 -1 1]
[1 0 0; 0 1 -1; 0 0 -1]Chevie.HeckeAlgebras.HeckeCoset — Type
HeckeCosets are Hϕ where H is an Iwahori-Hecke algebra of some Coxeter group W on which the automorphism ϕ of some Spets Wϕ acts by ϕ(T_w)=T_{ϕ(w)}. For Weyl groups, this corresponds to the action of the Frobenius automorphism on the commuting algebra of the induced of the trivial representation from the rational points of some F-stable Borel subgroup to 𝐆 ^F.
julia> WF=rootdatum(:u,3)
u₃
julia> HF=hecke(WF,Pol(:v)^2;rootpara=Pol())
hecke(u₃,v²,rootpara=v)
julia> CharTable(HF)
CharTable(hecke(u₃,v²,rootpara=v))
┌───────────┬──────────┐
│centralizer│ 6 2 3│
├───────────┼──────────┤
│ │ 111 21 3│
├───────────┼──────────┤
│111 │ -1 1 -1│
│21 │-2v³ . v│
│3 │ v⁶ 1 v²│
└───────────┴──────────┘Thanks to the work of (He and Nie, 2012), 'class_polynomials' also make sense for these cosets. This is used to compute such character tables.
Chevie.HeckeAlgebras.hecke — Method
hecke(HF::HeckeCoset) returns the underlying Hecke algebra
Chevie.HeckeAlgebras.hecke — Method
hecke(WF::Spets, H)
hecke(WF::Spets, params)
Construct a HeckeCoset from a Coxeter coset WF and an Hecke algebra associated to Group(WF). The second form is equivalent to Hecke(WF,Hecke(Group(WF),params)). See the doc for HeckeCoset.