Hecke algebras

Chevie.HeckeAlgebrasModule

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 G(d,1,1) this module also implements the standard T basis; see the module KLfor 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ₛ_1⋯ Tₛ_m has the same value, that we denote T_w. We have T_1=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.

When one of the uₛᵢ is invertible, the structure constants (the decomposion 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 when constructing the algebra; after this the function rootpara(H) 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. 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{HeckeTElt{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{HeckeTElt{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é-Malle-Rouquier 1998 and Bessis-Michel 2003 (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, Koike and Malle have computed the character table of some of these algebras, including those for all 2-dimensional reflection groups, see Broué-Malle 1993 and Malle 1996; our data has models of all representation 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-Michel 2010) and contains also models and character tables computed by Michel for G₂₉ and G₃₃; it contains also partial lists of representations and partial character tables for the remaining groups G₃₁,G₃₂ and G₃₄, computed by Malle and Michel for G₃₂ and by Michel for the other two algebras.

The quotient of the Hecke algebra obtained by the specialisation $u_{𝐬,i}↦ ζₑⁱ$ is isomorphic to the group algebra of W. It was conjectured for 20 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 2019 thanks to the work of many people including Marin, Pfeiffer, Chavli and Tsuchioka 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-Mathas 1998 for imprimitive reflection groups and in Malle-Michel 2010 for some primitive groups of dimension 2 and 3. Chlouveraki and Chavli 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 the function hecke for various ways of specifying the parameters of a Hecke algebra. Look also at the docstrings of 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, 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;
source
Chevie.HeckeAlgebras.heckeMethod

hecke( W [, parameter];rootpara=nothing)

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_(e-1)] 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,ζ_e,…,ζ_{e-1}] (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). 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]; if a scalar it is replaced by fill(rootpara,ngens(W)).

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)
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,rootpara(H)
(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,rootpara(H)
([[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]
source
Chevie.HeckeAlgebras.TbasisMethod

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 generator T_s where s=H.W(i).
  • T(i₁,…,iᵣ): the product T(i₁)…T(iᵣ)
  • T([i₁,…,iᵣ]): same as T(i₁,…,iᵣ)
  • T(w) where w∈ H.W: returns T_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
(q-1)T.+(q-1)T₁+qT₁₁
source
Chevie.HeckeAlgebras.altFunction

alt(a::HeckeTElt)

a should be an element of an Iwahori-Hecke algebra H. the involution on H defined by x↦ bar(x) on coefficients and Tₛ↦ uₛ,₀uₛ,₁Tₛ. Essentially it corresponds 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₁₂₁
source
Chevie.Garside.αMethod

α(a::HeckeTElt)

the anti-involution on the Hecke algebra defined by $T_w↦ T_{inv(w)}$.

source
Chevie.Chars.CharTableMethod

CharTable(H::HeckeAlgebra or HeckeCoset)

returns the CharTable of the Hecke algebra H. For the primitive groups G₃₁, G₃₂, G₃₄ there are Unknown() entries corresponding to missing representations (see representation). The columns of the CharTable are labelled by classnames(H.W) and contain the character values for the corresponding element given by classreps(H.W).

julia> H=hecke(crg(4),Pol())
hecke(G₄,q)

julia> CharTable(H)
CharTable(hecke(G₄,q))
┌────┬──────────────────────────────────────┐
│    │.    z 212   12    z12     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²│
└────┴──────────────────────────────────────┘
source
Chevie.HeckeAlgebras.central_monomialsFunction

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¹⁵
source
Chevie.HeckeAlgebras.class_polynomialsFunction

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-1

The class polynomials were introduced in Geck-Pfeiffer1993.

source
Chevie.HeckeAlgebras.char_valuesFunction

char_values(h::HeckeTElt)

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⁻³
 0
source

char_values(H::HeckeAlgebra,v::Vector{<:Integer})

For an Iwahori-Hecke algebra this computes the character values of H on the 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 (not entirely for 3 exceptions, see representation) 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)). 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 Unknown() for missing representations (see representation).

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
 -q
source
Chevie.HeckeAlgebras.schur_elementsFunction

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{Rational{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{Rational{Int64}}}}:
 Φ₂²Φ₃Φ₄Φ₆
 2√-3q⁻⁴Φ₂²Φ′₃Φ′₆
 -2√-3q⁻⁴Φ₂²Φ″₃Φ″₆
 2q⁻⁴Φ₃Φ₄
 ζ₃²√-3q⁻¹Φ₂²Φ′₃Φ″₆
 -ζ₃√-3q⁻¹Φ₂²Φ″₃Φ′₆
 q⁻²Φ₂²Φ₄
source
Chevie.HeckeAlgebras.factorized_schur_elementFunction

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)
source
Chevie.HeckeAlgebras.factorized_schur_elementsFunction

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 Maria Chlouveraki 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)
source
Chevie.HeckeAlgebras.FactSchurType

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/2

In 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⁻¹y
source
Chevie.Chars.representationMethod

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())
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)]
source
Chevie.Chars.representationsMethod

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 = [[-1;;], [-1;;]], F = [1;;])
 (gens = Matrix{Pol{Cyc{Int64}}}[[-1 0; √2x x²], [x² √2x; 0 -1]], F = [0 -1; -1 0])
source
Chevie.HeckeAlgebras.isrepresentationFunction

isrepresentation(H::HeckeAlgebra,r)

returns true or false, according to whether a given set r of elements corresponding to the standard generators of the reflection group H.W defines a representation of the Hecke algebra H or not.

julia> H=hecke(coxgroup(:F,4))
hecke(F₄,1)

julia> isrepresentation(H,reflrep(H))
true

julia> isrepresentation(H,Tbasis(H).(1:4))
true
source
Chevie.PermRoot.reflection_representationMethod

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.

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]
source
Chevie.HeckeAlgebras.HeckeCosetType

HeckeCosets are where H is an Iwahori-Hecke algebra of some Coxeter group W on which the automorphism ϕ of some Spets 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))
┌───┬──────────┐
│   │ 111 21  3│
├───┼──────────┤
│111│  -1  1 -1│
│21 │-2v³  .  v│
│3  │  v⁶  1 v²│
└───┴──────────┘

Thanks to the work of Xuhua He and Sian Nie, 'class_polynomials' also make sense for these cosets. This is used to compute such character tables.

source
Chevie.HeckeAlgebras.heckeMethod

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.

source