Integrable Representations of Affine Lie Algebras

class sage.combinat.root_system.integrable_representations.IntegrableRepresentation(Lam)

Bases: sage.structure.unique_representation.UniqueRepresentation, sage.structure.category_object.CategoryObject

An irreducible integrable highest weight representation of an affine Lie algebra.

INPUT:

  • Lam – a dominant weight in an extended weight lattice of affine type

REFERENCES:

[KMPS]Kass, Moody, Patera and Slansky, Affine Lie algebras, weight multiplicities, and branching rules. Vols. 1, 2. University of California Press, Berkeley, CA, 1990.
[KacPeterson](1, 2) Kac and Peterson. Infinite-dimensional Lie algebras, theta functions and modular forms. Adv. in Math. 53 (1984), no. 2, 125-264.
[Carter]Carter, Lie algebras of finite and affine type. Cambridge University Press, 2005

If \(\Lambda\) is a dominant integral weight for an affine root system, there exists a unique integrable representation \(V=V_\Lambda\) of highest weight \(\Lambda\). If \(\mu\) is another weight, let \(m(\mu)\) denote the multiplicity of the weight \(\mu\) in this representation. The set \(\operatorname{supp}(V)\) of \(\mu\) such that \(m(\mu) > 0\) is contained in the paraboloid

\[(\Lambda+\rho | \Lambda+\rho) - (\mu+\rho | \mu+\rho) \geq 0\]

where \((\, | \,)\) is the invariant inner product on the weight lattice and \(\rho\) is the Weyl vector. Moreover if \(m(\mu)>0\) then \(\mu\in\operatorname{supp}(V)\) differs from \(\Lambda\) by an element of the root lattice ([Ka1990], Propositions 11.3 and 11.4).

Let \(\delta\) be the nullroot, which is the lowest positive imaginary root. Then by [Ka1990], Proposition 11.3 or Corollary 11.9, for fixed \(\mu\) the function \(m(\mu - k\delta)\) is a monotone increasing function of \(k\). It is useful to take \(\mu\) to be such that this function is nonzero if and only if \(k \geq 0\). Therefore we make the following definition. If \(\mu\) is such that \(m(\mu) \neq 0\) but \(m(\mu + \delta) = 0\) then \(\mu\) is called maximal.

Since \(\delta\) is fixed under the action of the affine Weyl group, and since the weight multiplicities are Weyl group invariant, the function \(k \mapsto m(\mu - k \delta)\) is unchanged if \(\mu\) is replaced by an equivalent weight. Therefore in tabulating these functions, we may assume that \(\mu\) is dominant. There are only a finite number of dominant maximal weights.

Since every nonzero weight multiplicity appears in the string \(\mu - k\delta\) for one of the finite number of dominant maximal weights \(\mu\), it is important to be able to compute these. We may do this as follows.

EXAMPLES:

sage: Lambda = RootSystem(['A',3,1]).weight_lattice(extended=true).fundamental_weights()
sage: IntegrableRepresentation(Lambda[1]+Lambda[2]+Lambda[3]).print_strings()
2*Lambda[0] + Lambda[2]: 4 31 161 665 2380 7658 22721 63120 166085 417295 1007601 2349655
Lambda[0] + 2*Lambda[1]: 2 18 99 430 1593 5274 16005 45324 121200 308829 754884 1779570
Lambda[0] + 2*Lambda[3]: 2 18 99 430 1593 5274 16005 45324 121200 308829 754884 1779570
Lambda[1] + Lambda[2] + Lambda[3]: 1 10 60 274 1056 3601 11199 32354 88009 227555 563390 1343178
3*Lambda[2] - delta: 3 21 107 450 1638 5367 16194 45687 121876 310056 757056 1783324
sage: Lambda = RootSystem(['D',4,1]).weight_lattice(extended=true).fundamental_weights()
sage: IntegrableRepresentation(Lambda[0]+Lambda[1]).print_strings()                        # long time
Lambda[0] + Lambda[1]: 1 10 62 293 1165 4097 13120 38997 109036 289575 735870 1799620
Lambda[3] + Lambda[4] - delta: 3 25 136 590 2205 7391 22780 65613 178660 463842 1155717 2777795

In this example, we construct the extended weight lattice of Cartan type \(A_3^{(1)}\), then define Lambda to be the fundamental weights \((\Lambda_i)_{i \in I}\). We find there are 5 maximal dominant weights in irreducible representation of highest weight \(\Lambda_1 + \Lambda_2 + \Lambda_3\), and we determine their strings.

It was shown in [KacPeterson] that each string is the set of Fourier coefficients of a modular form.

Every weight \(\mu\) such that the weight multiplicity \(m(\mu)\) is nonzero has the form

\[\Lambda - n_0 \alpha_0 - n_1 \alpha_1 - \cdots,\]

where the \(n_i\) are nonnegative integers. This is represented internally as a tuple \((n_0, n_1, n_2, \ldots)\). If you want an individual multiplicity you use the method m() and supply it with this tuple:

sage: Lambda = RootSystem(['C',2,1]).weight_lattice(extended=true).fundamental_weights()
sage: V = IntegrableRepresentation(2*Lambda[0]); V
Integrable representation of ['C', 2, 1] with highest weight 2*Lambda[0]
sage: V.m((3,5,3))
18

The IntegrableRepresentation class has methods to_weight() and from_weight() to convert between this internal representation and the weight lattice:

sage: delta = V.weight_lattice().null_root()
sage: V.to_weight((4,3,2))
-3*Lambda[0] + 6*Lambda[1] - Lambda[2] - 4*delta
sage: V.from_weight(-3*Lambda[0] + 6*Lambda[1] - Lambda[2] - 4*delta)
(4, 3, 2)

To get more values, use the depth parameter:

sage: L0 = RootSystem(["A",1,1]).weight_lattice(extended=true).fundamental_weight(0); L0
Lambda[0]
sage: IntegrableRepresentation(4*L0).print_strings(depth=20)
4*Lambda[0]: 1 1 3 6 13 23 44 75 131 215 354 561 889 1368 2097 3153 4712 6936 10151 14677
2*Lambda[0] + 2*Lambda[1] - delta: 1 2 5 10 20 36 66 112 190 310 501 788 1230 1880 2850 4256 6303 9222 13396 19262
4*Lambda[1] - 2*delta: 1 2 6 11 23 41 75 126 215 347 561 878 1368 2082 3153 4690 6936 10121 14677 21055

An example in type \(C_2^{(1)}\):

sage: Lambda = RootSystem(['C',2,1]).weight_lattice(extended=true).fundamental_weights()
sage: V = IntegrableRepresentation(2*Lambda[0])
sage: V.print_strings()    # long time
2*Lambda[0]: 1 2 9 26 77 194 477 1084 2387 5010 10227 20198
Lambda[0] + Lambda[2] - delta: 1 5 18 55 149 372 872 1941 4141 8523 17005 33019
2*Lambda[1] - delta: 1 4 15 44 122 304 721 1612 3469 7176 14414 28124
2*Lambda[2] - 2*delta: 2 7 26 72 194 467 1084 2367 5010 10191 20198 38907

Examples for twisted affine types:

sage: Lambda = RootSystem(["A",2,2]).weight_lattice(extended=True).fundamental_weights()
sage: IntegrableRepresentation(Lambda[0]).strings()
{Lambda[0]: [1, 1, 2, 3, 5, 7, 11, 15, 22, 30, 42, 56]}
sage: Lambda = RootSystem(['G',2,1]).dual.weight_lattice(extended=true).fundamental_weights()
sage: V = IntegrableRepresentation(Lambda[0]+Lambda[1]+Lambda[2])
sage: V.print_strings() # long time
6*Lambdacheck[0]: 4 28 100 320 944 2460 6064 14300 31968 69020 144676 293916
4*Lambdacheck[0] + Lambdacheck[2]: 4 22 84 276 800 2124 5288 12470 28116 61056 128304 261972
3*Lambdacheck[0] + Lambdacheck[1]: 2 16 58 192 588 1568 3952 9520 21644 47456 100906 207536
Lambdacheck[0] + Lambdacheck[1] + Lambdacheck[2]: 1 6 26 94 294 832 2184 5388 12634 28390 61488 128976
2*Lambdacheck[1] - deltacheck: 2 8 32 120 354 980 2576 6244 14498 32480 69776 145528
2*Lambdacheck[0] + 2*Lambdacheck[2]: 2 12 48 164 492 1344 3428 8256 18960 41844 89208 184512
3*Lambdacheck[2] - deltacheck: 4 16 60 208 592 1584 4032 9552 21728 47776 101068 207888
sage: Lambda = RootSystem(['A',6,2]).weight_lattice(extended=true).fundamental_weights()
sage: V = IntegrableRepresentation(Lambda[0]+2*Lambda[1])
sage: V.print_strings() # long time
5*Lambda[0]: 3 42 378 2508 13707 64650 272211 1045470 3721815 12425064 39254163 118191378
3*Lambda[0] + Lambda[2]: 1 23 234 1690 9689 47313 204247 800029 2893198 9786257 31262198 95035357
Lambda[0] + 2*Lambda[1]: 1 14 154 1160 6920 34756 153523 612354 2248318 7702198 24875351 76341630
Lambda[0] + Lambda[1] + Lambda[3] - 2*delta: 6 87 751 4779 25060 113971 464842 1736620 6034717 19723537 61152367 181068152
Lambda[0] + 2*Lambda[2] - 2*delta: 3 54 499 3349 18166 84836 353092 1341250 4725259 15625727 48938396 146190544
Lambda[0] + 2*Lambda[3] - 4*delta: 15 195 1539 9186 45804 200073 789201 2866560 9723582 31120281 94724550 275919741
branch(i=None, weyl_character_ring=None, sequence=None, depth=5)

Return the branching rule on self.

Removing any node from the extended Dynkin diagram of the affine Lie algebra results in the Dynkin diagram of a classical Lie algebra, which is therefore a Lie subalgebra. For example removing the \(0\) node from the Dynkin diagram of type [X, r, 1] produces the classical Dynkin diagram of [X, r].

Thus for each \(i\) in the index set, we may restrict self to the corresponding classical subalgebra. Of course self is an infinite dimensional representation, but each weight \(\mu\) is assigned a grading by the number of times the simple root \(\alpha_i\) appears in \(\Lambda-\mu\). Thus the branched representation is graded and we get sequence of finite-dimensional representations which this method is able to compute.

OPTIONAL:

  • i – (default: 0) an element of the index set
  • weyl_character_ring – a WeylCharacterRing
  • sequence – a dictionary
  • depth – (default: 5) an upper bound for \(k\) determining how many terms to give

In the default case where \(i = 0\), you do not need to specify anything else, though you may want to increase the depth if you need more terms.

EXAMPLES:

sage: Lambda = RootSystem(['A',2,1]).weight_lattice(extended=true).fundamental_weights()
sage: V = IntegrableRepresentation(2*Lambda[0])
sage: b = V.branch(); b
[A2(0,0),
 A2(1,1),
 A2(0,0) + 2*A2(1,1) + A2(2,2),
 2*A2(0,0) + 2*A2(0,3) + 4*A2(1,1) + 2*A2(3,0) + 2*A2(2,2),
 4*A2(0,0) + 3*A2(0,3) + 10*A2(1,1) + 3*A2(3,0) + A2(1,4) + 6*A2(2,2) + A2(4,1),
 6*A2(0,0) + 9*A2(0,3) + 20*A2(1,1) + 9*A2(3,0) + 3*A2(1,4) + 12*A2(2,2) + 3*A2(4,1) + A2(3,3)]

If the parameter weyl_character_ring is omitted, the ring may be recovered as the parent of one of the branched coefficients:

sage: A2 = b[0].parent(); A2
The Weyl Character Ring of Type A2 with Integer Ring coefficients

If \(i\) is not zero then you should specify the WeylCharacterRing that you are branching to. This is determined by the Dynkin diagram:

sage: Lambda = RootSystem(['B',3,1]).weight_lattice(extended=true).fundamental_weights()
sage: V = IntegrableRepresentation(Lambda[0])
sage: V.cartan_type().dynkin_diagram()
    O 0
    |
    |
O---O=>=O
1   2   3   
B3~

In this example, we observe that removing the \(i=2\) node from the Dynkin diagram produces a reducible diagram of type A1xA1xA1. Thus we have a branching to \(\mathfrak{sl}(2) \times \mathfrak{sl}(2) \times \mathfrak{sl}(2)\):

sage: A1xA1xA1 = WeylCharacterRing("A1xA1xA1",style="coroots")
sage: V.branch(i=2,weyl_character_ring=A1xA1xA1)
[A1xA1xA1(1,0,0),
 A1xA1xA1(0,1,2),
 A1xA1xA1(1,0,0) + A1xA1xA1(1,2,0) + A1xA1xA1(1,0,2),
 A1xA1xA1(2,1,2) + A1xA1xA1(0,1,0) + 2*A1xA1xA1(0,1,2),
 3*A1xA1xA1(1,0,0) + 2*A1xA1xA1(1,2,0) + A1xA1xA1(1,2,2) + 2*A1xA1xA1(1,0,2) + A1xA1xA1(1,0,4) + A1xA1xA1(3,0,0),
 A1xA1xA1(2,1,0) + 3*A1xA1xA1(2,1,2) + 2*A1xA1xA1(0,1,0) + 5*A1xA1xA1(0,1,2) + A1xA1xA1(0,1,4) + A1xA1xA1(0,3,2)]

If the nodes of the two Dynkin diagrams are not in the same order, you must specify an additional parameter, sequence which gives a dictionary to the affine Dynkin diagram to the classical one.

EXAMPLES:

sage: Lambda = RootSystem(['F',4,1]).weight_lattice(extended=true).fundamental_weights()
sage: V = IntegrableRepresentation(Lambda[0])
sage: V.cartan_type().dynkin_diagram()
O---O---O=>=O---O
0   1   2   3   4   
F4~
sage: A1xC3=WeylCharacterRing("A1xC3",style="coroots")
sage: A1xC3.dynkin_diagram()
O
1   
O---O=<=O
2   3   4   
A1xC3

Observe that removing the \(i=1\) node from the F4~ Dynkin diagram gives the A1xC3 diagram, but the roots are in a different order. The nodes \(0, 2, 3, 4\) of F4~ correspond to 1, 4, 3, 2 of A1xC3 and so we encode this in a dictionary:

sage: V.branch(i=1,weyl_character_ring=A1xC3,sequence={0:1,2:4,3:3,4:2}) # long time
[A1xC3(1,0,0,0),
 A1xC3(0,0,0,1),
 A1xC3(1,0,0,0) + A1xC3(1,2,0,0),
 A1xC3(2,0,0,1) + A1xC3(0,0,0,1) + A1xC3(0,1,1,0),
 2*A1xC3(1,0,0,0) + A1xC3(1,0,1,0) + 2*A1xC3(1,2,0,0) + A1xC3(1,0,2,0) + A1xC3(3,0,0,0),
 2*A1xC3(2,0,0,1) + A1xC3(2,1,1,0) + A1xC3(0,1,0,0) + 3*A1xC3(0,0,0,1) + 2*A1xC3(0,1,1,0) + A1xC3(0,2,0,1)]

The branch method gives a way of computing the graded dimension of the integrable representation:

sage: Lambda = RootSystem("A1~").weight_lattice(extended=true).fundamental_weights()
sage: V=IntegrableRepresentation(Lambda[0])
sage: r = [x.degree() for x in V.branch(depth=15)]; r
[1, 3, 4, 7, 13, 19, 29, 43, 62, 90, 126, 174, 239, 325, 435, 580]
sage: oeis(r)                                                        # optional -- internet
0: A029552: Expansion of phi(x) / f(-x) in powers of x where phi(), f() are Ramanujan theta functions.
cartan_type()

Return the Cartan type of self.

EXAMPLES:

sage: Lambda = RootSystem(['F',4,1]).weight_lattice(extended=true).fundamental_weights()
sage: V = IntegrableRepresentation(Lambda[0])
sage: V.cartan_type()
['F', 4, 1]
coxeter_number()

Return the Coxeter number of the Cartan type of self.

The Coxeter number is defined in [Ka1990] Chapter 6, and commonly denoted \(h\).

EXAMPLES:

sage: Lambda = RootSystem(['F',4,1]).weight_lattice(extended=true).fundamental_weights()
sage: V = IntegrableRepresentation(Lambda[0])
sage: V.coxeter_number()
12
dominant_maximal_weights()

Return the dominant maximal weights of self.

A weight \(\mu\) is maximal if it has nonzero multiplicity but \(\mu + \delta`\) has multiplicity zero. There are a finite number of dominant maximal weights. Indeed, [Ka1990] Proposition 12.6 shows that the dominant maximal weights are in bijection with the classical weights in \(k \cdot F\) where \(F\) is the fundamental alcove and \(k\) is the level. The construction used in this method is based on that Proposition.

EXAMPLES:

sage: Lambda = RootSystem(['C',3,1]).weight_lattice(extended=true).fundamental_weights()
sage: IntegrableRepresentation(2*Lambda[0]).dominant_maximal_weights()
(2*Lambda[0],
 Lambda[0] + Lambda[2] - delta,
 2*Lambda[1] - delta,
 Lambda[1] + Lambda[3] - 2*delta,
 2*Lambda[2] - 2*delta,
 2*Lambda[3] - 3*delta)
dual_coxeter_number()

Return the dual Coxeter number of the Cartan type of self.

The dual Coxeter number is defined in [Ka1990] Chapter 6, and commonly denoted \(h^{\vee}\).

EXAMPLES:

sage: Lambda = RootSystem(['F',4,1]).weight_lattice(extended=true).fundamental_weights()
sage: V = IntegrableRepresentation(Lambda[0])
sage: V.dual_coxeter_number()
9
from_weight(mu)

Return the tuple \((n_0, n_1, ...)`\) such that mu equals \(\Lambda - \sum_{i \in I} n_i \alpha_i\) in self, where \(\Lambda\) is the highest weight of self.

EXAMPLES:

sage: Lambda = RootSystem(['A',2,1]).weight_lattice(extended=true).fundamental_weights()
sage: V = IntegrableRepresentation(2*Lambda[2])
sage: V.to_weight((1,0,0))
-2*Lambda[0] + Lambda[1] + 3*Lambda[2] - delta
sage: delta = V.weight_lattice().null_root()
sage: V.from_weight(-2*Lambda[0] + Lambda[1] + 3*Lambda[2] - delta)
(1, 0, 0)
highest_weight()

Returns the highest weight of self.

EXAMPLES:

sage: Lambda = RootSystem(['D',4,1]).weight_lattice(extended=true).fundamental_weights()
sage: IntegrableRepresentation(Lambda[0]+2*Lambda[2]).highest_weight()
Lambda[0] + 2*Lambda[2]
level()

Return the level of self.

The level of a highest weight representation \(V_{\Lambda}\) is defined as \((\Lambda | \delta)\) See [Ka1990] section 12.4.

EXAMPLES:

sage: Lambda = RootSystem(['G',2,1]).weight_lattice(extended=true).fundamental_weights()
sage: [IntegrableRepresentation(Lambda[i]).level() for i in [0,1,2]]
[1, 1, 2]
m(n)

Return the multiplicity of the weight \(\mu\) in self, where \(\mu = \Lambda - \sum_i n_i \alpha_i\).

INPUT:

  • n – a tuple representing a weight \(\mu\).

EXAMPLES:

sage: Lambda = RootSystem(['E',6,1]).weight_lattice(extended=true).fundamental_weights()
sage: V = IntegrableRepresentation(Lambda[0])
sage: u = V.highest_weight() - V.weight_lattice().null_root()
sage: V.from_weight(u)
(1, 1, 2, 2, 3, 2, 1)
sage: V.m(V.from_weight(u))
6
modular_characteristic(mu=None)

Return the modular characteristic of self.

The modular characteristic is a rational number introduced by Kac and Peterson [KacPeterson], required to interpret the string functions as Fourier coefficients of modular forms. See [Ka1990] Section 12.7. Let \(k\) be the level, and let \(h^\vee\) be the dual Coxeter number. Then

\[m_\Lambda = \frac{|\Lambda+\rho|^2}{2(k+h^\vee)} - \frac{|\rho|^2}{2h^\vee}\]

If \(\mu\) is a weight, then

\[m_{\Lambda,\mu} = m_\Lambda - \frac{|\mu|^2}{2k}.\]

OPTIONAL:

  • mu – a weight; or alternatively:
  • n – a tuple representing a weight \(\mu\).

If no optional parameter is specified, this returns \(m_\Lambda\). If mu is specified, it returns \(m_{\Lambda,\mu}\). You may use the tuple n to specify \(\mu\). If you do this, \(\mu\) is \(\Lambda - \sum_i n_i \alpha_i\).

EXAMPLES:

sage: Lambda = RootSystem(['A',1,1]).weight_lattice(extended=true).fundamental_weights()
sage: V = IntegrableRepresentation(3*Lambda[0]+2*Lambda[1])
sage: [V.modular_characteristic(x) for x in V.dominant_maximal_weights()]
[11/56, -1/280, 111/280]
print_strings(depth=12)

Print the strings of self.

See also

strings()

EXAMPLES:

sage: Lambda = RootSystem(['A',1,1]).weight_lattice(extended=true).fundamental_weights()
sage: V = IntegrableRepresentation(2*Lambda[0])
sage: V.print_strings(depth=25)
2*Lambda[0]: 1 1 3 5 10 16 28 43 70 105 161 236 350 501 722 1016 1431 1981 2741 3740 5096 6868 9233 12306 16357
2*Lambda[1] - delta: 1 2 4 7 13 21 35 55 86 130 196 287 420 602 858 1206 1687 2331 3206 4368 5922 7967 10670 14193 18803
root_lattice()

Return the root lattice associated to self.

EXAMPLES:

sage: V=IntegrableRepresentation(RootSystem(['F',4,1]).weight_lattice(extended=true).fundamental_weight(0))
sage: V.root_lattice()
Root lattice of the Root system of type ['F', 4, 1]
s(n, i)

Return the action of the i-th simple reflection on the internal representation of weights by tuples n in self.

EXAMPLES:

sage: V = IntegrableRepresentation(RootSystem(['A',2,1]).weight_lattice(extended=true).fundamental_weight(0))
sage: [V.s((0,0,0),i) for i in V._index_set]
[(1, 0, 0), (0, 0, 0), (0, 0, 0)]
string(max_weight, depth=12)

Return the list of multiplicities \(m(\Lambda - k \delta)\) in self, where \(\Lambda\) is max_weight and \(k\) runs from \(0\) to depth.

INPUT:

  • max_weight – a dominant maximal weight
  • depth – (default: 12) the maximum value of \(k\)

EXAMPLES:

sage: Lambda = RootSystem(['A',2,1]).weight_lattice(extended=true).fundamental_weights()
sage: V = IntegrableRepresentation(2*Lambda[0])
sage: V.string(2*Lambda[0])
[1, 2, 8, 20, 52, 116, 256, 522, 1045, 1996, 3736, 6780]
sage: V.string(Lambda[1] + Lambda[2])
[0, 1, 4, 12, 32, 77, 172, 365, 740, 1445, 2736, 5041]
strings(depth=12)

Return the set of dominant maximal weights of self, together with the string coefficients for each.

OPTIONAL:

  • depth – (default: 12) a parameter indicating how far to push computations

EXAMPLES:

sage: Lambda = RootSystem(['A',1,1]).weight_lattice(extended=true).fundamental_weights()
sage: V = IntegrableRepresentation(2*Lambda[0])
sage: S = V.strings(depth=25)
sage: for k in S:
....:     print("{}: {}".format(k, ' '.join(str(x) for x in S[k])))
2*Lambda[0]: 1 1 3 5 10 16 28 43 70 105 161 236 350 501 722 1016 1431 1981 2741 3740 5096 6868 9233 12306 16357
2*Lambda[1] - delta: 1 2 4 7 13 21 35 55 86 130 196 287 420 602 858 1206 1687 2331 3206 4368 5922 7967 10670 14193 18803
to_dominant(n)

Return the dominant weight in self equivalent to n under the affine Weyl group.

EXAMPLES:

sage: Lambda = RootSystem(['A',2,1]).weight_lattice(extended=true).fundamental_weights()
sage: V = IntegrableRepresentation(3*Lambda[0])
sage: n = V.to_dominant((13,11,7)); n
(4, 3, 3)
sage: V.to_weight(n)
Lambda[0] + Lambda[1] + Lambda[2] - 4*delta
to_weight(n)

Return the weight associated to the tuple n in self.

If n is the tuple \((n_1, n_2, \ldots)\), then the associated weight is \(\Lambda - \sum_i n_i \alpha_i\), where \(\Lambda\) is the weight of the representation.

INPUT:

  • n – a tuple representing a weight

EXAMPLES:

sage: Lambda = RootSystem(['A',2,1]).weight_lattice(extended=true).fundamental_weights()
sage: V = IntegrableRepresentation(2*Lambda[2])
sage: V.to_weight((1,0,0))
-2*Lambda[0] + Lambda[1] + 3*Lambda[2] - delta
weight_lattice()

Return the weight lattice associated to self.

EXAMPLES:

sage: V=IntegrableRepresentation(RootSystem(['E',6,1]).weight_lattice(extended=true).fundamental_weight(0))
sage: V.weight_lattice()
Extended weight lattice of the Root system of type ['E', 6, 1]