Documentation contents

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 partitions
Source
atlas-scripts/W_reps_type_BC.at (623 lines)
Definitions
83
Loads
Loaded by
sommers.at

Definitions in source order

test_simple_BC

L20test_simple_BC(RootDatum rd) = void
this test aborts via an assert, or returns void

Orbit type

L24
set_type Orbit = Partition

Hn_rep type

L26
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|=n
L27

symbol_ranks

L32symbol_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|s
L35
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.
L37

wrep

L46wrep (Orbit P) = Hn_rep
this is correct in types B and C, see Carter pp. 421-422

also in this file at line 464, line 499

symbol

L55symbol (Orbit P) = Symbol
JordanType -> 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

L65symbol_C (Orbit P) = Symbol

symbol_B

L67symbol_B (Orbit P) = Symbol

(orbit_C, orbit_B)

L70(orbit_C,orbit_B) = ((Symbol->Orbit),(Symbol->Orbit))

orbit 2 overloads

L90orbit (string type,Symbol S) = Orbit
L94orbit (RootDatum rd,Symbol S) = Orbit

also in this file at line 130, line 136; also defined in springer_tables.at, exceptional.at

large_symbol_C

L99large_symbol_C(Symbol S) = Symbol

large_symbol_B

L101large_symbol_B(Symbol S) = Symbol

large_symbol

L104large_symbol(RootDatum rd,Symbol S) = Symbol

also in this file at line 118

small_symbol_C

L108small_symbol_C(Symbol S_large) = Symbol

small_symbol_B

L110small_symbol_B(Symbol S_large) = Symbol

small_symbol

L112small_symbol(RootDatum rd,Symbol S_large) = Symbol

large_symbol

L118large_symbol (RootDatum rd,Hn_rep pair) = Symbol
Hn_rep to Symbol

also in this file at line 104

orbit_C

L122orbit_C (Hn_rep(lambda,mu)) = Orbit
Hn_rep -> Orbit, depends on type B/C

orbit_B

L126orbit_B (Hn_rep pair) = Orbit

orbit 2 overloads

L130orbit(string type,Hn_rep pi) = Orbit
L136orbit (RootDatum rd, Hn_rep pi) = Orbit

also in this file at line 90, line 94; also defined in springer_tables.at, exceptional.at

=

L142= (Hn_rep(a1,a2),Hn_rep(b1,b2)) = bool
equality 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

L145symbols_equal(Symbol a,Symbol b) = bool
equality of symbols (not equivalence)

hook_length

L147hook_length (Partition P, int i, int j) = int

dim_rep

L150dim_rep (Partition P) = int

dimension

L154dimension (Hn_rep(p,q)) = int
using 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

L157all_reps_BC (int n) = [Hn_rep]
L167all_reps_BC(RootDatum rd) = [Hn_rep]

is_special 3 overloads

L173is_special (Symbol S) = bool
a (normalized) symbol is special if f_0<=g_0<= f_1...;
this is the "raison d'etre" of |Symbol|
L176is_special (Hn_rep(nu,mu)) = bool
L182is_special (Orbit P) = bool

also defined in combinatorics.at, springer_tables.at, exceptional.at

special_star 3 overloads

L184special_star (Symbol S) = string
L185special_star (Orbit P) = string
L186special_star (Hn_rep sigma) = string

also defined in springer_tables.at

special_first

L192special_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

L200wreps(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

L210symbols (RootDatum rd) = [Symbol]

large_symbols

L213large_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)
L216

cut_off_string

L246cut_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 step
L252

cut_off_last_string

L259cut_off_last_string ([int] v) = (int,[int])

extract_strings

L268extract_strings ([int] v) = Partition
given 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

L272A_Levi_factor (int rank, [int] tau) = Partition
type A Levi factor(tau invariant): strings, padded with ones to make rank=n

ALf

L279ALf (int rank, [int] tau) = [int]

AC_Levi_factor

L291AC_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

L299ACLf (int rank, [int] tau) = (Partition,int)
get partition for type A factors, and rank of possible type C factor

is_max

L313is_max([[int]] taus,[int] tau) = bool
maximal (by inclusion)

max_only

L317max_only ([[int]] taus) = [[int]]
maximal tau sets only, and without repetition

also defined in nilpotent_orbits.at

is_sorted_subset

L326is_sorted_subset ([int] a) = ([int] b) bool

inclusion_maximals

L339inclusion_maximals ([[int]] taus) = [[int]]

Levi_signature

L347Levi_signature (int rank,[[int]] tau_invariants) = ([Partition],[int,Partition])

C_Levi_signature

L363C_Levi_signature (int rank,[[int]] tau_invariants) = [Partition,int]

max_first_entry

L366max_first_entry ([Partition] v) = int

keep_by_first_entry

L368keep_by_first_entry ([Partition] v,int k) = [Partition]

also in this file at line 381

keep_by_first_entry_and_truncate

L372keep_by_first_entry_and_truncate ([Partition] v,int k) = [Partition]

also in this file at line 385

Commented-out code, lines 376–378 (2 lines)
set max_first_entry([(int,Partition)] v)=int:
max(for i:#v do let (,w)=v[i] in w[0] od)

max_tagged_entry

L380max_tagged_entry ([int,Partition] v) = int

keep_by_first_entry

L381keep_by_first_entry ([int,Partition] v,int k) = [int,Partition]

also in this file at line 368

keep_by_first_entry_and_truncate

L385keep_by_first_entry_and_truncate ([int,Partition] v,int k) = [int,Partition]

also in this file at line 372

filter_max

L390filter_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

L419max_Hn_rep (int rank,[[int]] tau_invariants) = Hn_rep
Heart 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
L431max_Hn_rep (Block B,[int] cell) = Hn_rep

max_Hn_reps

L434max_Hn_reps (Block B,[[int]] cells) = [Hn_rep]

wrep 2 overloads

L464wrep (int rank,[[int]] tau_invariants) = Hn_rep
L499wrep (Block B,[int] cell) = Hn_rep

also in this file at line 46

wreps

L502wreps (Block B,[[int]] cells) = [Hn_rep]

also in this file at line 200

show_orbits_and_reps

L534show_orbits_and_reps(RootDatum rd)

support

L549support(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

L551lusztig_cell_classical(RootDatum rd,Symbol S_0) = [Symbol]
L556lusztig_cell_classical(RootDatum rd,Hn_rep pi) = [Hn_rep]

lusztig_cells_classical

L561lusztig_cells_classical(RootDatum rd) = [[Symbol]]

springer_cell_classical 2 overloads

L570springer_cell_classical(RootDatum rd,Symbol large_symbol_S_0) = [Symbol]
L577springer_cell_classical(RootDatum rd,Hn_rep pi) = [Hn_rep]

springer_cells_classical

L582springer_cells_classical(RootDatum rd) = [[Symbol]]

show_lusztig_cells_classical

L592show_lusztig_cells_classical (RootDatum rd) = void

show_springer_cells_classical

L603show_springer_cells_classical (RootDatum rd) = void

Generated from atlas-scripts at commit 648506c (2026-10-13).