atlas Library · Script File
class_tables.at
The purpose of this module is to group case-by-case definitions of W-class tables for root data with a specified simple Cartan matrix type, and give a definion of |class_table@RootDatum|. The latter employs the decomposition of the Dynkin diagram of a root datum into connected components, in order to build up, for a general root datum, a |WeylClassTable| built up from those for appropriate sub-root-data.
Definitions in source order
combine
L22
combine(RootDatum rd,[WeylClassTable] tables) = WeylClassTableThe following method to combine conjugacy class tables of Weyl groups for root subdata whose simple roots form a mutually orthogonal partition of the simple roots of |rd| can be given before doing any of the case-by-case stuff. Explicitly passing |rd| as argument allows the proper renumbering to be applied when passing to and from the Weyl group of the full root datum.
also defined in generics.at, character_tables_reductive.at, springer_tables_reductive.at
type AL53
conjugacy_class_S
L56
conjugacy_class_S(Partition P) = WeylEltget an actual WeylElt from a partition <-> conjugacy class in W
for GL(n)
conjugacy_class_A
L63
conjugacy_class_A(RootDatum rd) = (Partition->WeylElt)for other type A root data like SL(n), we need to work a bit harder
cycle_type_GL
L76
cycle_type_GL (WeylElt w) = PartitionThe inverse operation, find cycle type of a WeylElt for GL(n). This could be done using |classic_permutation| and |cycle_type| from combinatorics.at, but knowing that we have a GL(n) element, we can be a bit more efficient.
unsorted_cycle_type_GL
L80
unsorted_cycle_type_GL (WeylElt w) = [int]sometimes we can avoid sorting the cycles into decreasing length order
class_table_S
L84
class_table_S (int n) = WeylClassTableclass_table_A
L93
class_table_A (RootDatum rd) = WeylClassTabletypes B,CL104
BC_classes
L106
BC_classes (int n) = [Signed_cycles]class_word_BC
L111
class_word_BC (Partition P,Partition Q) = [int]word representative in types B and C of conjugacy class for partition pair; the parts of P correspond to are cycles without flip, those of Q with flip
conjugacy_class_B
L131
conjugacy_class_B (RootDatum rd) = (BiPartition->WeylElt)for general type B root data, we need to look up and use the diagram order
class_table_B 2 overloads
L139
class_table_B (int n) = WeylClassTableL149
class_table_B (RootDatum rd) = WeylClassTableconjugacy_class_C
L162
conjugacy_class_C (RootDatum rd) = (BiPartition->WeylElt)for general type C root data, we need to look up and use the diagram order
class_table_C 2 overloads
L171
class_table_C (int n) = WeylClassTablein class table construction we prefer |BiPartition| over |Signed_cycles|
L181
class_table_C (RootDatum rd) = WeylClassTabletype DL193
class_word_D 2 overloads
L197
class_word_D(Partition lambda,Partition mu) = [int]word representative in types D of unsplit conjugacy class for partition pair
L224
class_word_D(Partition lambda,bool minus) = [int]word representative in types D of split conjugacy class for partition pair
class_word
L233
class_word(D_class c) = [int]conjugacy_class_SO
L240
conjugacy_class_SO(D_class c) = WeylEltconjugacy_class_D
L244
conjugacy_class_D(RootDatum rd) = (D_class->WeylElt)for general type D root data, we need to look up and use the diagram order
class_table_D 2 overloads
L252
class_table_D(int n) = WeylClassTableL266
class_table_D(RootDatum rd) = WeylClassTabletype G2L281
G2_class_words
L283
! G2_class_words = [[],[1],[0],[0,1,0,1,0,1],[0,1,0,1],[0,1]]class_table_G 2 overloads
L285
class_table_G (RootDatum rd) = WeylClassTableL304
class_table_G (int n) = WeylClassTabletype F4L308
class_signature_F4
L311
class_signature_F4 (WeylElt w) = (Partition,Partition)orbit sizes on long respectively short roots; these characterise classes
classes_Kondo_F4
L319
classes_Kondo_F4 (RootDatum F4) = [WeylElt]list conjugacy classes in Kondo order; non standard ordering of diagram is allowed: |map| maps Bourbaki indices to corresponding indices in |rd|
class_table_F 2 overloads
L357
class_table_F (RootDatum rd) = WeylClassTableL376
class_table_F (int n) = WeylClassTabletype E6L380
class_signature_E6
L384
class_signature_E6 (WeylElt w) = Partitionorbit sizes on roots; these characterise conjugacy classes for W(E6)
class_table_E6
L388
class_table_E6 (RootDatum rd) = WeylClassTablestandard_datum_E6
L407
!standard_datum_E6 = RootDatumwe shall do storage of the class table for one particular E6 root datum
class_table_E6 2 overloads
L410
class_table_E6 = (RootDatum->WeylClassTable)voluntarily override previous definition to memoize for |standard_datum_E6|
L419
class_table_E6 () = WeylClassTablealso in this file at line 388
type E7L422
Unlike other exceptional simple types, the class invariant of the cycle type of the permutation of the roots defined by a Weyl group element does not entirely separate conjugacy classes: three pairs of classes are ambiguous. In each case the type of |Levi_datum(w)| will distinguish the pairs, and indeed just the number of simple factors of this type will do: one member of the pair gives a single factor, while the other one has 2,3, or 4 factors. Since |Levi_datum(w)| is cheaper to compute then say |centralizer_order(w)|, we use this number of simple factors as additional component in order to characterise conjugacy classes, useful for looking up arbitrary elements |w|.L424
E7_signature type
L436
set_type E7_signature = (Partition,int)
class_signature_E7
L437
class_signature_E7 (WeylElt w) = E7_signatureleq_E7_signatures
L444
leq_E7_signatures (E7_signature(P,m),E7_signature(Q,n)) = boolcomparison of root cycle types first, use second component to disambiguate
class_table_E7
L472
class_table_E7 (RootDatum rd) = WeylClassTableCompared to other types, fast construction of a class table for E7 is a bit more complicated. We prepare a list |sigs_sorted| of class signatures sorted by |leq_E7_signatures| (so first lexicographically by the root partition type, then for those pairs where it is necessary by the second component), in which we can do binary search for the signature of a |WeylElt|. For the table of powers of classes, we could use this to look up powers of a class representative, but with a bit of effort we can manage using signatures only. For classes with an unambiguous root partition type, their powers will similarly have unambiguous types, so we can use |cycle_power@(partition,int)| to get the new root partition type and look it up using |binary_lookup_by|. In the remaining "ambiguous" classes, the even powers are unambiguous (so looking up the type suffices), while their odd powers are ambiguous, but retain their relative position (first or second) among the classes with their root partition type. (Most of the time these odd powers determine the base class itself, but for the case where the base class has order 6, the third power has order 2.) So to compute the |k|-th power of a class, we take the partition for the class, apply |cycle_power| to get the |k|-th power cycle type, and look up its first occurrence in |sigs_sorted|. The position found will be the value returned, unless the base class was the second of an ambiguous pair and |k| is odd, in which case we add 1 to the position. Below we hard-code the positions 6,17,36 of the second elements of ambiguous pairs; being positions in a sorted list these should never change, but we include as comment code that makes explicit the condition by which those numbers were singled out.
standard_datum_E7
L505
!standard_datum_E7 = RootDatumwe shall do storage of the class table for one particular E6 root datum
class_table_E7 2 overloads
L508
class_table_E7 = (RootDatum->WeylClassTable)voluntarily override previous definition to memoize for |standard_datum_E6|
L517
class_table_E7 () = WeylClassTablealso in this file at line 472
type E8L520
class_signature_E8
L524
class_signature_E8 (WeylElt w) = Partitionorbit sizes on roots; these characterise conjugacy classes for W(E8)
class_table_E8
L530
class_table_E8 (RootDatum rd) = WeylClassTablethe code below hard-codes some tables, presumably for faster construction of the E8 class table. We provide equivalent code that will reproduce the data.
standard_datum_E8
L624
!standard_datum_E8 = RootDatumwe shall do storage of the class table for one particular E8 root datum
class_table_E8 2 overloads
L627
class_table_E8 = (RootDatum->WeylClassTable)voluntarily override previous definition to memoize for |standard_datum_E8|
L636
class_table_E8 () = WeylClassTablealso in this file at line 530
class_table_E
L638
class_table_E (int n) = WeylClassTableThe synthesisL645
simple_class_table
L647
simple_class_table (LieType lt) = WeylClassTableclass_table_simple
L661
class_table_simple (RootDatum rd,string letter,int n) = WeylClassTableconstruct_class_table
L675
construct_class_table (RootDatum rd) = WeylClassTablethe name of this function highlights that it does considerable work
Generated from atlas-scripts at commit 648506c (2026-10-13).