Documentation contents

atlas Library · Script File

cells.at

Source
atlas-scripts/cells.at (382 lines)
Definitions
30
Loads
Loaded by
complex.at sub_cells.at new_conjugacy.at test_braid.at Vogan-dual.at coherent_characters.at generic_degrees.at weak_packets.at

Definitions in source order

cells_verbose

L8cells_verbose = false
Below, conforming to definition of |WCell| given in W_reps.at, the term
"cell" will always refer to a structure that includes action matrices. This
was not so for the built-in functions |W_cells|, not directly used here.
L10

vertex_and_W_cell

L16vertex_and_W_cell(Param p) = (int,WCell)
after generating cells using |vertex_and_W_cells|, single out cell for |p|

W_cell_of

L23W_cell_of(Param p) = WCell
just the cell that has the vertex for |p|

also in this file at line 34

W_cell

L27W_cell([Param] block,[WCell] cells, Param p) = (int,WCell)
with block and cells already computed, this can replace |vertex_and_W_cell|

W_cell_of

L34W_cell_of(([Param],[WCell],Param) arg) = WCell

also in this file at line 23

cell representations L38

cell_character

L41cell_character (CharacterTable ct,WCell cell) = [int]
without permutation

also defined in W_reps.at, character_table_reps.at

cell_character_inefficient 2 overloads

L45cell_character_inefficient (CharacterTable ct,WCell cell) = [int]
character of representation of W on cell
L60cell_character_inefficient(CharacterTable ct) = (WCell cell)[int]

cell_characters_inefficient

L62cell_characters_inefficient (CharacterTable ct,[WCell] cells) = [[int]]

special_irreducible

L66special_irreducible (CharacterTable ct, [int] multiplicities) = int

special_character

L74special_character(CharacterTable ct,[int] cell_character) = int

also defined in character_table_reps.at

special_character_inefficient 2 overloads

L79special_character_inefficient (CharacterTable ct,WCell cell) = int
NO need to incorporate the permutation relating ct.root_datum and cell.root_datum
L90special_character_inefficient(CharacterTable ct) = (WCell->int)

#

L95#(WCell cell) = int
should also equal |#cell.graph|

also defined in basic.at, W_reps.at, misc.at

parameters 3 overloads

L97parameters([Param] block,WCell cell) = [Param]
L100parameters([Param] block,[WCell] cells) = [Param]
L103parameters([[Param],[WCell]] data) = [Param]

also defined in stable.at, weak_packets.at

blocks

L108blocks ([Param] params) = [[Param]]
expand and partition set of params into blocks

also defined in basic.at, weak_packets.at

blocks_and_cells 2 overloads

L118blocks_and_cells([Param] params) = [[Param],[WCell]]
W_cells@Param is built-in, returns the number in cell which we ignore here
L124blocks_and_cells (Param p) = [[Param],[WCell]]

block_and_cells

L128block_and_cells (Param p) = ([Param],[WCell])
really should be this, since it only returns one block:

find

L133find ([[Param],[WCell]] blocks_and_cells, Param p) = (int,int)
locate a given parameter in structure returned from |blocks_and_cells|

also defined in basic.at, tits_centralizer.at, nilpotent_orbits.at, K_types.at, hodgeParamLaurentPol.at, extended.at, disconnected.at, nilpotent_posets.at, K_types_plus.at

cells_given_AV

L140cells_given_AV ( SpringerTable st , ComplexNilpotent O , ([Param],[WCell]) (block,cells) ) = ([Param],[WCell])

parameters_given_AV

L154parameters_given_AV ( (SpringerTable,ComplexNilpotent,([Param],[WCell])) data) = [Param]
same arguments as |cells_given_AV|

push

L159push ([Param] params, ratvec gamma) = [Param]

cell_members_given_descent

L162cell_members_given_descent (RootDatum rd, WCell (,graph,), [int] S) = [int]

potential_cell

L169potential_cell(RootDatum rd_int,WCell cell, ratvec gamma, int springer_dim) = bool
given cell, gamma, dim_special, reject the cell
unless #cell>=dim_special and
some parameter p in cell has tau_complement(p)=singular roots on gamma

parameters_given_AV_infinitesimal_character 2 overloads

L186parameters_given_AV_infinitesimal_character ( SpringerTable st , ComplexNilpotent O , [ [Param],[WCell] ] blocks_and_cells , ratvec gamma ) = [int,int,Param]
used in computing weak unipotent packets
Given blocks_and_cells (at regular infinitesimal character), compute all
parameters whose special cell representation equals Springer(O), and push the
results to infinitesimal character |gamma|, which is typically |O_check.H/2|
and singular. The SpringerTable |st| and ComplexNilpotent |O| are for the
integral root system; |O| is only used for its Springer representation
[(block number, cell number, parameter)]
L231parameters_given_AV_infinitesimal_character(SpringerTable st, ComplexNilpotent O,[([Param],[WCell])] blocks_and_cells,ratvec gamma,mat permutation) = [(int,int,Param)]
include permutation
[(block number, cell number, parameter)]

also in this file at line 269

/for block
L265

parameters_given_AV_infinitesimal_character

L269parameters_given_AV_infinitesimal_character( SpringerTable st, ComplexNilpotent O, ratvec gamma, [(([Param],[WCell]),[([int],[int])])] cell_data ) = [(int,int,Param)]
include precomputed cell characters (but NOT permutation)
mainly used for even orbits in E8
[Param]: list of parameters in block
[([int] indices of parameters in cell,[int] character of cell)]
[(block number, cell number, parameter)]

also in this file at line 186, line 231

Commented-out code, lines 298–382 (83 lines)
MOVED ALL THE REST TO associated_variety_annihilator.at:

{assuming integral infinitesimal character}
set associated_variety_int(SpringerTable st,WCell cell)=ComplexNilpotent:st.springer_inverse_special(st.ct.special_character(cell))
set associated_variety_int(SpringerTable st)=(WCell->ComplexNilpotent):(WCell cell):associated_variety_int(st,cell)
set associated_variety_int(SpringerTable st,Param p)=ComplexNilpotent:associated_variety_int(st,W_cell_of(p))
set associated_variety_int(SpringerTable st)=(Param->ComplexNilpotent):(Param p):associated_variety_int(st,W_cell_of(p))

set associated_variety(SpringerTable st_G,WCell cell)=ComplexNilpotent:
let G=st_G.root_datum
   then ct_G=st_G.ct
   then L=cell.root_datum
   then ct_L=L.character_table
   then index_pi_L=ct_L.special_character(cell)
   then char_L=ct_L.characters[index_pi_L]
   then d_L=ct_L.degrees[index_pi_L]
   then chars_G=
##for i:st_G.ct.n_irreps do
{ let ()=prints("i: ",i, " ",  ct_G.degrees[i], " ", d_L) in }
 if ct_G.degrees[i]=d_L and
  !=ct_L.inner_product(char_L,restrict_character(G,L,ct_G,ct_L,ct_G.characters[i]))
  then  [i] else [] fi
od
then
index_G=chars_G[0] in
st_G.springer_inverse(index_G)

set associated_variety_test(SpringerTable st_G,WCell cell)=
let G=st_G.root_datum
   then ct_G=st_G.ct
   then L=cell.root_datum
   then ct_L=L.character_table
   then index_pi_L=ct_L.special_character(cell)
   then char_L=ct_L.characters[index_pi_L]
   then d_L=ct_L.degrees[index_pi_L]
   then ()=prints("OK") in
(G,L,ct_G,ct_L,index_pi_L,char_L,d_L){
chars_G=
##for i:st_G.ct.n_irreps do
 if ct.degrees[i]=d_L and
  !=ct_L.inner_product(char_L,restrict_character(G,L,ct_G,ct_L,ct.characters[i]))
  then  [i] else [] fi
od
then
()=prints("OK2")
   then {()=prints("chars_G=",chars_G) then}
index_G=chars_G[0] in
st_G.springer_inverse(index_G)
}

set GK_dimension(SpringerTable st,Param p)=int:st.associated_variety_int(p).dim_nilpotent\2
set GK_dimension(SpringerTable st)=(Param->int):(Param p):st.associated_variety_int(p).dim_nilpotent\2

set show([WCell] cells)=void:
for (cell,,)@i in cells do prints(i, " ", cell) od;
for (cell,(,graph),)@i in cells do
prints("// cell #",i, ":");
tabulate(
 for (a,b)@i in graph do
 let arrows=b in
  [i.to_string + "[" + cell[i].to_string + "]" + ":",
  a.to_string,
  "-->",
  let m=if #arrows=0 then 1 else max(for (,y) in arrows do y od) fi  in
if m=1 then (for (x,y) in arrows do x od).to_string else
 (for (x,y) in arrows do (x,y) od).to_string
fi
] od)
  od

{

// cell #14:
0[45]: {1,2} --> 3
1[47]: {1,2} --> 3
2[49]: {2,3} --> 3
3[51]: {1,3} --> 0,1,2


Value: 16
atlas> cells[14]
Value: ([45,47,49,51],[([0,1],[(3,1)]),([0,1],[(3,1)]),([1,2],[(3,1)]),([0,2],[(0,1),(1,1),(2,1)])])
}

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