Integrable Highest Weight Representations of Affine Lie algebras#
In this section
Suppose that
If the Kac-Moody Lie algebra WeylCharacterRing
elements. Their
theory has many aspects in common with the finite-dimensional
representations of finite-dimensional simple Lie algebras,
such as the parametrization by dominant weights, and
generalizations of the Weyl denominator and character
formulas, due to Macdonald and Kac respectively.
If
The affine case#
Now we assume that
Therefore in [KMPS] (published in 1990) tabulated data for many of these representations. They wrote
We present a vast quantity of numerical data in tabular form, this being the only source for such information. The computations are tedious and not particularly straightforward when it is necessary to carry them out individually. We hope the appearance of this book will spur interest in a field that has become, in barely 20 years, deeply rewarding and full of promise for the future. It would indeed be gratifying if these tables were to appear to the scientists of 2040 as obsolete as the dust-gathering compilations of transcendental functions appear for us today because of their availability on every pocket calculator.
As we will explain, Sage can reproduce the contents of these tables. Moreover the tables in [KMPS] are limited to the untwisted types, but Sage also implements the twisted types.
Although Sage can reproduce the tables in the second volume of [KMPS], the work remains very useful. The first volume is a down-to-earth and very helpful exposition of the theory of integrable representations of affine Lie algebras with explicit examples and explanations of the connections with mathematical physics and vertex operators.
The support of an integrable highest weight representation#
Let
If
where
We organize the weight multiplicities into sequences called
string functions or strings as follows. By [Kac], Proposition 11.3
or Corollary 11.9, for fixed
Since
Modular Forms#
Remarkably, [KacPeterson] showed that each string is the set of Fourier coefficients of a weakly holomorphic modular form; see also [Kac] Chapters 12 and 13. Here weakly holomorphic modular means that the form is allowed to have poles at cusps.
To this end we define the modular characteristic
Here
Let
Although these do arise as partition functions in string theory, the term “string” here does not refer to physical strings.
The string function
The weight of this modular form
Sage methods for integrable representations#
In this section we will show how to use Sage to compute with
integrable highest weight representations of affine Lie algebras.
For further documentation, see the reference manual
IntegrableRepresentation
.
In the following example, we work with the integrable representation
with highest weight IntegrableRepresentation
class. We compute the strings. There are two, since there are two
dominant maximal weights. One of them is the highest weight
sage: L = RootSystem("A1~").weight_lattice(extended=True)
sage: Lambda = L.fundamental_weights()
sage: delta = L.null_root()
sage: W = L.weyl_group(prefix="s")
sage: s0, s1 = W.simple_reflections()
sage: V = IntegrableRepresentation(2*Lambda[0])
sage: V.strings()
{2*Lambda[0]: [1, 1, 3, 5, 10, 16, 28, 43, 70, 105, 161, 236],
2*Lambda[1] - delta: [1, 2, 4, 7, 13, 21, 35, 55, 86, 130, 196, 287]}
sage: mw1, mw2 = V.dominant_maximal_weights(); mw1, mw2
(2*Lambda[0], 2*Lambda[1] - delta)
We see there are two dominant maximal weights,
sage: pairs = [(s0*s1*s0, mw1), (s0*s1, mw2), (s0, mw1), (W.one(), mw2),
....: (W.one(), mw1), (s1, mw2), (s1*s0, mw1), (s1*s0*s1, mw2)]
sage: [w.action(mw) for (w, mw) in pairs]
[-6*Lambda[0] + 8*Lambda[1] - 8*delta,
-4*Lambda[0] + 6*Lambda[1] - 5*delta,
-2*Lambda[0] + 4*Lambda[1] - 2*delta,
2*Lambda[1] - delta,
2*Lambda[0],
4*Lambda[0] - 2*Lambda[1] - delta,
6*Lambda[0] - 4*Lambda[1] - 2*delta,
8*Lambda[0] - 6*Lambda[1] - 5*delta]
We confirm that the string function for one in the Weyl orbit
is the same as that for mw2
, calculated above:
sage: s1.action(mw2)
4*Lambda[0] - 2*Lambda[1] - delta
sage: [V.mult(s0.action(mw2)-k*delta) for k in [0..10]]
[1, 2, 4, 7, 13, 21, 35, 55, 86, 130, 196]
String functions of integrable representations often appear in the Online Encyclopedia of Integer Sequences:
sage: [oeis(x) for x in V.strings().values()] # optional - internet
[0: A233758: Bisection of A006950 (the even part).,
0: A233759: Bisection of A006950 (the odd part).]
Reading what the OEIS tells us about the sequence OEIS sequence A006950, we learn that the two strings are the odd and even parts of the series
This is not a modular form because of the factor
Let us confirm what the Online Encyclopedia tells us by computing the above product:
sage: PS.<q> = PowerSeriesRing(QQ)
sage: prod([(1+q^(2*k-1))/(1-q^(2*k)) for k in [1..20]])
1 + q + q^2 + 2*q^3 + 3*q^4 + 4*q^5 + 5*q^6 + 7*q^7 + 10*q^8
+ 13*q^9 + 16*q^10 + 21*q^11 + 28*q^12 + 35*q^13 + 43*q^14
+ 55*q^15 + 70*q^16 + 86*q^17 + 105*q^18 + 130*q^19 + O(q^20)
We see the values of the two strings interspersed in this
product, with the
To compute
sage: [V.modular_characteristic(x) for x in [2*Lambda[0], 2*Lambda[1]-delta]]
[-1/16, 7/16]
This gives us the string functions
These are both weakly holomorphic modular forms. Any linear combination
of these two is also a weakly holomorphic modular form. For example we
may replace
Many more examples may be found in [KacPeterson] and [KMPS].
Let
sage: L = RootSystem(['E',6,2]).weight_lattice(extended=True)
sage: Lambda = L.fundamental_weights()
sage: delta = L.null_root()
sage: V = IntegrableRepresentation(Lambda[0])
sage: V.strings()
{Lambda[0]: [1, 2, 7, 14, 35, 66, 140, 252, 485, 840, 1512, 2534]}
sage: V.to_weight((1,2,0,1,0))
Lambda[0] - 3*Lambda[1] + 4*Lambda[2] - 2*Lambda[3] + Lambda[4] - delta
sage: V.from_weight(Lambda[0] - 3*Lambda[1] + 4*Lambda[2] - 2*Lambda[3] + Lambda[4] - delta)
(1, 2, 0, 1, 0)
sage: V.from_weight(Lambda[0]-delta)
(1, 2, 3, 2, 1)
In reporting the strings, one may set the optional parameter depth to get more or fewer values. In certain cases even the first coefficient of the string is significant. See [JayneMisra2014] and [KimLeeOh2017].
Catalan numbers (OEIS sequence A000108):
sage: P = RootSystem(['A',12,1]).weight_lattice(extended=true)
sage: Lambda = P.fundamental_weights()
sage: IntegrableRepresentation(2*Lambda[0]).strings(depth=1) # long time
{2*Lambda[0]: [1],
Lambda[1] + Lambda[12] - delta: [1],
Lambda[2] + Lambda[11] - 2*delta: [2],
Lambda[3] + Lambda[10] - 3*delta: [5],
Lambda[4] + Lambda[9] - 4*delta: [14],
Lambda[5] + Lambda[8] - 5*delta: [42],
Lambda[6] + Lambda[7] - 6*delta: [132]}
Catalan triangle numbers (OEIS sequence A000245):
sage: sorted(IntegrableRepresentation(Lambda[0]+Lambda[2]).strings(depth=1).values()) # long time
[[1], [3], [9], [12], [28], [90], [297]]
Central binomial coefficients (OEIS sequence A001700, OEIS sequence A128015):
sage: P = RootSystem(['B',8,1]).weight_lattice(extended=true)
sage: Lambda = P.fundamental_weights()
sage: sorted(IntegrableRepresentation(Lambda[0]+Lambda[1]).strings(depth=1).values()) # long time
[[1], [1], [1], [3], [3], [10], [10], [35], [35], [126]]