atlas Library · Script File
Weylgroup.at
Functions for computing with Weyl group elements
Definitions in source order
sgn
sgn (WeylElt w) = intalso defined in misc.at
length
length ((RootDatum,mat) rd_M) = intalso defined in K.at, extended.at
lengthens 2 overloads
lengthens (RootDatum rd, mat M, int s) = boolwhether multiplication by simple reflection lengthens or shortens M
for right multiplication
lengthens (RootDatum rd, int s, mat M) = boolfor left multiplication
also defined in bruhat.at
from_simple
from_simple (RootDatum rd, vec alpha) = (WeylElt,vec)write given root (assumed positive) as |w*beta| with |beta| simple
root_reflection
root_reflection (RootDatum rd, vec alpha) = WeylElttranslating to dominant gamma L33
make_dominant_using_roots 2 overloads
make_dominant_using_roots (RootDatum rd, ratvec gamma) = (ratvec,vec)|gamma| is integrally dominant, need to add a sum of roots to it to make it dominant; this does not change the integral Weyl chamber of |gamma|, so when acting on parameters it is another parameter with the same types of roots, generating an isomorphic block this algorithm is crude: it adds a big enough multiple of |2*rho(rd)|
make_dominant_using_roots (RootDatum rd, vec v) = (vec ,vec )if vector was in $X^*$ it remains so, so return it as |vec|
dom
shift
translate_to_dominant
translate_to_dominant (Param p) = (Param ,vec )assume infinitesimal character |gamma| of |p| is integrally dominant translate by sum of roots to make it dominant return (new parameter, sum of roots)
dom
shift
also defined in extended_misc.at
integrally dominant functions L60
integrally_from_dominant
integrally_from_dominant ((RootDatum,ratvec)(,v):rd_v) = (WeylElt,ratvec)integrally_dominant
integrally_dominant ((RootDatum,ratvec)(,v):rd_v) = ratveca W-invariant form on X^* (or its rational span)L67
invariant_form_matrix
invariant_form_matrix (RootDatum rd) = matEach coroot alpha^v defines defines a rank-1 bilinear form on X^* by
multiplying its evaluations at the pair of argument weights. Since alpha^v
and -\alpha^v in this way give the same form, one can obtain a W-invariant
biliear form by summing these rank-1 forms over all positive coroots; the
radical of this form is the coradical of the root datum. In formula
$$
(\mu,\nu)=\sum_{\alpha^v\in\Delta^{\vee+}} <\alpha^v,\mu><\alpha^v\nu>
$$
The summation is conveniently done by multiplying a wide matrix M by ^M
invariant_form
invariant_form (RootDatum rd) = (ratvec,ratvec->rat)nondegenerate_invariant_form
nondegenerate_invariant_form (RootDatum rd) = (ratvec,ratvec->rat)co_invariant_form_matrix
co_invariant_form_matrix (RootDatum rd) = mata W-invariant form on X_*\otimes Q; not directly related to invariant_form
co_invariant_form
co_invariant_form (RootDatum rd) = (ratvec,ratvec->rat)elliptic elements of W: their reflection action has no fixed pointsL93
is_elliptic
is_elliptic (WeylElt w) = bool|eigen_lattice| empty means no eigenvalue 1
is_relatively_elliptic
is_relatively_elliptic (WeylElt w) = boola nonzero central torus makes it impossible to be elliptic; therefore a more practical condition, the weaker |is_relatively_ellptic|, ignores that torus
from_no_Cminus
from_no_Cminus (KGBElt x) = (WeylElt,KGBElt)use complex cross actions to find a KGBElt x0 in a fiber with no C- roots by descending through complex descents until none are left return (w,x0) where x=cross(w,x0)
also in this file at line 119; also defined in Levi_subgroups.at
from_no_Cplus
from_no_Cplus (KGBElt x) = (WeylElt,KGBElt)the same, but ascending through complex descents until no C+ roots are left
also in this file at line 123; also defined in Levi_subgroups.at
from_no_Cminus
from_no_Cminus (Param p) = (WeylElt, Param)the same for parameters
also in this file at line 107; also defined in Levi_subgroups.at
from_no_Cplus
from_no_Cplus (Param p) = (WeylElt, Param)also in this file at line 113; also defined in Levi_subgroups.at
from_dlambda_dom
from_dlambda_dom(Param p) = (WeylElt, Param)to_no_Cminus
to_no_Cminus (KGBElt x) = KGBEltto_no_Cplus
to_no_Cplus (KGBElt x) = KGBEltalso in this file at line 135
to_no_Cminus
to_no_Cminus (Param p) = Paramto_no_Cplus
to_no_Cplus (Param p) = Paramalso in this file at line 133
* 2 overloads
*(mat M,RootDatum rd) = RootDatumaction of invertible matrix on RootDatum
*(WeylElt w,RootDatum rd) = RootDatumalso defined in basic.at, extParamPol.at, complex.at, modules.at, hodge_tensor.at, tits_centralizer.at, stable.at, synthetic.at, group_operations.at, ratmat.at, tits.at, twisted_root_datum.at, cyclotomic.at, polynomial.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, cyclotomic_Lie_algebra.at, cyclotomicMat.at, bracket.at, hodge_functions.at, sparse.at, lazy_lists.at
The magic formula below for the order of the Weyl group must handle the simple factors separately: while all the ingredients are defined for arbitrary Lie types and root data, the factor |factorial(rank)| comes from the volume formula for a simplex, applicable only when the fundamental alcove is one. Labels could also be for simple coroots, as only their product matters here.L145
order_W_simple 2 overloads
order_W_simple ((string,int)(,rank):pair) = intorder_W_simple (LieType lt) = intorder_W 2 overloads
order_W (LieType lt) = intorder_W (RootDatum rd) = intalso defined in character_tables.at
factors
factors (WeylElt w) = [WeylElt]factor w into elements for subgroups of W(rd) for simple factors of rd
also defined in basic.at
factor_strong
factor_strong (WeylElt w) = [WeylElt]w in rd.W, factor_strong(w)=[w_1,...,w_n]: w_i is in very_simple_factor(rd)[i] these are distinct root data and not directly related
char_poly
char_poly (WeylElt w) = vecalso defined in basic.at
Coxeter elementL198
coxeter_element
coxeter_element (RootDatum rd) = WeylEltCoxeter element of W
coxeter_number_simple
coxeter_number_simple (RootDatum rd) = intCoxeter number
coxeter_number
coxeter_number (RootDatum rd) = intcoxeter_torus_element
coxeter_torus_element (RootDatum rd) = ratvectorus element representing the Coxeter Weyl group element
lift_sc
lift_sc(WeylElt w)lift Weyl group element to simply connected group
Weyl group element of a KGB elementL218
w 2 overloads
w(KGBElt x)w(Param p)also defined in complex.at
need invariant_form to (easily) determine if a root is short/longL223
is_long
is_long(RootDatum rd,vec alpha) = boolis_short
is_short(RootDatum rd,vec alpha) = boolroot_lengths
root_lengths(RootDatum rd) = voidGenerated from atlas-scripts at commit 648506c (2026-10-13).