Documentation contents

Script File

lusztig_cells.at

the Lusztig map goes from triples (O,x,xi) to W^
this file implements an algorithm (conjectural)
to implement this when xi=1
the set obtained for fixed O, running over x,
is a Lusztig (left) cell
Note: this used to involve the dual group but this has been changed,
the dual version will be moved to lusztig_cells_dual.at

sigma_lusztig (used to be sigma_L, the new name is better
sigma_lusztig(O,x) is a of a representation of W(G)
conjecturally it is the same as
Lusztig(O,x,1) as defined in the Orange book

G, O = special orbit for G, x\in A-bar(O)
M=M(A-bar(O)): pairs defined by Lusztig
xi an irreducible representation of Cent_{A-bar(O)}(x)
(O,x,xi)  -- Lusztig -->  W(G)^

generalization of Springer map

(O,1,1) -> Springer(O)  Springer correspondence for G
        -> Springer(O)\otimes sign \in W(G)^
        -> W(G)^ via the isomorphism W(G)\simeq W(G)

More general case:
(O,x,1)  -> L_x=Cent_{G}(x)^0
         -> O_L_x (same H)
         -> Springer(O_L_x)\otimes sgn in W(L_x)^   NOT the same as Sommers: Springer(dual(O_L_x))
	 -> sigma_lusztig_x\in W(L_x) via W(L_x)\simeq W(L_x_v)
	 -> [ no: truncated induction from W(L_x) to W(G)]
         -> induce to W(G) and keep the term(s) with the same degree as sigma_lusztig(O,1,1)

Note: this O_L_x might not be special, so Springer(dual(orbit)) \ne Springer(orbit)*sign

Non-trivial \xi not yet considered
Source
atlas-scripts/lusztig_cells.at (567 lines)
Definitions
21
Loads
Loaded by
none of the other all.at files

Definitions in source order

sigma_lusztig_verbose

L43sigma_lusztig_verbose = false
main algorithm for computing sigma_lusztig, this won't usually be called by the user
M is a pseudo-Levi
H_M is (the ss element of) an orbit for M
exp(2pi i y) is an element of center of M^0
typically (M,H_M,y) are provided by component_datum@ComplexNilpotent
L45
arguments:
G given group with its coordinate, need this to compute roots of L in G
G.ct is needed to compute truncated induction/exchange_long_short
L.st is needed to compute Springer(O_L)  (L=centralizer of y)
O: given orbit on the dual side
M: pseudo-Levi in which exp(2\pi iy) is central
 (this isn't really needed but is helpful information)
H_M: ss element for orbit of M
y: x=exp(2\pi iy)
note that L depends on y
L51

modify to work on the group side:
generalization of Springer map

(O,1,1) -> Springer(O)  Springer correspondence for G  (Springer(0)=sign/Springer(principal)=trivial)

General case:
(O,x,1)  -> L_x=Cent_{G}(x)^0
	 -> O_L_x (same H)
	 -> Springer(O_L_x) in W(L_x)^
	 -> induce from W(L_x) to W(G)
	 -> keep term(s) with generic degree: generic_degree(Springer(O))
L64
returns [(int,int)] = [(index,multiplicity)]
usually [(j,1)]: meaning only character #j appears with multiplicity 1
rarely  [(j,1),(k,1)...] : several characters appear with multiplicity 1
occasionally []: empty
so far never see mult>0
L77

sigma_lusztig_long

L85sigma_lusztig_long( SpringerTable st_G,ComplexNilpotent O,RootDatum M,vec H_M,ratvec y) = (RootDatum,vec,ratvec,[int])
this used to be called _no_dual, now the default
RootDatum G,
returns (M,H_M,y,j_values)
end if y is in weight lattice
L195

sigma_lusztig

L197sigma_lusztig( SpringerTable st_G,ComplexNilpotent O,RootDatum M,vec H_M,ratvec y) = [int]
RootDatum G,

lusztig_cell_long

L200lusztig_cell_long ( SpringerTable st_G,ComplexNilpotent O) = [(RootDatum,vec,ratvec,[int])]
RootDatum G,

lusztig_cell

L216lusztig_cell ( SpringerTable st_G,ComplexNilpotent O) = [[int]]
an entry in lusztig_cell_long can be (M,H_M,y,[])
use remove_zeros to eliminate these
RootDatum G,

also in this file at line 423

lusztig_cell_plus

L223lusztig_cell_plus ( SpringerTable st_G,ComplexNilpotent orbit) = [[int]]
include terms coming from deformation
RootDatum G,

lusztig_cells

L246lusztig_cells ( SpringerTable st_G,[ComplexNilpotent] orbits) = [[ ComplexNilpotent,RootDatum,vec,ratvec,[int] ]]
compute lusztig cells, running over given list of nilpotents
returns: array, one entry for each orbit
orbit -> array of [M,H_M,y,j_values]
RootDatum G,

also in this file at line 293, line 297

lusztig_cells_plus

L261lusztig_cells_plus ( SpringerTable st_G,[ComplexNilpotent] orbits)
RootDatum G,

lusztig_cells 2 overloads

L293lusztig_cells ( SpringerTable st_G) = [[ ComplexNilpotent,RootDatum,vec,ratvec,[int] ]]
RootDatum G,
L297lusztig_cells (RealForm G) = [[ ComplexNilpotent,RootDatum,vec,ratvec,[int] ]]

also in this file at line 246

show_lusztig_cells

L303show_lusztig_cells ( SpringerTable st_G,[ComplexNilpotent] orbits) = void
show lusztig cells, running over given list of nilpotents
RootDatum G,

also in this file at line 426, line 432

show_lusztig_cells_plus

L369show_lusztig_cells_plus ( SpringerTable st_G,[ComplexNilpotent] orbits) = void
show lusztig cells, running over given list of nilpotents
RootDatum G,

also in this file at line 429, line 435

lusztig_cell

L423lusztig_cell (RootDatum G,ComplexNilpotent O) = [[int]]
some shorthands which are handy but sometimes inefficient

also in this file at line 216

show_lusztig_cells

L426show_lusztig_cells ( SpringerTable st_G) = void
RootDatum G,

also in this file at line 303, line 432

show_lusztig_cells_plus

L429show_lusztig_cells_plus (RootDatum G,SpringerTable st_G) = void

also in this file at line 369, line 435

show_lusztig_cells

L432show_lusztig_cells(RootDatum G) = void

also in this file at line 303, line 426

show_lusztig_cells_plus

L435show_lusztig_cells_plus (RootDatum G) = void

also in this file at line 369, line 429

A_bar 2 overloads

L438A_bar(SpringerTable st,ComplexNilpotent O) = ([int],[[RootDatum]])
L448A_bar(SpringerTable st) = (ComplexNilpotent ->([int],[[RootDatum]]))

show_A_bar 2 overloads

L451show_A_bar([int] sigmas,[[RootDatum]] pseudolevis) = void
L458show_A_bar(SpringerTable st,ComplexNilpotent orbit) = void
four inner products stuff moved to inner_products.at
L470

stuff that used to be in lusztig_cells_complete.at
L472
Commented-out code, lines 473–567 (94 lines)
these generic versions are no longer needed:


{show lusztig cells, running over given list of nilpotents}
set show_lusztig_cells_generic\
   (RootDatum G,SpringerTable st_G,[ComplexNilpotent] orbits) = void:
  (new_line
  ,"Lusztig cells",new_line
  ,"G=", G.nice_format, new_line
  , "#orbits: ", #orbits
  ).prints;
let table = [ [string] ]: { concatenation of all [string] values from |data| }
    for data@i in lusztig_cells(G,st_G,orbits) {[[(M,H_M,y,values)]]}
    do for (orbit,M,H_M,y,values) in data
       do
          if =#values
	  then { even if there are no |values|, build one [string] }
	     [[orbit.diagram.to_string + st_G.special_star(orbit)
	     ,orbit.dim_nilpotent.to_string
	     ,i.to_string
	     ,integrality_datum(orbit).nice_format
	     ,M.nice_format
	     ,H_M.compact_string
	     ,y.compact_string
	     ,centralizer(G,y).nice_format
	     ,"[]"
	     ,"x"
	     ,"x"
	     ,"x"
	     ,"x"
	     ,"x"
	     ]]
	  else { contribute one or more [string] values }
	     for k in values
	     do
	     [orbit.diagram.to_string + st_G.special_star(orbit)
	     ,orbit.dim_nilpotent.to_string
	     ,i.to_string
	     ,integrality_datum(orbit).nice_format
	     ,M.nice_format
	     ,H_M.compact_string
	     ,y.compact_string
	     ,centralizer(G,y).nice_format
	     ,if #values=1 then k.to_string { mention unique |k| }
	      else values.to_string + ":" + k.to_string { mention |k| from list }
	      fi
	     ,if =y then st_G.ct.special(st_G.springer(orbit)).to_string else "" fi
	     ,dimension(st_G.ct,k).to_string
	     ,st_G.ct.degree(k).to_string
	     ,st_G.ct.generic_degree(k).to_string
	     ,st_G.ct.character(k).to_string
	     ]
	     od {for k in values}
	  fi
       od.## { for (...) in data }
    od.## {for data in Lusztig_cells }
in
( ["O"
  ,"dim"
  ,"i"
  ,"rd_int"
  ,"M"
  ,"H_M"
  ,"v"
  ,"L"
  ,"sigma"
  ,"special"
  ,"dim"
  ,"deg"
  ,"gdeg"
  ,"char=ct.character(sigma[0])"
  ]
# table
).tabulate

set show_lusztig_cells_generic_long\
   (RootDatum G,SpringerTable st_G,[ComplexNilpotent] orbits) = void:
   show_very_long(st_G.ct);
   show_long(st_G);
   show_lusztig_cells_generic(G,st_G,orbits)

set show_lusztig_cells_generic (RootDatum G,SpringerTable st_G) = void:
   show_lusztig_cells_generic(G,st_G,G.orbits)

set show_lusztig_cells_generic_long (RootDatum G,SpringerTable st_G) = void:
   show_lusztig_cells_generic_long(G,st_G,G.orbits)

set show_lusztig_cells_generic (RootDatum G) = void:
let st=Springer_table_generic_degrees(G)
in show_lusztig_cells_generic(G,G.Springer_table)

set show_lusztig_cells_generic_long (RootDatum G) = void:
let st=Springer_table_generic_degrees(G)
in show_lusztig_cells_generic_long(G,st)

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