Unipotent characters

Chevie.UchModule

Let $𝐆$ be a connected reductive group over an algebraic closure of the finite field $𝔽_q$, defined over $𝔽_q$, with corresponding Frobenius automorphism $F$. We want to study the irreducible characters of $𝐆 ^F$. More generally we consider $𝐆 ^F$ where $F$ is a Frobenius root, an isogeny of $𝐆$ such that a power is a Frobenius (this covers the Suzuki and Ree groups).

If $𝐓$ is an $F$-stable maximal torus of $𝐆$, and $𝐁$ is a (not necessarily $F$-stable) Borel subgroup containing $𝐓$, we define the Deligne-Lusztig variety $X_𝐁=\{g𝐁∈𝐆/𝐁 ∣ g𝐁∩F(g𝐁)≠∅ \}$. This variety affords a natural action of $𝐆^F$ on the left, so the corresponding Deligne-Lusztig virtual module given by the -adic cohomology with compact support $H^*_c(X_𝐁):=∑ᵢ(-1)ⁱHⁱ_c(X_𝐁,ℚ̄_ℓ)$ has an action of $𝐆^F$ on the right. The (virtual) character of this module is the Deligne-Lusztig character $R_𝐓^𝐆(1)$; the notation reflects the theorem that this character does not depend on the choice of $𝐁$. This character can be parameterized by an $F$-conjugacy class of $W$: if $𝐓₀⊂𝐁₀$ is an $F$-stable pair, there is an unique $w∈ W=N_𝐆 (𝐓₀)/𝐓₀$ such that the triple $(𝐓,𝐁,F)$ is $𝐆$-conjugate to $(𝐓₀,𝐁₀,wF)$. We will thus denote $R_w$ for $R_𝐓^𝐆(1)$; this character depends only on the $F$-class of $w$.

The unipotent characters of $𝐆^F$ are the irreducible constituents of the $R_w$. In a similar way that the Jordan decomposition shows that the unipotent classes are a building block for describing the conjugacy classes of a reductive group, Lusztig has defined a Jordan decomposition of characters where the unipotent characters are the building block. The unipotent characters are parameterized by combinatorial data that Lusztig has defined just from the coset $Wφ$, where φ is the finite order automorphism of $X(𝐓₀)$ such that $F=qφ$. Thus, from our viewpoint, unipotent characters are objects combinatorially attached to a Coxeter coset.

A subset of the unipotent characters, the principal series unipotent characters, can be described in a more elementary way. They are the constituents of $R₁$, or equivalently the characters of the virtual module $H^*_c(X_{𝐁₀})$, where $X_{𝐁₀}$ is the discrete variety $(𝐆/𝐁₀)^F$; this virtual module reduces to the actual module $ℚ̄_ℓ[(𝐆/𝐁₀)^F]$. Thus the Deligne-Lusztig induction $R₁=R_{𝐓₀}^𝐆(1)$ reduces to Harish-Chandra induction, defined as follows: let $𝐏=𝐔⋊𝐋$ be an $F$-stable Levi decomposition of an $F$-stable parabolic subgroup of $𝐆$. Then the Harish-Chandra induced $R_𝐋^𝐆$ of a character $χ$ of $𝐋^F$ is the character $Ind_{𝐏^F}^{𝐆 ^F}χ̃$, where $χ̃$ is the lift to $𝐏^F$ of $χ$ via the quotient $𝐏^F/𝐔^F=𝐋^F$; Harish-Chandra induction is a particular case of Lusztig induction, which is defined when $𝐏$ is not $F$-stable using the variety $X_𝐔=\{ g𝐔∈𝐆/𝐔 ∣ g𝐔∩F(g𝐔)≠∅\}$, and gives for an $𝐋^F$-module a virtual $𝐆 ^F$-module. Like ordinary induction, these functors have adjoint functors going from representations of $𝐆^F$ to representations (resp. virtual representations) of $𝐋^F$ called Harish-Chandra restriction (resp. Lusztig restriction).

The commuting algebra of $𝐆^F$-endomorphisms of $R₁=R_{𝐓₀}^𝐆(1)$ is an Iwahori-Hecke algebra for $W^φ$, with parameters some powers of q; the parameters are all equal to q when $W^φ=W$. Thus principal series unipotent characters are parametrized by characters of $W^φ$.

To understand the decomposition of more general $R_w$, and thus parameterize unipotent characters, is is useful to introduce another set of class functions which are parameterized by irreducible characters of the coset $Wφ$. If $χ$ is such a character, we define the associated almost character by: $Rᵪ=|W|⁻¹∑_{w∈ W}χ(wφ) R_w$. The name reflects that these class function are close to irreducible characters. They satisfy $⟨Rᵪ, R_ψ⟩_{𝐆^F}=δ_{χ,ψ}$; for the linear and unitary group they are actually unipotent characters (up to sign in the latter case). They are in general the sum (with rational coefficients) of a small number of unipotent characters in the same Lusztig family, see Families. The degree of $Rᵪ$ is a polynomial in $q$ equal to the fake degree of the character $χ$ of $Wφ$ (see fakedegree).

We now describe the parameterization of unipotent characters when $W^φ=W$, in which case the coset $Wφ$ identifies with $W$ (the general situation is similar but a bit more difficult to describe). The (rectangular) matrix of scalar products $⟨ρ, Rᵪ⟩_{𝐆 ^F}$, when characters of $W$ and unipotent characters are arranged in the right order, is block-diagonal with rather small blocks which are called Lusztig families.

For the characters of $W$ a family 𝓕 corresponds to a block of the Hecke algebra over a ring called the Rouquier ring. To 𝓕 Lusztig associates a small group $Γ$ (equal to $(ℤ/2)ⁿ$ for rather small n, or $𝔖ᵢ$ for $i≤5$) such that the unipotent characters in the family are parameterized by the characters of the Drinfed double of Γ, that is pairs(x,θ)taken up toΓ-conjugacy, wherex∈Γandθis an irreducible character ofC_Γ(x). Further, the elements of𝓕themselves are parameterized by a subset of such pairs, and Lusztig defines a pairing between such pairs which computes the scalar product⟨ρ, Rᵪ⟩_{𝐆^F}, called the *Lusztig Fourier matrix*. For more details see [drinfeld_double`](@ref).

A second parameterization of unipotent character is via Harish-Chandra series. A character is called cuspidal if all its proper Harish-Chandra restrictions vanish. There are few cuspidal unipotent characters (none in $GLₙ$ for $n>1$, and at most one in other classical groups). The $𝐆^F$-endomorphism algebra of an Harish-Chandra induced $R_{𝐋^F}^{𝐆^F}λ$, where $λ$ is a cuspidal unipotent character is a Hecke algebra associated to the group $W_{𝐆^F}(𝐋^F):=N_{𝐆^F}(𝐋)/𝐋$, which turns out to be a Coxeter group. Thus another parameterization is by triples $(𝐋,λ,φ)$, where $λ$ is a cuspidal unipotent character of $𝐋^F$ and $φ$ is an irreducible character of the relative group $W_{𝐆^F}(𝐋^F)$. Such characters are said to belong to the Harish-Chandra series determined by $(𝐋,λ)$.

A final piece of information attached to unipotent characters is the eigenvalues of Frobenius. Let $Fᵟ$ be the smallest power of the isogeny $F$ which is a split Frobenius (that is, $Fᵟ$ is a Frobenius and $φᵟ=1$). Then $Fᵟ$ acts naturally on Deligne-Lusztig varieties and thus on the corresponding virtual modules, and commutes to the action of $𝐆^F$; thus for a given unipotent character $ρ$, a submodule of the virtual module which affords $ρ$ affords a single eigenvalue $μ$ of $Fᵟ$. (Lusztig, 1978; 3.9) and (Digne and Michel, 1985; II, 2.3) show that this eigenvalue is of the form $qᵃᵟλᵨ$ where $2a∈ℤ$ and $λᵨ$ is a root of unity, and where the parity of 2a and $λᵨ$ depend only on $ρ$ and not the considered module. This $λᵨ$ is called the eigenvalue of Frobenius attached to $ρ$. Unipotent characters in the Harish-Chandra series of a pair $(𝐋,λ)$ have the same eigenvalue of Frobenius as $λ$.

Chevie contains tables of all this information, and can compute Harish-Chandra and Lusztig induction of unipotent characters and almost characters. We illustrate this on some examples:

julia> W=coxgroup(:G,2)
G₂

julia> uc=UnipotentCharacters(W)
UnipotentCharacters(G₂)
┌───────┬────────────────────────────────────────────────────┐
│γ      │n₀    Deg(γ)  Feg              Symbol Fr(γ)    label│
├───────┼────────────────────────────────────────────────────┤
│φ₁‚₀   │ 1         1    1       (0,0,0,0,0,2)     1         │
│φ₁‚₆   │ 2        q⁶   q⁶ (01,01,01,01,01,12)     1         │
│φ′₁‚₃  │ 3   qΦ₃Φ₆/3   q³            (0,0,1+)     1    (1,ρ)│
│φ″₁‚₃  │ 4   qΦ₃Φ₆/3   q³            (0,0,1-)     1   (g₃,1)│
│φ₂‚₁   │ 5  qΦ₂²Φ₃/6  qΦ₈       (0,0,0,0,1,1)     1    (1,1)│
│φ₂‚₂   │ 6  qΦ₂²Φ₆/2 q²Φ₄       (0,0,0,1,0,1)     1   (g₂,1)│
│G₂[-1] │ 7  qΦ₁²Φ₃/2    0       (01,0,01,,0,)    -1   (g₂,ε)│
│G₂[1]  │ 8  qΦ₁²Φ₆/6    0       (01,01,0,,,0)     1    (1,ε)│
│G₂[ζ₃] │ 9 qΦ₁²Φ₂²/3    0       (01,0,0,01,,)    ζ₃  (g₃,ζ₃)│
│G₂[ζ₃²]│10 qΦ₁²Φ₂²/3    0       (01,01,,0,0,)   ζ₃² (g₃,ζ₃²)│
└───────┴────────────────────────────────────────────────────┘

The first column gives the name of the unipotent character, derived from its Harish-Chandra classification; the first 6 characters are in the principal series so are named by characters of W. The last 4 are cuspidal, and named by the corresponding eigenvalue of Frobenius, which is displayed in the fourth column. For classical groups, the Harish-Chandra data can be synthesized combinatorially to give a symbol.

The first two characters are each in a Lusztig family by themselves. The last eight are in a family associated to the group Γ=𝔖₃: the last column shows the parameters (x,θ). The third column shows the degree of the unipotent characters, which is transformed by the Lusztig Fourier matrix of the fourth column, which gives the degree of the corresponding almost character, or equivalently the fake degree of the corresponding character of W (extended by 0 outside the principal series).

One can get more information on the Lusztig Fourier matrix of the big family by asking

julia> uc.families[1]
Family(D(𝔖 ₃)) Drinfeld double of 𝔖 ₃, Lusztig′s version
┌────────┬───────────────────────────────────────────────────────┐
│label   │no eigen                                               │
├────────┼───────────────────────────────────────────────────────┤
│(1,1)*  │ 5     1 1//6  1//2  1//3  1//3  1//6  1//2  1//3  1//3│
│(g₂,1)  │ 6     1 1//2  1//2     .     . -1//2 -1//2     .     .│
│(g₃,1)  │ 4     1 1//3     .  2//3 -1//3  1//3     . -1//3 -1//3│
│(1,ρ)   │ 3     1 1//3     . -1//3  2//3  1//3     . -1//3 -1//3│
│(1,ε)-e │ 8     1 1//6 -1//2  1//3  1//3  1//6 -1//2  1//3  1//3│
│(g₂,ε)  │ 7    -1 1//2 -1//2     .     . -1//2  1//2     .     .│
│(g₃,ζ₃) │ 9    ζ₃ 1//3     . -1//3 -1//3  1//3     .  2//3 -1//3│
│(g₃,ζ₃²)│10   ζ₃² 1//3     . -1//3 -1//3  1//3     . -1//3  2//3│
└────────┴───────────────────────────────────────────────────────┘

We can also do computations with individual unipotent characters. Here we construct the Coxeter torus, and then the identity character of this torus as a unipotent character.

julia> W=coxgroup(:G,2)
G₂

julia> T=spets(reflection_subgroup(W,Int[]),W(1,2))
G₂₍₎=Φ₆

julia> u=unipotent_character(T,1)
[G₂₍₎=Φ₆]:<Id>

To construct T one could equivalently do

julia> T=torus(W,position_regular_class(W,6))
G₂₍₎=Φ₆

Here are two ways to construct the Deligne-Lusztig character associated to the Coxeter torus:

julia> lusztig_induce(W,u)
[G₂]:<φ₁‚₀>+<φ₁‚₆>-<φ₂‚₁>+<G₂[-1]>+<G₂[ζ₃]>+<G₂[ζ₃²]>

julia> v=deligne_lusztig_character(W,[1,2])
[G₂]:<φ₁‚₀>+<φ₁‚₆>-<φ₂‚₁>+<G₂[-1]>+<G₂[ζ₃]>+<G₂[ζ₃²]>

julia> degree(v)
Pol{Int64}: q⁶+q⁵-q⁴-2q³-q²+q+1

julia> scalar_product(v,v)
6

The last two lines ask for the degree of the virtual character v, then for the scalar product of v with itself.

Finally we mention that Chevie can also provide unipotent characters of Spetses, as defined in (Broué et al., 2014). An example:

julia> UnipotentCharacters(complex_reflection_group(4))
UnipotentCharacters(G₄)
┌─────┬────────────────────────────────────────┐
│γ    │n₀            Deg(γ)    Feg Fr(γ)  label│
├─────┼────────────────────────────────────────┤
│φ₁‚₀ │ 1                 1      1     1       │
│φ₁‚₄ │ 2  -√-3q⁴Φ″₃Φ₄Φ″₆/6     q⁴     1   1∧ζ₆│
│φ₁‚₈ │ 3   √-3q⁴Φ′₃Φ₄Φ′₆/6     q⁸     1 -1∧ζ₃²│
│φ₂‚₅ │ 4         q⁴Φ₂²Φ₆/2   q⁵Φ₄     1  1∧ζ₃²│
│φ₂‚₃ │ 5 -ζ₃√-3qΦ″₃Φ₄Φ′₆/3   q³Φ₄     1  1∧ζ₃²│
│φ₂‚₁ │ 6 ζ₃²√-3qΦ′₃Φ₄Φ″₆/3    qΦ₄     1   1∧ζ₃│
│φ₃‚₂ │ 7            q²Φ₃Φ₆ q²Φ₃Φ₆     1       │
│Z₃:2 │ 8     -√-3qΦ₁Φ₂Φ₄/3      0   ζ₃² ζ₃∧ζ₃²│
│Z₃:11│ 9    -√-3q⁴Φ₁Φ₂Φ₄/3      0   ζ₃² ζ₃∧ζ₆⁵│
│G₄   │10        -q⁴Φ₁²Φ₃/2      0    -1  ζ₆∧-1│
└─────┴────────────────────────────────────────┘
source
Chevie.Uch.UnipotentCharactersType

UnipotentCharacters(W)

W should be a Coxeter group, a Coxeter Coset or a Spetses. The function gives back a record containing information about the unipotent characters of the associated algebraic group (or Spetses). This contains the following fields:

.harishChandra: information about Harish-Chandra series of unipotent characters. This is itself a list of records, one for each pair (𝐋,λ) of a Levi of an F-stable parabolic subgroup and a cuspidal unipotent character of $𝐋^F$. These records themselves have the following fields:

:levi: a list 'l' such that 𝐋 corresponds to 'reflection_subgroup(W,l)'.

:cuspidalName: the name of the unipotent cuspidal character lambda.

:eigenvalue: the eigenvalue of Frobenius for λ.

:relativeType: the reflection type of $W_𝐆 (𝐋)$;

:parameterExponents: the $𝐆 ^F$-endomorphism algebra of $R_𝐋^𝐆 (λ)$ is a Hecke algebra for $W_𝐆 (𝐋)$ with some parameters of the form $q^{a_s}$. This holds the list of exponents $a_s$.

:charNumbers: the indices of the unipotent characters indexed by the irreducible characters of $W_𝐆 (𝐋)$.

.almostHarishChandra: information about Harish-Chandra series of unipotent character sheaves. This is identical to ̀harishChandra` for a split reductive group, and reflects the situation for the corresponding split group for a nonsplit group.

.families: information about Lusztig families of unipotent characters. This is itself a list of records, one for each family. These records are described in the section about families below.

the following information is computed on demand from uc=UnipotentCharacters(W):

spets(uc): the reductive group W.

julia> W=coxgroup(:Bsym,2)
Bsym₂

julia> WF=spets(W,Perm(1,2))
²Bsym₂

julia> uc=UnipotentCharacters(WF)
UnipotentCharacters(²Bsym₂)
┌────────┬─────────────────────────────────────────────────────┐
│γ       │n₀ almostch    Deg(γ)   Feg        Symbol Fr(γ) label│
├────────┼─────────────────────────────────────────────────────┤
│2       │ 1       2.         1     1     (02,,0,0)     1      │
│11      │ 2      .11        q⁴    q⁴ (012,1,01,01)     1      │
│²B₂[1,3]│ 3      1.1 √2qΦ₁Φ₂/2 qΦ₁Φ₂     (01,,1,0)   ζ₈³     1│
│²B₂[1,5]│ 4       B₂ √2qΦ₁Φ₂/2     0     (01,,0,1)   ζ₈⁵     2│
└────────┴─────────────────────────────────────────────────────┘

julia> uc.families
3-element Vector{Family}:
 Family(C₁,[1])
 Family(C₁,[2])
 Family(?4,[3, 4])

julia> uc.families[3]
Family(?4) 
┌─────┬───────────────────┐
│label│no eigen   1*     2│
├─────┼───────────────────┤
│1*   │ 3   ζ₈³ √2/2 -√2/2│
│2    │ 4   ζ₈⁵ √2/2  √2/2│
└─────┴───────────────────┘

charnames(uc): the list of names of the unipotent characters. Using appropriate keywords, one can control the display in various ways.

julia> uc=UnipotentCharacters(coxgroup(:G,2));

julia> charnames(uc;limit=true)
10-element Vector{String}:
 "φ₁‚₀"
 "φ₁‚₆"
 "φ′₁‚₃"
 "φ″₁‚₃"
 "φ₂‚₁"
 "φ₂‚₂"
 "G₂[-1]"
 "G₂[1]"
 "G₂[ζ₃]"
 "G₂[ζ₃²]"

julia> charnames(uc;TeX=true)
10-element Vector{String}:
 "\phi_{1,0}"
 "\phi_{1,6}"
 "\phi_{1,3}'"
 "\phi_{1,3}''"
 "\phi_{2,1}"
 "\phi_{2,2}"
 "G_2[-1]"
 "G_2[1]"
 "G_2[\zeta_3]"
 "G_2[\zeta_3^2]"

One can control the display of unipotent characters in various ways by IOContext properties. In the display, the row labels are the names of the unipotent characters. The possible columns are numbered as follows:

  1. The index of the character in the list of unipotent characters.
  2. The degree of the unipotent character.
  3. The degree of the corresponding almost character.
  4. for imprimitive groups, the symbol attached to the unipotent character.
  5. The eigenvalue of Frobenius attached to the unipotent character.
  6. The parameter the character has in its Lusztig family.

Which columns are displayed can be controlled by the property :cols (default [2,3,5,6] and 4 when applicable).

In addition if ':byfamily=true', the characters are displayed family by family instead of in index order. Finally, the properties rows and columnrepartition of format can be set, giving more tuning of the table.

julia> W=coxgroup(:B,2)
B₂

julia> uc=UnipotentCharacters(W)
UnipotentCharacters(B₂)
┌───┬──────────────────────────────────┐
│γ  │n₀ Deg(γ) Feg   Symbol Fr(γ) label│
├───┼──────────────────────────────────┤
│11.│ 1  qΦ₄/2  q²   (12,0)     1   +,-│
│1.1│ 2 qΦ₂²/2 qΦ₄   (02,1)     1   +,+│
│.11│ 3     q⁴  q⁴ (012,12)     1      │
│2. │ 4      1   1     (2,)     1      │
│.2 │ 5  qΦ₄/2  q²   (01,2)     1   -,+│
│B₂ │ 6 qΦ₁²/2   0   (012,)    -1   -,-│
└───┴──────────────────────────────────┘
julia> xdisplay(uc;byfamily=true)
┌────┬──────────────────────────────────┐
│γ   │n₀ Deg(γ) Feg   Symbol Fr(γ) label│
├────┼──────────────────────────────────┤
│11. │ 1  qΦ₄/2  q²   (12,0)     1   +,-│
│1.1ˢ│ 2 qΦ₂²/2 qΦ₄   (02,1)     1   +,+│
│.2  │ 5  qΦ₄/2  q²   (01,2)     1   -,+│
│B₂  │ 6 qΦ₁²/2   0   (012,)    -1   -,-│
├────┼──────────────────────────────────┤
│2.  │ 4      1   1     (2,)     1      │
├────┼──────────────────────────────────┤
│.11 │ 3     q⁴  q⁴ (012,12)     1      │
└────┴──────────────────────────────────┘

julia> xdisplay(uc;cols=[1,4])
UnipotentCharacters(B₂)
┌───┬───────────┐
│γ  │n₀   Symbol│
├───┼───────────┤
│11.│ 1   (12,0)│
│1.1│ 2   (02,1)│
│.11│ 3 (012,12)│
│2. │ 4     (2,)│
│.2 │ 5   (01,2)│
│B₂ │ 6   (012,)│
└───┴───────────┘
source
Chevie.PermRoot.degreesMethod

degrees(uc::UnipotentCharacters,q=Pol())

Returns the list of degrees of the unipotent characters of the finite reductive group (or Spetses) with Weyl group (or Spetsial reflection group) W, evaluated at q.

julia> W=coxgroup(:G,2)
G₂

julia> uc=UnipotentCharacters(W);

julia> degrees(uc)
10-element Vector{Pol{Rational{Int64}}}:
 1
 q⁶
 (1//3)q⁵+(1//3)q³+(1//3)q
 (1//3)q⁵+(1//3)q³+(1//3)q
 (1//6)q⁵+(1//2)q⁴+(2//3)q³+(1//2)q²+(1//6)q
 (1//2)q⁵+(1//2)q⁴+(1//2)q²+(1//2)q
 (1//2)q⁵+(-1//2)q⁴+(-1//2)q²+(1//2)q
 (1//6)q⁵+(-1//2)q⁴+(2//3)q³+(-1//2)q²+(1//6)q
 (1//3)q⁵+(-2//3)q³+(1//3)q
 (1//3)q⁵+(-2//3)q³+(1//3)q
source
Chevie.Uch.CycPoldegreesFunction

CycPoldegrees(uc::UnipotentCharacters)

Taking advantage that the degrees of unipotent characters of the finite reductive group (or Spetses) with Weyl group (or Spetsial reflection group) W are products of cyclotomic polynomials, this function returns these degrees as a list of CycPols. It is faster than CycPol.(degrees(uc)).

julia> W=coxgroup(:G,2)
G₂

julia> CycPoldegrees(UnipotentCharacters(W))
10-element Vector{CycPol{Rational{Int64}}}:
 1
 q⁶
 qΦ₃Φ₆/3
 qΦ₃Φ₆/3
 qΦ₂²Φ₃/6
 qΦ₂²Φ₆/2
 qΦ₁²Φ₃/2
 qΦ₁²Φ₆/6
 qΦ₁²Φ₂²/3
 qΦ₁²Φ₂²/3
source
Chevie.Uch.unipotent_characterFunction

unipotent_character(W,l) or unichar(W,l)

Constructs an object representing the unipotent character specified by l of the algebraic group associated to the Coxeter group or Coxeter coset specified by W. There are 3 possibilities for l: if it is an integer, the l-th unipotent character of W is returned. If it is a string, the unipotent character of W whose name is l is returned (where the names are as given by charnames(UnipotentCharacters(W))). Finally, l can be a list of length the number of unipotent characters of W, which specifies the coefficient to give to each unipotent character.

julia> W=coxgroup(:G,2)
G₂

julia> u=unichar(W,7)
[G₂]:<G₂[-1]>

julia> v=unichar(W,"G2[E3]")
[G₂]:<G₂[ζ₃]>

julia> w=unichar(W,[1,0,0,-1,0,0,2,0,0,1])
[G₂]:<φ₁‚₀>-<φ″₁‚₃>+2<G₂[-1]>+<G₂[ζ₃²]>

julia> unichar(W,fourier(UnipotentCharacters(W))[3,:])
[G₂]:2//3<φ′₁‚₃>-1//3<φ″₁‚₃>+1//3<φ₂‚₁>+1//3<G₂[1]>-1//3<G₂[ζ₃]>-1//3<G₂[ζ₃²]>

The last line shows the almost character associated to the 3rd unipotent character of W.

some limited arithmetic is available on unipotent characters:

julia> coefficients(u) # so that u==unichar(W,coefficients(u))
10-element Vector{Int64}:
 0
 0
 0
 0
 0
 0
 1
 0
 0
 0

julia> w-2u
[G₂]:<φ₁‚₀>-<φ″₁‚₃>+<G₂[ζ₃²]>

julia> scalar_product(w,w)
7

julia> degree(w)
Pol{Int64}: q⁵-q⁴-q³-q²+q+1
source
Base.showMethod

Base.show(io::IO,w::UniChar)

The formatting of unipotent characters is affected by IO property :compact . If true (the default) they are printed in a compact form. Otherwise, they are printed one unipotent character per line:

julia> xdisplay(w;compact=false)
[G₂]:
<φ₁‚₀>    1
<φ₁‚₆>    0
<φ′₁‚₃>   0
<φ″₁‚₃>   -1
<φ₂‚₁>    0
<φ₂‚₂>    0
<G₂[-1]>  2
<G₂[1]>   0
<G₂[ζ₃]>  0
<G₂[ζ₃²]> 1
source
Chevie.Uch.deligne_lusztig_characterFunction

deligne_lusztig_character(W,w) or dlchar(W,w)

This function returns the Deligne-Lusztig character $R_𝐓 ^𝐆 (1)$ of the algebraic group 𝐆 associated to the Coxeter group or Coxeter coset W. The torus 𝐓 can be specified in 3 ways: if w is an integer, it represents the w-th conjugacy class (or phi-conjugacy class for a coset ) of W. Otherwise w can be a word or an element of W, and it represents the class (or ϕ-class) of w.

julia> W=coxgroup(:G,2)
G₂

julia> dlchar(W,3)
[G₂]:<φ₁‚₀>-<φ₁‚₆>-<φ′₁‚₃>+<φ″₁‚₃>

julia> dlchar(W,W(1))
[G₂]:<φ₁‚₀>-<φ₁‚₆>-<φ′₁‚₃>+<φ″₁‚₃>

julia> dlchar(W,[1])
[G₂]:<φ₁‚₀>-<φ₁‚₆>-<φ′₁‚₃>+<φ″₁‚₃>

julia> dlchar(W,[1,2])
[G₂]:<φ₁‚₀>+<φ₁‚₆>-<φ₂‚₁>+<G₂[-1]>+<G₂[ζ₃]>+<G₂[ζ₃²]>
source
Chevie.Uch.deligne_lusztigCharTableFunction

deligne_lusztigCharTable(W) or dlCharTable(W)

for each conjugacy class of W, gives the decomposition of R_{T_w}^G in unipotent characters.

julia> dlCharTable(W)
6×10 Matrix{Int64}:
 1   1   1   1   2   2   0   0   0   0
 1  -1   1  -1   0   0   0   0   0   0
 1  -1  -1   1   0   0   0   0   0   0
 1   1   0   0  -1   0   1   0   1   1
 1   1   0   0   0  -1   0   1  -1  -1
 1   1  -1  -1   0   0  -2  -2   0   0
source
Chevie.Uch.almost_characterFunction

almost_character(W,i) or almostchar(W,i)

This function returns the i-th almost unipotent character of the algebraic group 𝐆 associated to the Coxeter group or Coxeter coset W. If φ is the i-th irreducible character of W, the i-th almost character is $R_φ=W⁻¹∑_{w∈ W} φ(w) R_{𝐓_w}^𝐆 (1)$ where $𝐓_w$ is the maximal torus associated to the conjugacy class (or ϕ-conjugacy class for a coset) of w.

julia> W=coxgroup(:B,2)
B₂

julia> almostchar(W,3)
[B₂]:<.11>

julia> almostchar(W,1)
[B₂]:1//2<11.>+1//2<1.1>-1//2<.2>-1//2<B₂>
source
Chevie.Uch.on_unipotentsFunction

on_unipotents(W,aut)

W is a reflection group or reflection coset representing a finite reductive group $𝐆 ^F$, and aut is an automorphism of $𝐆 ^F$ (for W a permutation group, this can be given as a permutation of the roots). The function returns the permutation of the unipotent characters of $𝐆 ^F$ induced by aut. This makes sense for Spetsial complex reflection groups and is implemented for them.

julia> WF=rootdatum("3D4")
³D₄

julia> on_unipotents(Group(WF),WF.phi)
(1,7,2)(8,12,9)
source
Chevie.Uch.deligne_lusztig_lefschetzFunction

deligne_lusztig_lefschetz(h,m=0) or dllefschetz(h,m=0)

Here h is an element of a Hecke algebra associated to a Coxeter group W or Coxeter coset which itself is associated to an algebraic group 𝐆. By (Digne and Michel, 1985), for $g∈ 𝐆^F$, the number of fixed points of Fᵐ on the Deligne-Lusztig variety associated to the element wϕ∈Wϕ, have for m divisible by a sufficently large integer d, the form $∑_φ φ_{(qᵐ)}(T_wϕ)R_φ(g)$ where φ runs over the irreducible characters of $Wϕ$, where $R_φ$ is the corresponding almost character, and where $φ_{(qᵐ)}$ is a character value of the Hecke algebra $H(Wϕ,qᵐ)$ of $Wϕ$ with parameter qᵐ. This expression is called the Lefschetz character of the Deligne-Lusztig variety. If we consider qᵐ as an indeterminate x, it can be seen as a sum of unipotent characters with coefficients character values of the generic Hecke algebra $H(Wϕ,x)$. A more complicated formula involving the eigenvalues of Frobenius attached to unipotent characters applies for m not prime to d. The function returns this formula when a second parameter m≠0 is given.

The function 'dllefschetz' takes as argument a Hecke element and returns the corresponding Lefschetz character. This is defined on the whole of the Hecke algebra by linearity. The Lefschetz character of various varieties related to Deligne-Lusztig varieties, like their completions or desingularisation, can be obtained by taking the Lefschetz character at various elements of the Hecke algebra.

julia> W=coxgroup(:A,2)
A₂

julia> H=hecke(W,Pol(:q))
hecke(A₂,q)

julia> T=Tbasis(H);

julia> dllefschetz(T(1,2))
[A₂]:<111>-q<21>+q²<3>

julia> dllefschetz((T(1)+T())*(T(2)+T()))
[A₂]:q<21>+(q²+2q+1)<3>

The last line shows the Lefschetz character of the Samelson-Bott desingularisation of the Coxeter element Deligne-Lusztig variety.

We now show an example with a coset (corresponding to the unitary group).

julia> H=hecke(spets(W,Perm(1,2)),Pol(:q)^2)
hecke(²A₂,q²)

julia> T=Tbasis(H);dllefschetz(T(1))
[²A₂]:-<11>-q<²A₂>+q²<2>

Finally, there is a second form dllefschetz(H::HeckeAlgebra,w,i=0) where the arguments are a Hecke algebra and an element of w. This may be used for Spetses where we know the column of the CharTable of H for w but not other columns of the spetsial Hecke algebra charcater table.

source
Chevie.Uch.lusztig_induceFunction

lusztig_induce(W,u)

u should be a unipotent character of a parabolic subcoset of the Coxeter coset W. It represents a unipotent character λ of a Levi 𝐋 of the algebraic group 𝐆 attached to W. The program returns the Lusztig induced $R_𝐋^𝐆(λ)$.

julia> W=coxgroup(:G,2)
G₂

julia> WF=spets(W)
G₂

julia> T=subspets(WF,Int[],W(1))
G₂₍₎=Φ₁Φ₂

julia> u=unichar(T,1)
[G₂₍₎=Φ₁Φ₂]:<Id>

julia> lusztig_induce(WF,u)
[G₂]:<φ₁‚₀>-<φ₁‚₆>-<φ′₁‚₃>+<φ″₁‚₃>

julia> dlchar(W,W(1))
[G₂]:<φ₁‚₀>-<φ₁‚₆>-<φ′₁‚₃>+<φ″₁‚₃>
source
Chevie.Uch.lusztig_restrictFunction

lusztig_restrict(R,u)

u should be a unipotent character of a parent Coxeter coset W of which R is a parabolic subcoset. It represents a unipotent character γ of the algebraic group 𝐆 attached to W, while R represents a Levi subgroup L. The program returns the Lusztig restriction $*R_𝐋^𝐆(γ)$.

julia> W=coxgroup(:G,2)
G₂

julia> WF=spets(W)
G₂

julia> T=subspets(WF,Int[],W(1))
G₂₍₎=Φ₁Φ₂

julia> u=dlchar(W,W(1))
[G₂]:<φ₁‚₀>-<φ₁‚₆>-<φ′₁‚₃>+<φ″₁‚₃>

julia> lusztig_restrict(T,u)
[G₂₍₎=Φ₁Φ₂]:4<Id>

julia> T=subspets(WF,Int[],W(2))
G₂₍₎=Φ₁Φ₂

julia> lusztig_restrict(T,u)
[G₂₍₎=Φ₁Φ₂]:0
source
Chevie.Lusztig.lusztig_induction_tableFunction

lusztig_induction_table(R,W)

R should be a parabolic subgroup of the Coxeter group W or a parabolic subcoset of the Coxeter coset W, in each case representing a Levi subgroup 𝐋 of the algebraic group 𝐆 associated to W. The function returns an InductionTable representing the Lusztig induction $R_𝐋^𝐆$ between unipotent characters.

julia> W=coxgroup(:B,3)
B₃

julia> t=twistings(W,[1,3])
2-element Vector{Spets{FiniteCoxeterSubGroup{Perm{Int16},Int64}}}:
 B₃₍₁₃₎=Ã₁×A₁Φ₁
 B₃₍₁₃₎=Ã₁×A₁Φ₂

julia> lusztig_induction_table(t[2],W)
Lusztig induction from B₃₍₁₃₎=Ã₁×A₁Φ₂ to B₃
┌─────┬───────────────────────┐
│     │11⊗ 11 11⊗ 2 2⊗ 11 2⊗ 2│
├─────┼───────────────────────┤
│111. │     1    -1    -1    .│
│11.1 │    -1     .     1   -1│
│1.11 │     .     .    -1    .│
│.111 │    -1     .     .    .│
│21.  │     .     .     .    .│
│1.2  │     1    -1     .    1│
│2.1  │     .     1     .    .│
│.21  │     .     .     .    .│
│3.   │     .     .     .    1│
│.3   │     .     1     1   -1│
│B₂:2 │     .     .     1   -1│
│B₂:11│     1    -1     .    .│
└─────┴───────────────────────┘
source
Chevie.FamiliesModule

Families of unipotent characters

The blocks of the (rectangular) matrix $⟨Rᵪ,ρ⟩_{𝐆 ^F}$ when χ runs over Irr(W) and ρ runs over the unipotent characters, are called the Lusztig families. When 𝐆 is split and W is a Coxeter group they correspond on the Irr(W) side to two-sided Kazhdan-Lusztig cells – for split Spetses they correspond to Rouquier blocks of the Spetsial Hecke algebra. The matrix of scalar products $⟨Rᵪ,ρ⟩_{𝐆 ^F}$ can be completed to a square matrix $⟨A_{ρ'},ρ⟩_{𝐆 ^F}$ where $A_{ρ'}$ are the characteristic functions of character sheaves on $𝐆 ^F$; this square matrix is called the Fourier matrix of the family.

The UnipotentCharacters object in Chevie has a property families, a vector of Family objects containing information on each family, including the Fourier matrix. Here is an example.

julia> W=coxgroup(:G,2)
G₂

julia> uc=UnipotentCharacters(W);

julia> uc.families
3-element Vector{Family}:
 Family(D(𝔖 ₃),[5, 6, 4, 3, 8, 7, 9, 10],ennola=-5)
 Family(C₁,[1])
 Family(C₁,[2])

julia> uc.families[1]
Family(D(𝔖 ₃)) Drinfeld double of 𝔖 ₃, Lusztig′s version
┌────────┬───────────────────────────────────────────────────────┐
│label   │no eigen                                               │
├────────┼───────────────────────────────────────────────────────┤
│(1,1)*  │ 5     1 1//6  1//2  1//3  1//3  1//6  1//2  1//3  1//3│
│(g₂,1)  │ 6     1 1//2  1//2     .     . -1//2 -1//2     .     .│
│(g₃,1)  │ 4     1 1//3     .  2//3 -1//3  1//3     . -1//3 -1//3│
│(1,ρ)   │ 3     1 1//3     . -1//3  2//3  1//3     . -1//3 -1//3│
│(1,ε)-e │ 8     1 1//6 -1//2  1//3  1//3  1//6 -1//2  1//3  1//3│
│(g₂,ε)  │ 7    -1 1//2 -1//2     .     . -1//2  1//2     .     .│
│(g₃,ζ₃) │ 9    ζ₃ 1//3     . -1//3 -1//3  1//3     .  2//3 -1//3│
│(g₃,ζ₃²)│10   ζ₃² 1//3     . -1//3 -1//3  1//3     . -1//3  2//3│
└────────┴───────────────────────────────────────────────────────┘

julia> charnames(uc)[uc.families[1].charNumbers]
8-element Vector{String}:
 "phi2,1"
 "phi2,2"
 "phi1,3''"
 "phi1,3'"
 "G2[1]"
 "G2[-1]"
 "G2[E3]"
 "G2[E3^2]"

The Fourier matrix is obtained by fourier(f); charnumbers(f) returns the indices of the unipotent characters which are in the family. We obtain the list of eigenvalues of Frobenius for these unipotent characters by eigen(f). special(f) (resp. cospecial(f)) returns the index in f of the special (resp. cospecial) character.The Fourier matrix and vector of eigenvalues satisfy the properties of fusion data, see below. The field f.charLabels is what is displayed in the column labels when displaying the family. It contains labels naturally attached to lines of the Fourier matrix. In the case of reductive groups, the family is always attached to the drinfeld_double of a small finite group and the .charLabels come from this construction.

Methods for families include * (tensor product), conj (see galois), length (the number of unipotent characters in the family), Zbasedring

source
Chevie.Families.FamilyType

Family(f [, charNumbers] ; opt)

This function creates a new family in two possible ways.

In the first case f is a string or a symbol which denotes a family known to Chevie. Examples are :S3, :S4, :S5 which denote the family obtained as the Drinfeld double of the symmetric group on 3,4,5 elements, or :C2 which denotes the Drinfeld double of the cyclic group of order 2.

In the second case f is already a struct Family.

If given, the second argument becomes f.charNumbers. If given, the opt are added as fields to the resulting family.

If opt has a key signs, this should be a list of '1' and '-1', and then the Fourier matrix is conjugated by the diagonal matrix of those signs. This is used in Spetses to adjust the matrix to the choice of signs of unipotent degrees.

julia> Family(:C2)
Family(C₂) Drinfeld double D(ℤ/2)
┌──────┬────────────────────────────┐
│label │eigen                       │
├──────┼────────────────────────────┤
│(1,1)*│    1 1//2  1//2  1//2  1//2│
│(g₂,1)│    1 1//2  1//2 -1//2 -1//2│
│(1,ε) │    1 1//2 -1//2  1//2 -1//2│
│(g₂,ε)│   -1 1//2 -1//2 -1//2  1//2│
└──────┴────────────────────────────┘

julia> Family(:C2,4:7;signs=[1,-1,1,-1])
Family(C₂) Drinfeld double D(ℤ/2)
┌──────┬─────────────────────────────────────┐
│label │no eigen signs                       │
├──────┼─────────────────────────────────────┤
│(1,1)*│ 4     1     1  1//2 -1//2 1//2 -1//2│
│(g₂,1)│ 5     1    -1 -1//2  1//2 1//2 -1//2│
│(1,ε) │ 6     1     1  1//2  1//2 1//2  1//2│
│(g₂,ε)│ 7    -1    -1 -1//2 -1//2 1//2  1//2│
└──────┴─────────────────────────────────────┘
source
CyclotomicNumbers.galoisMethod

galois(f::Family,p::Int)

x->galois(x,p) is applied to the Fourier matrix and eigenvalues of Frobenius of the family.

julia> f=UnipotentCharacters(complex_reflection_group(3,1,1)).families[2]
Family(0011) imprimitive family
┌─────┬───────────────────────────────────────┐
│label│no eigen signs      1       2#       3*│
├─────┼───────────────────────────────────────┤
│1    │ 4   ζ₃²    -1  √-3/3    √-3/3   -√-3/3│
│2#   │ 3     1     1  √-3/3 ζ₃²√-3/3 -ζ₃√-3/3│
│3*   │ 2     1     1 -√-3/3 -ζ₃√-3/3 ζ₃²√-3/3│
└─────┴───────────────────────────────────────┘

julia> galois(f,-1)
Family(conj(0011)) conj(imprimitive family)
┌─────┬───────────────────────────────────────┐
│label│no eigen signs      1       2#       3*│
├─────┼───────────────────────────────────────┤
│1    │ 4    ζ₃    -1 -√-3/3   -√-3/3    √-3/3│
│2#   │ 3     1     1 -√-3/3 -ζ₃√-3/3 ζ₃²√-3/3│
│3*   │ 2     1     1  √-3/3 ζ₃²√-3/3 -ζ₃√-3/3│
└─────┴───────────────────────────────────────┘
source
PermGroups.Perms.invpermuteMethod

invpermute(f::Family, p::Union{Perm,SPerm})

returns a copy of f with the Fourier matrix, eigenvalues of Frobenius, :charLabels… invpermuted by p.

julia> f=UnipotentCharacters(complex_reflection_group(3,1,1)).families[2]
Family(0011) imprimitive family
┌─────┬───────────────────────────────────────┐
│label│no eigen signs      1       2#       3*│
├─────┼───────────────────────────────────────┤
│1    │ 4   ζ₃²    -1  √-3/3    √-3/3   -√-3/3│
│2#   │ 3     1     1  √-3/3 ζ₃²√-3/3 -ζ₃√-3/3│
│3*   │ 2     1     1 -√-3/3 -ζ₃√-3/3 ζ₃²√-3/3│
└─────┴───────────────────────────────────────┘

julia> invpermute(f,Perm(1,2,3))
Family(0011) permuted((1,2,3),imprimitive family)
┌─────┬───────────────────────────────────────┐
│label│no eigen signs       3*      1       2#│
├─────┼───────────────────────────────────────┤
│3*   │ 2     1     1 ζ₃²√-3/3 -√-3/3 -ζ₃√-3/3│
│1    │ 4   ζ₃²    -1   -√-3/3  √-3/3    √-3/3│
│2#   │ 3     1     1 -ζ₃√-3/3  √-3/3 ζ₃²√-3/3│
└─────┴───────────────────────────────────────┘
source
Base.conjMethod

conj(f::Family): is a synonym for 'galois(f,-1)'.

source
Base.lengthMethod

length(f::Family): how many characters are in the family.

source
Chevie.Families.drinfeld_doubleFunction

drinfeld_double(g;lu=false,pivotal=nothing)

Given a (usually small) finite group Γ, Lusztig has associated a family (a Fourier matrix, a list of eigenvalues of Frobenius) which describes the representation ring of the Drinfeld double of the group algebra of Γ, and for some appropriate small groups describes a family of unipotent characters. We do not explain the details of this construction, but explain how its final result building Lusztig's Fourier matrix, and a variant of it that we use in Spetses, from Γ.

The elements of the family are in bijection with the set 𝓜 (Γ) of pairs (x,φ) taken up to Γ-conjugacy, where x∈Γ and φ is an irreducible complex-valued character of C_Γ(x). To such a pair ρ=(x,φ) is associated an eigenvalue of Frobenius defined by $ω_ρ:=φ(x)/φ(1)$. Lusztig then defines a Fourier matrix S₀ whose coefficient is given, for ρ=(x,φ) and ρ'=(x', φ'), by:

${S_0}_{\rho,\rho'}:=|C_Γ(x)⁻¹|∑_{\rho_1=(x_1,φ_1)}φ_1(x)φ(y_1)$

where the sum is over all pairs ρ₁∈𝓜 (Γ) which are Γ-conjugate to ρ' and such that $y₁∈ C_Γ(x)$. This coefficient also represents the scalar product $⟨ρ,ρ'⟩_{𝐆^F}$ of the corresponding unipotent characters.

A way to understand the formula for ${S_0}_{\rho,\rho'}$ better is to consider another basis of the complex vector space with basis 𝓜 (Γ), indexed by the pairs (x,y) taken up to Γ-conjugacy, where x and y are commuting elements of Γ. This basis is called the basis of Mellin transforms, and given by:

$(x,y)=∑_{φ∈ Irr(C_Γ(x))}φ(y)(x,φ)$

In the basis of Mellin transforms, the linear map S₀ is given by (x,y)↦(x⁻¹,y⁻¹) and the linear transformation T which sends ρ to ω_ρρ becomes (x,y)↦(x,xy). These are particular cases of the permutation representation of GL₂(ℤ) on the basis of Mellin transforms where $\begin{pmatrix}a&b\cr c&d\end{pmatrix}$ acts by (x,y)↦(xᵃyᵇ,xᶜyᵈ).

Fourier matrices in finite reductive groups are given by the above matrix S₀. But for non-rational Spetses, we use a different matrix S which in the basis of Mellin transforms is given by (x,y)↦(y⁻¹,x). Equivalently, the formula $S_{ρ,ρ'}$ differs from the formula for ${S_0}_{ρ,ρ'}$ in that there is no complex conjugation of χ₁; thus the matrix S is equal to S₀ multiplied on the right by the permutation matrix which corresponds to (x,φ)↦(x,φ). The advantage of the matrix S over S₀ is that the pair S,T satisfies directly the axioms for fusion data (see below); also the matrix S is symmetric, while S₀ is Hermitian.

Thus there are two variants of drinfeld_double:

drinfeld_double(g;lu=false)

returns a family containing Lusztig's Fourier matrix S₀, and an extra field '.perm' containing the permutation of the indices induced by (x,φ)↦(x,φ), which allows to recover S, as well as an extra field `:lusztig', set to 'true'.

drinfeld_double(g)

returns a family with the matrix S, which does not have fields '.lusztig' or '.perm'.

The family object 'f' returned also has the properties:

  • :group: the group Γ.

  • :charLabels: a list of labels describing the pairs (x,φ), and thus also specifying in which order they are taken.

  • :fourierMat: the Fourier matrix (the matrix S or S₀ depending on the call).

  • :eigenvalues: the eigenvalues of Frobenius.

  • :xy: a list of pairs (x,y) which are representatives of the Γ-orbits of pairs of commuting elements.

  • :mellinLabels: a list of labels describing the pairs (x,y).

  • :mellin: the base change matrix between the basis (x,φ) and the basis of Mellin transforms, so that f.fourierMat^(f.mellin^-1) is the permutation matrix (for (x,y)↦(y⁻¹,x) or (x,y)↦(y⁻¹,x⁻¹) depending on the call).

  • :special: the index of the special element, which is (x,φ)=(1,1).

julia> drinfeld_double(coxsym(3)) # needs "using GAP"
Family(drinfeld_double(coxsym(3))) Drinfeld double D(coxsym(3))
┌───────┬────────────────────────────────────────────────────┐
│label  │eigen                                               │
├───────┼────────────────────────────────────────────────────┤
│(1,1)* │    1  1//6  1//3 1//6 -1//2 -1//2  1//3  1//3  1//3│
│(1,X.2)│    1  1//3  2//3 1//3     .     . -1//3 -1//3 -1//3│
│(1,X.3)│    1  1//6  1//3 1//6  1//2  1//2  1//3  1//3  1//3│
│(21,1) │    1 -1//2     . 1//2  1//2 -1//2     .     .     .│
│(21,-1)│   -1 -1//2     . 1//2 -1//2  1//2     .     .     .│
│(3,1)  │    1  1//3 -1//3 1//3     .     .  2//3 -1//3 -1//3│
│(3,ζ₃²)│   ζ₃  1//3 -1//3 1//3     .     . -1//3 -1//3  2//3│
│(3,ζ₃) │  ζ₃²  1//3 -1//3 1//3     .     . -1//3  2//3 -1//3│
└───────┴────────────────────────────────────────────────────┘

julia> drinfeld_double(coxsym(3);lu=true)
Family(Ldrinfeld_double(coxsym(3))) Lusztig′sDrinfeld double D(coxsym(3))
┌───────┬────────────────────────────────────────────────────┐
│label  │eigen                                               │
├───────┼────────────────────────────────────────────────────┤
│(1,1)* │    1  1//6  1//3 1//6 -1//2 -1//2  1//3  1//3  1//3│
│(1,X.2)│    1  1//3  2//3 1//3     .     . -1//3 -1//3 -1//3│
│(1,X.3)│    1  1//6  1//3 1//6  1//2  1//2  1//3  1//3  1//3│
│(21,1) │    1 -1//2     . 1//2  1//2 -1//2     .     .     .│
│(21,-1)│   -1 -1//2     . 1//2 -1//2  1//2     .     .     .│
│(3,1)  │    1  1//3 -1//3 1//3     .     .  2//3 -1//3 -1//3│
│(3,ζ₃²)│   ζ₃  1//3 -1//3 1//3     .     . -1//3  2//3 -1//3│
│(3,ζ₃) │  ζ₃²  1//3 -1//3 1//3     .     . -1//3 -1//3  2//3│
└───────┴────────────────────────────────────────────────────┘

The keyword pivotal describes the pivotal structure as a tuple of the pivotal element and the vector of values of the pivotal character on the generators of g.

source
Chevie.Families.ndrinfeld_doubleFunction

ndrinfeld_double(g)

This function returns the number of elements that the family associated to the Drinfeld double of the group g would have, without computing it. The evident advantage is the speed.

julia> Families.ndrinfeld_double(complex_reflection_group(5))
378
source
Chevie.Families.family_imprimitiveFunction

family_imprimitive(S)

S should be a symbol for a unipotent characters of an imprimitive complex reflection group 'G(e,1,n)' or 'G(e,e,n)'. The function returns the family containing S.

julia> family_imprimitive([[0,1],[1],[0]])
Family(0011) imprimitive family
┌─────┬──────────────────────────────┐
│label│eigen      1       2#       3*│
├─────┼──────────────────────────────┤
│1    │  ζ₃²  √-3/3   -√-3/3    √-3/3│
│2#   │    1 -√-3/3 ζ₃²√-3/3 -ζ₃√-3/3│
│3*   │    1  √-3/3 -ζ₃√-3/3 ζ₃²√-3/3│
└─────┴──────────────────────────────┘
source

family_imprimitive(ct,e)

returns the family attached to e-symbols with entries ct, following (Malle, 1995; §4 for G(e,1,n) and §6 for G(e,e,n)).

The Fourier matrix is as follows: Let F be the set of functions ct→0:e-1 which are injective restricted to a given value in ct, and with the sum of their values mod. e equal to m*binomial(e,2) where m=div(length(ct),e). Then for f∈F the list of preimages of f is an e-symbol S(f). Conversely for a symbol S there is a 'canonical' map f(S) which records the increasing positions in the symbol of each value in ct. Then Fourier(S,T)=C∑_{f∈F∣S(f)=S}ε(f)ε(f(T))ζₑ^{f*f(T)} where for f∈F with image f.(ct) ε(f)=(-1)^{number of non-inversions in the list f.(ct)} and f*f(T) is the scalar product of vectors f.(ct) and f(T).(ct). Finally C=ζ₄^(-m*(binomial(e+1,2)-1))//√e^(e*m).

source
Chevie.Families.FamiliesClassicalFunction

FamiliesClassical(l)

l should be a list of symbols which classify the unipotent characters of a classical reductive group, like symbols(2,r) for type Bᵣ or Cᵣ, or symbols(2,r,0) for type Dᵣ. The function returns the list of families determined by these symbols.

julia> FamiliesClassical(symbols(2,3)) # for a reductive group of type B₃
6-element Vector{Family}:
 Family(112,[2])
 Family(022,[6])
 Family(3,[9])
 Family(01123,[1, 3, 8, 11])
 Family(0112233,[4])
 Family(013,[5, 7, 10, 12])
source
Base.:*Method

f*g: returns the tensor product of two families f and g; the Fourier matrix is the Kronecker product of the matrices for f and g, and the eigenvalues of Frobenius are the pairwise products.

source
Chevie.Families.ZbasedringFunction

Zbasedring(f::Family) or Zbasedring(S,special=1)

All the Fourier matrices S in Chevie are unitary, that is S⁻¹=conj(S), and have a special line s (the line of index s=special(f) for a family f) such that no entry Sₛ,ᵢ is equal to 0. Further, they have the property that the sums Cᵢ,ⱼ,ₖ=sumₗ Sᵢ,ₗ Sⱼ,ₗ conj(Sₖ,ₗ)/Sₛ,ₗ take integral values. Finally, S has the property that complex conjugation does a permutation with signs σ of the lines of S.

It follows that we can define a -algebra A as follows: it has a basis bᵢ indexed by the lines of S, and has a multiplication defined by the fact that the coefficient of bᵢbⱼ on bₖ is equal to Cᵢ,ⱼ,ₖ. This algebra can be specified by giving a family f or just its Fourier matrix and the number of its special line.

A is commutative, and has as unit the element bₛ; the basis σ(bᵢ) is dual to bᵢ for the linear form (bᵢ,bⱼ)=Cᵢ,ⱼ,σ₍ₛ₎.

julia> W=complex_reflection_group(4)
G₄

julia> uc=UnipotentCharacters(W);f=uc.families[4];

julia> A=Zbasedring(fourier(f),1)
ℤ-based ring dim.5

julia> b=basis(A)
5-element Vector{AlgebraElt{Chevie.Families.ZBasedRing, Int64}}:
 B₁
 B₂
 B₃
 B₄
 B₅

julia> b*permutedims(b)
5×5 Matrix{AlgebraElt{Chevie.Families.ZBasedRing, Int64}}:
 B₁  B₂      B₃      B₄        B₅
 B₂  -B₄+B₅  B₁+B₄   B₂-B₃     B₃
 B₃  B₁+B₄   -B₄+B₅  -B₂+B₃    B₂
 B₄  B₂-B₃   -B₂+B₃  B₁+B₄-B₅  -B₄
 B₅  B₃      B₂      -B₄       B₁

julia> CharTable(A)
CharTable(ℤ-based ring dim.5)
┌───────────┬─────────────────┐
│centralizer│5    5    5  5  5│
├───────────┼─────────────────┤
│           │1    2    3  4  5│
├───────────┼─────────────────┤
│1          │1  √-3 -√-3  2 -1│
│2          │1    1    1  .  1│
│3          │1   -1   -1  .  1│
│4          │1    .    . -1 -1│
│5          │1 -√-3  √-3  2 -1│
└───────────┴─────────────────┘
source