Symbols

Chevie.SymbolsModule

The combinatorial objects in this module are partitions, β-sets and symbols.

A partition is a non-increasing list of nonnegative integers p₁≥p₂≥…pₙ, represented as a Vector{Int}, which is normalized if it has no trailing zeroes. The functions for partitions in this module are

  • Partition(p₁,…,pₙ) or Partition([p₁,…,pₙ]) makes a Partition object from the list p₁,…,pₙ.
  • core(μ::Partition,e) which returns the e-core of μ.
  • quotient(μ::Partition,e) which returns the e-quotient of μ.
  • partition_core_quotient(μ::Partition,q) which recovers a partition given its e-core μ and its e-quotient q.

A β-set is a strictly increasing Vector of nonnegative integers, up to shift, the equivalence relation generated by the elementary shifts [b₁,…,bₙ]∼[0,1+b₁,…,1+bₙ]. An equivalence class has exactly one member which does not contain 0: it is called a normalized β-set.

To a normalized partition p₁≥p₂≥…pₙ>0 is associated a β-set, whose normalized representative is pₙ,pₙ₋₁+1,…,p₁+n-1. A mnemonic is that this is the areas of the hooks in the Young diagram going up along the first column. Conversely, to each β-set b₁<b₂<…<bₙ is associated the partition bₙ-n+1≥…≥b₂-1≥b₁, which may have some trailing zeros if starting from a non-normalized representative.

The functions for βsets in this module are

  • βset which constructs a normalized βset from a partition.
  • shiftβ which shifts a βset
  • partβ which constructs a partition from a βset

As a generalisation of β-sets, (Lusztig, 1977) has introduced 2-symbols and more general e-symbols were introduced in (Malle, 1995). An e-symbol is a vector S=[S₁,…,Sₑ] of β-sets, taken modulo the equivalence relation generated by the simultaneous elementary shift of all β-sets, and by cyclic permutations of S; in the particular case where e=2, S is thus an unordered pair of β-sets. S is a normalized symbol if 0 is not in the intersection of the Sᵢ; equivalent normalized symbols are equivalent by cyclic permutation. The content of S is mod(c,e) where c=sum(length.(S)); it is an invariant of the symbol, as well as the rank, defined for an e-symbol as sum(sum,S)-div((c-1)*(c-e+1),2*e). Invariant by shift but not cyclic permutation is the shape s.-minimum(s) where s=length.(S).

When e=2 we choose a normalized representative of a symbol [S₁,S₂] such that length(S₁)≥length(S₂), so the shape is [d,0] for some d≥0 called the defect of the symbol; the content is equal to mod(d,2). When d==0 we choose a normalized representative such that P₁≤P₂ lexicographically where P₁,P₂ are the partitions associated to S₁,S₂. For e>2 we choose the reduced representative, which means a symbol to all its cyclic permutations, where a symbol is < another if the shape length.(S) is lexicographically smaller and, if the shapes are the same, if the vector of βsets is lexicographically greater.

Partitions and pairs of partitions parametrize characters of the Weyl groups of classical types, and tuples of partitions parametrize characters of imprimitive complex reflection groups. 2-Symbols parametrize unipotent characters of classical Chevalley groups, and more general e-symbols parametrize unipotent characters of spetses associated to spetsial imprimitive complex reflection groups. The rank of a symbol is equal to the semi-simple rank of the corresponding Chevalley group or Spets.

Symbols of rank n and defect 0 parametrize characters of the Weyl group W(Dₙ), and symbols of rank n and defect≡0 (mod 4) parameterize unipotent characters of SO₂ₙ; symbols of rank n and defect≡2 (mod 4) parameterize unipotent characters of SO⁻₂ₙ. Symbols of rank n and defect 1 parametrize characters of the Weyl group W(Bₙ), and symbols of rank n and odd defect parametrize unipotent characters of Sp₂ₙ or SO₂ₙ₊₁.

To parametrize unipotent characters of spetses we need another statistic on symbols, the Malle-defect defined in (Malle, 1995) as mod(binomial(e,2)*div(sum(length.(S)),e)-dot(O:e-1,length.(S)),e). It is invariant under shift; it is invariant under circular permutation for symbols of content O but not for symbols of content 1; for these only one circular permutation has Malle-defect 0.

e-symbols of rank n and content 1 parameterize unipotent characters of the spets G(e,1,n). The principal series (in bijection with characters of the reflection group) is parametrized by symbols whose reduced representative has shape [1,0,…,0].

Unipotent characters of the spets G(e,e,n) are parametrized by e-symbols of content 0 and Malle-defect 0. The symbols for the principal series characters have shape [0,…,0].

Unipotent characters of the twisted spets ᵗG(e,e,n) are parametrized by e-symbols of rank n, content 0 and Malle-defect t.

In the above parametrizations, periodic symbols, that is symbols S such that the sequence S₁,…,Sₙ is a repetition k times of a shorter sequence, must be repeated k times. To distinguish the k copies, an additional parameter, a k-th root of unity, is attached to the symbol. As an example, here are the symbols for G₃,₃,₃:

julia> symbols(3,3,0)
12-element Vector{CharSymbol}:
 (1+)
 (1ζ₃)
 (1ζ₃²)
 (01,12,02)
 (01,02,12)
 (012,012,123)
 (0,1,2)
 (0,2,1)
 (01,01,13)
 (0,0,3)
 (012,,)
 (012,012,)

when the symbol has a period, only the period is shown, followed by the root of unity (where 1 is shown as + and -1 is shown as -.

The functions for symbols in this module are

  • CharSymbol, which constructs a symbol
  • Symbol_partition_tuple which constructs a symbol of a given shape from a partition tuple
  • rank which computes the rank of a symbol
  • defect which returns the defect of a 2-symbol
  • Malledefect which returns the Malle-defect of a symbol
  • core(l,ζₑʲ) which returns the (l,ζₑʲ)-core of a symbol
  • fakedegree, degree_feg, valuation_feg return the fake degree (resp. its degree and valuation) of the unipotent character parametrized by a symbol
  • gendeg, degree_gendeg, valuation_gendeg return the generic degree (resp. its degree and valuation) of the unipotent character parametrized by a symbol
  • symbols returns the list of symbols of a given length, rank and content.

Finally, in this module we also provides a function XSP which returns the "symbols" (pairs of vectors of increasing positive integers satisfying some conditions) $X̃^{ρ-s,s}_{n,d}$ defined by Lusztig and Spaltenstein which parametrize local systems on unipotent classes for classical reductive groups.

source
Chevie.Symbols.PartitionType

A Partition object is formed from a non-increasing list of integers ending with a number>0. The following two forms are equivalent for making a Partition object:

julia> Partition([2,1,1])
Partition: 211

julia> p=Partition(2,1,1)
Partition: 211

julia> length(p) # how many parts
3

julia> rank(p) # the sum of the parts
4

some basic operations on partitions is the union and the conjugate partition

julia> union(p,p)
Partition: 221111

julia> p'
Partition: 31

we get the i-th part by indexing with the convention that we get 0 for large i.

julia> p[1]
2

julia> p[4]
0

The partitions are ordered by rank, and then lexicographically.

source
Chevie.Symbols.shiftβFunction

shiftβ( β, n) shift the β-set β by n

julia> shiftβ([2,3],2)
4-element Vector{Int64}:
 0
 1
 4
 5

julia> shiftβ([0,1,4,5],-2)
2-element Vector{Int64}:
 2
 3
source

shiftβ(β) returns the unique normalized representative of β.

julia> shiftβ([0,1,4,5])
2-element Vector{Int64}:
 2
 3
source
Chevie.Symbols.βsetFunction

βset(p) normalized β-set of partition p

julia> βset([3,3,1])
3-element Vector{Int64}:
 1
 4
 5
source
Chevie.Symbols.string_partition_tupleFunction

string_partition_tuple(tuple)

converts the partition tuple tuple to a string where the partitions are separated by a dot.

julia> d=partition_tuples(3,2)
10-element Vector{Vector{Vector{Int64}}}:
 [[1, 1, 1], []]
 [[1, 1], [1]]
 [[1], [1, 1]]
 [[], [1, 1, 1]]
 [[2, 1], []]
 [[1], [2]]
 [[2], [1]]
 [[], [2, 1]]
 [[3], []]
 [[], [3]]

julia> string_partition_tuple.(d)
10-element Vector{String}:
 "111."
 "11.1"
 "1.11"
 ".111"
 "21."
 "1.2"
 "2.1"
 ".21"
 "3."
 ".3"
source
Chevie.Symbols.quotientFunction

quotient(μ::Partition,e) the e-quotient of the partition μ.

The e-quotient is best described in terms of βsets. Divide the βset of μ in e sets S₀,…,Sₑ₋₁ according to the congruence mod e. Replace Sᵢ by S'ᵢ={(x-i)/e∣x∈Sᵢ}. Then each S'ᵢ can be interpreted in turn as the βset of a partition. The resulting e-tuple of partitions is the e-quotient of mu.

julia> quotient(Partition(3,3,1),3)
3-element Vector{Vector{Int64}}:
 []
 []
 [1]
source
Chevie.Symbols.CharSymbolType

CharSymbol(v::Vector{Vector{Int}},repeat::Int=1,no::Int=0)

CharSymbol makes a vector of βsets into a symbol. If the vector of βsets has a period this is specified by giving a number repeats of repetitions and a number 0≤no<repat.

julia> CharSymbol([[1],Int[],[2]])
(1,,2)

julia> CharSymbol([[1],[1],[1]],3,2)
(1ζ₃²)
source
Chevie.Symbols.defectMethod

defect(s::CharSymbol)

For an e-symbol [S₁,S₂,…,Sₑ] returns length(S₁)-length(S₂).

julia> defect(CharSymbol([[1,5,6],[1,2]]))
1
source
Chevie.Symbols.MalledefectFunction

Malledefect(S::CharSymbol)

Malle-defect of S. This is an invariant by shift but not in general under cyclic permutations.

source
Chevie.Symbols.coreFunction

core(μ::Partition,e) the e-core of the partition μ.

It is the partition left after removing recursively all possible e-hooks from the young diagram of μ.

julia> core(Partition(3,3,1),3)
Partition: 211
source

core(s::CharSymbol,l,j=0) the (l,ζₑʲ) core of the e-symbol s

This core is obtained by removing recursively all possible (l,ζₑʲ)-hooks. An (l,ζₑʲ)-hook consists of, assuming x occurs in the i-th βset of s and x-l does not occur in the mod1(i+j,e)-th βset of s, removing x from the i-th β-set and adding x-l to the mod1(i+j,e)-th βset.

source
Chevie.Symbols.partition_core_quotientFunction

partition_core_quotient(c::Partition,q)

given a partition c and an e-tuple q of partitions, return a partition p of e-core c and e-quotient q.

julia> partition_core_quotient(Partition(2,1,1),[Int[],Int[],[1]])
Partition: 331
source
Chevie.Symbols.Symbol_partition_tupleFunction

Symbol_partition_tuple(p, s) symbol of shape s for partition tuple p.

In the general case, s is a Vector{Int} of same length as p and the i-th element of the result is the β-set for pᵢ shifted to be of length sᵢ (the minimal integer which makes this possible is added to s).

When s is a positive integer it is interpreted as [s,0,0,…] and a negative integer is interpreted as [0,-s,-s,…] so when p is a double partition one gets the symbol of defect s associated to p; as other uses the unipotent symbol for a character of the principal series of G(e,1,r) parameterized by an e-tuple p of partitions is Symbol_partition_tuple(p,1) and for G(e,e,r) the similar computation is Symbol_partition_tuple(p,0) (the function handles coded periodic p for G(e,e,r)).

julia> Symbol_partition_tuple([[2,1],[1]],1)
(13,1)

julia> Symbol_partition_tuple([[2,1],[1]],0)
(13,02)

julia> Symbol_partition_tuple([[2,1],[1]],-1)
(13,013)
source
Chevie.Symbols.fakedegreeMethod

fakedegree(S::CharSymbol,p=0)

returns as a CycPol the fake degree of the character of symbol S.

julia> fakedegree(CharSymbol([[1,5,6],[1,2]]))
q¹⁶Φ₅Φ₇Φ₈Φ₉Φ₁₀Φ₁₁Φ₁₄Φ₁₆Φ₁₈Φ₂₀Φ₂₂

If S is an e-symbol, when given a second argument p dividing e, and a first argument of shape (0,…,0) representing the restriction of the character to G(e,e,r), works for the coset G(e,e,r).s₁ᵖ.

source
Chevie.Symbols.degree_fegFunction

degree_feg(s::CharSymbol)

the degree of the fake degree of the character parameterized by the symbol s.

julia> degree_feg(CharSymbol([[1,5,6],[1,2]]))
88
source
Chevie.Symbols.valuation_fegFunction

valuation_feg(s::CharSymbol)

the valuation of the fake degree of the character parameterized by the symbol s.

julia> valuation_feg(CharSymbol([[1,5,6],[1,2]]))
16
source
Chevie.Symbols.gendegFunction

gendeg(S::CharSymbol)

returns as a CycPol the generic degree of the unipotent character parameterized by S.

julia> gendeg(CharSymbol([[1,2],[1,5,6]]))
q¹³Φ₅Φ₆Φ₇Φ₈²Φ₉Φ₁₀Φ₁₁Φ₁₄Φ₁₆Φ₁₈Φ₂₀Φ₂₂/2

works for spetses G(e,1,r), G(e,e,r), ᵗG(e,e,r)

see (Malle, 1995; 3.9 and 6.4).

source
Chevie.Symbols.degree_gendegFunction

degree_gendeg(S::CharSymbol)

the degree of the generic degree of the unipotent character parameterized by the symbol S.

julia> degree_gendeg(CharSymbol([[1,5,6],[1,2]]))
91
source
Chevie.Symbols.valuation_gendegFunction

valuation_gendeg(S::CharSymbol)

the valuation of the generic degree of the unipotent character parameterized by the symbol S.

julia> valuation_gendeg(CharSymbol([[1,5,6],[1,2]]))
13
source
Chevie.Symbols.symbolsFunction

symbols(e,r,content=1,Malledefect=0)

The list of e-symbols of rank r and given content and Malle-defect.

The symbols parametrize unipotent characters of:

  • G(d,1,r) : symbols(d,r)
  • G(e,e,r) : symbols(e,r,0).
  • G(e,e,r).s₁ᵗ where s₁ is the first generator of G(e,1,r) and t|e: symbols(e,r,0,t)

In particular we have

  • Aₙ : symbols(1,n)
  • Bₙ : symbols(2,n)
  • Dₙ : symbols(2,n,0)
  • ²Dₙ : symbols(2,n,0,1)
  • ²B₂ : symbols(4,2,0,1)
  • ²G₂ : symbols(6,2,0,1)
julia> symbols(2,4,0,1) # unipotent characters of ²D₄
10-element Vector{CharSymbol}:
 (123,0)
 (023,1)
 (0124,12)
 (01234,123)
 (13,)
 (013,2)
 (014,1)
 (0123,13)
 (04,)
 (012,3)
source
Chevie.Symbols.ennolaMethod

ennola(S::CharSymbol)

Ennola of e-symbol S (of content 1 or 0) The order of Ennola (order of center of reflection group) is computed automatically: it is e for content 1 and gcd(e,rank(S)) for content 0.

source
Chevie.Symbols.XSPFunction

XSP(ρ,s,n,even=false) Lusztig-Spaltenstein symbols.

returns the union of the (Lusztig and Spaltenstein, 1985) symbols $X̃^{ρ-s,s}_{n,d}$ for all d even when even=true, all d odd otherwise; these symbols parametrize local systems on unipotent conjugacy classes for classical groups. In (Lusztig, 2004; 13.2) the notation is ${}^ρ X^s_{n,d}$. The result is a vector of vectors, each inner vector regrouping the symbols in a similarity class (the local systems whose support is the same conjugacy class). If s==0, only positive defects d are considered.

  • XSP(2,1,n) gives Lusztig-Spaltenstein symbols for Sp₂ₙ
  • XSP(4,2,n) gives Lusztig-Spaltenstein symbols for Sp₂ₙ in char.2
  • XSP(2,0,n) gives Lusztig-Spaltenstein symbols for SO₂ₙ₊₁ of odd defect
  • XSP(2,0,n,true) gives Lusztig-Spaltenstein symbols for SO₂ₙ of even defect
  • XSP(4,0,n,true) gives Lusztig-Spaltenstein symbols for SO₂ₙ in char 2

Each Lusztig-Spaltenstein symbol is represented by a LocSys.

source