Script File
geck_generic.at
Definitions in source order
set_generic_degree 2 overloads
L7
set_generic_degree(CharacterTable ct,int i,(->int) f,bool t) = intL8
set_generic_degree(CharacterTable ct) = (int i,(->int) f,bool t)has_generic_degree
L9
has_generic_degree(CharacterTable ct) = (int i)computing generic degree reference; Geck, Some Applications of Chevie to the theory of algebraic groupsL10
generic degrees L13
update_generic_degrees
L30
update_generic_degrees(CharacterTable ct,[WCell] cells) = voidset generic_degrees(CharacterTable ct,[WCell] cells) = [int]:
let Wct = ct.class_table in
( ct.n_irreps { size of degree lists being summed }
# for cell in cells
do assert(Wct.root_datum=cell.root_datum,"Root datum ismatch in cell")
; let cell_char = [int]: ct.decompose(cell_character(Wct,cell))
then d() = ct.degree(special_irreducible(ct,cell_char))
in for i:ct.n_irreps
do if =cell_char[i] then 0 else ct.set_generic_degree(i,d,true) fi
od
od
).sum
if only side-effect of |generic_degrees| is desired, have name reflect that
generic_degrees
L33
generic_degrees(CharacterTable ct,[Param] parameters) = [int]also in this file at line 46
update_generic_degrees 4 overloads
L37
update_generic_degrees(CharacterTable ct,RealForm G) = voidL40
update_generic_degrees(CharacterTable ct) = (RealForm->void)L41
update_generic_degrees(SpringerTable st,RealForm G) = voidL42
update_generic_degrees(SpringerTable st) = (RealForm->void)also in this file at line 30
versions with cell_size_cutoff L44
generic_degrees
L46
generic_degrees(CharacterTable ct,[WCell] cells, int cell_size_cutoff) = [int]also in this file at line 33
show_degrees
L60
show_degrees(CharacterTable ct) = voidgg_verbose
L79
gg_verbose = falsegiven G and Levi subgroups L,M of G satisfying: L is G-conjugate to a Levi subgroup of M find the Levi subgroup L' of M which is G-conjugate to L application: G, tables=[SpringerTable] for Levi subgroups of G L,G in list of Levi subgroups of G have the Springer tables tables[i] for M, tables[j] for L Can induce from W(L) to W(G) Want to induce from [conjugate of] W(L) to W(M) need to find L'\subset M which is G-conjugate to LL82
equal_subgroups
L93
equal_subgroups(RootDatum L,RootDatum M) = boolfind_Levi
L96
find_Levi(RootDatum G,RootDatum M,RootDatum L) = (RootDatum,WeylElt)conjugacy_classes_reflections_simple
L106
conjugacy_classes_reflections_simple(RootDatum rd) = [WeylElt]representatives of conjugacy classes of reflections: one simple reflection of each root length
conjugacy_classes_reflections 2 overloads
L114
conjugacy_classes_reflections(RootDatum rd) = [WeylElt]1 or 2 for each simple factor
L119
conjugacy_classes_reflections(WeylClassTable wct) = [int]if you have the WeylClassTable this is better:
omega_L
L123
omega_L(CharacterTable ct, int j,(WeylElt->int) weight_function) = intfunction defined in Geck just before Definition 4.1
default_weight_function
L130
default_weight_function = (WeylElt->int)max_standard_Levi_conjugacy_representatives
L133
max_standard_Levi_conjugacy_representatives (RootDatum rd) = [ [int] ]adapted from standard_Levi_conjugacy_representatives in Levi_subgroups.at
max_Levi_subgroups
L148
max_Levi_subgroups(RootDatum rd) = [RootDatum]lookup_character_table_old
L153
lookup_character_table_old(RootDatum G,[CharacterTable] tables) = (int,ratmat)find character table for given G in given list
lookup_character_table
L157
lookup_character_table(RootDatum M,[CharacterTable] tables) = (int,WeylElt)a_prime
L167
a_prime(RootDatum G,[CharacterTable] tables, int table_index, int character_index) = intto compute a'_E (of Geck), denoted a_prime here, you need to know all of the functions a_E for proper Levis; this is assumed to be known by induction
update_one_table_geck
L196
update_one_table_geck ([CharacterTable] tables, int table_index) = voidgiven a list of tables, where tables for proper Levis are found to the right update a single table, assuming complete tables are known for all proper Levis use the Geck algorithm for all (unfilled) entries of the specified table
show
L225
show([CharacterTable] tables) = voidalso defined in modules.at, K_Nilpotent.at, good_W_representatives.at, arthur_parameters.at, sub_cells.at, associated_variety_annihilator.at, L_packet.at
has_all_generic_degrees
L228
has_all_generic_degrees(CharacterTable ct) = boolupdate_one_table_mixed_strategy
L234
update_one_table_mixed_strategy([CharacterTable] tables, int table_index, int cell_size_cutoff) = voidgiven a list of tables, where tables for proper Levis are found to the right update a single table, assuming complete tables are known for all proper Levis use cell algorithm up to given size, then Geck
update_generic_degrees_geck_long 2 overloads
L265
rec_fun update_generic_degrees_geck_long([CharacterTable] tables) = voidupdate all tables, reading from the right, assuming all the Levis of table at index j are found at index k>j modifies the given list of tables, the return value is void
L275
rec_fun update_generic_degrees_geck_long([CharacterTable] tables, int cell_size_cutoff) = voidupdate all tables, reading from the right, assuming all the Levis of table at index j are found at index k>j use the cell algorithm up to given cutoff, and then Geck
update_generic_degrees_geck
L283
rec_fun update_generic_degrees_geck([CharacterTable] tables) = CharacterTablejust return the updated single table
also in this file at line 473
all_levi_tables
L289
all_levi_tables(RootDatum G)this is the precomputation step: compute the character tables of all Levis no including generic degrees
all_levi_tables_plus
L296
all_levi_tables_plus(RootDatum G)in this version precompute generic degrees using the *cell* computation, which (depending on the rank) may be faster
set_generic_degrees_geck_long
L303
set_generic_degrees_geck_long(RootDatum G) = [CharacterTable]compute character tables of all Levis, then populate their generic degrees inductively from the right
set_generic_degrees_geck
L306
set_generic_degrees_geck(RootDatum G) = CharacterTableset_generic_degrees_plus
L311
set_generic_degrees_plus(RootDatum G) = [CharacterTable]compute character tables of all Levis then compute all generic degrees using cell calculation then use the Geck algorithm for the remaining ones
set_generic_degrees
L314
set_generic_degrees(RootDatum G) = CharacterTableupdate_generic_degrees_using_sign 2 overloads
L319
update_generic_degrees_using_sign(CharacterTable ct) = voidGeck gives a formula (using omega_L) for generic_degree(sigma\otimes sign) in terms of generic_degree(sigma). This can be used to fill in some missing values.
L330
update_generic_degrees_using_sign([CharacterTable] tables) = voidset_generic_degrees_2
L333
set_generic_degrees_2(RootDatum G) = [CharacterTable]set_generic_degrees_3
L337
set_generic_degrees_3(RootDatum G) = [CharacterTable]character_table_generic_degrees
L347
character_table_generic_degrees(RootDatum G)Springer_table_generic_degrees
L350
Springer_table_generic_degrees(RootDatum G)test_geck_generic_degrees
L445
test_geck_generic_degrees(CharacterTable ct, [int] computed_degrees) = boolset rec_fun geck_generic_degrees([CharacterTable] tables)=[CharacterTables]:
let table_index=last(for i:#tables do tables[i].generic_degrees[0] = -1 od) in
if table_index=-1 then [tables] else
let table=tables[index_table] then
H=table.root_datum then
for class_index:table.n_classes do
let a_prime=a_prime(H,tables,table_index,class_index)
{def of a_prime_E:}
let a_prime_E(RootDatum L,CharacterTable ct_L,int index_L)=int:
let value=
if gg_verbose then prints("++++++++++++++++++++",new_line,"a_prime_E:",new_line,"L=", L) fi;
if L.is_abelian then 1 else
max(
##(##for M in proper_Levi_subgroups(L) do
let (index_M,P_M)=lookup_character_table(M,tables) then
ct_M=tables[index_M] in
for char_M@t in ct_M.characters do
let ind=ct_L.decompose(induce_character(M,L,ct_M,ct_L,char_M)) in
let ()=if gg_verbose then prints("ind: ", ind, "t=",t) fi in
if ind[index_L]>0 then [a_E(M,ct_M,t)] else [] fi
od
od))
fi
in if gg_verbose then prints("a_prime_E: ", value) fi;value
then A=a_prime_E(H,ct_H,index_H),
B=a_prime_E(H,ct_H,ct_H.tensor_sign_index(index_H)) then
{()= prints("(1)H=",H," A=", A, new_line, "B=", B) then
()=prints("(2)H=",H," tensor sign: ", ct_H.tensor_sign_index(index_H)) then}
max=max(A,B- omega_L(ct_H,index_H,default_weight_function@WeylElt))
in
if gg_verbose then
prints("max=", max, " A=",A, " B=", B, new_line,"(4)H=",H,new_line," omega_L=", omega_L(ct_H,index_H,default_weight_function@WeylElt)) fi;
max
set geck_generic_degree(RootDatum rd, CharacterTable ct,int index_rd)=
let counter=0 in
let rec_fun a_E(RootDatum H,CharacterTable ct_H, int index_H)=int:
if gg_verbose then prints("-----------------",counter,"---------",new_line,"a_E: H=", H) fi;
counter:=counter+1;
if H.is_abelian then if gg_verbose then prints("H is abelian: H=",H) fi;0
else
{def of a_prime_E:}
let a_prime_E(RootDatum L,CharacterTable ct_L,int index_L)=int:
let value=
if gg_verbose then prints("++++++++++++++++++++",new_line,"a_prime_E:",new_line,"L=", L) fi;
if L.is_abelian then 1 else
max(
##(##for M in max_Levi_subgroups(L) do
let ct_M=M.character_table in
for char_M@t in ct_M.characters do
let ind=ct_L.decompose(induce_character(M,L,ct_M,ct_L,char_M)) in
let ()=if gg_verbose then prints("ind: ", ind, "t=",t) fi in
if ind[index_L]>0 then [a_E(M,ct_M,t)] else [] fi
od
od))
fi
in if gg_verbose then prints("a_prime_E: ", value) fi;value
{end if L.is_abelian} {this is now the integer value of a_prime_E(...)}
{end def function a_prime_E}
then A=a_prime_E(H,ct_H,index_H),
B=a_prime_E(H,ct_H,ct_H.tensor_sign_index(index_H)) then
{()= prints("(1)H=",H," A=", A, new_line, "B=", B) then
()=prints("(2)H=",H," tensor sign: ", ct_H.tensor_sign_index(index_H)) then}
max=max(A,B- omega_L(ct_H,index_H,default_weight_function@WeylElt))
in
if gg_verbose then
prints("max=", max, " A=",A, " B=", B, new_line,"(4)H=",H,new_line," omega_L=", omega_L(ct_H,index_H,default_weight_function@WeylElt)) fi;
max
fi {end if H.is_abelian}
{end def of recursive function a_E}
in
a_E(rd,ct,index_rd)
set geck_generic_degree(RootDatum rd,int i)=int:geck_generic_degree(rd,rd.character_table,i)
set geck_generic_degrees(RootDatum rd,CharacterTable ct)=[int]:
let ()=prints("number of characters: ", ct.n_classes) in
for i:ct.n_classes do
if gg_verbose then prints(new_line,"================================",new_line,"i=",i,new_line) fi;
let g=geck_generic_degree(rd,ct,i) in
prints("i=",i, " dim=", dimension(ct,i),": g=",g);g od
set geck_generic_degrees(RootDatum rd)=[int]:geck_generic_degrees(rd,rd.character_table)
test_generic_degrees 2 overloads
L450
test_generic_degrees(CharacterTable ct1,CharacterTable ct2)L460
test_generic_degrees(RealForm G,CharacterTable ct)update_generic_degrees_geck
L473
update_generic_degrees_geck([SpringerTable] springer_tables) = voidalso in this file at line 283
all_Levi_Springer_tables
L478
all_Levi_Springer_tables(RootDatum G)Generated from atlas-scripts at commit 7e1b958 (2026-09-17).
Commented-out code, lines 463–471 (7 lines)