Documentation contents

atlas Library · Script File

character_table_reps.at

Source
atlas-scripts/character_table_reps.at (315 lines)
Definitions
36
Loads
Loaded by
truncated_induction.at cells.at springer_table_D.at springer_table_E6.at springer_table_E7.at springer_table_E8.at

Definitions in source order

character

L7character (CharacterTable ct, W_rep r) = [int]

also defined in combinatorics.at, modules.at, W_reps.at, character_tables.at

smallest_degree

L8smallest_degree (CharacterTable ct,[int]chi) = int

also defined in W_reps.at

permuted versions of cell representations L11

the unpermuted versions are in cells.at
L12
computing cell actions in presence of a permutation of the simple roots
L14

permute 3 overloads

L16permute([WeylElt] W,(int->int) permutation) = [WeylElt]
L19permute([WeylElt] W,[int] permutation) = [WeylElt]
L22permute([WeylElt] W,mat M) = [WeylElt]

also defined in combinatorics.at, simple_factors.at, isomorphism_W.at

conjugate_to_simple

L26conjugate_to_simple(RootDatum rd,vec alpha)

cell_action 2 overloads

L32cell_action(WCell cell, int i, mat permutation) = sparse_mat
cell action in the presence of a permutation isomorphism of the root datum
L35cell_action(WCell cell,WeylElt w,mat permutation) = mat

also defined in W_reps.at

cell_character

L45cell_character (CharacterTable ct,WCell cell,mat permutation) = [int]

also defined in W_reps.at, cells.at

special_character 2 overloads

L48special_character(CharacterTable ct,WCell cell,mat permutation)
L57special_character(CharacterTable ct,mat permutation) = (WCell->int)

also defined in cells.at

embeddings of Weyl groups, not needed for induction, or at all really
L60

embed_simple_reflection

L63embed_simple_reflection (RootDatum L,RootDatum G, int i) = mat
requirement: 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 be
L68

embed

L70embed (RootDatum L, RootDatum G,[int] w) = mat

also 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 above
L72

embed 2 overloads

L75embed (RootDatum L,RootDatum G,WeylElt w) = WeylElt
L77embed(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

L84standard_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_G
L87

induce_character 7 overloads

L113induce_character ( WeylClassTable Wct_L , WeylClassTable Wct_G , (WeylElt->WeylElt) f , [int] pi_L ) = [int]
embedding (or any group homomorphism) L->G
L130induce_character (CharacterTable ct_L,CharacterTable ct_G,(WeylElt->WeylElt) f,[int] pi_L) = [int]
for convenience, allow calling with character tables as well
L135induce_character (WeylClassTable Wct_L,WeylClassTable Wct_G,[int] pi_L) = [int]
simplified versions; first provide embedding via |convert_to|
L141induce_character (CharacterTable ct_L, CharacterTable ct_G,[int] pi_L) = [int]
for convenience
L145induce_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
L166induce_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)
L178induce_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

L195induce_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 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)
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

L219induce_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

L222induce_trivial (WeylClassTable Wct_G, [int] simple_roots_of_L) = [int]
L227induce_trivial (CharacterTable ct_G, [int] simple_roots_of_L) = [int]

induce_sign 2 overloads

L230induce_sign (WeylClassTable Wct_G, [int] simple_roots_of_L) = [int]
L235induce_sign (CharacterTable ct_G, [int] simple_roots_of_L) = [int]

truncate_induce_sign

L241truncate_induce_sign (CharacterTable ct_G,[int] simple_roots_L) = int
truncated 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

L258truncate_induce_trivial(CharacterTable ct_G,[int] simple_roots_L) = int

restriction L277

restrict_character 4 overloads

L280restrict_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
L289restrict_character (WeylClassTable Wct_G,WeylClassTable Wct_L,[int] pi_G) = [int]
with default embedding
L295restrict_character (CharacterTable ct_L,CharacterTable ct_G,(WeylElt->WeylElt) f, [int] pi_L) = [int]
for convenience, allow calling with character tables as well
L300restrict_character (CharacterTable ct_L,CharacterTable ct_G,[int] pi_L) = [int]
the Steinberg character, for testing only
L304
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

L309Steinberg_character (RootDatum rd) = [int]

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