atlas Library · Script File
W_reps_type_BC.at
types C and B
in this file we handle three kinds of objects
Orbit P: partition for nilpotent orbit of type C_n
(odd parts have even multiplicity)
[[int] f,[int] g]: symbol as defined by Lusztig
(Partition p, Partition q):
pair of partitions, |p|+|q|=n, corresponding to a Weyl group representation
note that symbol is of type [[int]] (always with two parts)
Hn_rep is of type ([int],[int]), both [int]s being partitionsDefinitions in source order
test_simple_BC
test_simple_BC(RootDatum rd) = voidthis test aborts via an assert, or returns void
Orbit type
set_type Orbit = Partition
Hn_rep type
set_type Hn_rep = BiPartition
all odd(C) or even(B) parts must have even multiplicity
hyperoctahedral representation: pair (triv,sign) of partitions; |p|+|q|=nL27
symbol_ranks
symbol_ranks (Symbol S) = (int,int)if S=(f,g) is a symbol for C_n then rank(f)=rank(g)=n, independently of equivalence classes of f and g rank(f)=sum f_i -n(n-1)/2
maps between |Orbit|s and |Hn_rep|s of |Symbol|sL35
The map from nilpotent Jordan types to |Hn_rep| should be such that the
regular nilpotent class [2n] (type $C_n$) or [2n+1] (type $B_n$) or [2n-1,1]
(type $D_n$) map to the trivial representation {n +|- }. Given that the
|BiPartition| produced by |core_quotient_2| has the partition form the
even-class (with an edge just after the main diagonal) before the partition
from the odd-class edges, this means partitions need to be swapped in type C.L37wrep
wrep (Orbit P) = Hn_repthis is correct in types B and C, see Carter pp. 421-422
symbol
symbol (Orbit P) = SymbolJordanType -> Symbol (normalised), injective maps separately for types B, C
One has |symbol(lambda)=symbol(wrep(lambda))| when |lambda| valid for B or C
also defined in combinatorics.at
symbol_C
symbol_C (Orbit P) = Symbolsymbol_B
symbol_B (Orbit P) = Symbol(orbit_C, orbit_B)
(orbit_C,orbit_B) = ((Symbol->Orbit),(Symbol->Orbit))orbit 2 overloads
orbit (string type,Symbol S) = Orbitorbit (RootDatum rd,Symbol S) = Orbitalso in this file at line 130, line 136; also defined in springer_tables.at, exceptional.at
large_symbol_C
large_symbol_C(Symbol S) = Symbollarge_symbol_B
large_symbol_B(Symbol S) = Symbollarge_symbol
large_symbol(RootDatum rd,Symbol S) = Symbolalso in this file at line 118
small_symbol_C
small_symbol_C(Symbol S_large) = Symbolsmall_symbol_B
small_symbol_B(Symbol S_large) = Symbolsmall_symbol
small_symbol(RootDatum rd,Symbol S_large) = Symbollarge_symbol
large_symbol (RootDatum rd,Hn_rep pair) = SymbolHn_rep to Symbol
also in this file at line 104
orbit_C
orbit_C (Hn_rep(lambda,mu)) = OrbitHn_rep -> Orbit, depends on type B/C
orbit_B
orbit_B (Hn_rep pair) = Orbitorbit 2 overloads
orbit(string type,Hn_rep pi) = Orbitorbit (RootDatum rd, Hn_rep pi) = Orbitalso in this file at line 90, line 94; also defined in springer_tables.at, exceptional.at
=
= (Hn_rep(a1,a2),Hn_rep(b1,b2)) = boolequality of Hn_reps
also defined in basic.at, combinatorics.at, modules.at, parabolics.at, synthetic.at, hash.at, tits.at, K_highest_weights.at, nilpotent_orbits.at, cyclotomic.at, polynomial.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, extended.at, disconnected.at, cyclotomic_Lie_algebra.at, cyclotomicMat.at, bracket.at
symbols_equal
symbols_equal(Symbol a,Symbol b) = boolequality of symbols (not equivalence)
hook_length
hook_length (Partition P, int i, int j) = intdim_rep
dim_rep (Partition P) = intdimension
dimension (Hn_rep(p,q)) = intusing hook length formula twice:
also defined in basic.at, finite_dimensional.at, K_highest_weights.at, nilpotent_orbits.at, character_tables.at, tensor_product.at, exceptional.at
all_reps_BC 2 overloads
all_reps_BC (int n) = [Hn_rep]all_reps_BC(RootDatum rd) = [Hn_rep]is_special 3 overloads
is_special (Symbol S) = boola (normalized) symbol is special if f_0<=g_0<= f_1...; this is the "raison d'etre" of |Symbol|
is_special (Hn_rep(nu,mu)) = boolis_special (Orbit P) = boolalso defined in combinatorics.at, springer_tables.at, exceptional.at
special_star 3 overloads
special_star (Symbol S) = stringspecial_star (Orbit P) = stringspecial_star (Hn_rep sigma) = stringalso defined in springer_tables.at
special_first
special_first([Symbol] symbols) = [Symbol]reorder a list of symbols to put a special one first, typically this is used when the special symbol is unique, but that isn't enforced
wreps
wreps(RootDatum rd) = [Hn_rep]wreps for B_n/C_n are the same: all (p,q) with |p|+|q|=n symbols are the same (apply symbol to (p,q))
also in this file at line 502
symbols
symbols (RootDatum rd) = [Symbol]large_symbols
large_symbols(RootDatum rd) = [Symbol]given a cell C, get list of tau invariants from it,
then construct the Levi set of C:
( [P_0,...,P_r], [Q_0,...,Q_s] )
P_i: partition of n
Q_i: labelled partition of n, i.e. partition of n with one part specified:
Q_i=([b0,...,bs],c) where c=bj for some j (not necessarily unique)
P_i=[a0,...,ar] -> Levi factor of type GL(a1)x...xGL(ar), with Weyl group
S_{a0}x...xS_{ar} (a1+...ar=n)
Q_i=([b0,...,bs],c) -> Levi factor GL(a1)x...xSp(2bj)x...xGL(bs)
with Weyl group S_{b0}x...x W(C_{bj}) x ... S_{bs} (b1+...+bs=n)
roots are labelled 0,...,n-1
If tau=[c_0,...,c_k] occurs in C, then this contributes to the Levi set of C:
c_k<n-1: type A Levi factor
c_k=n-1: type AC Levi factor
the Levi factor is obtained by grouping strings of adjacent c_j
each string of length t not including n gives GL(t+1), S_{t+1} factor in P
a string of length t including n gives Sp(2t), W(C_t)
for example in C_8 (roots labelled 0-7)
tau=[0,2,3,4] -> P=[4,2,1,1] (always add 1's at the end to add up to n)
tau=[1,2,3,5,6,7] -> Q=([4,3,1],3) -> GL(4)xSp(6)xGL(1)L216cut_off_string
cut_off_string ([int] v) = (int,[int])given v=[a_0,...,a_n] increasing, returns (j,[a_j,...,a_n])
where [a_0,...,a_{j-1}] is the longest string (of length j)
increasing by 1 at each step
given v=[a_0,...,a_n] increasing, returns (k,[a_0,...,a_{n-k}]) where
[a_{n-k+1},..,a_n] is the longest string (of length k)
increasing by 1 at each step
where [a_0,...,a_{j-1}] is the longest string (of length j)
increasing by 1 at each stepL252cut_off_last_string
cut_off_last_string ([int] v) = (int,[int])extract_strings
extract_strings ([int] v) = Partitiongiven v=[a1,...,am] (increasing) return [c1,...,cr]: length of strings in v for example [0, 1, 4,5, 7, 9,10,11,12] -> [4,2,2,1]
A_Levi_factor
A_Levi_factor (int rank, [int] tau) = Partitiontype A Levi factor(tau invariant): strings, padded with ones to make rank=n
ALf
ALf (int rank, [int] tau) = [int]AC_Levi_factor
AC_Levi_factor(int rank, [int] tau) = (int,Partition)AC Levi factor(tau invariant): size of the type C factor in the Levi type (assumed to be present), and partition giving all factor sizes (as in A_Levi_factor, A_i gives i+1 and completed by factors 1), type C included
ACLf
ACLf (int rank, [int] tau) = (Partition,int)get partition for type A factors, and rank of possible type C factor
is_max
is_max([[int]] taus,[int] tau) = boolmaximal (by inclusion)
max_only
max_only ([[int]] taus) = [[int]]maximal tau sets only, and without repetition
also defined in nilpotent_orbits.at
is_sorted_subset
is_sorted_subset ([int] a) = ([int] b) boolinclusion_maximals
inclusion_maximals ([[int]] taus) = [[int]]Levi_signature
Levi_signature (int rank,[[int]] tau_invariants) = ([Partition],[int,Partition])C_Levi_signature
C_Levi_signature (int rank,[[int]] tau_invariants) = [Partition,int]max_first_entry
max_first_entry ([Partition] v) = intkeep_by_first_entry
keep_by_first_entry ([Partition] v,int k) = [Partition]also in this file at line 381
keep_by_first_entry_and_truncate
keep_by_first_entry_and_truncate ([Partition] v,int k) = [Partition]also in this file at line 385
max_tagged_entry
max_tagged_entry ([int,Partition] v) = intkeep_by_first_entry
keep_by_first_entry ([int,Partition] v,int k) = [int,Partition]also in this file at line 368
keep_by_first_entry_and_truncate
keep_by_first_entry_and_truncate ([int,Partition] v,int k) = [int,Partition]also in this file at line 372
filter_max
filter_max ([Partition,int] sig) = (int,int,[Partition,int])find maxmimal part, maximal label, and filter to only maximal part owners
max_Hn_rep 2 overloads
max_Hn_rep (int rank,[[int]] tau_invariants) = Hn_repHeart of the matter, implements the Noel-Jackson algorithm Given a set of tau-invariants, gives a collection of Levi factors; find the unique irreducible W-rep containing the sign representation of precisely these Levis Note: tau_invariants=[[int]]:[] (in the inductive step signals done) is different from [[int]]:[[]] (gives the trivial rep, principal orbit
max_Hn_rep (Block B,[int] cell) = Hn_repmax_Hn_reps
max_Hn_reps (Block B,[[int]] cells) = [Hn_rep]print_Hn_rep_compact
print_Hn_rep_compact (Block B, [int] cell) = voidprint_Hn_reps_compact
print_Hn_reps_compact (Block B, [[int]] cells) = voidprint_Hn_rep
print_Hn_rep (Block B, [int] cell) = voidprint_Hn_reps
print_Hn_reps (Block B,[[int]] cells) = voidwrep 2 overloads
wrep (int rank,[[int]] tau_invariants) = Hn_repwrep (Block B,[int] cell) = Hn_repalso in this file at line 46
wreps
wreps (Block B,[[int]] cells) = [Hn_rep]also in this file at line 200
print_wrep_cpt
print_wrep_cpt (Block B, [int] cell) = voidprint_wrep
print_wrep(Block B, [int] cell) = voidprint_wreps_cpt
print_wreps_cpt (Block B,[[int]] cells) = voidprint_wreps
print_wreps (Block B,[[int]] cells) = voidshow_orbits_and_reps
show_orbits_and_reps(RootDatum rd)support
support(Symbol S) = [int]support of a symbol: multiset of entries
also defined in parabolics.at, nilpotent_orbits.at, cyclotomic_Lie_algebra.at, bracket.at
lusztig_cell_classical 2 overloads
lusztig_cell_classical(RootDatum rd,Symbol S_0) = [Symbol]lusztig_cell_classical(RootDatum rd,Hn_rep pi) = [Hn_rep]lusztig_cells_classical
lusztig_cells_classical(RootDatum rd) = [[Symbol]]springer_cell_classical 2 overloads
springer_cell_classical(RootDatum rd,Symbol large_symbol_S_0) = [Symbol]springer_cell_classical(RootDatum rd,Hn_rep pi) = [Hn_rep]springer_cells_classical
springer_cells_classical(RootDatum rd) = [[Symbol]]show_lusztig_cells_classical
show_lusztig_cells_classical (RootDatum rd) = voidshow_springer_cells_classical
show_springer_cells_classical (RootDatum rd) = voidGenerated from atlas-scripts at commit 648506c (2026-10-13).
Commented-out code, lines 376–378 (2 lines)