Documentation contents

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 element
Source
atlas-scripts/truncated_induction.at (334 lines)
Definitions
25
Loads
Loaded by
associated_variety_annihilator.at special_rep.at

Definitions in source order

ti_verbose

L17ti_verbose = false
truncate (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 returned
L19

truncate

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

L59truncate_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

also in this file at line 112, line 118, line 125, line 136

need version where L is specified instead of f
L75
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
)

truncate_degree_induce_character

L94truncate_degree_induce_character ( WeylClassTable Wct_L , CharacterTable ct_G , [int] pi_L , (int->int) degree_function ) = (int,[int])

truncate_by_degree_induce_character

L104truncate_by_degree_induce_character ( WeylClassTable Wct_L, CharacterTable ct_G, [int] pi_L) = int
standard form: using ordinary (fake) degree

truncate_induce_character 4 overloads

L112truncate_induce_character = …
an alias
L118truncate_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
L125truncate_induce_character ( RootDatum L , CharacterTable ct_G , [int] pi_L , (int->int) degree_function ) = (int,[int])
build ct_L on the fly
L136truncate_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 int
L145
this should not be used
L146
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 used
L155
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 orbits
L167
for this we need Springer table for both L and G
L169

truncate

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

L177induce_orbit ( SpringerTable st_L , SpringerTable st_G , ComplexNilpotent O_L ) = ComplexNilpotent
L201induce_orbit(SpringerTable st_G,ComplexNilpotent O_L) = ComplexNilpotent
somewhat slow: compute Springer table for L
L205induce_orbit (RootDatum G,ComplexNilpotent O_L) = ComplexNilpotent
slower: computes Springer table for L and G

test_induce_orbits

L208test_induce_orbits(RootDatum G,[int] simple_roots_of_L) = void

select

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

L234select_degree(CharacterTable ct, [int] character, int desired_value) = [(int,int)]
select by fake degree

select_generic_degree

L238select_generic_degree(CharacterTable ct, [int] character, int desired_value) = [(int,int)]
select by generic degree

select

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

L249select_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

L259J_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)
L270J_induce (CharacterTable ct_L,CharacterTable ct_G,int index_character_L, mat P)
version with mat P

j_induce 2 overloads

L283j_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)
L294j_induce (CharacterTable ct_L,CharacterTable ct_G,int index_character_L, mat P)
version with mat P

jJ_induce

L307jJ_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

L319jJ_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).