Documentation contents

Script File

weak_packets_precomputed_cell_traces.at

computing weak packets using precomputed cell_traces mainly used for E8_s

NOTE: to enable the E8 functionality, delete the lines {CUT and /CUT},
which prevent loading E8 data by default, since it is slow, and requires
100 GB of ram
Source
atlas-scripts/weak_packets_precomputed_cell_traces.at (204 lines)
Definitions
12
Loads
Loaded by
none of the other all.at files

Definitions in source order

Commented-out code, lines 8–19 (11 lines)
weak_packet:
 given: a RootDatum rd and an even orbit O_check for the dual,
 a SpringerTable for rd,
 "cell_data": precomputed cell characters
 compute weak packet using the precomputed cell characters
Typical usage:
given RealForm G, SpringerTable st,
[Param] for G
set data=cell_and_character_data(st.ct,parameters) then
set wp=weak_packet(st,data)
for G=E8, don't compute cell_and_character data this way, see below

real_form

L22real_form([(([Param],[WCell]),[([int],[int])])] data) = RealForm
get RealForm from cell_and_character_data

also defined in basic.at

weak_packet_int 2 overloads

L25weak_packet_int( SpringerTable st_int, ComplexNilpotent O_check, [(([Param],[WCell]),[([int],[int])])] cell_and_character_data) = ([([Param],[WCell])],[(int,int,Param)])
L59weak_packet_int( SpringerTable st_int, ComplexNilpotent O_check, (([Param],[WCell ]),[([int],[int])]) cell_and_character_data) = ([([Param],[WCell])],[(int,int,Param)])

weak_packets

L67weak_packets( SpringerTable st, [ComplexNilpotent] dual_orbits, [(([Param],[WCell]),[([int],[int])])] cell_and_character_data) = [([([Param],[WCell])],[(int,int,Param)])]
same as previous, running over a set of orbits, use precomputed version iff the orbit is even

also in this file at line 91, line 103, line 109, line 114

weak_packet

L80weak_packet(SpringerTable st,ComplexNilpotent O_check, [(([Param],[WCell]),[([int],[int])])] cell_and_character_data) = ([([Param],[WCell])],[(int,int,Param)])

weak_packets 4 overloads

L91weak_packets( SpringerTable st, [ComplexNilpotent] dual_orbits, (([Param],[WCell]),[([int],[int])]) cell_and_character_data) = [([([Param],[WCell])],[(int,int,Param)])]
L103weak_packets( SpringerTable st, [(([Param],[WCell]),[([int],[int])])] cell_and_character_data) = [([([Param],[WCell])],[(int,int,Param)])]
weak_packets(st,data):
run over G.root_datum.dual_orbits (G is included in data)
note: NOT st.root_datum.dual_orbits
if orbit O_check is not even, use the usual algorithm weak_packets(O_check,G)
if it is even, use the precomputed version weak_packets(st,O_check,data)
L109weak_packets(RealForm G,[ComplexNilpotent] dual_orbits, [(([Param],[WCell]),[([int],[int])])] cell_and_character_data) = [([([Param],[WCell])],[(int,int,Param)])]
compute SpringerTable also
L114weak_packets(RealForm G,[ComplexNilpotent] dual_orbits, (([Param],[WCell]),[([int],[int])]) cell_and_character_data) = [([([Param],[WCell])],[(int,int,Param)])]

also in this file at line 67

cell_and_character_data 2 overloads

L120cell_and_character_data (CharacterTable ct,[Param] parameters) = [ ([Param],[WCell]) ,[ [int],[int] ] ]
prepare cell_data for input to weak_packets(st,O,cell_data)
L130cell_and_character_data (CharacterTable ct,RealForm G) = [ ([Param],[WCell]) ,[ [int],[int] ] ]

weak_packets_pre

L135weak_packets_pre (RealForm G,CharacterTable ct) = [ [[Param],[WCell]], [int,int,Param] ]
stuff particular to E8:
L139
compute cell_and_character_data for each block of G=E8_s (tiny, small, big)
also SpringerTable for G
this can then be used to call:
weak_packet(st,G,dual_orbit,data),
weak_packets(st,G,dual_orbits,data)
weak_packets(st,G,data)
L140
comment this out to avoid loading except when necessary:
L147
Commented-out code, lines 148–196 (49 lines)
CUT

 <E8_big_block_parameters.at     {parameters_big: [Param]: big block}
 <E8_big_block_cell_parameter_numbers.at   {cells_big=[[int]]}
 <E8_big_block_cell_characters.at  {cell_characters_big=[[int]]}
 <E8_big_block_cells.at  {E8_big_block_cells=[([int],[([int],[(int,int)])])]}


 <E8_small_block_parameters.at     {parameters_small: [Param]: small block}
 <E8_small_block_cell_parameter_numbers.at  {cells_small=[[int]]}
 <E8_small_block_cell_characters.at  {cell_characters_small=[[int]]}
 <E8_small_block_cells.at  {E8_small_block_cells=([int],([([int],[(int,int)])]))}
 prints("loaded files")

 set irreducible_PS=parameter(G.x_open,null(8),rho(G))
 set cells_tiny=W_cells(irreducible_PS)

 set p=parameter(G.trivial.x, 2*rho(G),rho(G))
 set cell_and_characters_tiny_block=(([p],cells_tiny),[([0],[int]:ones(112))])

 set E8_dual_orbits=G.dual_orbits
 prints("defined dual orbits")
 set E8_dual_orbits_even=G.even_dual_orbits
 prints("defined dual even orbits")

 set cell_and_characters_big_block=
  ((parameters_big,E8_big_block_cells)
   ,for i:#cells_big do (cells_big[i], cell_characters_big[i]) od)
 prints("defined cell_and_characters_big_block")

 set cell_and_characters_small_block=
  ((parameters_small,E8_small_block_cells),
   for i:#cells_small do (cells_small[i], cell_characters_small[i]) od)
 prints("defined cell_and_characters_small_block")

 set E8_cell_and_character_data =
   [cell_and_characters_big_block,cell_and_characters_small_block,
    cell_and_characters_tiny_block]

 {comment out either the first line or lines 2-4}
 prints("Springer table already defined")
 prints("Defining Springer table")
 set E8_st=Springer_table(simply_connected(E8))
 prints("defined Springer table")



 {set wp=weak_packets(st_E8,E8_dual_orbits,E8_cell_and_character_data)}
/CUT
assuming the lines between CUT and /CUT have been loaded,
then weak_packets(st,orbits,all_cell_data) will
compute all weak packets for E8_s
weak_packets(st,orbits,cell_and_characters_*_block)
where *=tiny,small,or big
compute the weak packets coming from these blocks
L198

Generated from atlas-scripts at commit 7e1b958 (2026-09-17).