Quantum Matrix Coordinate Algebras#

AUTHORS:

  • Travis Scrimshaw (01-2016): initial version

class sage.algebras.quantum_matrix_coordinate_algebra.QuantumGL(n, q, bar, R)#

Bases: QuantumMatrixCoordinateAlgebra_abstract

Quantum coordinate algebra of \(GL(n)\).

The quantum coordinate algebra of \(GL(n)\), or quantum \(GL(n)\) for short and denoted by \(\mathcal{O}_q(GL(n))\), is the quantum coordinate algebra of \(M_R(n, n)\) with the addition of the additional central group-like element \(c\) which satisfies \(c d = d c = 1\), where \(d\) is the quantum determinant.

Quantum \(GL(n)\) is a Hopf algebra where \(\varepsilon(c) = 1\) and the antipode \(S\) is given by the (quantum) matrix inverse. That is to say, we have \(S(c) = c^-1 = d\) and

\[S(x_{ij}) = c * (-q)^{i-j} * \tilde{t}_{ji},\]

where we have the quantum minor

\[\tilde{t}_{ij} = \sum_{\sigma} (-q)^{\ell(\sigma)} x_{1, \sigma(1)} \cdots x_{i-1, \sigma(i-1)} x_{i+1, \sigma(i+1)} \cdots x_{n, \sigma(n)}\]

with the sum over permutations \(\sigma \colon \{1, \ldots, i-1, i+1, \ldots n\} \to \{1, \ldots, j-1, j+1, \ldots, n\}\).

INPUT:

  • n – the integer \(n\)

  • R – (optional) the ring \(R\) if \(q\) is not specified (the default is \(\ZZ\)); otherwise the ring containing \(q\)

  • q – (optional) the variable \(q\); the default is \(q \in R[q, q^{-1}]\)

  • bar – (optional) the involution on the base ring; the default is \(q \mapsto q^{-1}\)

EXAMPLES:

We construct \(\mathcal{O}_q(GL(3))\) and the variables:

sage: O = algebras.QuantumGL(3)
sage: O.inject_variables()
Defining x11, x12, x13, x21, x22, x23, x31, x32, x33, c

We do some basic computations:

sage: x33 * x12
x[1,2]*x[3,3] + (q^-1-q)*x[1,3]*x[3,2]
sage: x23 * x12 * x11
(q^-1)*x[1,1]*x[1,2]*x[2,3] + (q^-2-1)*x[1,1]*x[1,3]*x[2,2]
 + (q^-3-q^-1)*x[1,2]*x[1,3]*x[2,1]
sage: c * O.quantum_determinant()
1

We verify the quantum determinant is in the center and is group-like:

sage: qdet = O.quantum_determinant()
sage: all(qdet * g == g * qdet for g in O.algebra_generators())
True
sage: qdet.coproduct() == tensor([qdet, qdet])
True

We check that the inverse of the quantum determinant is also in the center and group-like:

sage: all(c * g == g * c for g in O.algebra_generators())
True
sage: c.coproduct() == tensor([c, c])
True

Moreover, the antipode interchanges the quantum determinant and its inverse:

sage: c.antipode() == qdet
True
sage: qdet.antipode() == c
True

REFERENCES:

algebra_generators()#

Return the algebra generators of self.

EXAMPLES:

sage: O = algebras.QuantumGL(2)
sage: O.algebra_generators()
Finite family {(1, 1): x[1,1], (1, 2): x[1,2], (2, 1): x[2,1], (2, 2): x[2,2], 'c': c}
antipode_on_basis(x)#

Return the antipode of the basis element indexed by x.

EXAMPLES:

sage: O = algebras.QuantumGL(3)
sage: x = O.indices().monoid_generators()
sage: O.antipode_on_basis(x[1,2])
-(q^-1)*c*x[1,2]*x[3,3] + c*x[1,3]*x[3,2]
sage: O.antipode_on_basis(x[2,2])
c*x[1,1]*x[3,3] - q*c*x[1,3]*x[3,1]
sage: O.antipode_on_basis(x['c']) == O.quantum_determinant()
True
coproduct_on_basis(x)#

Return the coproduct on the basis element indexed by x.

EXAMPLES:

sage: O = algebras.QuantumGL(3)
sage: x = O.indices().monoid_generators()
sage: O.coproduct_on_basis(x[1,2])
x[1,1] # x[1,2] + x[1,2] # x[2,2] + x[1,3] # x[3,2]
sage: O.coproduct_on_basis(x[2,2])
x[2,1] # x[1,2] + x[2,2] # x[2,2] + x[2,3] # x[3,2]
sage: O.coproduct_on_basis(x['c'])
c # c
product_on_basis(a, b)#

Return the product of basis elements indexed by a and b.

EXAMPLES:

sage: O = algebras.QuantumGL(2)
sage: I = O.indices().monoid_generators()
sage: O.product_on_basis(I[1,1], I[2,2])
x[1,1]*x[2,2]
sage: O.product_on_basis(I[2,2], I[1,1])
x[1,1]*x[2,2] + (q^-1-q)*x[1,2]*x[2,1]
class sage.algebras.quantum_matrix_coordinate_algebra.QuantumMatrixCoordinateAlgebra(m, n, q, bar, R)#

Bases: QuantumMatrixCoordinateAlgebra_abstract

A quantum matrix coordinate algebra.

Let \(R\) be a commutative ring. The quantum matrix coordinate algebra of \(M(m, n)\) is the associative algebra over \(R[q, q^{-1}]\) generated by \(x_{ij}\), for \(i = 1, 2, \ldots, m\), \(j = 1, 2, \ldots, n\), and subject to the following relations:

\[\begin{split}\begin{array}{ll} x_{it} x_{ij} = q^{-1} x_{ij} x_{it} & \text{if } j < t, \\ x_{sj} x_{ij} = q^{-1} x_{ij} x_{sj} & \text{if } i < s, \\ x_{st} x_{ij} = x_{ij} x_{st} & \text{if } i < s, j > t, \\ x_{st} x_{ij} = x_{ij} x_{st} + (q^{-1} - q) x_{it} x_{sj} & \text{if } i < s, j < t. \\ \end{array}\end{split}\]

The quantum matrix coordinate algebra is denoted by \(\mathcal{O}_q(M(m, n))\). For \(m = n\), it is also a bialgebra given by

\[\Delta(x_{ij}) = \sum_{k=1}^n x_{ik} \otimes x_{kj}, \varepsilon(x_{ij}) = \delta_{ij}.\]

Moreover, there is a central group-like element called the quantum determinant that is defined by

\[\det_q = \sum_{\sigma \in S_n} (-q)^{\ell(\sigma)} x_{1,\sigma(1)} x_{2,\sigma(2)} \cdots x_{n,\sigma(n)}.\]

The quantum matrix coordinate algebra also has natural inclusions when restricting to submatrices. That is, let \(I \subseteq \{1, 2, \ldots, m\}\) and \(J \subseteq \{1, 2, \ldots, n\}\). Then the subalgebra generated by \(\{ x_{ij} \mid i \in I, j \in J \}\) is naturally isomorphic to \(\mathcal{O}_q(M(|I|, |J|))\).

Note

The \(q\) considered here is \(q^2\) in some references, e.g., [ZZ2005].

INPUT:

  • m – the integer \(m\)

  • n – the integer \(n\)

  • R – (optional) the ring \(R\) if \(q\) is not specified (the default is \(\ZZ\)); otherwise the ring containing \(q\)

  • q – (optional) the variable \(q\); the default is \(q \in R[q, q^{-1}]\)

  • bar – (optional) the involution on the base ring; the default is \(q \mapsto q^{-1}\)

EXAMPLES:

We construct \(\mathcal{O}_q(M(2,3))\) and the variables:

sage: O = algebras.QuantumMatrixCoordinate(2,3)
sage: O.inject_variables()
Defining x11, x12, x13, x21, x22, x23

We do some basic computations:

sage: x21 * x11
(q^-1)*x[1,1]*x[2,1]
sage: x23 * x12 * x11
(q^-1)*x[1,1]*x[1,2]*x[2,3] + (q^-2-1)*x[1,1]*x[1,3]*x[2,2]
 + (q^-3-q^-1)*x[1,2]*x[1,3]*x[2,1]

We construct the maximal quantum minors:

sage: q = O.q()
sage: qm12 = x11*x22 - q*x12*x21
sage: qm13 = x11*x23 - q*x13*x21
sage: qm23 = x12*x23 - q*x13*x22

However, unlike for the quantum determinant, they are not central:

sage: all(qm12 * g == g * qm12 for g in O.algebra_generators())
False
sage: all(qm13 * g == g * qm13 for g in O.algebra_generators())
False
sage: all(qm23 * g == g * qm23 for g in O.algebra_generators())
False

REFERENCES:

algebra_generators()#

Return the algebra generators of self.

EXAMPLES:

sage: O = algebras.QuantumMatrixCoordinate(2)
sage: O.algebra_generators()
Finite family {(1, 1): x[1,1], (1, 2): x[1,2], (2, 1): x[2,1], (2, 2): x[2,2]}
coproduct_on_basis(x)#

Return the coproduct on the basis element indexed by x.

EXAMPLES:

sage: O = algebras.QuantumMatrixCoordinate(4)
sage: x24 = O.algebra_generators()[2,4]
sage: O.coproduct_on_basis(x24.leading_support())
x[2,1] # x[1,4] + x[2,2] # x[2,4] + x[2,3] # x[3,4] + x[2,4] # x[4,4]
m()#

Return the value \(m\).

EXAMPLES:

sage: O = algebras.QuantumMatrixCoordinate(4, 6)
sage: O.m()
4
sage: O = algebras.QuantumMatrixCoordinate(4)
sage: O.m()
4
class sage.algebras.quantum_matrix_coordinate_algebra.QuantumMatrixCoordinateAlgebra_abstract(gp_indices, n, q, bar, R, category, indices_key=None)#

Bases: CombinatorialFreeModule

Abstract base class for quantum coordinate algebras of a set of matrices.

class Element#

Bases: IndexedFreeModuleElement

An element of a quantum matrix coordinate algebra.

bar()#

Return the image of self under the bar involution.

The bar involution is the \(\QQ\)-algebra anti-automorphism defined by \(x_{ij} \mapsto x_{ji}\) and \(q \mapsto q^{-1}\).

EXAMPLES:

sage: O = algebras.QuantumMatrixCoordinate(4)
sage: x = O.an_element()
sage: x.bar()
1 + 2*x[1,1] + (q^-16)*x[1,1]^2*x[1,2]^2*x[1,3]^3 + 3*x[1,2]
sage: x = O.an_element() * O.algebra_generators()[2,4]; x
x[1,1]^2*x[1,2]^2*x[1,3]^3*x[2,4] + 2*x[1,1]*x[2,4]
 + 3*x[1,2]*x[2,4] + x[2,4]
sage: xb = x.bar(); xb
(q^-16)*x[1,1]^2*x[1,2]^2*x[1,3]^3*x[2,4]
 + (q^-21-q^-15)*x[1,1]^2*x[1,2]^2*x[1,3]^2*x[1,4]*x[2,3]
 + (q^-22-q^-18)*x[1,1]^2*x[1,2]*x[1,3]^3*x[1,4]*x[2,2]
 + (q^-24-q^-20)*x[1,1]*x[1,2]^2*x[1,3]^3*x[1,4]*x[2,1]
 + 2*x[1,1]*x[2,4] + 3*x[1,2]*x[2,4]
 + (2*q^-1-2*q)*x[1,4]*x[2,1]
 + (3*q^-1-3*q)*x[1,4]*x[2,2] + x[2,4]
sage: xb.bar() == x
True
counit_on_basis(x)#

Return the counit on the basis element indexed by x.

EXAMPLES:

sage: O = algebras.QuantumMatrixCoordinate(4)
sage: G = O.algebra_generators()
sage: I = [1,2,3,4]
sage: matrix([[G[i,j].counit() for i in I] for j in I])  # indirect doctest
[1 0 0 0]
[0 1 0 0]
[0 0 1 0]
[0 0 0 1]
gens()#

Return the generators of self as a tuple.

EXAMPLES:

sage: O = algebras.QuantumMatrixCoordinate(3)
sage: O.gens()
(x[1,1], x[1,2], x[1,3],
 x[2,1], x[2,2], x[2,3],
 x[3,1], x[3,2], x[3,3])
n()#

Return the value \(n\).

EXAMPLES:

sage: O = algebras.QuantumMatrixCoordinate(4)
sage: O.n()
4
sage: O = algebras.QuantumMatrixCoordinate(4, 6)
sage: O.n()
6
one_basis()#

Return the basis element indexing \(1\).

EXAMPLES:

sage: O = algebras.QuantumMatrixCoordinate(4)
sage: O.one_basis()
1
sage: O.one()
1
product_on_basis(a, b)#

Return the product of basis elements indexed by a and b.

EXAMPLES:

sage: O = algebras.QuantumMatrixCoordinate(4)
sage: x = O.algebra_generators()
sage: b = x[1,4] * x[2,1] * x[3,4]  # indirect doctest
sage: b * (b * b) == (b * b) * b
True
sage: p = prod(list(O.algebra_generators())[:10])
sage: p * (p * p) == (p * p) * p  # long time
True
sage: x = O.an_element()
sage: y = x^2 + x[4,4] * x[3,3] * x[1,2]
sage: z = x[2,2] * x[1,4] * x[3,4] * x[1,1]
sage: x * (y * z) == (x * y) * z
True
q()#

Return the variable q.

EXAMPLES:

sage: O = algebras.QuantumMatrixCoordinate(4)
sage: O.q()
q
sage: O.q().parent()
Univariate Laurent Polynomial Ring in q over Integer Ring
sage: O.q().parent() is O.base_ring()
True
quantum_determinant()#

Return the quantum determinant of self.

The quantum determinant is defined by

\[\det_q = \sum_{\sigma \in S_n} (-q)^{\ell(\sigma)} x_{1, \sigma(1)} x_{2, \sigma(2)} \cdots x_{n, \sigma(n)}.\]

EXAMPLES:

sage: O = algebras.QuantumMatrixCoordinate(2)
sage: O.quantum_determinant()
x[1,1]*x[2,2] - q*x[1,2]*x[2,1]

We verify that the quantum determinant is central:

sage: for n in range(2,5):
....:     O = algebras.QuantumMatrixCoordinate(n)
....:     qdet = O.quantum_determinant()
....:     assert all(g * qdet == qdet * g for g in O.algebra_generators())

We also verify that it is group-like:

sage: for n in range(2,4):
....:     O = algebras.QuantumMatrixCoordinate(n)
....:     qdet = O.quantum_determinant()
....:     assert qdet.coproduct() == tensor([qdet, qdet])