# Quantum Matrix Coordinate Algebras#

AUTHORS:

• Travis Scrimshaw (01-2016): initial version

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

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)#

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]
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)#

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

class Element#

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])