atlas Library · Script File
K.at
! Embedding of the complex group K defined by compact imaginary root system
$T_{K_0}=(H^{\delta})_0 =$ Cartan subgroup of $K_0$
$T_{K_0}\subset T_K=H^{\delta} \subset H$
$T_{K_0} is a torus in $T_K$ abelian (possibly disconnected)
$X^*(T_{K_0})= X^*/(X^*)^{-\delta}$
$X^*(T_K) = X^*/(1-\delta)X^* \twoheadrightarrow X^*(T_{K_0})$
(restriction map is surjective)
see W_K.at
K_0=identity component of K, with Cartan subgroup T_K0
B=basis of X_*(T_K0) (as columns) = cocharacter lattice for (K_0,T_K0)
returns a matrix B with rank(K_0) columns, rank(ic) rows
columns are a basis of the +1 left-eigenspace delta
This matrix $B$ satisfies $^\delta*B=B$
left multiplication by $^B$ is
projection $X^*(H) -> X^*(T_{K_0}) = X^*(H)/X^*(H)^{-\delta}$
left multiplication by $B$ is
injection $X_*(T_{K_0})-> X_*(H)$ [$^\delta*v=v$ for $v$ in image]
!Definitions in source order
KHighestWeight type
set_type KHighestWeight = (void .,KGBElt x, vec mu)
Fields: x, mu
k_highest_weight
k_highest_weight (KGBElt x, vec mu) = KHighestWeightThree ways of parametrizing K-types:
1. KType: built-in with components |KGBElt x| and |vec lambda_rho| (difference)
These may or may not be any of standard, dominant, zero and semi-final,
but thye are always equivalent to a $\Z$-linear combination of final K types
which means dominant (therefore standard) nonzero and semi-final; when
contributed to a KTypePol this expansion is automatically performed.
The set of final K-types is in bijection with K-hat
With |lambda=lambda_rho+rho(G)| the mentioned attributes are:
standard: <alpha_v,lambda> >= 0 for every positive imaginary coroot alpha_v
dominnat: <alpha_v,lambda> >= 0 for every positive coroot alpha_v
nonzero: <alpha_v,lambda> != 0
for every compact simply-imaginary coroot alpha_v
semi-final: <alpha_v,lambda> is odd for every simply-real coroot alpha_v
equivalently <alpha_v,lambda-rho_real> is even for every real coroot
2. KHighestWeight: ((),KGBElt x_K,vec mu)
Here |x_K| lies in distinguished fiber, and defines K
Recall that T_K=H^\delta, which is abelian subgroup of K_#=T_K.K_0
(T_K can be disconnected).
Also mu\in X^* is represents an element of X^*/(1-delta)X^*=X^*(T_K)
and is a highest weight for K_#
So equivalence includes modding out mu by (1-delta)X^*, see function = below
3. K0_Param: ordinary parameter (x_K,lambda,nu=0) for
irreducible finite dimensional representation of K_0
its highest weight is a dominant weight of T_K0L31matrices related to T_K0\subset H L61
cocharacter_lattice_K
cocharacter_lattice_K (InnerClass ic) = matcolumns are coweights
id_mat in equal rank case
also in this file at line 73
is_fundamental_Cartan
is_fundamental_Cartan (KGBElt x)condition testing that x is on the fundamental Cartan, not necessarily in the distinguished fiber
cocharacter_lattice_K
cocharacter_lattice_K (KGBElt x) = matin the following function x is required to be on the fundamental Cartan
also in this file at line 64
projection_to_K_matrix 2 overloads
projection_to_K_matrix (InnerClass ic) = matmatrix of projection X^*(H)-> X^*(T_K0)=X^*(H)/X^*(H)^{-theta_x}
project modulo the -1 eigenspace of the distinguished involution (or theta_x)
projection_to_K_matrix (KGBElt x) = matproject_K 4 overloads
project_K (InnerClass ic,vec v) = vecprojection function X^*(H) -> X^*(T_K0) this accepts a rational vector in X^*_\Q, provided its image is integral avoid transpose in projection_to_K_matrixI(ic)*v, but morally it is that
project_K (KGBElt x,vec v) = vecproject_K (InnerClass ic,ratvec v) = vecproject_K (KGBElt x,ratvec v) = vecinjection_from_K_matrix 2 overloads
injection_from_K_matrix = (InnerClass->mat)matrix of injection X_*(T_K0)->X_*(H); image is the saturated sublattice X_*(H)^theta
injection_from_K_matrix = (KGBElt->mat)inject_K 2 overloads
inject_K (InnerClass ic,ratvec v) = vecinjection function X_*(T_K0) -> X_*(H))
inject_K (KGBElt x,ratvec v) = veccoinject_from_K 2 overloads
coinject_from_K (InnerClass ic,ratvec v) = ratvecinjection X^*(T_K0) -> X^*(H)^delta_Q (denominator can be 2) B=cocharacter_lattice_K(x) left mult by ^B is surjection X^*(H) --> X^*(T_K0) restriction to X^*(H)^delta is _not_ necessarily surjective, for example when T(R)=complex torus rightinverse(^B): X^*(T_K0)-> X^*(H), not necessarily X^*(H)^delta v -> w=(1+delta)/2*rightinverse(B)*v is in X^*(H)^delta\otimes 1/2, satisfies ^B*w=v application: map (\frak t_K)^* \hookrightarrow \frak t^*, used in the Vogan algorithm, see project.at
coinject_from_K (KGBElt x,ratvec v) = ratvecrank_K
rank_K (InnerClass ic) = intalso in this file at line 181
G_K_roots_and_coroots_raw
G_K_roots_and_coroots_raw (KGBElt x) = ((mat,mat),(mat,mat))G_K_roots_and_coroots_raw
Input: x in distinguished fiber,
so theta=delta permutes positive complex roots
Output: ((G_K_roots,G_K_coroots),(injection matrix,pull_back matrix)
G_K_roots: posroots of K as elements of X^*(H) (coordinates of G, not K)
from all compact imaginary posroots, and one of each complex theta-orbit
G_K_coroots: poscoroots of K as elements of X_*(H) (and delta-fixed)
from compact imaginary poscoroots
and for each complex theta-orbit, the coweight c.(alpha^v)(1+theta)
c=1 if <delta(alpha),alpha^\vee>=0
c=2 if otherwise (<,>=\pm 1)
injection matrix: X_*(T_K0) -> X_*(H)^{^delta} (isomorphism)
pull_back matrix: X_*(H)^{^delta} -> X_*(T_K0) (isomorphism)
G_K_roots_and_coroots
G_K_roots_and_coroots (KGBElt x) = (mat,mat)apply projection: X^*(H) -> X^*(T_K0) to roots (projection=^inj) pull_back: X_*(T_K0) -> X_*(H) (isomorphism to X_*(H)^delta
rank_K
rank_K (RealForm G) = intalso in this file at line 122
K_root_datum
K_root_datum (KGBElt x) = RootDatumhere x is required to be in the distinguished fiber:
K_0 2 overloads
K_0 (KGBElt x) = RealFormK_0 (RealForm G) = RealFormalso in this file at line 227
rho_K 2 overloads
rho_K (KGBElt x) = ratvechere x is required to bein the distinguished fiber:
in X^*(T_K0)
rho_K (RealForm G) = ratvecrho_c 2 overloads
rho_c (KGBElt x) = ratvecas an element of (X^*(H)^delta_Q
rho_c (RealForm G) = ratvectworho_c 2 overloads
tworho_c(KGBElt x) = ratvecnot necessarily a vec
tworho_c(RealForm G) = ratvecconversion from restriction to K format to ParamL204
convert_K_type 2 overloads
convert_K_type (RealForm G,vec two_lambda, vec torus_bits, int cartan) = ParamFokko outputs a K-type as two_lambda@torus_bits#cartan_class this defines a final standard limit parameter p=(x,lambda) where torus_factor(x)=base_grading(G)+torus_bits, and involution(x) is the canonical involution of the Cartan_class currently Fokko commands Ktype_mat, branch and Ktypeform print K-types in format [ 2, 2,-2, 2 ]@(0,0,1,1)#4; this can be made into a Param value by calling the function below as convert_K_type(G,[2,2,-2,2],[0,0,1,1],4)
convert_K_type (RealForm G,(vec two_lambda, vec torus_bits, int cartan)) = Paramanother version where the K-type specific part is grouped into a 3-tuple
real_form
real_form (KHighestWeight hw) = RealFormalso defined in basic.at, weak_packets_precomputed_cell_traces.at, parabolics.at, nilpotent_orbits.at, hodgeParamLaurentPol.at, hodgeParamPol.at
root_datum
root_datum (KHighestWeight hw) = RootDatumalso defined in basic.at, W_reps.at, K_Nilpotent.at, sommers.at, parabolics.at, nilpotent_orbits.at, W_classes.at, extended_misc.at, character_tables.at, springer_tables.at, disconnected.at, cyclotomic_Lie_algebra.at, bracket.at, exceptional.at
K_0
K_0 (KHighestWeight hw) = RealFormparameter
parameter = param@KTypemake this just an alias for K types
also defined in basic.at, L_packet.at, parameters.at, extended_misc.at
to_no_Cminus
to_no_Cminus = theta_stable@KTypealias for this built-in function
also defined in Weylgroup.at
length of highest weights L233
length of K-type with highest weight mu is <mu+2*rho_K,mu+2*rho_K> this is used in the definition of lowest K-typesL235
length
length (KHighestWeight hw) = ratalso defined in Weylgroup.at, extended.at
K_norm
K_norm = height@KTypethis is now built-in
also in this file at line 250, line 254; also defined in K_norm.at
K_norm(KType t) = int: let mu = theta_plus_1_lambda(t) in for alpha_v in poscoroots(root_datum(t.x)) do abs(alpha_v*mu) od.sum\2L244
K_norm
K_norm (Param p) = intalthough equal to built-in height@Param, we allow computing via K-type
also in this file at line 243, line 254; also defined in K_norm.at
K_norms
K_norms (KTypePol P) = [int]K_norm of P is the max of K_norm(terms)
also defined in K_norm.at
K_norm
K_norm = (KTypePol->int)also in this file at line 243, line 250; also defined in K_norm.at
leading_terms
leading_terms (KTypePol P) = KTypePolalso defined in K_norm.at
all_K_norms
all_K_norms = K_norms@KTypePolno need to sort; already sorted
also defined in K_norm.at
sort_by_K_norm
sort_by_K_norm = ([KType] -> [KType])sort [KType] by K_norm
also defined in K_norm.at
Generated from atlas-scripts at commit 648506c (2026-10-13).