atlas Library · Script File
character_table_reps.at
Definitions in source order
character
character (CharacterTable ct, W_rep r) = [int]also defined in combinatorics.at, modules.at, W_reps.at, character_tables.at
smallest_degree
smallest_degree (CharacterTable ct,[int]chi) = intalso defined in W_reps.at
permuted versions of cell representations L11
the unpermuted versions are in cells.atL12
computing cell actions in presence of a permutation of the simple rootsL14
permute 3 overloads
permute([WeylElt] W,(int->int) permutation) = [WeylElt]permute([WeylElt] W,[int] permutation) = [WeylElt]permute([WeylElt] W,mat M) = [WeylElt]also defined in combinatorics.at, simple_factors.at, isomorphism_W.at
conjugate_to_simple
conjugate_to_simple(RootDatum rd,vec alpha)cell_action 2 overloads
cell_action(WCell cell, int i, mat permutation) = sparse_matcell action in the presence of a permutation isomorphism of the root datum
cell_action(WCell cell,WeylElt w,mat permutation) = matalso defined in W_reps.at
cell_character
cell_character (CharacterTable ct,WCell cell,mat permutation) = [int]special_character 2 overloads
special_character(CharacterTable ct,WCell cell,mat permutation)special_character(CharacterTable ct,mat permutation) = (WCell->int)also defined in cells.at
embeddings of Weyl groups, not needed for induction, or at all reallyL60
embed_simple_reflection
embed_simple_reflection (RootDatum L,RootDatum G, int i) = matrequirement: simple roots of L are contained in the (positive) roots of G
just |reflection(L,i)| if |coroot(L,alpha)=coroot(G,alpha)|, as should beL68
embed
embed (RootDatum L, RootDatum G,[int] w) = matalso in this file at line 75, line 77; also defined in cyclotomic.at, cyclotomic_Lie_algebra.at, cyclotomicMat.at, bracket.at
equivalently |convert_to(G,W_elt(L,w)).matrix|, if coroots match as aboveL72
embed 2 overloads
embed (RootDatum L,RootDatum G,WeylElt w) = WeylEltembed(RootDatum L,RootDatum G) = (WeylElt->WeylElt)also in this file at line 70; also defined in cyclotomic.at, cyclotomic_Lie_algebra.at, cyclotomicMat.at, bracket.at
induction L81
standard_Levis
standard_Levis (RootDatum rd) = [RootDatum]all 2^n standard Levis
induction from a Levi factor
$L$ is subgroup of $G$, or more generally a group mapped homomorphically by
$f:L\to G$, and |pi_L| is a tabulated class function on W(L),
we want to compute the class function $pi_G=\ind_L^G(pi_L)$ on $W(G)$
formula: if C is a conjugacy class for G
pi_G(C) = |W(G)| / (|W(L)|*|C|)) * \sum |C_j| pi_L(C_j)
where the sum runs over the W(L)-conjugacy classes C_j that constitute
$C\cap W(L)$, or more generally the inverse image $f^{-1}(C)$ (this follows
from Frobenius reciprocity, by which pairing $\ind_L^G(pi_L)$ with the
indicator $\chi$ function of $C$ equals pairing $pi_L$ with $\chi\circ f$.
In other words the value of |pi_L| on each class C_j in W(L) contributes to
the induced character value only at the class of f(C_j) in W(G), and for
this contribution its character value is multiplied by [W(G):W(L)] * |C|/|C_j|
algorithm: initialize the result to be the 0-character
run over conjugacy class representatives in L
for each conjugacy class representative w_L compute w_G = class_of (w_L,G)
and add to the character value at (the class) w_G the value:
pi_L(w_L) * index(W(G):W(L))*|conjugacy class of w_L|/|conjugacy class of w|
The factor by which pi_L(w_L) is multiplied is integer, as it is the index of
the centraliser subgroup of w_L in W_L inside its centraliser subgroup of w_GL87induce_character 7 overloads
induce_character ( WeylClassTable Wct_L , WeylClassTable Wct_G , (WeylElt->WeylElt) f , [int] pi_L ) = [int]embedding (or any group homomorphism) L->G
induce_character (CharacterTable ct_L,CharacterTable ct_G,(WeylElt->WeylElt) f,[int] pi_L) = [int]for convenience, allow calling with character tables as well
induce_character (WeylClassTable Wct_L,WeylClassTable Wct_G,[int] pi_L) = [int]simplified versions; first provide embedding via |convert_to|
induce_character (CharacterTable ct_L, CharacterTable ct_G,[int] pi_L) = [int]for convenience
induce_character (WeylClassTable Wct_G,[int] simple_roots_of_L,[int] pi_L) = [int]this version assumes ct_G computed, but computes L, class table(L) on the fly
induce_character (WeylClassTable Wct_L,RootDatum L_prime,WeylClassTable Wct_G,[int] pi_L) = [int]given Wct_L, with RootDatum L, and L\simeq L'\subset G
have character table for L, but L' is the subgroup we want
to induce from
induce from W(L) to W(G) via this isomorphism
That is:
W(L) --> w --> W(L')
| |
| x
| |
v v
W(L) --> w --> W(L')
y= w^{-1}xw: W(L) -> W(L)
x\in W(L) -> convert_to(G,w^{-1}xw) in W(G)
induce_character (WeylClassTable Wct_L,RootDatum L_prime,WeylClassTable Wct_G,[int] pi_L) = [int]I think this is misguided: one should always *specify* the root permutation in question
also in this file at line 195, line 219; also defined in W_reps.at
P is a matrix taking simple roots of L=Wct_L.root_datum to the simple roots of a subgroup of G=Wct_G.root_datum Note that P is not necessarily the matrix of an element of G example: L,M are Levi subgroups of G L is G-conjugate to a Levi subgroup L' of M we are given the character table of L, and want to induce W(L') -> W(M). In this case P is the matrix of a Weyl group element of G (but not necessarily M)L185
induce_character
induce_character (WeylClassTable Wct_L,WeylClassTable Wct_G,[int] pi_L, mat P)also in this file at line 113, line 130, line 135, line 141, line 145, line 166, line 178, line 219; also defined in W_reps.at
Commented-out code, lines 210–216 (6 lines)
set induce_character (WeylClassTable Wct_L,RootDatum L_prime,WeylClassTable Wct_G,[int] pi_L) = [int]: let (valid,M)=root_permutation(Wct_L.root_datum,L_prime) then ()=assert(valid,"root data are not related by a permutation") then f(WeylElt w)=WeylElt: convert_to(Wct_G.root_datum,permute(M,w,L_prime)) in induce_character(Wct_L,Wct_G,f,pi_L)
induce_character
induce_character (CharacterTable ct_L, CharacterTable ct_G,[int] pi_L, mat P) = [int]for convenience
also in this file at line 113, line 130, line 135, line 141, line 145, line 166, line 178, line 195; also defined in W_reps.at
induce_trivial 2 overloads
induce_trivial (WeylClassTable Wct_G, [int] simple_roots_of_L) = [int]induce_trivial (CharacterTable ct_G, [int] simple_roots_of_L) = [int]induce_sign 2 overloads
induce_sign (WeylClassTable Wct_G, [int] simple_roots_of_L) = [int]induce_sign (CharacterTable ct_G, [int] simple_roots_of_L) = [int]truncate_induce_sign
truncate_induce_sign (CharacterTable ct_G,[int] simple_roots_L) = inttruncated induction is defined in general in truncated_induction.at special cases are done here to avoid needing that script (it's not hard)
truncate_induce_trivial
truncate_induce_trivial(CharacterTable ct_G,[int] simple_roots_L) = intrestriction L277
restrict_character 4 overloads
restrict_character ( WeylClassTable Wct_G , WeylClassTable Wct_L , (WeylElt->WeylElt) f , [int] pi_G ) = [int]Given an embedding f of W_L into W_G
embedding (or any group homomorphism) L->G
restrict_character (WeylClassTable Wct_G,WeylClassTable Wct_L,[int] pi_G) = [int]with default embedding
restrict_character (CharacterTable ct_L,CharacterTable ct_G,(WeylElt->WeylElt) f, [int] pi_L) = [int]for convenience, allow calling with character tables as well
restrict_character (CharacterTable ct_L,CharacterTable ct_G,[int] pi_L) = [int]the Steinberg character, for testing onlyL304
alternating sum, over all standard Levis, of induced from trivial; should equal the sign character (if it does not, this function fails)L306
Steinberg_character
Steinberg_character (RootDatum rd) = [int]Generated from atlas-scripts at commit 648506c (2026-10-13).
Commented-out code, lines 199–209 (9 lines)
set induce_character_plus (WeylClassTable Wct_L,RootDatum L_prime,WeylClassTable Wct_G,WeylElt w,[int] pi_L) = [int]: let ()=prints("INDUCING Wct_L:", Wct_L.root_datum, new_line,"Lprime:", L_prime, new_line, "Wct_G: ",Wct_G.root_datum) in let rd=Wct_G.root_datum then rd_L=Wct_L.root_datum then ()=prints("induce_character: "); prints("rd=",rd, new_line, "rd_L=", rd_L) then f(WeylElt x)=WeylElt: W_elt(rd,inverse(w)*matrix(x)*w) {embedding} in induce_character(Wct_L,Wct_G,f,pi_L)