Yangians#
AUTHORS:
Travis Scrimshaw (2013-10-08): Initial version
- class sage.algebras.yangian.GradedYangianBase(A, category=None)[source]#
Bases:
AssociatedGradedAlgebra
Base class for graded algebras associated to a Yangian.
- class sage.algebras.yangian.GradedYangianLoop(Y)[source]#
Bases:
GradedYangianBase
The associated graded algebra corresponding to a Yangian \(\operatorname{gr} Y(\mathfrak{gl}_n)\) with the filtration of \(\deg t_{ij}^{(r)} = r - 1\).
Using this filtration for the Yangian, the associated graded algebra is isomorphic to \(U(\mathfrak{gl}_n[z])\), the universal enveloping algebra of the loop algebra of \(\mathfrak{gl}_n\).
INPUT:
Y
– a Yangian with the loop filtration
- antipode_on_basis(m)[source]#
Return the antipode on a basis element indexed by
m
.EXAMPLES:
sage: grY = Yangian(QQ, 4).graded_algebra() sage: grY.antipode_on_basis(grY.gen(2,1,1).leading_support()) -tbar(2)[1,1] sage: x = grY.an_element(); x tbar(1)[1,1]*tbar(1)[1,2]^2*tbar(1)[1,3]^3*tbar(42)[1,1] sage: grY.antipode_on_basis(x.leading_support()) -tbar(1)[1,1]*tbar(1)[1,2]^2*tbar(1)[1,3]^3*tbar(42)[1,1] - 2*tbar(1)[1,1]*tbar(1)[1,2]*tbar(1)[1,3]^3*tbar(42)[1,2] - 3*tbar(1)[1,1]*tbar(1)[1,2]^2*tbar(1)[1,3]^2*tbar(42)[1,3] + 5*tbar(1)[1,2]^2*tbar(1)[1,3]^3*tbar(42)[1,1] + 10*tbar(1)[1,2]*tbar(1)[1,3]^3*tbar(42)[1,2] + 15*tbar(1)[1,2]^2*tbar(1)[1,3]^2*tbar(42)[1,3] sage: g = grY.indices().gens() sage: x = grY(g[1,1,1] * g[1,1,2]^2 * g[1,1,3]^3 * g[3,1,1]); x tbar(1)[1,1]*tbar(1)[1,2]^2*tbar(1)[1,3]^3*tbar(3)[1,1] sage: grY.antipode_on_basis(x.leading_support()) -tbar(1)[1,1]*tbar(1)[1,2]^2*tbar(1)[1,3]^3*tbar(3)[1,1] - 2*tbar(1)[1,1]*tbar(1)[1,2]*tbar(1)[1,3]^3*tbar(3)[1,2] - 3*tbar(1)[1,1]*tbar(1)[1,2]^2*tbar(1)[1,3]^2*tbar(3)[1,3] + 5*tbar(1)[1,2]^2*tbar(1)[1,3]^3*tbar(3)[1,1] + 10*tbar(1)[1,2]*tbar(1)[1,3]^3*tbar(3)[1,2] + 15*tbar(1)[1,2]^2*tbar(1)[1,3]^2*tbar(3)[1,3]
>>> from sage.all import * >>> grY = Yangian(QQ, Integer(4)).graded_algebra() >>> grY.antipode_on_basis(grY.gen(Integer(2),Integer(1),Integer(1)).leading_support()) -tbar(2)[1,1] >>> x = grY.an_element(); x tbar(1)[1,1]*tbar(1)[1,2]^2*tbar(1)[1,3]^3*tbar(42)[1,1] >>> grY.antipode_on_basis(x.leading_support()) -tbar(1)[1,1]*tbar(1)[1,2]^2*tbar(1)[1,3]^3*tbar(42)[1,1] - 2*tbar(1)[1,1]*tbar(1)[1,2]*tbar(1)[1,3]^3*tbar(42)[1,2] - 3*tbar(1)[1,1]*tbar(1)[1,2]^2*tbar(1)[1,3]^2*tbar(42)[1,3] + 5*tbar(1)[1,2]^2*tbar(1)[1,3]^3*tbar(42)[1,1] + 10*tbar(1)[1,2]*tbar(1)[1,3]^3*tbar(42)[1,2] + 15*tbar(1)[1,2]^2*tbar(1)[1,3]^2*tbar(42)[1,3] >>> g = grY.indices().gens() >>> x = grY(g[Integer(1),Integer(1),Integer(1)] * g[Integer(1),Integer(1),Integer(2)]**Integer(2) * g[Integer(1),Integer(1),Integer(3)]**Integer(3) * g[Integer(3),Integer(1),Integer(1)]); x tbar(1)[1,1]*tbar(1)[1,2]^2*tbar(1)[1,3]^3*tbar(3)[1,1] >>> grY.antipode_on_basis(x.leading_support()) -tbar(1)[1,1]*tbar(1)[1,2]^2*tbar(1)[1,3]^3*tbar(3)[1,1] - 2*tbar(1)[1,1]*tbar(1)[1,2]*tbar(1)[1,3]^3*tbar(3)[1,2] - 3*tbar(1)[1,1]*tbar(1)[1,2]^2*tbar(1)[1,3]^2*tbar(3)[1,3] + 5*tbar(1)[1,2]^2*tbar(1)[1,3]^3*tbar(3)[1,1] + 10*tbar(1)[1,2]*tbar(1)[1,3]^3*tbar(3)[1,2] + 15*tbar(1)[1,2]^2*tbar(1)[1,3]^2*tbar(3)[1,3]
- coproduct_on_basis(m)[source]#
Return the coproduct on the basis element indexed by
m
.EXAMPLES:
sage: grY = Yangian(QQ, 4).graded_algebra() sage: grY.coproduct_on_basis(grY.gen(2,1,1).leading_support()) 1 # tbar(2)[1,1] + tbar(2)[1,1] # 1 sage: grY.gen(2,3,1).coproduct() 1 # tbar(2)[3,1] + tbar(2)[3,1] # 1
>>> from sage.all import * >>> grY = Yangian(QQ, Integer(4)).graded_algebra() >>> grY.coproduct_on_basis(grY.gen(Integer(2),Integer(1),Integer(1)).leading_support()) 1 # tbar(2)[1,1] + tbar(2)[1,1] # 1 >>> grY.gen(Integer(2),Integer(3),Integer(1)).coproduct() 1 # tbar(2)[3,1] + tbar(2)[3,1] # 1
- counit_on_basis(m)[source]#
Return the antipode on the basis element indexed by
m
.EXAMPLES:
sage: grY = Yangian(QQ, 4).graded_algebra() sage: grY.counit_on_basis(grY.gen(2,3,1).leading_support()) 0 sage: grY.gen(0,0,0).counit() 1
>>> from sage.all import * >>> grY = Yangian(QQ, Integer(4)).graded_algebra() >>> grY.counit_on_basis(grY.gen(Integer(2),Integer(3),Integer(1)).leading_support()) 0 >>> grY.gen(Integer(0),Integer(0),Integer(0)).counit() 1
- class sage.algebras.yangian.GradedYangianNatural(Y)[source]#
Bases:
GradedYangianBase
The associated graded algebra corresponding to a Yangian \(\operatorname{gr} Y(\mathfrak{gl}_n)\) with the natural filtration of \(\deg t_{ij}^{(r)} = r\).
INPUT:
Y
– a Yangian with the natural filtration
- product_on_basis(x, y)[source]#
Return the product on basis elements given by the indices
x
andy
.EXAMPLES:
sage: grY = Yangian(QQ, 4, filtration='natural').graded_algebra() sage: x = grY.gen(12, 2, 1) * grY.gen(2, 1, 1) # indirect doctest sage: x tbar(2)[1,1]*tbar(12)[2,1] sage: x == grY.gen(2, 1, 1) * grY.gen(12, 2, 1) True
>>> from sage.all import * >>> grY = Yangian(QQ, Integer(4), filtration='natural').graded_algebra() >>> x = grY.gen(Integer(12), Integer(2), Integer(1)) * grY.gen(Integer(2), Integer(1), Integer(1)) # indirect doctest >>> x tbar(2)[1,1]*tbar(12)[2,1] >>> x == grY.gen(Integer(2), Integer(1), Integer(1)) * grY.gen(Integer(12), Integer(2), Integer(1)) True
- class sage.algebras.yangian.Yangian(base_ring, n, variable_name, filtration)[source]#
Bases:
CombinatorialFreeModule
The Yangian \(Y(\mathfrak{gl}_n)\).
Let \(A\) be a commutative ring with unity. The Yangian \(Y(\mathfrak{gl}_n)\), associated with the Lie algebra \(\mathfrak{gl}_n\) for \(n \geq 1\), is defined to be the unital associative algebra generated by \(\{t_{ij}^{(r)} \mid 1 \leq i,j \leq n , r \geq 1\}\) subject to the relations
\[[t_{ij}^{(M+1)}, t_{k\ell}^{(L)}] - [t_{ij}^{(M)}, t_{k\ell}^{(L+1)}] = t_{kj}^{(M)} t_{i\ell}^{(L)} - t_{kj}^{(L)} t_{i\ell}^{(M)},\]where \(L,M \geq 0\) and \(t_{ij}^{(0)} = \delta_{ij} \cdot 1\). This system of quadratic relations is equivalent to the system of commutation relations
\[[t_{ij}^{(r)}, t_{k\ell}^{(s)}] = \sum_{p=0}^{\min\{r,s\}-1} \bigl(t_{kj}^{(p)} t_{i\ell}^{(r+s-1-p)} - t_{kj}^{(r+s-1-p)} t_{i\ell}^{(p)} \bigr),\]where \(1 \leq i,j,k,\ell \leq n\) and \(r,s \geq 1\).
Let \(u\) be a formal variable and, for \(1 \leq i,j \leq n\), define
\[t_{ij}(u) = \delta_{ij} + \sum_{r=1}^\infty t_{ij}^{(r)} u^{-r} \in Y(\mathfrak{gl}_n)[\![u^{-1}]\!].\]Thus, we can write the defining relations as
\[\begin{aligned} (u - v)[t_{ij}(u), t_{k\ell}(v)] & = t_{kj}(u) t_{i\ell}(v) - t_{kj}(v) t_{i\ell}(u). \end{aligned}\]These series can be combined into a single matrix:
\[T(u) := \sum_{i,j=1}^n t_{ij}(u) \otimes E_{ij} \in Y(\mathfrak{gl}_n) [\![u^{-1}]\!] \otimes \operatorname{End}(\CC^n),\]where \(E_{ij}\) is the matrix with a \(1\) in the \((i,j)\) position and zeros elsewhere.
For \(m \geq 2\), define formal variables \(u_1, \ldots, u_m\). For any \(1 \leq k \leq m\), set
\[T_k(u_k) := \sum_{i,j=1}^n t_{ij}(u_k) \otimes (E_{ij})_k \in Y(\mathfrak{gl}_n)[\![u_1^{-1},\dots,u_m^{-1}]\!] \otimes \operatorname{End}(\CC^n)^{\otimes m},\]where \((E_{ij})_k = 1^{\otimes (k-1)} \otimes E_{ij} \otimes 1^{\otimes (m-k)}\). If we consider \(m = 2\), we can then also write the defining relations as
\[R(u - v) T_1(u) T_2(v) = T_2(v) T_1(u) R(u - v),\]where \(R(u) = 1 - Pu^{-1}\) and \(P\) is the permutation operator that swaps the two factors. Moreover, we can write the Hopf algebra structure as
\[\Delta \colon T(u) \mapsto T_{[1]}(u) T_{[2]}(u), \qquad S \colon T(u) \mapsto T^{-1}(u), \qquad \epsilon \colon T(u) \mapsto 1,\]where \(T_{[a]} = \sum_{i,j=1}^n (1^{\otimes a-1} \otimes t_{ij}(u) \otimes 1^{2-a}) \otimes (E_{ij})_1\).
We can also impose two filtrations on \(Y(\mathfrak{gl}_n)\): the natural filtration \(\deg t_{ij}^{(r)} = r\) and the loop filtration \(\deg t_{ij}^{(r)} = r - 1\). The natural filtration has a graded homomorphism with \(U(\mathfrak{gl}_n)\) by \(t_{ij}^{(r)} \mapsto (E^r)_{ij}\) and an associated graded algebra being polynomial algebra. Moreover, this shows a PBW theorem for the Yangian, that for any fixed order, we can write elements as unique linear combinations of ordered monomials using \(t_{ij}^{(r)}\). For the loop filtration, the associated graded algebra is isomorphic (as Hopf algebras) to \(U(\mathfrak{gl}_n[z])\) given by \(\overline{t}_{ij}^{(r)} \mapsto E_{ij} x^{r-1}\), where \(\overline{t}_{ij}^{(r)}\) is the image of \(t_{ij}^{(r)}\) in the \((r - 1)\)-th component of \(\operatorname{gr}Y(\mathfrak{gl}_n)\).
INPUT:
base_ring
– the base ringn
– the size \(n\)level
– (optional) the level of the Yangianvariable_name
– (default:'t'
) the name of the variablefiltration
– (default:'loop'
) the filtration and can be one of the following:'natural'
– the filtration is given by \(\deg t_{ij}^{(r)} = r\)'loop'
– the filtration is given by \(\deg t_{ij}^{(r)} = r - 1\)
Todo
Implement the antipode.
EXAMPLES:
sage: Y = Yangian(QQ, 4) sage: t = Y.algebra_generators() sage: t[6,2,1] * t[2,3,2] -t(1)[2,2]*t(6)[3,1] + t(1)[3,1]*t(6)[2,2] + t(2)[3,2]*t(6)[2,1] - t(7)[3,1] sage: t[6,2,1] * t[3,1,4] t(1)[1,1]*t(7)[2,4] + t(1)[1,4]*t(6)[2,1] - t(1)[2,1]*t(6)[1,4] - t(1)[2,4]*t(7)[1,1] + t(2)[1,1]*t(6)[2,4] - t(2)[2,4]*t(6)[1,1] + t(3)[1,4]*t(6)[2,1] + t(6)[2,4] + t(8)[2,4]
>>> from sage.all import * >>> Y = Yangian(QQ, Integer(4)) >>> t = Y.algebra_generators() >>> t[Integer(6),Integer(2),Integer(1)] * t[Integer(2),Integer(3),Integer(2)] -t(1)[2,2]*t(6)[3,1] + t(1)[3,1]*t(6)[2,2] + t(2)[3,2]*t(6)[2,1] - t(7)[3,1] >>> t[Integer(6),Integer(2),Integer(1)] * t[Integer(3),Integer(1),Integer(4)] t(1)[1,1]*t(7)[2,4] + t(1)[1,4]*t(6)[2,1] - t(1)[2,1]*t(6)[1,4] - t(1)[2,4]*t(7)[1,1] + t(2)[1,1]*t(6)[2,4] - t(2)[2,4]*t(6)[1,1] + t(3)[1,4]*t(6)[2,1] + t(6)[2,4] + t(8)[2,4]
We check that the natural filtration has a homomorphism to \(U(\mathfrak{gl}_n)\) as algebras:
sage: Y = Yangian(QQ, 4, filtration='natural') sage: t = Y.algebra_generators() sage: gl4 = lie_algebras.gl(QQ, 4) sage: Ugl4 = gl4.pbw_basis() sage: E = matrix(Ugl4, 4, 4, Ugl4.gens()) sage: Esq = E^2 sage: t[2,1,3] * t[1,2,1] t(1)[2,1]*t(2)[1,3] - t(2)[2,3] sage: Esq[0,2] * E[1,0] == E[1,0] * Esq[0,2] - Esq[1,2] True sage: Em = [E^k for k in range(1,5)] sage: S = list(t.some_elements())[:30:3] sage: def convert(x): ....: return sum(c * prod(Em[t[0]-1][t[1]-1,t[2]-1] ** e ....: for t,e in m._sorted_items()) ....: for m,c in x) sage: for x in S: ....: for y in S: ....: ret = x * y ....: rhs = convert(x) * convert(y) ....: assert rhs == convert(ret) ....: assert ret.maximal_degree() == rhs.maximal_degree()
>>> from sage.all import * >>> Y = Yangian(QQ, Integer(4), filtration='natural') >>> t = Y.algebra_generators() >>> gl4 = lie_algebras.gl(QQ, Integer(4)) >>> Ugl4 = gl4.pbw_basis() >>> E = matrix(Ugl4, Integer(4), Integer(4), Ugl4.gens()) >>> Esq = E**Integer(2) >>> t[Integer(2),Integer(1),Integer(3)] * t[Integer(1),Integer(2),Integer(1)] t(1)[2,1]*t(2)[1,3] - t(2)[2,3] >>> Esq[Integer(0),Integer(2)] * E[Integer(1),Integer(0)] == E[Integer(1),Integer(0)] * Esq[Integer(0),Integer(2)] - Esq[Integer(1),Integer(2)] True >>> Em = [E**k for k in range(Integer(1),Integer(5))] >>> S = list(t.some_elements())[:Integer(30):Integer(3)] >>> def convert(x): ... return sum(c * prod(Em[t[Integer(0)]-Integer(1)][t[Integer(1)]-Integer(1),t[Integer(2)]-Integer(1)] ** e ... for t,e in m._sorted_items()) ... for m,c in x) >>> for x in S: ... for y in S: ... ret = x * y ... rhs = convert(x) * convert(y) ... assert rhs == convert(ret) ... assert ret.maximal_degree() == rhs.maximal_degree()
REFERENCES:
- algebra_generators()[source]#
Return the algebra generators of
self
.EXAMPLES:
sage: Y = Yangian(QQ, 4) sage: Y.algebra_generators() Lazy family (generator(i))_{i in The Cartesian product of (Positive integers, {1, 2, 3, 4}, {1, 2, 3, 4})}
>>> from sage.all import * >>> Y = Yangian(QQ, Integer(4)) >>> Y.algebra_generators() Lazy family (generator(i))_{i in The Cartesian product of (Positive integers, {1, 2, 3, 4}, {1, 2, 3, 4})}
- coproduct_on_basis(m)[source]#
Return the coproduct on the basis element indexed by
m
.The coproduct \(\Delta\colon Y(\mathfrak{gl}_n) \longrightarrow Y(\mathfrak{gl}_n) \otimes Y(\mathfrak{gl}_n)\) is defined by
\[\Delta(t_{ij}(u)) = \sum_{a=1}^n t_{ia}(u) \otimes t_{aj}(u).\]EXAMPLES:
sage: Y = Yangian(QQ, 4) sage: Y.gen(2,1,1).coproduct() # indirect doctest 1 # t(2)[1,1] + t(1)[1,1] # t(1)[1,1] + t(1)[1,2] # t(1)[2,1] + t(1)[1,3] # t(1)[3,1] + t(1)[1,4] # t(1)[4,1] + t(2)[1,1] # 1 sage: Y.gen(2,3,1).coproduct() 1 # t(2)[3,1] + t(1)[3,1] # t(1)[1,1] + t(1)[3,2] # t(1)[2,1] + t(1)[3,3] # t(1)[3,1] + t(1)[3,4] # t(1)[4,1] + t(2)[3,1] # 1 sage: Y.gen(2,2,3).coproduct() 1 # t(2)[2,3] + t(1)[2,1] # t(1)[1,3] + t(1)[2,2] # t(1)[2,3] + t(1)[2,3] # t(1)[3,3] + t(1)[2,4] # t(1)[4,3] + t(2)[2,3] # 1
>>> from sage.all import * >>> Y = Yangian(QQ, Integer(4)) >>> Y.gen(Integer(2),Integer(1),Integer(1)).coproduct() # indirect doctest 1 # t(2)[1,1] + t(1)[1,1] # t(1)[1,1] + t(1)[1,2] # t(1)[2,1] + t(1)[1,3] # t(1)[3,1] + t(1)[1,4] # t(1)[4,1] + t(2)[1,1] # 1 >>> Y.gen(Integer(2),Integer(3),Integer(1)).coproduct() 1 # t(2)[3,1] + t(1)[3,1] # t(1)[1,1] + t(1)[3,2] # t(1)[2,1] + t(1)[3,3] # t(1)[3,1] + t(1)[3,4] # t(1)[4,1] + t(2)[3,1] # 1 >>> Y.gen(Integer(2),Integer(2),Integer(3)).coproduct() 1 # t(2)[2,3] + t(1)[2,1] # t(1)[1,3] + t(1)[2,2] # t(1)[2,3] + t(1)[2,3] # t(1)[3,3] + t(1)[2,4] # t(1)[4,3] + t(2)[2,3] # 1
- counit_on_basis(m)[source]#
Return the counit on the basis element indexed by
m
.EXAMPLES:
sage: Y = Yangian(QQ, 4) sage: Y.gen(2,3,1).counit() # indirect doctest 0 sage: Y.gen(0,0,0).counit() 1
>>> from sage.all import * >>> Y = Yangian(QQ, Integer(4)) >>> Y.gen(Integer(2),Integer(3),Integer(1)).counit() # indirect doctest 0 >>> Y.gen(Integer(0),Integer(0),Integer(0)).counit() 1
- degree_on_basis(m)[source]#
Return the degree of the monomial index by
m
.The degree of \(t_{ij}^{(r)}\) is equal to \(r - 1\) if
filtration = 'loop'
and is equal to \(r\) iffiltration = 'natural'
.EXAMPLES:
sage: Y = Yangian(QQ, 4) sage: Y.degree_on_basis(Y.gen(2,1,1).leading_support()) 1 sage: x = Y.gen(5,2,3)^4 sage: Y.degree_on_basis(x.leading_support()) 16 sage: elt = Y.gen(10,3,1) * Y.gen(2,1,1) * Y.gen(1,2,4); elt t(1)[1,1]*t(1)[2,4]*t(10)[3,1] - t(1)[2,4]*t(1)[3,1]*t(10)[1,1] + t(1)[2,4]*t(2)[1,1]*t(10)[3,1] + t(1)[2,4]*t(10)[3,1] + t(1)[2,4]*t(11)[3,1] sage: for s in sorted(elt.support(), key=str): s, Y.degree_on_basis(s) (t(1, 1, 1)*t(1, 2, 4)*t(10, 3, 1), 9) (t(1, 2, 4)*t(1, 3, 1)*t(10, 1, 1), 9) (t(1, 2, 4)*t(10, 3, 1), 9) (t(1, 2, 4)*t(11, 3, 1), 10) (t(1, 2, 4)*t(2, 1, 1)*t(10, 3, 1), 10) sage: Y = Yangian(QQ, 4, filtration='natural') sage: Y.degree_on_basis(Y.gen(2,1,1).leading_support()) 2 sage: x = Y.gen(5,2,3)^4 sage: Y.degree_on_basis(x.leading_support()) 20 sage: elt = Y.gen(10,3,1) * Y.gen(2,1,1) * Y.gen(1,2,4) sage: for s in sorted(elt.support(), key=str): s, Y.degree_on_basis(s) (t(1, 1, 1)*t(1, 2, 4)*t(10, 3, 1), 12) (t(1, 2, 4)*t(1, 3, 1)*t(10, 1, 1), 12) (t(1, 2, 4)*t(10, 3, 1), 11) (t(1, 2, 4)*t(11, 3, 1), 12) (t(1, 2, 4)*t(2, 1, 1)*t(10, 3, 1), 13)
>>> from sage.all import * >>> Y = Yangian(QQ, Integer(4)) >>> Y.degree_on_basis(Y.gen(Integer(2),Integer(1),Integer(1)).leading_support()) 1 >>> x = Y.gen(Integer(5),Integer(2),Integer(3))**Integer(4) >>> Y.degree_on_basis(x.leading_support()) 16 >>> elt = Y.gen(Integer(10),Integer(3),Integer(1)) * Y.gen(Integer(2),Integer(1),Integer(1)) * Y.gen(Integer(1),Integer(2),Integer(4)); elt t(1)[1,1]*t(1)[2,4]*t(10)[3,1] - t(1)[2,4]*t(1)[3,1]*t(10)[1,1] + t(1)[2,4]*t(2)[1,1]*t(10)[3,1] + t(1)[2,4]*t(10)[3,1] + t(1)[2,4]*t(11)[3,1] >>> for s in sorted(elt.support(), key=str): s, Y.degree_on_basis(s) (t(1, 1, 1)*t(1, 2, 4)*t(10, 3, 1), 9) (t(1, 2, 4)*t(1, 3, 1)*t(10, 1, 1), 9) (t(1, 2, 4)*t(10, 3, 1), 9) (t(1, 2, 4)*t(11, 3, 1), 10) (t(1, 2, 4)*t(2, 1, 1)*t(10, 3, 1), 10) >>> Y = Yangian(QQ, Integer(4), filtration='natural') >>> Y.degree_on_basis(Y.gen(Integer(2),Integer(1),Integer(1)).leading_support()) 2 >>> x = Y.gen(Integer(5),Integer(2),Integer(3))**Integer(4) >>> Y.degree_on_basis(x.leading_support()) 20 >>> elt = Y.gen(Integer(10),Integer(3),Integer(1)) * Y.gen(Integer(2),Integer(1),Integer(1)) * Y.gen(Integer(1),Integer(2),Integer(4)) >>> for s in sorted(elt.support(), key=str): s, Y.degree_on_basis(s) (t(1, 1, 1)*t(1, 2, 4)*t(10, 3, 1), 12) (t(1, 2, 4)*t(1, 3, 1)*t(10, 1, 1), 12) (t(1, 2, 4)*t(10, 3, 1), 11) (t(1, 2, 4)*t(11, 3, 1), 12) (t(1, 2, 4)*t(2, 1, 1)*t(10, 3, 1), 13)
- dimension()[source]#
Return the dimension of
self
, which is \(\infty\).EXAMPLES:
sage: Y = Yangian(QQ, 4) sage: Y.dimension() +Infinity
>>> from sage.all import * >>> Y = Yangian(QQ, Integer(4)) >>> Y.dimension() +Infinity
- gen(r, i=None, j=None)[source]#
Return the generator \(t^{(r)}_{ij}\) of
self
.EXAMPLES:
sage: Y = Yangian(QQ, 4) sage: Y.gen(2, 1, 3) t(2)[1,3] sage: Y.gen(12, 2, 1) t(12)[2,1] sage: Y.gen(0, 1, 1) 1 sage: Y.gen(0, 1, 3) 0
>>> from sage.all import * >>> Y = Yangian(QQ, Integer(4)) >>> Y.gen(Integer(2), Integer(1), Integer(3)) t(2)[1,3] >>> Y.gen(Integer(12), Integer(2), Integer(1)) t(12)[2,1] >>> Y.gen(Integer(0), Integer(1), Integer(1)) 1 >>> Y.gen(Integer(0), Integer(1), Integer(3)) 0
- graded_algebra()[source]#
Return the associated graded algebra of
self
.EXAMPLES:
sage: Yangian(QQ, 4).graded_algebra() Graded Algebra of Yangian of gl(4) in the loop filtration over Rational Field sage: Yangian(QQ, 4, filtration='natural').graded_algebra() Graded Algebra of Yangian of gl(4) in the natural filtration over Rational Field
>>> from sage.all import * >>> Yangian(QQ, Integer(4)).graded_algebra() Graded Algebra of Yangian of gl(4) in the loop filtration over Rational Field >>> Yangian(QQ, Integer(4), filtration='natural').graded_algebra() Graded Algebra of Yangian of gl(4) in the natural filtration over Rational Field
- one_basis()[source]#
Return the basis index of the element \(1\).
EXAMPLES:
sage: Y = Yangian(QQ, 4) sage: Y.one_basis() 1
>>> from sage.all import * >>> Y = Yangian(QQ, Integer(4)) >>> Y.one_basis() 1
- product_on_basis(x, y)[source]#
Return the product of two monomials given by
x
andy
.EXAMPLES:
sage: Y = Yangian(QQ, 4) sage: Y.gen(12, 2, 1) * Y.gen(2, 1, 1) # indirect doctest t(1)[1,1]*t(12)[2,1] - t(1)[2,1]*t(12)[1,1] + t(2)[1,1]*t(12)[2,1] + t(12)[2,1] + t(13)[2,1]
>>> from sage.all import * >>> Y = Yangian(QQ, Integer(4)) >>> Y.gen(Integer(12), Integer(2), Integer(1)) * Y.gen(Integer(2), Integer(1), Integer(1)) # indirect doctest t(1)[1,1]*t(12)[2,1] - t(1)[2,1]*t(12)[1,1] + t(2)[1,1]*t(12)[2,1] + t(12)[2,1] + t(13)[2,1]
- product_on_gens(a, b)[source]#
Return the product on two generators indexed by
a
andb
.We assume \((r, i, j) \geq (s, k, \ell)\), and we start with the basic relation:
\[[t_{ij}^{(r)}, t_{k\ell}^{(s)}] - [t_{ij}^{(r-1)}, t_{k\ell}^{(s+1)}] = t_{kj}^{(r-1)} t_{i\ell}^{(s)} - t_{kj}^{(s)} t_{i\ell}^{(r-1)}.\]Solving for the first term and using induction we get:
\[[t_{ij}^{(r)}, t_{k\ell}^{(s)}] = \sum_{a=1}^s \left( t_{kj}^{(a-1)} t_{i\ell}^{(r+s-a)} - t_{kj}^{(r+s-a)} t_{i\ell}^{(a-1)} \right).\]Next applying induction on this we get
\[t_{ij}^{(r)} t_{k\ell}^{(s)} = t_{k\ell}^{(s)} t_{ij}^{(r)} + \sum C_{abcd}^{m\ell} t_{ab}^{(m)} t_{cd}^{(\ell)}\]where \(m + \ell < r + s\) and \(t_{ab}^{(m)} < t_{cd}^{(\ell)}\).
EXAMPLES:
sage: Y = Yangian(QQ, 4) sage: Y.product_on_gens((2,1,1), (12,2,1)) t(2)[1,1]*t(12)[2,1] sage: Y.gen(2, 1, 1) * Y.gen(12, 2, 1) t(2)[1,1]*t(12)[2,1] sage: Y.product_on_gens((12,2,1), (2,1,1)) t(1)[1,1]*t(12)[2,1] - t(1)[2,1]*t(12)[1,1] + t(2)[1,1]*t(12)[2,1] + t(12)[2,1] + t(13)[2,1] sage: Y.gen(12, 2, 1) * Y.gen(2, 1, 1) t(1)[1,1]*t(12)[2,1] - t(1)[2,1]*t(12)[1,1] + t(2)[1,1]*t(12)[2,1] + t(12)[2,1] + t(13)[2,1]
>>> from sage.all import * >>> Y = Yangian(QQ, Integer(4)) >>> Y.product_on_gens((Integer(2),Integer(1),Integer(1)), (Integer(12),Integer(2),Integer(1))) t(2)[1,1]*t(12)[2,1] >>> Y.gen(Integer(2), Integer(1), Integer(1)) * Y.gen(Integer(12), Integer(2), Integer(1)) t(2)[1,1]*t(12)[2,1] >>> Y.product_on_gens((Integer(12),Integer(2),Integer(1)), (Integer(2),Integer(1),Integer(1))) t(1)[1,1]*t(12)[2,1] - t(1)[2,1]*t(12)[1,1] + t(2)[1,1]*t(12)[2,1] + t(12)[2,1] + t(13)[2,1] >>> Y.gen(Integer(12), Integer(2), Integer(1)) * Y.gen(Integer(2), Integer(1), Integer(1)) t(1)[1,1]*t(12)[2,1] - t(1)[2,1]*t(12)[1,1] + t(2)[1,1]*t(12)[2,1] + t(12)[2,1] + t(13)[2,1]
- class sage.algebras.yangian.YangianLevel(base_ring, n, level, variable_name, filtration)[source]#
Bases:
Yangian
The Yangian \(Y_{\ell}(\mathfrak{gl_n})\) of level \(\ell\).
The Yangian of level \(\ell\) is the quotient of the Yangian \(Y(\mathfrak{gl}_n)\) by the two-sided ideal generated by \(t_{ij}^{(r)}\) for all \(r > p\) and all \(i,j \in \{1, \ldots, n\}\).
EXAMPLES:
sage: Y = Yangian(QQ, 4, 3) sage: elt = Y.gen(3,2,1) * Y.gen(1,1,3) sage: elt * Y.gen(1, 1, 2) t(1)[1,2]*t(1)[1,3]*t(3)[2,1] + t(1)[1,2]*t(3)[2,3] - t(1)[1,3]*t(3)[1,1] + t(1)[1,3]*t(3)[2,2] - t(3)[1,3]
>>> from sage.all import * >>> Y = Yangian(QQ, Integer(4), Integer(3)) >>> elt = Y.gen(Integer(3),Integer(2),Integer(1)) * Y.gen(Integer(1),Integer(1),Integer(3)) >>> elt * Y.gen(Integer(1), Integer(1), Integer(2)) t(1)[1,2]*t(1)[1,3]*t(3)[2,1] + t(1)[1,2]*t(3)[2,3] - t(1)[1,3]*t(3)[1,1] + t(1)[1,3]*t(3)[2,2] - t(3)[1,3]
- defining_polynomial(i, j, u=None)[source]#
Return the defining polynomial of
i
andj
.The defining polynomial is given by:
\[T_{ij}(u) = \delta_{ij} u^{\ell} + \sum_{k=1}^{\ell} t_{ij}^{(k)} u^{\ell-k}.\]EXAMPLES:
sage: Y = Yangian(QQ, 3, 5) sage: Y.defining_polynomial(3, 2) t(1)[3,2]*u^4 + t(2)[3,2]*u^3 + t(3)[3,2]*u^2 + t(4)[3,2]*u + t(5)[3,2] sage: Y.defining_polynomial(1, 1) u^5 + t(1)[1,1]*u^4 + t(2)[1,1]*u^3 + t(3)[1,1]*u^2 + t(4)[1,1]*u + t(5)[1,1]
>>> from sage.all import * >>> Y = Yangian(QQ, Integer(3), Integer(5)) >>> Y.defining_polynomial(Integer(3), Integer(2)) t(1)[3,2]*u^4 + t(2)[3,2]*u^3 + t(3)[3,2]*u^2 + t(4)[3,2]*u + t(5)[3,2] >>> Y.defining_polynomial(Integer(1), Integer(1)) u^5 + t(1)[1,1]*u^4 + t(2)[1,1]*u^3 + t(3)[1,1]*u^2 + t(4)[1,1]*u + t(5)[1,1]
- gen(r, i=None, j=None)[source]#
Return the generator \(t^{(r)}_{ij}\) of
self
.EXAMPLES:
sage: Y = Yangian(QQ, 4, 3) sage: Y.gen(2, 1, 3) t(2)[1,3] sage: Y.gen(12, 2, 1) 0 sage: Y.gen(0, 1, 1) 1 sage: Y.gen(0, 1, 3) 0
>>> from sage.all import * >>> Y = Yangian(QQ, Integer(4), Integer(3)) >>> Y.gen(Integer(2), Integer(1), Integer(3)) t(2)[1,3] >>> Y.gen(Integer(12), Integer(2), Integer(1)) 0 >>> Y.gen(Integer(0), Integer(1), Integer(1)) 1 >>> Y.gen(Integer(0), Integer(1), Integer(3)) 0
- gens()[source]#
Return the generators of
self
.EXAMPLES:
sage: Y = Yangian(QQ, 2, 2) sage: Y.gens() (t(1)[1,1], t(2)[1,1], t(1)[1,2], t(2)[1,2], t(1)[2,1], t(2)[2,1], t(1)[2,2], t(2)[2,2])
>>> from sage.all import * >>> Y = Yangian(QQ, Integer(2), Integer(2)) >>> Y.gens() (t(1)[1,1], t(2)[1,1], t(1)[1,2], t(2)[1,2], t(1)[2,1], t(2)[2,1], t(1)[2,2], t(2)[2,2])
- level()[source]#
Return the level of
self
.EXAMPLES:
sage: Y = Yangian(QQ, 3, 5) sage: Y.level() 5
>>> from sage.all import * >>> Y = Yangian(QQ, Integer(3), Integer(5)) >>> Y.level() 5
- product_on_gens(a, b)[source]#
Return the product on two generators indexed by
a
andb
.See also
EXAMPLES:
sage: Y = Yangian(QQ, 4, 3) sage: Y.gen(1,2,2) * Y.gen(2,1,3) # indirect doctest t(1)[2,2]*t(2)[1,3] sage: Y.gen(1,2,1) * Y.gen(2,1,3) # indirect doctest t(1)[2,1]*t(2)[1,3] sage: Y.gen(3,2,1) * Y.gen(1,1,3) # indirect doctest t(1)[1,3]*t(3)[2,1] + t(3)[2,3]
>>> from sage.all import * >>> Y = Yangian(QQ, Integer(4), Integer(3)) >>> Y.gen(Integer(1),Integer(2),Integer(2)) * Y.gen(Integer(2),Integer(1),Integer(3)) # indirect doctest t(1)[2,2]*t(2)[1,3] >>> Y.gen(Integer(1),Integer(2),Integer(1)) * Y.gen(Integer(2),Integer(1),Integer(3)) # indirect doctest t(1)[2,1]*t(2)[1,3] >>> Y.gen(Integer(3),Integer(2),Integer(1)) * Y.gen(Integer(1),Integer(1),Integer(3)) # indirect doctest t(1)[1,3]*t(3)[2,1] + t(3)[2,3]
- quantum_determinant(u=None)[source]#
Return the quantum determinant of
self
.The quantum determinant is defined by:
\[\operatorname{qdet}(u) = \sum_{\sigma \in S_n} (-1)^{\sigma} \prod_{k=1}^n T_{\sigma(k),k}(u - k + 1).\]EXAMPLES:
sage: Y = Yangian(QQ, 2, 2) sage: Y.quantum_determinant() u^4 + (-2 + t(1)[1,1] + t(1)[2,2])*u^3 + (1 - t(1)[1,1] + t(1)[1,1]*t(1)[2,2] - t(1)[1,2]*t(1)[2,1] - 2*t(1)[2,2] + t(2)[1,1] + t(2)[2,2])*u^2 + (-t(1)[1,1]*t(1)[2,2] + t(1)[1,1]*t(2)[2,2] + t(1)[1,2]*t(1)[2,1] - t(1)[1,2]*t(2)[2,1] - t(1)[2,1]*t(2)[1,2] + t(1)[2,2] + t(1)[2,2]*t(2)[1,1] - t(2)[1,1] - t(2)[2,2])*u - t(1)[1,1]*t(2)[2,2] + t(1)[1,2]*t(2)[2,1] + t(2)[1,1]*t(2)[2,2] - t(2)[1,2]*t(2)[2,1] + t(2)[2,2]
>>> from sage.all import * >>> Y = Yangian(QQ, Integer(2), Integer(2)) >>> Y.quantum_determinant() u^4 + (-2 + t(1)[1,1] + t(1)[2,2])*u^3 + (1 - t(1)[1,1] + t(1)[1,1]*t(1)[2,2] - t(1)[1,2]*t(1)[2,1] - 2*t(1)[2,2] + t(2)[1,1] + t(2)[2,2])*u^2 + (-t(1)[1,1]*t(1)[2,2] + t(1)[1,1]*t(2)[2,2] + t(1)[1,2]*t(1)[2,1] - t(1)[1,2]*t(2)[2,1] - t(1)[2,1]*t(2)[1,2] + t(1)[2,2] + t(1)[2,2]*t(2)[1,1] - t(2)[1,1] - t(2)[2,2])*u - t(1)[1,1]*t(2)[2,2] + t(1)[1,2]*t(2)[2,1] + t(2)[1,1]*t(2)[2,2] - t(2)[1,2]*t(2)[2,1] + t(2)[2,2]