Onsager Algebra#
AUTHORS:
Travis Scrimshaw (2017-07): Initial version
- class sage.algebras.lie_algebras.onsager.OnsagerAlgebra(R)[source]#
Bases:
LieAlgebraWithGenerators
,IndexedGenerators
The Onsager (Lie) algebra.
The Onsager (Lie) algebra \(\mathcal{O}\) is a Lie algebra with generators \(A_0, A_1\) that satisfy
\[[A_0, [A_0, [A_0, A_1]]] = -4 [A_0, A_1], \qquad [A_1, [A_1, [A_1, A_0]]] = -4 [A_1, A_0].\]Note
We are using a rescaled version of the usual defining generators.
There exist a basis \(\{A_m, G_n \mid m \in \ZZ, n \in \ZZ_{>0}\}\) for \(\mathcal{O}\) with structure coefficients
\[[A_m, A_{m'}] = G_{m-m'}, \qquad [G_n, G_{n'}] = 0, \qquad [G_n, A_m] = 2A_{m-n} - 2A_{m+n},\]where \(m > m'\).
The Onsager algebra is isomorphic to the subalgebra of the affine Lie algebra \(\widehat{\mathfrak{sl}}_2 = \mathfrak{sl}_2 \otimes \CC[t,t^{-1}] \oplus \CC K \oplus \CC d\) that is invariant under the Chevalley involution. In particular, we have
\[A_i \mapsto f \otimes t^i - e \otimes t^{-i}, \qquad G_i \mapsto h \otimes t^{-i} - h \otimes t^i.\]where \(e,f,h\) are the Chevalley generators of \(\mathfrak{sl}_2\).
EXAMPLES:
We construct the Onsager algebra and do some basic computations:
sage: O = lie_algebras.OnsagerAlgebra(QQ) sage: O.inject_variables() Defining A0, A1
>>> from sage.all import * >>> O = lie_algebras.OnsagerAlgebra(QQ) >>> O.inject_variables() Defining A0, A1
We verify the defining relations:
sage: O([A0, [A0, [A0, A1]]]) == -4 * O([A0, A1]) True sage: O([A1, [A1, [A1, A0]]]) == -4 * O([A1, A0]) True
>>> from sage.all import * >>> O([A0, [A0, [A0, A1]]]) == -Integer(4) * O([A0, A1]) True >>> O([A1, [A1, [A1, A0]]]) == -Integer(4) * O([A1, A0]) True
We check the embedding into \(\widehat{\mathfrak{sl}}_2\):
sage: L = LieAlgebra(QQ, cartan_type=['A',1,1]) sage: B = L.basis() sage: al = RootSystem(['A',1]).root_lattice().simple_root(1) sage: ac = al.associated_coroot() sage: def emb_A(i): return B[-al,i] - B[al,-i] sage: def emb_G(i): return B[ac,i] - B[ac,-i] sage: a0 = emb_A(0) sage: a1 = emb_A(1) sage: L([a0, [a0, [a0, a1]]]) == -4 * L([a0, a1]) True sage: L([a1, [a1, [a1, a0]]]) == -4 * L([a1, a0]) True sage: all(emb_G(n).bracket(emb_A(m)) == 2*emb_A(m-n) - 2*emb_A(m+n) ....: for m in range(-10, 10) for n in range(1,10)) True sage: all(emb_A(m).bracket(emb_A(mp)) == emb_G(m-mp) ....: for m in range(-10,10) for mp in range(m-10, m)) True
>>> from sage.all import * >>> L = LieAlgebra(QQ, cartan_type=['A',Integer(1),Integer(1)]) >>> B = L.basis() >>> al = RootSystem(['A',Integer(1)]).root_lattice().simple_root(Integer(1)) >>> ac = al.associated_coroot() >>> def emb_A(i): return B[-al,i] - B[al,-i] >>> def emb_G(i): return B[ac,i] - B[ac,-i] >>> a0 = emb_A(Integer(0)) >>> a1 = emb_A(Integer(1)) >>> L([a0, [a0, [a0, a1]]]) == -Integer(4) * L([a0, a1]) True >>> L([a1, [a1, [a1, a0]]]) == -Integer(4) * L([a1, a0]) True >>> all(emb_G(n).bracket(emb_A(m)) == Integer(2)*emb_A(m-n) - Integer(2)*emb_A(m+n) ... for m in range(-Integer(10), Integer(10)) for n in range(Integer(1),Integer(10))) True >>> all(emb_A(m).bracket(emb_A(mp)) == emb_G(m-mp) ... for m in range(-Integer(10),Integer(10)) for mp in range(m-Integer(10), m)) True
REFERENCES:
- Element[source]#
alias of
LieAlgebraElement
- alternating_central_extension()[source]#
Return the alternating central extension of
self
.EXAMPLES:
sage: O = lie_algebras.OnsagerAlgebra(QQ) sage: ACE = O.alternating_central_extension() sage: ACE Alternating central extension of the Onsager algebra over Rational Field
>>> from sage.all import * >>> O = lie_algebras.OnsagerAlgebra(QQ) >>> ACE = O.alternating_central_extension() >>> ACE Alternating central extension of the Onsager algebra over Rational Field
- basis()[source]#
Return the basis of
self
.EXAMPLES:
sage: O = lie_algebras.OnsagerAlgebra(QQ) sage: O.basis() Lazy family (Onsager monomial(i))_{i in Disjoint union of Family (Integer Ring, Positive integers)}
>>> from sage.all import * >>> O = lie_algebras.OnsagerAlgebra(QQ) >>> O.basis() Lazy family (Onsager monomial(i))_{i in Disjoint union of Family (Integer Ring, Positive integers)}
- bracket_on_basis(x, y)[source]#
Return the bracket of basis elements indexed by
x
andy
wherex < y
.EXAMPLES:
sage: O = lie_algebras.OnsagerAlgebra(QQ) sage: O.bracket_on_basis((1,3), (1,9)) # [G, G] 0 sage: O.bracket_on_basis((0,8), (1,13)) # [A, G] -2*A[-5] + 2*A[21] sage: O.bracket_on_basis((0,-9), (0, 7)) # [A, A] -G[16]
>>> from sage.all import * >>> O = lie_algebras.OnsagerAlgebra(QQ) >>> O.bracket_on_basis((Integer(1),Integer(3)), (Integer(1),Integer(9))) # [G, G] 0 >>> O.bracket_on_basis((Integer(0),Integer(8)), (Integer(1),Integer(13))) # [A, G] -2*A[-5] + 2*A[21] >>> O.bracket_on_basis((Integer(0),-Integer(9)), (Integer(0), Integer(7))) # [A, A] -G[16]
- lie_algebra_generators()[source]#
Return the generators of
self
as a Lie algebra.EXAMPLES:
sage: O = lie_algebras.OnsagerAlgebra(QQ) sage: O.lie_algebra_generators() Finite family {'A0': A[0], 'A1': A[1]}
>>> from sage.all import * >>> O = lie_algebras.OnsagerAlgebra(QQ) >>> O.lie_algebra_generators() Finite family {'A0': A[0], 'A1': A[1]}
- quantum_group(q=None, c=None)[source]#
Return the quantum group of
self
.The corresponding quantum group is the
QuantumOnsagerAlgebra
. The parameter \(c\) must be such that \(c(1) = 1\)INPUT:
q
– (optional) the quantum parameter; the default is \(q \in R(q)\), where \(R\) is the base ring ofself
c
– (optional) the parameter \(c\); the default isq
EXAMPLES:
sage: O = lie_algebras.OnsagerAlgebra(QQ) sage: Q = O.quantum_group() sage: Q q-Onsager algebra with c=q over Fraction Field of Univariate Polynomial Ring in q over Rational Field
>>> from sage.all import * >>> O = lie_algebras.OnsagerAlgebra(QQ) >>> Q = O.quantum_group() >>> Q q-Onsager algebra with c=q over Fraction Field of Univariate Polynomial Ring in q over Rational Field
- some_elements()[source]#
Return some elements of
self
.EXAMPLES:
sage: O = lie_algebras.OnsagerAlgebra(QQ) sage: O.some_elements() [A[0], A[2], A[-1], G[4], -2*A[-3] + A[2] + 3*G[2]]
>>> from sage.all import * >>> O = lie_algebras.OnsagerAlgebra(QQ) >>> O.some_elements() [A[0], A[2], A[-1], G[4], -2*A[-3] + A[2] + 3*G[2]]
- class sage.algebras.lie_algebras.onsager.OnsagerAlgebraACE(R)[source]#
Bases:
InfinitelyGeneratedLieAlgebra
,IndexedGenerators
The alternating central extension of the Onsager algebra.
The alternating central extension of the
Onsager algebra
is the Lie algebra with basis elements \(\{\mathcal{A}_k, \mathcal{B}_k\}_{k \in \ZZ}\) that satisfy the relations\[\begin{split}\begin{aligned} [\mathcal{A}_k, \mathcal{A}_m] & = \mathcal{B}_{k-m} - \mathcal{B}_{m-k}, \\ [\mathcal{A}_k, \mathcal{B}_m] & = \mathcal{A}_{k+m} - \mathcal{A}_{k-m}, \\ [\mathcal{B}_k, \mathcal{B}_m] & = 0. \end{aligned}\end{split}\]This has a natural injection from the Onsager algebra by the map \(\iota\) defined by
\[\iota(A_k) = \mathcal{A}_k, \qquad\qquad \iota(B_k) = \mathcal{B}_k - \mathcal{B}_{-k}.\]Note that the map \(\iota\) differs slightly from Lemma 4.18 in [Ter2021b] due to our choice of basis of the Onsager algebra.
Warning
We have added an extra basis vector \(\mathcal{B}_0\), which would be \(0\) in the definition given in [Ter2021b].
EXAMPLES:
We begin by constructing the ACE and doing some sample computations:
sage: O = lie_algebras.OnsagerAlgebra(QQ) sage: ACE = O.alternating_central_extension() sage: ACE Alternating central extension of the Onsager algebra over Rational Field sage: B = ACE.basis() sage: A1, A2, Am2 = B[0,1], B[0,2], B[0,-2] sage: B1, B2, Bm2 = B[1,1], B[1,2], B[1,-2] sage: A1.bracket(Am2) -B[-3] + B[3] sage: A1.bracket(A2) B[-1] - B[1] sage: A1.bracket(B2) -A[-1] + A[3] sage: A1.bracket(Bm2) A[-1] - A[3] sage: B2.bracket(B1) 0 sage: Bm2.bracket(B2) 0 sage: (A2 + Am2).bracket(B1 + A2 + B2 + Bm2) -A[-3] + A[-1] - A[1] + A[3] + B[-4] - B[4]
>>> from sage.all import * >>> O = lie_algebras.OnsagerAlgebra(QQ) >>> ACE = O.alternating_central_extension() >>> ACE Alternating central extension of the Onsager algebra over Rational Field >>> B = ACE.basis() >>> A1, A2, Am2 = B[Integer(0),Integer(1)], B[Integer(0),Integer(2)], B[Integer(0),-Integer(2)] >>> B1, B2, Bm2 = B[Integer(1),Integer(1)], B[Integer(1),Integer(2)], B[Integer(1),-Integer(2)] >>> A1.bracket(Am2) -B[-3] + B[3] >>> A1.bracket(A2) B[-1] - B[1] >>> A1.bracket(B2) -A[-1] + A[3] >>> A1.bracket(Bm2) A[-1] - A[3] >>> B2.bracket(B1) 0 >>> Bm2.bracket(B2) 0 >>> (A2 + Am2).bracket(B1 + A2 + B2 + Bm2) -A[-3] + A[-1] - A[1] + A[3] + B[-4] - B[4]
The natural inclusion map \(\iota\) is implemented as a coercion map:
sage: iota = ACE.coerce_map_from(O) sage: b = O.basis() sage: am1, a2, b4 = b[0,-1], b[0,2], b[1,4] sage: iota(am1.bracket(a2)) == iota(am1).bracket(iota(a2)) True sage: iota(am1.bracket(b4)) == iota(am1).bracket(iota(b4)) True sage: iota(b4.bracket(a2)) == iota(b4).bracket(iota(a2)) True sage: am1 + B2 A[-1] + B[2] sage: am1.bracket(B2) -A[-3] + A[1] sage: Bm2.bracket(a2) -A[0] + A[4]
>>> from sage.all import * >>> iota = ACE.coerce_map_from(O) >>> b = O.basis() >>> am1, a2, b4 = b[Integer(0),-Integer(1)], b[Integer(0),Integer(2)], b[Integer(1),Integer(4)] >>> iota(am1.bracket(a2)) == iota(am1).bracket(iota(a2)) True >>> iota(am1.bracket(b4)) == iota(am1).bracket(iota(b4)) True >>> iota(b4.bracket(a2)) == iota(b4).bracket(iota(a2)) True >>> am1 + B2 A[-1] + B[2] >>> am1.bracket(B2) -A[-3] + A[1] >>> Bm2.bracket(a2) -A[0] + A[4]
We have the projection map \(\rho\) from Lemma 4.19 in [Ter2021b]:
\[\rho(\mathcal{A}_k) = A_k, \qquad\qquad \rho(\mathcal{B}_k) = \mathrm{sgn}(k) B_{|k|}.\]The kernel of \(\rho\) is the center \(\mathcal{Z}\), which has a basis \(\{B_k + B_{-k}\}_{k \in \ZZ}\):
sage: rho = ACE.projection() sage: rho(A1) A[1] sage: rho(Am2) A[-2] sage: rho(B1) 1/2*G[1] sage: rho(Bm2) -1/2*G[2] sage: all(rho(B[1,k] + B[1,-k]) == 0 for k in range(-6,6)) True sage: all(B[0,m].bracket(B[1,k] + B[1,-k]) == 0 ....: for k in range(-4,4) for m in range(-4,4)) True
>>> from sage.all import * >>> rho = ACE.projection() >>> rho(A1) A[1] >>> rho(Am2) A[-2] >>> rho(B1) 1/2*G[1] >>> rho(Bm2) -1/2*G[2] >>> all(rho(B[Integer(1),k] + B[Integer(1),-k]) == Integer(0) for k in range(-Integer(6),Integer(6))) True >>> all(B[Integer(0),m].bracket(B[Integer(1),k] + B[Integer(1),-k]) == Integer(0) ... for k in range(-Integer(4),Integer(4)) for m in range(-Integer(4),Integer(4))) True
- Element[source]#
alias of
LieAlgebraElement
- basis()[source]#
Return the basis of
self
.EXAMPLES:
sage: O = lie_algebras.OnsagerAlgebra(QQ).alternating_central_extension() sage: O.basis() Lazy family (Onsager ACE monomial(i))_{i in Disjoint union of Family (Integer Ring, Integer Ring)}
>>> from sage.all import * >>> O = lie_algebras.OnsagerAlgebra(QQ).alternating_central_extension() >>> O.basis() Lazy family (Onsager ACE monomial(i))_{i in Disjoint union of Family (Integer Ring, Integer Ring)}
- bracket_on_basis(x, y)[source]#
Return the bracket of basis elements indexed by
x
andy
wherex < y
.EXAMPLES:
sage: O = lie_algebras.OnsagerAlgebra(QQ).alternating_central_extension() sage: O.bracket_on_basis((1,3), (1,9)) # [B, B] 0 sage: O.bracket_on_basis((0,8), (1,13)) # [A, B] -A[-5] + A[21] sage: O.bracket_on_basis((0,-9), (0, 7)) # [A, A] B[-16] - B[16]
>>> from sage.all import * >>> O = lie_algebras.OnsagerAlgebra(QQ).alternating_central_extension() >>> O.bracket_on_basis((Integer(1),Integer(3)), (Integer(1),Integer(9))) # [B, B] 0 >>> O.bracket_on_basis((Integer(0),Integer(8)), (Integer(1),Integer(13))) # [A, B] -A[-5] + A[21] >>> O.bracket_on_basis((Integer(0),-Integer(9)), (Integer(0), Integer(7))) # [A, A] B[-16] - B[16]
- lie_algebra_generators()[source]#
Return the generators of
self
as a Lie algebra.EXAMPLES:
sage: O = lie_algebras.OnsagerAlgebra(QQ).alternating_central_extension() sage: O.lie_algebra_generators() Lazy family (Onsager ACE monomial(i))_{i in Disjoint union of Family (Integer Ring, Integer Ring)}
>>> from sage.all import * >>> O = lie_algebras.OnsagerAlgebra(QQ).alternating_central_extension() >>> O.lie_algebra_generators() Lazy family (Onsager ACE monomial(i))_{i in Disjoint union of Family (Integer Ring, Integer Ring)}
- projection()[source]#
Return the projection map \(\rho\) from Lemma 4.19 in [Ter2021b] to the Onsager algebra.
EXAMPLES:
sage: O = lie_algebras.OnsagerAlgebra(QQ) sage: ACE = O.alternating_central_extension() sage: rho = ACE.projection() sage: B = ACE.basis() sage: A1, A2, Am2 = B[0,1], B[0,2], B[0,-2] sage: B1, B2, Bm2 = B[1,1], B[1,2], B[1,-2] sage: rho(A1) A[1] sage: rho(Am2) A[-2] sage: rho(B1) 1/2*G[1] sage: rho(B2) 1/2*G[2] sage: rho(Bm2) -1/2*G[2] sage: rho(A1.bracket(A2)) -G[1] sage: rho(A1).bracket(rho(A2)) -G[1] sage: rho(B1.bracket(Am2)) A[-3] - A[-1] sage: rho(B1).bracket(rho(Am2)) A[-3] - A[-1]
>>> from sage.all import * >>> O = lie_algebras.OnsagerAlgebra(QQ) >>> ACE = O.alternating_central_extension() >>> rho = ACE.projection() >>> B = ACE.basis() >>> A1, A2, Am2 = B[Integer(0),Integer(1)], B[Integer(0),Integer(2)], B[Integer(0),-Integer(2)] >>> B1, B2, Bm2 = B[Integer(1),Integer(1)], B[Integer(1),Integer(2)], B[Integer(1),-Integer(2)] >>> rho(A1) A[1] >>> rho(Am2) A[-2] >>> rho(B1) 1/2*G[1] >>> rho(B2) 1/2*G[2] >>> rho(Bm2) -1/2*G[2] >>> rho(A1.bracket(A2)) -G[1] >>> rho(A1).bracket(rho(A2)) -G[1] >>> rho(B1.bracket(Am2)) A[-3] - A[-1] >>> rho(B1).bracket(rho(Am2)) A[-3] - A[-1]
- some_elements()[source]#
Return some elements of
self
.EXAMPLES:
sage: O = lie_algebras.OnsagerAlgebra(QQ).alternating_central_extension() sage: O.some_elements() [A[0], A[2], A[-1], B[4], B[-3], -2*A[-3] + A[2] + B[-1] + 3*B[2]]
>>> from sage.all import * >>> O = lie_algebras.OnsagerAlgebra(QQ).alternating_central_extension() >>> O.some_elements() [A[0], A[2], A[-1], B[4], B[-3], -2*A[-3] + A[2] + B[-1] + 3*B[2]]
- class sage.algebras.lie_algebras.onsager.QuantumOnsagerAlgebra(g, q, c)[source]#
Bases:
CombinatorialFreeModule
The quantum Onsager algebra.
The quantum Onsager algebra, or \(q\)-Onsager algebra, is a quantum group analog of the Onsager algebra. It is the left (or right) coideal subalgebra of the quantum group \(U_q(\widehat{\mathfrak{sl}}_2)\) and is the simplest example of a quantum symmetric pair coideal subalgebra of affine type.
The \(q\)-Onsager algebra depends on a parameter \(c\) such that \(c(1) = 1\). The \(q\)-Onsager algebra with parameter \(c\) is denoted \(U_q(\mathcal{O}_R)_c\), where \(R\) is the base ring of the defining Onsager algebra.
EXAMPLES:
We create the \(q\)-Onsager algebra and its generators:
sage: O = lie_algebras.OnsagerAlgebra(QQ) sage: Q = O.quantum_group() sage: G = Q.algebra_generators()
>>> from sage.all import * >>> O = lie_algebras.OnsagerAlgebra(QQ) >>> Q = O.quantum_group() >>> G = Q.algebra_generators()
The generators are given as pairs, where \(G[0,n]\) is the generator \(B_{n\delta+\alpha_1}\) and \(G[1,n]\) is the generator \(B_{n\delta}\). We use the convention that \(n\delta + \alpha_1 \equiv (-n-1)\delta + \alpha_0\).
sage: G[0,5] B[5d+a1] sage: G[0,-5] B[4d+a0] sage: G[1,5] B[5d] sage: (G[0,5] + G[0,-3]) * (G[1,2] - G[0,3]) B[2d+a0]*B[2d] - B[2d+a0]*B[3d+a1] + ((-q^4+1)/q^2)*B[1d]*B[6d+a1] + ((q^4-1)/q^2)*B[1d]*B[4d+a1] + B[2d]*B[5d+a1] - B[5d+a1]*B[3d+a1] + ((q^2+1)/q^2)*B[7d+a1] + ((q^6+q^4-q^2-1)/q^2)*B[5d+a1] + (-q^4-q^2)*B[3d+a1] sage: (G[0,5] + G[0,-3] + G[1,4]) * (G[0,2] - G[1,3]) -B[2d+a0]*B[3d] + B[2d+a0]*B[2d+a1] + ((q^4-1)/q^4)*B[1d]*B[7d+a1] + ((q^8-2*q^4+1)/q^4)*B[1d]*B[5d+a1] + (-q^4+1)*B[1d]*B[3d+a1] + ((q^4-1)/q^2)*B[2d]*B[6d+a1] + ((-q^4+1)/q^2)*B[2d]*B[4d+a1] - B[3d]*B[4d] - B[3d]*B[5d+a1] + B[4d]*B[2d+a1] + B[5d+a1]*B[2d+a1] + ((-q^2-1)/q^4)*B[8d+a1] + ((-q^6-q^4+q^2+1)/q^4)*B[6d+a1] + (-q^6-q^4+q^2+1)*B[4d+a1] + (q^6+q^4)*B[2d+a1]
>>> from sage.all import * >>> G[Integer(0),Integer(5)] B[5d+a1] >>> G[Integer(0),-Integer(5)] B[4d+a0] >>> G[Integer(1),Integer(5)] B[5d] >>> (G[Integer(0),Integer(5)] + G[Integer(0),-Integer(3)]) * (G[Integer(1),Integer(2)] - G[Integer(0),Integer(3)]) B[2d+a0]*B[2d] - B[2d+a0]*B[3d+a1] + ((-q^4+1)/q^2)*B[1d]*B[6d+a1] + ((q^4-1)/q^2)*B[1d]*B[4d+a1] + B[2d]*B[5d+a1] - B[5d+a1]*B[3d+a1] + ((q^2+1)/q^2)*B[7d+a1] + ((q^6+q^4-q^2-1)/q^2)*B[5d+a1] + (-q^4-q^2)*B[3d+a1] >>> (G[Integer(0),Integer(5)] + G[Integer(0),-Integer(3)] + G[Integer(1),Integer(4)]) * (G[Integer(0),Integer(2)] - G[Integer(1),Integer(3)]) -B[2d+a0]*B[3d] + B[2d+a0]*B[2d+a1] + ((q^4-1)/q^4)*B[1d]*B[7d+a1] + ((q^8-2*q^4+1)/q^4)*B[1d]*B[5d+a1] + (-q^4+1)*B[1d]*B[3d+a1] + ((q^4-1)/q^2)*B[2d]*B[6d+a1] + ((-q^4+1)/q^2)*B[2d]*B[4d+a1] - B[3d]*B[4d] - B[3d]*B[5d+a1] + B[4d]*B[2d+a1] + B[5d+a1]*B[2d+a1] + ((-q^2-1)/q^4)*B[8d+a1] + ((-q^6-q^4+q^2+1)/q^4)*B[6d+a1] + (-q^6-q^4+q^2+1)*B[4d+a1] + (q^6+q^4)*B[2d+a1]
We check the \(q\)-Dolan-Grady relations:
sage: def q_dolan_grady(a, b, q): ....: x = q*a*b - ~q*b*a ....: y = ~q*a*x - q*x*a ....: return a*y - y*a sage: A0, A1 = G[0,-1], G[0,0] sage: q = Q.q() sage: q_dolan_grady(A1, A0, q) == (q^4 + 2*q^2 + 1) * (A0*A1 - A1*A0) True sage: q_dolan_grady(A0, A1, q) == (q^4 + 2*q^2 + 1) * (A1*A0 - A0*A1) True
>>> from sage.all import * >>> def q_dolan_grady(a, b, q): ... x = q*a*b - ~q*b*a ... y = ~q*a*x - q*x*a ... return a*y - y*a >>> A0, A1 = G[Integer(0),-Integer(1)], G[Integer(0),Integer(0)] >>> q = Q.q() >>> q_dolan_grady(A1, A0, q) == (q**Integer(4) + Integer(2)*q**Integer(2) + Integer(1)) * (A0*A1 - A1*A0) True >>> q_dolan_grady(A0, A1, q) == (q**Integer(4) + Integer(2)*q**Integer(2) + Integer(1)) * (A1*A0 - A0*A1) True
REFERENCES:
- algebra_generators()[source]#
Return the algebra generators of
self
.EXAMPLES:
sage: O = lie_algebras.OnsagerAlgebra(QQ) sage: Q = O.quantum_group() sage: Q.algebra_generators() Lazy family (generator map(i))_{i in Disjoint union of Family (Integer Ring, Positive integers)}
>>> from sage.all import * >>> O = lie_algebras.OnsagerAlgebra(QQ) >>> Q = O.quantum_group() >>> Q.algebra_generators() Lazy family (generator map(i))_{i in Disjoint union of Family (Integer Ring, Positive integers)}
- c()[source]#
Return the parameter \(c\) of
self
.EXAMPLES:
sage: O = lie_algebras.OnsagerAlgebra(QQ) sage: Q = O.quantum_group(c=-3) sage: Q.c() -3
>>> from sage.all import * >>> O = lie_algebras.OnsagerAlgebra(QQ) >>> Q = O.quantum_group(c=-Integer(3)) >>> Q.c() -3
- degree_on_basis(m)[source]#
Return the degree of the basis element indexed by
m
.EXAMPLES:
sage: O = lie_algebras.OnsagerAlgebra(QQ) sage: Q = O.quantum_group() sage: G = Q.algebra_generators() sage: B0 = G[0,0] sage: B1 = G[0,-1] sage: Q.degree_on_basis(B0.leading_support()) 1 sage: Q.degree_on_basis((B1^10 * B0^10).leading_support()) 20 sage: ((B0 * B1)^3).maximal_degree() 6
>>> from sage.all import * >>> O = lie_algebras.OnsagerAlgebra(QQ) >>> Q = O.quantum_group() >>> G = Q.algebra_generators() >>> B0 = G[Integer(0),Integer(0)] >>> B1 = G[Integer(0),-Integer(1)] >>> Q.degree_on_basis(B0.leading_support()) 1 >>> Q.degree_on_basis((B1**Integer(10) * B0**Integer(10)).leading_support()) 20 >>> ((B0 * B1)**Integer(3)).maximal_degree() 6
- gens()[source]#
Return the algebra generators of
self
.EXAMPLES:
sage: O = lie_algebras.OnsagerAlgebra(QQ) sage: Q = O.quantum_group() sage: Q.algebra_generators() Lazy family (generator map(i))_{i in Disjoint union of Family (Integer Ring, Positive integers)}
>>> from sage.all import * >>> O = lie_algebras.OnsagerAlgebra(QQ) >>> Q = O.quantum_group() >>> Q.algebra_generators() Lazy family (generator map(i))_{i in Disjoint union of Family (Integer Ring, Positive integers)}
- lie_algebra()[source]#
Return the underlying Lie algebra of
self
.EXAMPLES:
sage: O = lie_algebras.OnsagerAlgebra(QQ) sage: Q = O.quantum_group() sage: Q.lie_algebra() Onsager algebra over Rational Field sage: Q.lie_algebra() is O True
>>> from sage.all import * >>> O = lie_algebras.OnsagerAlgebra(QQ) >>> Q = O.quantum_group() >>> Q.lie_algebra() Onsager algebra over Rational Field >>> Q.lie_algebra() is O True
- one_basis()[source]#
Return the basis element indexing \(1\).
EXAMPLES:
sage: O = lie_algebras.OnsagerAlgebra(QQ) sage: Q = O.quantum_group() sage: ob = Q.one_basis(); ob 1 sage: ob.parent() Free abelian monoid indexed by Disjoint union of Family (Integer Ring, Positive integers)
>>> from sage.all import * >>> O = lie_algebras.OnsagerAlgebra(QQ) >>> Q = O.quantum_group() >>> ob = Q.one_basis(); ob 1 >>> ob.parent() Free abelian monoid indexed by Disjoint union of Family (Integer Ring, Positive integers)
- product_on_basis(lhs, rhs)[source]#
Return the product of the two basis elements
lhs
andrhs
.EXAMPLES:
sage: O = lie_algebras.OnsagerAlgebra(QQ) sage: Q = O.quantum_group() sage: I = Q._indices.gens() sage: Q.product_on_basis(I[1,21]^2, I[1,31]^3) B[21d]^2*B[31d]^3 sage: Q.product_on_basis(I[1,31]^3, I[1,21]^2) B[21d]^2*B[31d]^3 sage: Q.product_on_basis(I[0,8], I[0,6]) B[8d+a1]*B[6d+a1] sage: Q.product_on_basis(I[0,-8], I[0,6]) B[7d+a0]*B[6d+a1] sage: Q.product_on_basis(I[0,-6], I[0,-8]) B[5d+a0]*B[7d+a0] sage: Q.product_on_basis(I[0,-6], I[1,2]) B[5d+a0]*B[2d] sage: Q.product_on_basis(I[1,6], I[0,2]) B[6d]*B[2d+a1] sage: Q.product_on_basis(I[0,1], I[0,2]) 1/q^2*B[2d+a1]*B[1d+a1] - B[1d] sage: Q.product_on_basis(I[0,-3], I[0,-1]) 1/q^2*B[a0]*B[2d+a0] + ((-q^2+1)/q^2)*B[1d+a0]^2 - B[2d] sage: Q.product_on_basis(I[0,2], I[0,-1]) q^2*B[a0]*B[2d+a1] + ((q^4-1)/q^2)*B[1d+a1]*B[a1] + (-q^2+1)*B[1d] + q^2*B[3d] sage: Q.product_on_basis(I[0,2], I[1,1]) B[1d]*B[2d+a1] + (q^2+1)*B[3d+a1] + (-q^2-1)*B[1d+a1] sage: Q.product_on_basis(I[0,1], I[1,2]) ((-q^4+1)/q^2)*B[1d]*B[2d+a1] + ((q^4-1)/q^2)*B[1d]*B[a1] + B[2d]*B[1d+a1] + (-q^4-q^2)*B[a0] + ((q^2+1)/q^2)*B[3d+a1] + ((q^6+q^4-q^2-1)/q^2)*B[1d+a1] sage: Q.product_on_basis(I[1,2], I[0,-1]) B[a0]*B[2d] + ((-q^4+1)/q^2)*B[1d+a0]*B[1d] + ((q^4-1)/q^2)*B[1d]*B[a1] + ((q^2+1)/q^2)*B[2d+a0] + ((-q^2-1)/q^2)*B[1d+a1] sage: Q.product_on_basis(I[1,2], I[0,-4]) ((q^4-1)/q^2)*B[2d+a0]*B[1d] + B[3d+a0]*B[2d] + ((-q^4+1)/q^2)*B[4d+a0]*B[1d] + (-q^4-q^2)*B[1d+a0] + ((q^6+q^4-q^2-1)/q^2)*B[3d+a0] + ((q^2+1)/q^2)*B[5d+a0]
>>> from sage.all import * >>> O = lie_algebras.OnsagerAlgebra(QQ) >>> Q = O.quantum_group() >>> I = Q._indices.gens() >>> Q.product_on_basis(I[Integer(1),Integer(21)]**Integer(2), I[Integer(1),Integer(31)]**Integer(3)) B[21d]^2*B[31d]^3 >>> Q.product_on_basis(I[Integer(1),Integer(31)]**Integer(3), I[Integer(1),Integer(21)]**Integer(2)) B[21d]^2*B[31d]^3 >>> Q.product_on_basis(I[Integer(0),Integer(8)], I[Integer(0),Integer(6)]) B[8d+a1]*B[6d+a1] >>> Q.product_on_basis(I[Integer(0),-Integer(8)], I[Integer(0),Integer(6)]) B[7d+a0]*B[6d+a1] >>> Q.product_on_basis(I[Integer(0),-Integer(6)], I[Integer(0),-Integer(8)]) B[5d+a0]*B[7d+a0] >>> Q.product_on_basis(I[Integer(0),-Integer(6)], I[Integer(1),Integer(2)]) B[5d+a0]*B[2d] >>> Q.product_on_basis(I[Integer(1),Integer(6)], I[Integer(0),Integer(2)]) B[6d]*B[2d+a1] >>> Q.product_on_basis(I[Integer(0),Integer(1)], I[Integer(0),Integer(2)]) 1/q^2*B[2d+a1]*B[1d+a1] - B[1d] >>> Q.product_on_basis(I[Integer(0),-Integer(3)], I[Integer(0),-Integer(1)]) 1/q^2*B[a0]*B[2d+a0] + ((-q^2+1)/q^2)*B[1d+a0]^2 - B[2d] >>> Q.product_on_basis(I[Integer(0),Integer(2)], I[Integer(0),-Integer(1)]) q^2*B[a0]*B[2d+a1] + ((q^4-1)/q^2)*B[1d+a1]*B[a1] + (-q^2+1)*B[1d] + q^2*B[3d] >>> Q.product_on_basis(I[Integer(0),Integer(2)], I[Integer(1),Integer(1)]) B[1d]*B[2d+a1] + (q^2+1)*B[3d+a1] + (-q^2-1)*B[1d+a1] >>> Q.product_on_basis(I[Integer(0),Integer(1)], I[Integer(1),Integer(2)]) ((-q^4+1)/q^2)*B[1d]*B[2d+a1] + ((q^4-1)/q^2)*B[1d]*B[a1] + B[2d]*B[1d+a1] + (-q^4-q^2)*B[a0] + ((q^2+1)/q^2)*B[3d+a1] + ((q^6+q^4-q^2-1)/q^2)*B[1d+a1] >>> Q.product_on_basis(I[Integer(1),Integer(2)], I[Integer(0),-Integer(1)]) B[a0]*B[2d] + ((-q^4+1)/q^2)*B[1d+a0]*B[1d] + ((q^4-1)/q^2)*B[1d]*B[a1] + ((q^2+1)/q^2)*B[2d+a0] + ((-q^2-1)/q^2)*B[1d+a1] >>> Q.product_on_basis(I[Integer(1),Integer(2)], I[Integer(0),-Integer(4)]) ((q^4-1)/q^2)*B[2d+a0]*B[1d] + B[3d+a0]*B[2d] + ((-q^4+1)/q^2)*B[4d+a0]*B[1d] + (-q^4-q^2)*B[1d+a0] + ((q^6+q^4-q^2-1)/q^2)*B[3d+a0] + ((q^2+1)/q^2)*B[5d+a0]
- q()[source]#
Return the parameter \(q\) of
self
.EXAMPLES:
sage: O = lie_algebras.OnsagerAlgebra(QQ) sage: Q = O.quantum_group() sage: Q.q() q
>>> from sage.all import * >>> O = lie_algebras.OnsagerAlgebra(QQ) >>> Q = O.quantum_group() >>> Q.q() q
- some_elements()[source]#
Return some elements of
self
.EXAMPLES:
sage: O = lie_algebras.OnsagerAlgebra(QQ) sage: Q = O.quantum_group() sage: Q.some_elements() [B[a1], B[3d+a1], B[a0], B[1d], B[4d]]
>>> from sage.all import * >>> O = lie_algebras.OnsagerAlgebra(QQ) >>> Q = O.quantum_group() >>> Q.some_elements() [B[a1], B[3d+a1], B[a0], B[1d], B[4d]]