Q-Systems

AUTHORS:

  • Travis Scrimshaw (2013-10-08): Initial version
class sage.algebras.q_system.QSystem(base_ring, cartan_type, level)

Bases: sage.combinat.free_module.CombinatorialFreeModule

A Q-system.

Let \(\mathfrak{g}\) be a tamely-laced symmetrizable Kac-Moody algebra with index set \(I\) over a field \(k\). Follow the presentation given in [HKOTY1999], an unrestricted Q-system is a \(k\)-algebra in infinitely many variables \(Q^{(a)}_m\), where \(a \in I\) and \(m \in \ZZ_{>0}\), that satisifies the relations

\[\left(Q^{(a)}_m\right)^2 = Q^{(a)}_{m+1} Q^{(a)}_{m-1} + \prod_{b \sim a} \prod_{k=0}^{-C_{ab} - 1} Q^{(b)}_{\left\lfloor \frac{m C_{ba} - k}{C_{ab}} \right\rfloor},\]

with \(Q^{(a)}_0 := 1\). Q-systems can be considered as T-systems where we forget the spectral parameter \(u\) and for \(\mathfrak{g}\) of finite type, have a solution given by the characters of Kirillov-Reshetikhin modules (again without the spectral parameter) for an affine Kac-Moody algebra \(\widehat{\mathfrak{g}}\) with \(\mathfrak{g}\) as its classical subalgebra. See [KNS2011] for more information.

Q-systems have a natural bases given by polynomials of the fundamental representations \(Q^{(a)}_1\), for \(a \in I\). As such, we consider the Q-system as generated by \(\{ Q^{(a)}_1 \}_{a \in I}\).

There is also a level \(\ell\) restricted Q-system (with unit boundary condition) given by setting \(Q_{d_a \ell}^{(a)} = 1\), where \(d_a\) are the entries of the symmetrizing matrix for the dual type of \(\mathfrak{g}\).

EXAMPLES:

We begin by constructing a Q-system and doing some basic computations in type \(A_4\):

sage: Q = QSystem(QQ, ['A', 4])
sage: Q.Q(3,1)
Q^(3)[1]
sage: Q.Q(1,2)
Q^(1)[1]^2 - Q^(2)[1]
sage: Q.Q(3,3)
-Q^(1)[1]*Q^(3)[1] + Q^(1)[1]*Q^(4)[1]^2 + Q^(2)[1]^2
 - 2*Q^(2)[1]*Q^(3)[1]*Q^(4)[1] + Q^(3)[1]^3
sage: x = Q.Q(1,1) + Q.Q(2,1); x
Q^(1)[1] + Q^(2)[1]
sage: x * x
Q^(1)[1]^2 + 2*Q^(1)[1]*Q^(2)[1] + Q^(2)[1]^2

Next we do some basic computations in type \(C_4\):

sage: Q = QSystem(QQ, ['C', 4])
sage: Q.Q(4,1)
Q^(4)[1]
sage: Q.Q(1,2)
Q^(1)[1]^2 - Q^(2)[1]
sage: Q.Q(3,3)
Q^(1)[1]*Q^(4)[1]^2 - 2*Q^(2)[1]*Q^(3)[1]*Q^(4)[1] + Q^(3)[1]^3

REFERENCES:

class Element

Bases: sage.modules.with_basis.indexed_element.IndexedFreeModuleElement

An element of a Q-system.

QSystem.Q(a, m)

Return the generator \(Q^{(a)}_m\) of self.

EXAMPLES:

sage: Q = QSystem(QQ, ['A', 8])
sage: Q.Q(2, 1)
Q^(2)[1]
sage: Q.Q(6, 2)
-Q^(5)[1]*Q^(7)[1] + Q^(6)[1]^2
sage: Q.Q(7, 3)
-Q^(5)[1]*Q^(7)[1] + Q^(5)[1]*Q^(8)[1]^2 + Q^(6)[1]^2
 - 2*Q^(6)[1]*Q^(7)[1]*Q^(8)[1] + Q^(7)[1]^3
sage: Q.Q(1, 0)
1
QSystem.algebra_generators()

Return the algebra generators of self.

EXAMPLES:

sage: Q = QSystem(QQ, ['A',4])
sage: Q.algebra_generators()
Finite family {1: Q^(1)[1], 2: Q^(2)[1], 3: Q^(3)[1], 4: Q^(4)[1]}
QSystem.cartan_type()

Return the Cartan type of self.

EXAMPLES:

sage: Q = QSystem(QQ, ['A',4])
sage: Q.cartan_type()
['A', 4]
QSystem.dimension()

Return the dimension of self, which is \(\infty\).

EXAMPLES:

sage: F = QSystem(QQ, ['A',4])
sage: F.dimension()
+Infinity
QSystem.gens()

Return the generators of self.

EXAMPLES:

sage: Q = QSystem(QQ, ['A',4])
sage: Q.gens()
(Q^(1)[1], Q^(2)[1], Q^(3)[1], Q^(4)[1])
QSystem.index_set()

Return the index set of self.

EXAMPLES:

sage: Q = QSystem(QQ, ['A',4])
sage: Q.index_set()
(1, 2, 3, 4)
QSystem.level()

Return the restriction level of self or None if the system is unrestricted.

EXAMPLES:

sage: Q = QSystem(QQ, ['A',4])
sage: Q.level()

sage: Q = QSystem(QQ, ['A',4], 5)
sage: Q.level()
5
QSystem.one_basis()

Return the basis element indexing \(1\).

EXAMPLES:

sage: Q = QSystem(QQ, ['A',4])
sage: Q.one_basis()
1
sage: Q.one_basis().parent() is Q._indices
True
sage.algebras.q_system.is_tamely_laced(ct)

Check if the Cartan type ct is tamely-laced.

A (symmetrizable) Cartan type with index set \(I\) is tamely-laced if \(A_{ij} < -1\) implies \(d_i = -A_{ji} = 1\) for all \(i,j \in I\), where \((d_i)_{i \in I}\) is the diagonal matrix symmetrizing the Cartan matrix \((A_{ij})_{i,j \in I}\).

EXAMPLES:

sage: from sage.algebras.q_system import is_tamely_laced
sage: all(is_tamely_laced(ct)
....:     for ct in CartanType.samples(crystallographic=True, finite=True))
True
sage: for ct in CartanType.samples(crystallographic=True, affine=True):
....:     if not is_tamely_laced(ct):
....:         print(ct)
['A', 1, 1]
['BC', 1, 2]
['BC', 5, 2]
['BC', 1, 2]^*
['BC', 5, 2]^*
sage: cm = CartanMatrix([[2,-1,0,0],[-3,2,-2,-2],[0,-1,2,-1],[0,-1,-1,2]])
sage: is_tamely_laced(cm)
True