Documentation contents

atlas Library · Script File

parabolics.at

See "Parabolic Subgroups and Induction" on the Atlas web site.

  Fix a subset S of the simple roots, defining the complex standard
  parabolic $P_S$ of type S. We define a set KGP(S) (a
  quotient of KGB) such that (roughly) KGP(S) <-> $K\backslash G/P_S$.

  More precisely, for any KGB element $x$, and $\xi$ with $p(\xi)=x$, the set
  KGP(S) is canonically in bijection with $K_{\xi}\backslash G/P_S$; i.e.,
  $K_{\xi}$ conjugacy classes of parabolics of type S.

  S defines an equivalence relation on KGB of reachability through Cayley
  transforms (in either direction) and (complex) cross actions in S; the classes
  of this equivalence are in bijection with $K\backslash G/P_S$, so define the
  quotient to be KGP.

  Data: ([int],KGBElt)=(S,x) where S lists the indices of a subset of the
  simple roots of root_datum(x)

  Equivalence: (S,x)=(S',y) if these correspond to the same K orbit on $G/P_S$,
  which means:
   real_form(x)=real_form(y), S=S'  (i.e. same complex parabolic), and
   x=y in the equivalence defined by S.
  In particular, given (S,x), taking x itself for the strong real form,
  (S,x) goes to the $K_x$-conjugacy class of the standard parabolic $P_S$.

  The data type is KGPElt or Parabolic (synonyms).

  Given (S,x),
  write $[x_1,...,x_n]$ for the S-equivalence class of $x\subset$ KGB.

  The last element $x_n$ is maximal, and is uniquely determined.
  This orbit of K on $G/P_S$ is closed <=> $x_1$ is closed in KGB.

  ComplexParabolic data type:
  (RootDatum rd,[int] S) <->  G-conjugacy class of standard parabolic with
  Levi factor given by subset S of simple roots

More topics addressed in this file:
  parabolics with $\theta$-stable Levi factor;
  $\theta$-stable parabolics;
  real parabolics.
Source
atlas-scripts/parabolics.at (615 lines)
Definitions
100
Loads
Loaded by
good_W_representatives.at weyltosemisimple.at adams_johnson.at speh.at induction.at W_K.at nilpotent_orbits.at subgroups.at

Definitions in source order

KGPElt, ComplexParabolic type

L51
set_type
[
  {. Data type for a K_orbit on G/P_S, equivalently a K-conjugacy class of
    parabolics of type S, where S is a list of simple root indices. .}
  KGPElt    = ([int] S, KGBElt x)
,
  {. Data type for a complex standard parabolic subgroup .}
  ComplexParabolic = (RootDatum root_datum,[int] S)
]

Fields: S, x, root_datum, S

Parabolic type

L62
set_type Parabolic = KGPElt
Data type for a K_orbit on G/P_S (synonym for KGPElt).

leq_by_number

L64leq_by_number : (KGBElt x,KGBElt y) bool

min

L67min = ([KGBElt]->KGBElt)
choose from a nonempty list of KGB elements one with the smallest index.

also defined in basic.at

max

L70max = ([KGBElt]->KGBElt)
choose from a nonempty list of KGB elements one with the greatest number.

also defined in basic.at

root_datum

L73root_datum (KGPElt(,x)) = RootDatum
the root datum of the RealForm G of a KGP element.

also defined in basic.at, W_reps.at, K_Nilpotent.at, sommers.at, K.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

real_form

L76real_form (KGPElt(,x)) = RealForm
the RealForm G of a KGP element.

also defined in basic.at, weak_packets_precomputed_cell_traces.at, K.at, nilpotent_orbits.at, hodgeParamLaurentPol.at, hodgeParamPol.at

ascents

L79ascents ([int] S, KGBElt x) = [KGBElt]
ascents of |x| by generators in |S|; there may be duplicates.

down_neighbors

L87down_neighbors ([int] S,KGBElt x) = [KGBElt]
all descents of |x| by generators in |S|; there may be duplicates.

is_maximal_for

L99is_maximal_for ([int] S,KGBElt x) = bool
decide whether x is maximal in the partial order defined by S.
whether |#ascents(S,x)=0|

maxima_for

L103maxima_for ([int] S,RealForm G) = [KGBElt]
list maximal KGB elements in the partial order defined by S.

maximal

L107maximal ([int] S, KGBElt x) = KGBElt
(Unique) maximal element in equivalence class of x.

x_min

L112x_min (KGPElt(S,x)) = KGBElt
a minimal KGB element from an equivalence class defined by S
(unlike |maximal(S,x)|, it is not unique).

KGP_elt_for

L117KGP_elt_for (KGPElt S_x) = KGPElt
build KGBElt (with canonical representative) from |S| and |x|.
alternatively: |S_x.x:=maximal(S_x); S_x|

representative

L121representative = (KGPElt->KGBElt)
(Unique) maximal KGB element representing a KGP element.

=

L124= (KGPElt (S,x):S_x,KGPElt (T,y):T_y) = bool
equality of KGP elements: whether they share a K-orbit of parabolics.

From the earlier documentation

Equality of KGP elements: (S,x)=(T,y) if these give the same K-orbit of parabolics.

also defined in basic.at, combinatorics.at, modules.at, synthetic.at, hash.at, tits.at, K_highest_weights.at, nilpotent_orbits.at, cyclotomic.at, polynomial.at, W_reps_type_BC.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, extended.at, disconnected.at, cyclotomic_Lie_algebra.at, cyclotomicMat.at, bracket.at

equivalence_class_of

L128equivalence_class_of (KGPElt(S,x):S_x) = [KGBElt]
the equivalence class of a KGB element in partial order defined by S.

is_in_class_of

L139is_in_class_of (KGBElt x, KGPElt(S,):P) = bool

KGP

L144KGP (RealForm G,[int] S) = [KGPElt]
the set of KGP elements associated to a RealForm and a set of
simple roots S; KGP(G,S) is in bijection with $K\backslash G/P_S$.

also in this file at line 394

KGP_numbers

L148KGP_numbers (RealForm G,[int] S) = [int]
just the index numbers (maximal x) of KGP(G,S).

is_open

L151is_open (KGPElt y) = bool
whether y in $K\backslash G/P_S$ is open (maximal(y) is final in KGB).

From the earlier documentation

Test whether y in $K\backslash G/P_S$ is open: <=> last element of y is last element of KGB.

is_closed

L155is_closed (KGPElt P) = bool
test whether y in $K\backslash G/P_S$ is closed (length(first element)=0).

KGP_elt

L158KGP_elt (ratvec lambda,KGBElt x) = KGPElt
parabolic determined by (the stabilizer in W of) a weight lambda.

complex_parabolic

L165complex_parabolic (Parabolic(S,x)) = ComplexParabolic
the complex parabolic underlying P=(S,x).

also in this file at line 174

Complex Levi subgroups
L168

complex_Levi

L171complex_Levi = (ComplexParabolic->RootDatum)
defined in basic.at

From the earlier documentation (documented there as complex_Levi:RootDatum rd, (int->bool) select->RootDatum)

Auxiliary function

also defined in nilpotent_orbits.at

complex_parabolic

L174complex_parabolic ((RootDatum,RootDatum) (rd,):pair) = ComplexParabolic

also in this file at line 165

parabolics

L178parabolics (RootDatum rd) = [ComplexParabolic]
all (complex) parabolics of a RootDatum

also in this file at line 398

Levi_simple_roots

L184Levi_simple_roots (ComplexParabolic(rd,S)) = mat
as columns

Levi_simple_coroots

L186Levi_simple_coroots (ComplexParabolic(rd,S)) = mat
as rows

standard_Levi_coweight

L192standard_Levi_coweight (ComplexParabolic(rd,S)) = vec
A coweight for which the Levi roots are precisely those on which it vanishes
For  standard Levis take a sum of |fundamental_coweight|s, which is fast

standard_Levi_weight

L198standard_Levi_weight (ComplexParabolic(rd,S)) = vec
weight vanishing on all coroots of the Levi, positive on other poscoroots

Levi_coweight

L210Levi_coweight ((RootDatum,[int]) (rd,S):cp) = vec
This can be generalised to work for any Levi subgroup, by solving a system
of linear equations, after using |maximize_Levi| to see |S| as part of a
maximal (non standard) Levi. Alternatively, we could have used the functions
above in combination with |from_standard_Levi| from Levi_subgroups.at
Note that we write (RootDatum,[int]) rather than |ComplexParabolic|, as using
the latter implies |S| a subset of simple roots, which is not assumed here.

Levi_weight

L216Levi_weight ((RootDatum,[int]) (rd,S):cp) = vec
a weight for which the Levi coroots are precisely those that vanish on it

is_stable

L222is_stable (mat theta, ComplexParabolic cp) = bool
whether an automorphism |theta| of X^* stabilises the complex parabolic

also defined in L_packet.at

has_theta_stable_Levi

L227has_theta_stable_Levi (Parabolic(,x):real_para) = bool
Test if a complex Levi defined by a set of simple roots $S$ is
$\theta_x$-stable;

Levi

L232Levi (Parabolic(S,x):P) = RealForm
Make a real Levi factor from P=(S,x); the complex Levi of S must
be theta-stable.

also defined in exceptional.at

parabolic_is_theta_stable

L240parabolic_is_theta_stable (Parabolic P) = bool
Test whether parabolic P=(S,x) is theta-stable: this means that
P is closed, and the complex Levi factor L is theta-stable.

parabolic_is_real

L247parabolic_is_real(Parabolic(S,x):P) = bool
Test if parabolic |P=(S,x)| is real: this means that its Levi |L| is
theta-stable, that |P| is open, and that outside |S| there are no imaginary
compact simple roots for |maximal(S,x)|.

unipotent radical of P L254

see K.pdf, Section 4
P=(S,x)
if x=x_0:=KGB(G,0) then P is the standard parabolic P_S with simple roots S,
and nilrad(P) is contained in the basic Borel
in general P=(S,x) -> gP_Sg^{-1} where gxg^{-1}=x_0
if the G-orbit of P is closed, equivalently if L contains the fundamental
Cartan, then we can replace x with x=x_min(P) which is on the fundamental
Cartan and then find w so that w*x=x_0
L255

nilrad

L266nilrad (ComplexParabolic(rd,):P) = mat
Positive coroots in the nilradical u of P (L must be theta-stable).
columns are poscoroots

also in this file at line 275

nilrad_roots

L271nilrad_roots (ComplexParabolic(rd,):P) = mat
Positive roots in the nilradical u of P (L must be theta-stable).
columns are posroots

also in this file at line 276

nilrad

L275nilrad (Parabolic P) = mat

also in this file at line 266

nilrad_roots

L276nilrad_roots (Parabolic P) = mat

also in this file at line 271

rho_u 2 overloads

L279rho_u (ComplexParabolic P) = ratvec
Half sum of positive roots not in the Levi (L must be theta-stable).
P.root_datum.rho-complex_Levi.rho
L283rho_u (Parabolic P) = ratvec
Half sum of positive roots not in the Levi (L must be theta-stable).

rho_l 2 overloads

L286rho_l (ComplexParabolic(rd,):P) = ratvec
Half sum of positive roots in the Levi (L must be theta-stable).
rho(Levi(P))
L290rho_l (Parabolic P) = ratvec

alternative method to define a parabolic L292

it is convenient to be able to define a parabolic in terms of a semisimple
element either in \h or \h^*
L293

zero_simple_coroots

L298zero_simple_coroots (RootDatum rd, vec lambda) = [int]
Simple coroots on which weight lambda (in $\mathfrak h^*$) is zero.

parabolic_by_wt

L302parabolic_by_wt (ratvec lambda,KGBElt x) = Parabolic
Parabolic defined by weight lambda

parabolic_by_wt_verbose

L308parabolic_by_wt_verbose ((ratvec,KGBElt) lambda_x) = Parabolic
Parabolic defined by weight lambda; message whether parabolic is real
or theta-stable.

theta_stable_parabolic_by_wt

L316theta_stable_parabolic_by_wt (ratvec lambda,KGBElt x) = Parabolic
Theta-stable parabolic defined by weight lambda.

real_parabolic_by_wt

L320real_parabolic_by_wt (ratvec lambda,KGBElt x) = Parabolic
Real parabolic defined by weight lambda.

Levi_by_wt

L324Levi_by_wt ((ratvec,KGBElt) lambda_x) = RealForm
Levi factor of parabolic defined by weight lambda.

theta_stable_Levi_by_wt

L328theta_stable_Levi_by_wt ((ratvec,KGBElt) lambda_x) = RealForm
Levi factor of theta-stable parabolic defined by weight lambda.

real_Levi_by_wt

L332real_Levi_by_wt ((ratvec,KGBElt) lambda_x) = RealForm
Levi factor of real parabolic defined by weight lambda.

nilrad_by_wt

L337nilrad_by_wt ((ratvec,KGBElt) lambda_x) = mat
Positive coroots in nilradical of P defined by weight lambda
(if L theta-stable).

nilrad_roots_by_wt

L342nilrad_roots_by_wt ((ratvec,KGBElt) lambda_x) = mat
Positive roots in nilradical of P defined by weight lambda
(if L theta-stable).

rho_u_by_wt

L347rho_u_by_wt ((ratvec,KGBElt) lambda_x) = ratvec
Half sum of positive roots in nilradical of P defined by weight lambda (if L
theta-stable).

zero_simple_roots

L352zero_simple_roots (RootDatum rd, vec cowt) = [int]
Simple roots which are zero on coweight H (in $\mathfrak h$).

parabolic_by_cwt

L356parabolic_by_cwt (ratvec H,KGBElt x) = Parabolic
Parabolic defined by coweight H

parabolic_by_cwt_verbose

L362parabolic_by_cwt_verbose ((ratvec,KGBElt) H_x) = Parabolic
Parabolic defined by coweight H; message whether parabolic is real
or theta-stable.

Levi_by_cwt

L371Levi_by_cwt ((ratvec,KGBElt) H_x) = RealForm
Levi factor of parabolic defined by coweight H.

nilrad_by_cwt

L375nilrad_by_cwt ((ratvec,KGBElt) H_x) = mat
Positive coroots in nilradical of P defined by coweight H
(if L theta-stable).

nilrad_roots_by_cwt

L379nilrad_roots_by_cwt ((ratvec,KGBElt) H_x) = mat
Positive roots in nilradical of P defined by coweight H
(if L theta-stable).

rho_u_by_cwt

L384rho_u_by_cwt ((ratvec,KGBElt) H_x) = ratvec
Half sum of roots in nilradical of P defined by coweight H
(if L theta-stable).

rho_Levi_by_cwt

L388rho_Levi_by_cwt ((ratvec,KGBElt) H_x) = ratvec
$\rho(L)$ for Levi of P defined by coweight H (if L theta-stable).

auxiliary routines L391

KGP

L394KGP (RealForm G,ComplexParabolic (,S)) = [KGPElt]
List of K-conjugacy classes of given ComplexParabolic (as KGP elts).

also in this file at line 144

parabolics

L398parabolics = (RealForm,ComplexParabolic->[Parabolic])
This is identical to the previous function, since |Parabolic| is |KGBElt|
List K-conjugacy classes of given ComplexParabolic (as Parabolics).

also in this file at line 178

all_parabolics

L400all_parabolics (RealForm G) = [Parabolic]

theta_stable_parabolics 2 overloads

L409theta_stable_parabolics (RealForm G,ComplexParabolic(,S)) = [Parabolic]
List K-conjugacy classes of given ComplexParabolic that are theta-stable.
L420theta_stable_parabolics (RealForm G) = [Parabolic]
List all theta-stable parabolics for G.

theta_stable_parabolics_of_type

L431theta_stable_parabolics_of_type (RealForm G,[int] S) = [Parabolic]
List all theta-stable parabolics of G, of type S.

all_rel_split_theta_stable_parabolics

L435all_rel_split_theta_stable_parabolics (RealForm G) = [Parabolic]
List all theta-stable parabolics of G with relatively split L.

all_real_parabolics

L438all_real_parabolics (RealForm G) = [Parabolic]

parabolics_with_theta_stable_Levi

L441parabolics_with_theta_stable_Levi (RealForm G,[int] S) = [Parabolic]

all_parabolics_with_theta_stable_Levi

L444all_parabolics_with_theta_stable_Levi (RealForm G) = [Parabolic]

classes_for_real_parabolics

L450classes_for_real_parabolics (RealForm G) = [[int]]
Find equivalence classes of non-imaginary simple roots w.r.t. max. x, for
alpha \cong alpha' if (1-theta)(alpha)=(1-theta(alpha')

classes_for_theta_parabolics

L471classes_for_theta_parabolics (RealForm G) = [[int]]
Find equivalence classes of non-imaginary simple roots w.r.t. max. x, for
alpha \cong alpha' if (1+theta)(alpha)=(1+theta(alpha')

maximal_real_parabolics

L493maximal_real_parabolics(RealForm G) = [KGPElt]
maximal parabolics among all real parabolics of G=G(R)
not the same as real forms of maximal parabolics of G(C)

maximal_theta_parabolics

L504maximal_theta_parabolics (RealForm G) = [KGPElt]
theta_stable parabolics, maximal among all such
unlike the real_parabolic case, these have different x-values

support

L515support (KGBElt x) = [int]
The smallest list of simple roots such that descents lead to the
distinguished fiber.

also defined in nilpotent_orbits.at, W_reps_type_BC.at, cyclotomic_Lie_algebra.at, bracket.at

and extract the set of reflection indices
L518

support_dual

L520support_dual (KGBElt x) = [int]

also defined in nilpotent_orbits.at, Vogan-dual.at

support_alt

L525support_alt(KGBElt x) = [int]
Alternative definition: compute support using inverse Weyl group part

From the earlier documentation

Auxiliary function.

coset_reps

L531coset_reps (RootDatum rd, RootDatum rd_L) = [WeylElt]
coset representatives for W(rd)/W(rd_L); with L non standard Levi subsystem.
If L=L(lambda) the W-orbit of lambda is in bijection with this quotient

bounded_coset_reps

L535bounded_coset_reps (RootDatum rd,RootDatum rd_L,int bound) = [WeylElt]

embed_KGB

L541embed_KGB (KGBElt x_L,RealForm G) = KGBElt
If L is a theta-stable Levi factor in G,  KGB for L embeds in KGB for G.

also defined in induction.at

inverse_embed_KGB

L545inverse_embed_KGB (KGBElt x_G,RealForm L) = KGBElt
Given a KGB element of G, find one for the theta-stable Levi L which maps to it.

also defined in induction.at

Given an involution theta and a root datum, return the set S of complex roots
containing the first positive representative of each quadruple
($\pm$ alpha,$\pm$ theta(alpha)).
L548

makeS 2 overloads

L552makeS (mat theta,RootDatum rd) = mat
L557makeS (KGBElt x) = mat
As the previous function, with argument a KGB element x determining the
involution and root datum

also defined in induction.at, nci_nilrad_roots.at

rho_S 2 overloads

L560rho_S ((mat,RootDatum)pair) = ratvec
Half sum of roots in chosen set S of complex roots, described above.
L563rho_S (KGBElt x) = ratvec
As previous function, with argument KGB element x.

also defined in induction.at

some user-oriented functions, not used in functions above
L565

(real) cuspidal parabolics L567

real_parabolic

L572real_parabolic (KGBElt x) = Parabolic
Real parabolic defined by x has Levi factor M=centralizer(A),
$\mathfrak u$=positive roots not in M;
for M to be stable: x must have no C+ roots.

real_Levi

L577real_Levi (KGBElt x) = RealForm
Levi factor of real parabolic defined by x (must have no C+ roots).

theta-stable split parabolics L579

theta_stable_parabolic

L584theta_stable_parabolic (KGBElt x) = Parabolic
Theta-stable parabolic defined by x has Levi factor L=centralizer(T),
$\mathfrak u$=positive roots not in L;
for this to be stable: no C- roots.

theta_stable_Levi

L590theta_stable_Levi (KGBElt x) = RealForm
Levi factor of theta-stable parabolic defined by x
(must have no C- roots).

is_standard_Levi

L594is_standard_Levi (RealForm L,RealForm G) = bool
Check whether a Levi subgroup L is standard in G, namely
simple roots of L are simple (at level 1 for rho_check) for G.

From the earlier documentation

Check whether a Levi subgroup L is standard in G
(simple roots of L are simple for G).

make_parabolic

L598make_parabolic (RealForm L, RealForm G) = Parabolic
Given a Levi subgroup L of G, construct the parabolic with Levi L

also defined in induction.at

minimal_real_parabolic

L602minimal_real_parabolic (RealForm G) = Parabolic

minimal_real_Levi

L603minimal_real_Levi (RealForm G) = RealForm

maximal_parabolics

L605maximal_parabolics (RootDatum rd) = [ComplexParabolic]

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