Script File
truncated_induction.at
if L is a Levi subgroup of G, and pi an irreducible representation of W_L,
then truncated induction from L to G takes pi to the unique irreducible
in Ind_{W(L)}^{W(G)}(pi_L) of minimal degree (signal an error if not unique)
|truncate| returns a pair (int min_degree,[int] characters)
|min_degree| is the minimal value of |degree_function| at all irreducibles
that occur in Ind(pi_L); |characters| is the list of indices for those
irreps for which this minimal value was obtained
this list *should* have exactly one elementDefinitions in source order
ti_verbose
L17
ti_verbose = falsetruncate (already induced) character: keep the irreps of minimal degree, according to |degree_function| (to be either |degree| or |generic_degree|), though negative values of degree function mean ignore the irrep altogether. the function returns (degree, list of indices of characters of this degree) the coefficient of the irrep is presumably 1 but neither tested nor returnedL19
truncate
L27
truncate(CharacterTable ct_G,[int] char,(int->int) degree_function) = (int,[int])degree_function: degree or generic_degree
first argument: value of degree function
also in this file at line 173; also defined in GK_dimension.at
truncate_induce_character
L59
truncate_induce_character ( WeylClassTable Wct_L , CharacterTable ct_G , (WeylElt->WeylElt) f , (int->int) degree_function , [int] pi_L ) = (int,[int])induce and truncate
basic version, using given embedding f degree function is either degree or generic_degree return value is [int] since this can happen in the generic_degree case
need version where L is specified instead of fL75
truncate_degree_induce_character
L94
truncate_degree_induce_character ( WeylClassTable Wct_L , CharacterTable ct_G , [int] pi_L , (int->int) degree_function ) = (int,[int])truncate_by_degree_induce_character
L104
truncate_by_degree_induce_character ( WeylClassTable Wct_L, CharacterTable ct_G, [int] pi_L) = intstandard form: using ordinary (fake) degree
truncate_induce_character 4 overloads
L112
truncate_induce_character = …an alias
L118
truncate_induce_character ( RootDatum L, RootDatum G,[int] pi_L,(int->int) degree_function) = (int,[int])build Wct_L, ct_G on the fly (slow); degree function must still be supplied
L125
truncate_induce_character ( RootDatum L , CharacterTable ct_G , [int] pi_L , (int->int) degree_function ) = (int,[int])build ct_L on the fly
L136
truncate_induce_character ( CharacterTable ct_G , [int] simple_roots_of_L , [int] pi_L , (int->int) degree_function ) = (int,[int])L is given as a subgroup of G, by specifying the simple roots of L as a set of positive roots of G; for a Levi factor these roots are simple for G
also in this file at line 59
standard form: by degree, returns intL145
this should not be usedL146
Commented-out code, lines 147–152 (5 lines)
set truncate_by_degree_induce_character \ ( CharacterTable ct_G, [int] simple_roots_of_L, [int] pi_L) = int: let ind = induce_character(ct_G.class_table,simple_roots_of_L,pi_L) then (,t)=truncate(ct_G,ind,ct_G.degree) in assert(#t=1,"not a unique character in truncated induction"); t[0]
same as previous, build ct_G on the fly, but use provided |degree_function|L154
this should not be usedL155
Commented-out code, lines 156–166 (10 lines)
set truncate_induce_character \ ( RootDatum G , [int] simple_roots_of_L , [int] pi_L , (int->int) degree_function ) = [int]: let ct_G=G.character_table then ind = induce_character(ct_G.class_table,simple_roots_of_L,pi_L) then (,t)=truncate(ct_G,ind,degree_function) in t
induction of orbitsL167
for this we need Springer table for both L and GL169
truncate
L173
truncate (SpringerTable st_G,[int] char,(int->int) degree_function) = (int,[int])allow a SpringerTable to be provided, although it is not necessary
also in this file at line 27; also defined in GK_dimension.at
induce_orbit 3 overloads
L177
induce_orbit ( SpringerTable st_L , SpringerTable st_G , ComplexNilpotent O_L ) = ComplexNilpotentL201
induce_orbit(SpringerTable st_G,ComplexNilpotent O_L) = ComplexNilpotentsomewhat slow: compute Springer table for L
L205
induce_orbit (RootDatum G,ComplexNilpotent O_L) = ComplexNilpotentslower: computes Springer table for L and G
test_induce_orbits
L208
test_induce_orbits(RootDatum G,[int] simple_roots_of_L) = voidselect
L227
select(CharacterTable ct, [int] character, int desired_value, (int->int) function) = [(int,int)]-------------------------------------------------------------------
extract all terms sigma from given (reducible) character satisfying f(sigma)=desired_value usually f = generic or fake degree
also in this file at line 242
select_degree
L234
select_degree(CharacterTable ct, [int] character, int desired_value) = [(int,int)]select by fake degree
select_generic_degree
L238
select_generic_degree(CharacterTable ct, [int] character, int desired_value) = [(int,int)]select by generic degree
select
L242
select(CharacterTable ct, [int] character, int desired_value_1,int desired_value_2, (int->int) function_1,(int->int) function_2) = [(int,int)]select by two function values f_i(sigma)=desired_value_i
also in this file at line 227
select_both_degrees
L249
select_both_degrees ( CharacterTable ct , [int] character , int desired_value_fake , int desired_value_generic ) = [(int,int)]select all terms with specified fake degree and (possibly different) generic degree
J_induce 2 overloads
L259
J_induce (CharacterTable ct_L,CharacterTable ct_G,int index_character_L)J-induction from Lusztig's orange book page 77
induce sigma_L from W(L) to W(G), and keep terms sigma with gdeg(sigma)=gdeg(sigma_L)
L270
J_induce (CharacterTable ct_L,CharacterTable ct_G,int index_character_L, mat P)version with mat P
j_induce 2 overloads
L283
j_induce (CharacterTable ct_L,CharacterTable ct_G,int index_character_L)j-induction from Lusztig's orange book page 77
induce sigma_L from W(L) to W(G), and keep terms sigma with fdeg(sigma)=fdeg(sigma_L)
L294
j_induce (CharacterTable ct_L,CharacterTable ct_G,int index_character_L, mat P)version with mat P
jJ_induce
L307
jJ_induce(CharacterTable ct_L,CharacterTable ct_G,int index_character_L)induce sigma_L from W(L) to W(G), and keep terms sigma with gdeg(sigma)=gdeg(sigma_L) AND fdeg(sigma)=fdeg(sigma_L)
jJ_select_induce
L319
jJ_select_induce (CharacterTable ct_L ,CharacterTable ct_G ,int index_character_L ,int desired_degree)induce sigma_L from W(L) to W(G), and keep terms sigma with gdeg(sigma)=fdeg(sigma)=desired_degree
Generated from atlas-scripts at commit 7e1b958 (2026-09-17).
Commented-out code, lines 76–91 (15 lines)
set truncate_induce_character \ ( CharacterTable ct_L , RootDatum L , CharacterTable ct_G , (int->int) degree_function , [int] pi_L ) = (int,[int]): ( if ti_verbose then prints("Computing induced character: ") fi ; let ind=induce_character(ct_L,L,ct_G,pi_L) in if ti_verbose then prints("computed induced character: ", ind) fi ; let (,t): pair = truncate(ct_G,ind,degree_function) in if ti_verbose then prints("computed truncation of induced", new_line ,"induced: ", t) fi ; pair )