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\}\).
See also
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
andb
.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
andb
.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])