Weight lattice realizations

sage.combinat.root_system.weight_lattice_realizations.WeightLatticeRealizations

The category of weight lattice realizations over a given base ring

A weight lattice realization \(L\) over a base ring \(R\) is a free module (or vector space if \(R\) is a field) endowed with an embedding of the root lattice of some root system. By restriction, this embedding defines an embedding of the root lattice of this root system, which makes \(L\) a root lattice realization.

Typical weight lattice realizations over \(\ZZ\) include the weight lattice, and ambient lattice. Typical weight lattice realizations over \(\QQ\) include the weight space, and ambient space.

To describe the embedding, a weight lattice realization must implement a method fundamental_weight`(i) returning for each `i() in the index set the image of the fundamental weight \(\Lambda_i\) under the embedding.

In order to be a proper root lattice realization, a weight lattice realization should also implement the scalar product with the coroot lattice; on the other hand, the embedding of the simple roots is given for free.

EXAMPLES:

Here, we consider the root system of type \(A_7\), and embed the weight lattice element \(x = \Lambda_1 + 2 \Lambda_3\) in several root lattice realizations:

sage: R = RootSystem(["A",7])
sage: Lambda = R.weight_lattice().fundamental_weights()
sage: x = Lambda[2] + 2 * Lambda[5]

sage: L = R.weight_space()
sage: L(x)
Lambda[2] + 2*Lambda[5]

sage: L = R.ambient_lattice()
sage: L(x)
(3, 3, 2, 2, 2, 0, 0, 0)

We embed the weight space element \(x = \Lambda_1 + 1/2 \Lambda_3\) in the ambient space:

sage: Lambda = R.weight_space().fundamental_weights()
sage: x = Lambda[2] + 1/2 * Lambda[5]

sage: L = R.ambient_space()
sage: L(x)
(3/2, 3/2, 1/2, 1/2, 1/2, 0, 0, 0)

Of course, one can’t embed the weight space in the ambient lattice:

sage: L = R.ambient_lattice()
sage: L(x)
Traceback (most recent call last):
...
TypeError: do not know how to make x (= Lambda[2] + 1/2*Lambda[5]) an element of self (=Ambient lattice of the Root system of type ['A', 7])

If \(K_1\) is a subring of \(K_2\), then one could in theory have an embedding from the weight space over \(K_1\) to any weight lattice realization over \(K_2\); this is not implemented:

sage: K1 = QQ
sage: K2 = QQ['q']
sage: L = R.ambient_space(K2)

sage: Lambda = R.weight_space(K2).fundamental_weights()
sage: L(Lambda[1])
(1, 0, 0, 0, 0, 0, 0, 0)

sage: Lambda = R.weight_space(K1).fundamental_weights()
sage: L(Lambda[1])
Traceback (most recent call last):
...
TypeError: do not know how to make x (= Lambda[1]) an element of self (=Ambient space of the Root system of type ['A', 7])