Alternating Central Extension Quantum Onsager Algebra#
AUTHORS:
Travis Scrimshaw (2021-03): Initial version
- class sage.algebras.quantum_groups.ace_quantum_onsager.ACEQuantumOnsagerAlgebra(R, q)#
Bases:
CombinatorialFreeModule
The alternating central extension of the \(q\)-Onsager algebra.
The alternating central extension \(\mathcal{A}_q\) of the \(q\)-Onsager algebra \(O_q\) is a current algebra of \(O_q\) introduced by Baseilhac and Koizumi [BK2005]. A presentation was given by Baseilhac and Shigechi [BS2010], which was then reformulated in terms of currents in [Ter2021] and then used to prove that the generators form a PBW basis.
Note
This is only for the \(q\)-Onsager algebra with parameter \(c = q^{-1} (q - q^{-1})^2\).
EXAMPLES:
sage: A = algebras.AlternatingCentralExtensionQuantumOnsager(QQ) sage: AG = A.algebra_generators()
We construct the generators \(\mathcal{G}_3\), \(\mathcal{W}_{-5}\), \(\mathcal{W}_2\), and \(\widetilde{\mathcal{G}}_{4}\) and perform some computations:
sage: G3 = AG[0,3] sage: Wm5 = AG[1,-5] sage: W2 = AG[1,2] sage: Gt4 = AG[2,4] sage: [G3, Wm5, W2, Gt4] [G[3], W[-5], W[2], Gt[4]] sage: Gt4 * G3 G[3]*Gt[4] + ((-q^12+3*q^8-3*q^4+1)/q^6)*W[-6]*W[1] + ((-q^12+3*q^8-3*q^4+1)/q^6)*W[-5]*W[2] + ((q^12-3*q^8+3*q^4-1)/q^6)*W[-4]*W[1] + ((-q^12+3*q^8-3*q^4+1)/q^6)*W[-4]*W[3] + ((-q^12+3*q^8-3*q^4+1)/q^6)*W[-3]*W[-2] + ((q^12-3*q^8+3*q^4-1)/q^6)*W[-3]*W[2] + ((q^12-3*q^8+3*q^4-1)/q^6)*W[-2]*W[5] + ((-q^12+3*q^8-3*q^4+1)/q^6)*W[-1]*W[4] + ((q^12-3*q^8+3*q^4-1)/q^6)*W[-1]*W[6] + ((-q^12+3*q^8-3*q^4+1)/q^6)*W[0]*W[5] + ((q^12-3*q^8+3*q^4-1)/q^6)*W[0]*W[7] + ((q^12-3*q^8+3*q^4-1)/q^6)*W[3]*W[4] sage: Wm5 * G3 ((q^2-1)/q^2)*G[1]*W[-7] + ((-q^2+1)/q^2)*G[1]*W[7] + ((q^2-1)/q^2)*G[2]*W[-6] + ((-q^2+1)/q^2)*G[2]*W[6] + G[3]*W[-5] + ((-q^2+1)/q^2)*G[6]*W[-2] + ((q^2-1)/q^2)*G[6]*W[2] + ((-q^2+1)/q^2)*G[7]*W[-1] + ((q^2-1)/q^2)*G[7]*W[1] + ((-q^2+1)/q^2)*G[8]*W[0] + ((-q^8+2*q^4-1)/q^5)*W[-8] + ((q^8-2*q^4+1)/q^5)*W[8] sage: W2 * G3 (q^2-1)*G[1]*W[-2] + (-q^2+1)*G[1]*W[4] + (-q^2+1)*G[3]*W[0] + q^2*G[3]*W[2] + (q^2-1)*G[4]*W[1] + ((-q^8+2*q^4-1)/q^3)*W[-3] + ((q^8-2*q^4+1)/q^3)*W[5] sage: W2 * Wm5 (q^4/(q^8+2*q^6-2*q^2-1))*G[1]*Gt[6] + (-q^4/(q^8+2*q^6-2*q^2-1))*G[6]*Gt[1] + W[-5]*W[2] + (q/(q^2+1))*G[7] + (-q/(q^2+1))*Gt[7] sage: Gt4 * Wm5 ((q^2-1)/q^2)*W[-8]*Gt[1] + ((q^2-1)/q^2)*W[-7]*Gt[2] + ((q^2-1)/q^2)*W[-6]*Gt[3] + W[-5]*Gt[4] + ((-q^2+1)/q^2)*W[-3]*Gt[6] + ((-q^2+1)/q^2)*W[-2]*Gt[7] + ((-q^2+1)/q^2)*W[-1]*Gt[8] + ((-q^2+1)/q^2)*W[0]*Gt[9] + ((q^2-1)/q^2)*W[1]*Gt[8] + ((q^2-1)/q^2)*W[2]*Gt[7] + ((q^2-1)/q^2)*W[3]*Gt[6] + ((-q^2+1)/q^2)*W[6]*Gt[3] + ((-q^2+1)/q^2)*W[7]*Gt[2] + ((-q^2+1)/q^2)*W[8]*Gt[1] + ((-q^8+2*q^4-1)/q^5)*W[-9] + ((q^8-2*q^4+1)/q^5)*W[9] sage: Gt4 * W2 (q^2-1)*W[-3]*Gt[1] + (-q^2+1)*W[0]*Gt[4] + (q^2-1)*W[1]*Gt[5] + q^2*W[2]*Gt[4] + (-q^2+1)*W[5]*Gt[1] + ((-q^8+2*q^4-1)/q^3)*W[-4] + ((q^8-2*q^4+1)/q^3)*W[6]
REFERENCES:
- algebra_generators()#
Return the algebra generators of
self
.EXAMPLES:
sage: A = algebras.AlternatingCentralExtensionQuantumOnsager(QQ) sage: A.algebra_generators() Lazy family (generator map(i))_{i in Disjoint union of Family (Positive integers, Integer Ring, Positive integers)}
- dagger()#
The antiautomorphism \(\dagger\).
EXAMPLES:
sage: A = algebras.AlternatingCentralExtensionQuantumOnsager(QQ) sage: G = A.algebra_generators() sage: x = A.an_element()^2 sage: A.dagger(A.dagger(x)) == x True sage: A.dagger(G[1,-1] * G[1,1]) == A.dagger(G[1,1]) * A.dagger(G[1,-1]) True sage: A.dagger(G[0,2] * G[1,3]) == A.dagger(G[1,3]) * A.dagger(G[0,2]) True sage: A.dagger(G[2,2] * G[1,3]) == A.dagger(G[1,3]) * A.dagger(G[2,2]) True
- degree_on_basis(m)#
Return the degree of the basis element indexed by
m
.EXAMPLES:
sage: A = algebras.AlternatingCentralExtensionQuantumOnsager(QQ) sage: G = A.algebra_generators() sage: A.degree_on_basis(G[0,1].leading_support()) 2 sage: A.degree_on_basis(G[0,2].leading_support()) 4 sage: A.degree_on_basis(G[1,-1].leading_support()) 3 sage: A.degree_on_basis(G[1,0].leading_support()) 1 sage: A.degree_on_basis(G[1,1].leading_support()) 1 sage: A.degree_on_basis(G[2,1].leading_support()) 2 sage: A.degree_on_basis(G[2,2].leading_support()) 4 sage: [x.degree() for x in A.some_elements()] [1, 5, 3, 1, 5, 2, 4, 2, 4]
- gens()#
Return the algebra generators of
self
.EXAMPLES:
sage: A = algebras.AlternatingCentralExtensionQuantumOnsager(QQ) sage: A.algebra_generators() Lazy family (generator map(i))_{i in Disjoint union of Family (Positive integers, Integer Ring, Positive integers)}
- one_basis()#
Return the basis element indexing \(1\).
EXAMPLES:
sage: A = algebras.AlternatingCentralExtensionQuantumOnsager(QQ) sage: ob = A.one_basis(); ob 1 sage: ob.parent() Free abelian monoid indexed by Disjoint union of Family (Positive integers, Integer Ring, Positive integers)
- product_on_basis(lhs, rhs)#
Return the product of the two basis elements
lhs
andrhs
.EXAMPLES:
sage: A = algebras.AlternatingCentralExtensionQuantumOnsager(QQ) sage: G = A.algebra_generators() sage: q = A.q() sage: rho = -(q^2 - q^-2)^2
We verify the PBW ordering:
sage: G[0,1] * G[1,1] # indirect doctest G[1]*W[1] sage: G[1,1] * G[0,1] q^2*G[1]*W[1] + ((-q^8+2*q^4-1)/q^3)*W[0] + ((q^8-2*q^4+1)/q^3)*W[2] sage: G[1,-1] * G[1,1] W[-1]*W[1] sage: G[1,1] * G[1,-1] W[-1]*W[1] + (q/(q^2+1))*G[2] + (-q/(q^2+1))*Gt[2] sage: G[1,1] * G[2,1] W[1]*Gt[1] sage: G[2,1] * G[1,1] q^2*W[1]*Gt[1] + ((-q^8+2*q^4-1)/q^3)*W[0] + ((q^8-2*q^4+1)/q^3)*W[2] sage: G[0,1] * G[2,1] G[1]*Gt[1] sage: G[2,1] * G[0,1] G[1]*Gt[1] + ((-q^12+3*q^8-3*q^4+1)/q^6)*W[-1]*W[1] + ((-q^12+3*q^8-3*q^4+1)/q^6)*W[0]^2 + ((q^12-3*q^8+3*q^4-1)/q^6)*W[0]*W[2] + ((q^12-3*q^8+3*q^4-1)/q^6)*W[1]^2
We verify some of the defining relations (see Equations (3-14) in [Ter2021]), which are used to construct the PBW basis:
sage: G[0,1] * G[0,2] == G[0,2] * G[0,1] True sage: G[1,-1] * G[1,-2] == G[1,-2] * G[1,-1] True sage: G[1,1] * G[1,2] == G[1,2] * G[1,1] True sage: G[2,1] * G[2,2] == G[2,2] * G[2,1] True sage: G[1,0] * G[1,2] - G[1,2] * G[1,0] == G[1,-1] * G[1,1] - G[1,1] * G[1,-1] True sage: G[1,0] * G[1,2] - G[1,2] * G[1,0] == (G[2,2] - G[0,2]) / (q + ~q) True sage: q * G[1,0] * G[0,2] - ~q * G[0,2] * G[1,0] == q * G[2,2] * G[1,0] - ~q * G[1,0] * G[2,2] True sage: q * G[1,0] * G[0,2] - ~q * G[0,2] * G[1,0] == rho * G[1,-2] - rho * G[1,2] True sage: q * G[0,2] * G[1,1] - ~q * G[1,1] * G[0,2] == q * G[1,1] * G[2,2] - ~q * G[2,2] * G[1,1] True sage: q * G[0,2] * G[1,1] - ~q * G[1,1] * G[0,2] == rho * G[1,3] - rho * G[1,-1] True sage: G[1,-2] * G[1,2] - G[1,2] * G[1,-2] == G[1,-1] * G[1,3] - G[1,3] * G[1,-1] True sage: G[1,-2] * G[0,2] - G[0,2] * G[1,-2] == G[1,-1] * G[0,3] - G[0,3] * G[1,-1] True sage: G[1,1] * G[0,2] - G[0,2] * G[1,1] == G[1,2] * G[0,1] - G[0,1] * G[1,2] True sage: G[1,-2] * G[2,2] - G[2,2] * G[1,-2] == G[1,-1] * G[2,3] - G[2,3] * G[1,-1] True sage: G[1,1] * G[2,2] - G[2,2] * G[1,1] == G[1,2] * G[2,1] - G[2,1] * G[1,2] True sage: G[0,1] * G[2,2] - G[2,2] * G[0,1] == G[0,2] * G[2,1] - G[2,1] * G[0,2] True
- q()#
Return the parameter \(q\) of
self
.EXAMPLES:
sage: A = algebras.AlternatingCentralExtensionQuantumOnsager(QQ) sage: A.q() q
- quantum_onsager_pbw_generator(i)#
Return the image of the PBW generator of the \(q\)-Onsager algebra in
self
.INPUT:
i
– a pair(k, m)
such thatk=0
andm
is an integerk=1
andm
is a positive integer
EXAMPLES:
sage: A = algebras.AlternatingCentralExtensionQuantumOnsager(QQ) sage: A.quantum_onsager_pbw_generator((0,0)) W[1] sage: A.quantum_onsager_pbw_generator((0,1)) (q^3/(q^4-1))*W[1]*Gt[1] - q^2*W[0] + (q^2+1)*W[2] sage: A.quantum_onsager_pbw_generator((0,2)) (q^6/(q^8-2*q^4+1))*W[1]*Gt[1]^2 + (-q^5/(q^4-1))*W[0]*Gt[1] + (q^3/(q^2-1))*W[1]*Gt[2] + (q^3/(q^2-1))*W[2]*Gt[1] + (-q^4-q^2)*W[-1] - q^2*W[1] + (q^4+2*q^2+1)*W[3] sage: A.quantum_onsager_pbw_generator((0,-1)) W[0] sage: A.quantum_onsager_pbw_generator((0,-2)) (q/(q^4-1))*W[0]*Gt[1] + ((q^2+1)/q^2)*W[-1] - 1/q^2*W[1] sage: A.quantum_onsager_pbw_generator((0,-3)) (q^2/(q^8-2*q^4+1))*W[0]*Gt[1]^2 + (1/(q^3-q))*W[-1]*Gt[1] + (1/(q^3-q))*W[0]*Gt[2] - (1/(q^5-q))*W[1]*Gt[1] + ((q^4+2*q^2+1)/q^4)*W[-2] - 1/q^2*W[0] + ((-q^2-1)/q^4)*W[2] sage: A.quantum_onsager_pbw_generator((1,1)) ((-q^2+1)/q^2)*W[0]*W[1] + (1/(q^3+q))*G[1] - (1/(q^3+q))*Gt[1] sage: A.quantum_onsager_pbw_generator((1,2)) -1/q*W[0]*W[1]*Gt[1] + (1/(q^6+q^4-q^2-1))*G[1]*Gt[1] + ((-q^4+1)/q^4)*W[-1]*W[1] + (q^2-1)*W[0]^2 + ((-q^4+1)/q^2)*W[0]*W[2] + ((q^2-1)/q^4)*W[1]^2 - (1/(q^6+q^4-q^2-1))*Gt[1]^2 + 1/q^3*G[2] - 1/q^3*Gt[2]
- sigma()#
The automorphism \(\sigma\).
EXAMPLES:
sage: A = algebras.AlternatingCentralExtensionQuantumOnsager(QQ) sage: G = A.algebra_generators() sage: x = A.an_element()^2 sage: A.sigma(A.sigma(x)) == x True sage: A.sigma(G[1,-1] * G[1,1]) == A.sigma(G[1,-1]) * A.sigma(G[1,1]) True sage: A.sigma(G[0,2] * G[1,3]) == A.sigma(G[0,2]) * A.sigma(G[1,3]) True
- some_elements()#
Return some elements of
self
.EXAMPLES:
sage: A = algebras.AlternatingCentralExtensionQuantumOnsager(QQ) sage: A.some_elements() [W[0], W[3], W[-1], W[1], W[-2], G[1], G[2], Gt[1], Gt[2]]