Script File
jantzen.at
I=standard, J'=irreducible
Q(J',I)=\sum a_i q^i
a_{(l(I)-l(J')-n)/2}=mult of J' in level n F_n of Jantzen filtration
where I=I_0\supset I_1\supset ...
F_0=I_0/I_1 is unique irreducible quotient
F_i=I^i/I_{i+1}
=>
a_m = mult of J' in level (length(I)-length(J')-2m) of the Jantzen filtration
Write multiplicity vector as [b_0,b_1,...,b_{r-1}]
where r=length(I)-length(J') and
where b_i = multiplicity of J' in F_i
So if Q(J',I)=a_0+a_1*q+...+a_kq^k (k=floor( (l(I)-l(J')-1)/2))
then the multiplicity vector is:
[1] if J'=I
[0,a_k,0,a_{k-1},0,...,a_0] if length(I)-length(J') is odd
[0,0,a_k,0,a_{k-1},0,...,a_0] if length(I)-length(J') is even
Thus [0,a_k,0,a_{k-1},0,...,a_0] means:
multiplicity of J' in F^1 is a_k
multiplicity of J' in F^3 is a_{k-1}
...
multiplicity of J' in F^{1+2r} is a_{k-r}
...
multiplicity of J' in F^{1+2k} is a_0 [note: 1+2k=l(I)-l(J')]
similarly
[0,0,a_k,0,a_{k-1},0,...,a_0] means:
multiplicity of J' in F^2 is a_k
multiplicity of J' in F^4 is a_{k-1}
...
multiplicity of J' in F^{2+2r} is a_{k-r}
...
multiplicity of J' in F^{2+2k} is a_{0} [note: 2+2k=l(I)-l(J')]Definitions in source order
graded_multiplicity 3 overloads
L53
graded_multiplicity ([Param] B,i_poly_mat Q,Param irr, Param std) = i_polysingular infinitesimal character: B should be singular_block_of(Param p), so that non-final and non-normal parameters are discarded Q should be KL_Q_polynomials(p) which correctly deals with cumulation etc., rather than KL_Q_polynomials(block_of(p)) which gives the wrong size matrix or KL_Q_polynomials(singular_block_of(p)) which fails with an error
L63
graded_multiplicity ([Param] B,Param irr, Param std) = i_polyB should be singular_block_of(irr)
L66
graded_multiplicity (Param irr, Param std) = i_polygraded_standard
L70
graded_standard(Param std) = hodgeParamPol\sum Q(gamma,delta)J(gamma)
also defined in coherent_irreducible.at
graded_composition_series 3 overloads
L81
graded_composition_series ([Param]B,i_poly_mat Q,Param std) = hodgeParamPolB should be singular_block_of(std), and Q should be KL_Q_polynomials(std)
similar to graded_standard but include shift by difference in lengths
L90
graded_composition_series ([Param] B,Param std) = hodgeParamPolB should be singular_block_of(std)
L92
graded_composition_series (Param std) = hodgeParamPolprint_graded_composition_series 5 overloads
L95
print_graded_composition_series ([Param] B,i_poly_mat Q,Param std) = voidL124
print_graded_composition_series ([Param] B,Param std) = voidL127
print_graded_composition_series (Param std) = voidL130
print_graded_composition_series ([Param] B,i_poly_mat Q,(Param->i_laurent_poly) shifts,Param std) = voidL160
print_graded_composition_series ([Param] B,i_poly_mat Q,(Param->i_laurent_poly) shifts, Param std) = voidGenerated from atlas-scripts at commit 7e1b958 (2026-09-17).
Commented-out code, lines 202–247 (43 lines)
set print_graded_composition_series([Param] B,i_poly_mat Q, (Param->i_laurent_poly) shifts, Param std)=void: let gs=graded_standard(std) then factors=monomials(gs) then gcs=graded_composition_series(singular_block_of(std),Q,std) then factors=std.composition_series.monomials then i=find(B,std) then lowest_power=min(for p in factors do lowest_power(shifts(p)) od) then shift_term=v_laurent_power(max(0,-lowest_power)) then max_length_diff=length(B~[0])-length(B[0]) then max_length_vector = max_length_diff+1 in prints("G=", real_form(std)); prints("graded composition series of standard module:"); prints(std); prints("length=", length(std)); prints("l=length, ld=length difference, Q=Q(irr,std)"); { let gcs=graded_composition_series(singular_block_of(std),std)} let ()=1 then max_0=max(for (p,) in gcs do #to_string(p) od) , max_1=max(for (p,) in gcs do #to_string(length(p)) od) , max_2=max(for (p,) in gcs do #to_string(length(std)-length(p)) od) , max_3=max(for (p,) in gcs do #to_string(poly_format(KL_Q_polynomial(B,Q,p,std),"q")) od) in prints(pad("parameter",max_0), " ",pad("l",max_1)," " ,pad("ld",max_2)," ", pad("Q",max_3), " ", pad("f", max_3)); for (p,m)@j in gcs do let f=shifts(p) {laurent polynomial} then f_as_poly=laurent_poly_as_poly(shift_term*f) then { m=poly_product(Q[j][i],f_as_poly) then} g=KL_Q_polynomial(B,Q,p,std) then string_m=string:"" in for k:max_length_vector do string_m +:= if k<=#m-1 and is_even(#m-1-k) then m[k]+" " else ". " fi od ; prints(pad(to_string(p),max_0), " " ,pad(to_string(length(p)),max_1)," " ,pad(to_string(length(std)-length(p)),max_2), " " ,pad(poly_format(KL_Q_polynomial(B,Q,p,std),"q"),max_3), " " ,pad(poly_format(f_as_poly,"q"),max_3) , " [", string_m,"]" ) od