Yokonuma-Hecke Algebras#

AUTHORS:

• Travis Scrimshaw (2015-11): initial version

class sage.algebras.yokonuma_hecke_algebra.YokonumaHeckeAlgebra(d, n, q, R)[source]#

The Yokonuma-Hecke algebra $$Y_{d,n}(q)$$.

Let $$R$$ be a commutative ring and $$q$$ be a unit in $$R$$. The Yokonuma-Hecke algebra $$Y_{d,n}(q)$$ is the associative, unital $$R$$-algebra generated by $$t_1, t_2, \ldots, t_n, g_1, g_2, \ldots, g_{n-1}$$ and subject to the relations:

• $$g_i g_j = g_j g_i$$ for all $$|i - j| > 1$$,

• $$g_i g_{i+1} g_i = g_{i+1} g_i g_{i+1}$$,

• $$t_i t_j = t_j t_i$$,

• $$t_j g_i = g_i t_{j s_i}$$, and

• $$t_j^d = 1$$,

where $$s_i$$ is the simple transposition $$(i, i+1)$$, along with the quadratic relation

$g_i^2 = 1 + \frac{(q - q^{-1})}{d} \left( \sum_{s=0}^{d-1} t_i^s t_{i+1}^{-s} \right) g_i.$

Thus the Yokonuma-Hecke algebra can be considered a quotient of the framed braid group $$(\ZZ / d\ZZ) \wr B_n$$, where $$B_n$$ is the classical braid group on $$n$$ strands, by the quadratic relations. Moreover, all of the algebra generators are invertible. In particular, we have

$g_i^{-1} = g_i - (q - q^{-1}) e_i.$

When we specialize $$q = \pm 1$$, we obtain the group algebra of the complex reflection group $$G(d, 1, n) = (\ZZ / d\ZZ) \wr S_n$$. Moreover for $$d = 1$$, the Yokonuma-Hecke algebra is equal to the Iwahori-Hecke of type $$A_{n-1}$$.

INPUT:

• d – the maximum power of $$t$$

• n – the number of generators

• q – (optional) an invertible element in a commutative ring; the default is $$q \in \QQ[q,q^{-1}]$$

• R – (optional) a commutative ring containing q; the default is the parent of $$q$$

EXAMPLES:

We construct $$Y_{4,3}$$ and do some computations:

sage: Y = algebras.YokonumaHecke(4, 3)
sage: g1, g2, t1, t2, t3 = Y.algebra_generators()
sage: g1 * g2
g[1,2]
sage: t1 * g1
t1*g[1]
sage: g2 * t2
t3*g[2]
sage: g2 * t3
t2*g[2]
sage: (g2 + t1) * (g1 + t2*t3)
g[2,1] + t2*t3*g[2] + t1*g[1] + t1*t2*t3
sage: g1 * g1
1 - (1/4*q^-1-1/4*q)*g[1] - (1/4*q^-1-1/4*q)*t1*t2^3*g[1]
- (1/4*q^-1-1/4*q)*t1^2*t2^2*g[1] - (1/4*q^-1-1/4*q)*t1^3*t2*g[1]
sage: g2 * g1 * t1
t3*g[2,1]

>>> from sage.all import *
>>> Y = algebras.YokonumaHecke(Integer(4), Integer(3))
>>> g1, g2, t1, t2, t3 = Y.algebra_generators()
>>> g1 * g2
g[1,2]
>>> t1 * g1
t1*g[1]
>>> g2 * t2
t3*g[2]
>>> g2 * t3
t2*g[2]
>>> (g2 + t1) * (g1 + t2*t3)
g[2,1] + t2*t3*g[2] + t1*g[1] + t1*t2*t3
>>> g1 * g1
1 - (1/4*q^-1-1/4*q)*g[1] - (1/4*q^-1-1/4*q)*t1*t2^3*g[1]
- (1/4*q^-1-1/4*q)*t1^2*t2^2*g[1] - (1/4*q^-1-1/4*q)*t1^3*t2*g[1]
>>> g2 * g1 * t1
t3*g[2,1]


We construct the elements $$e_i$$ and show that they are idempotents:

sage: e1 = Y.e(1); e1
1/4 + 1/4*t1*t2^3 + 1/4*t1^2*t2^2 + 1/4*t1^3*t2
sage: e1 * e1 == e1
True
sage: e2 = Y.e(2); e2
1/4 + 1/4*t2*t3^3 + 1/4*t2^2*t3^2 + 1/4*t2^3*t3
sage: e2 * e2 == e2
True

>>> from sage.all import *
>>> e1 = Y.e(Integer(1)); e1
1/4 + 1/4*t1*t2^3 + 1/4*t1^2*t2^2 + 1/4*t1^3*t2
>>> e1 * e1 == e1
True
>>> e2 = Y.e(Integer(2)); e2
1/4 + 1/4*t2*t3^3 + 1/4*t2^2*t3^2 + 1/4*t2^3*t3
>>> e2 * e2 == e2
True


REFERENCES:

class Element[source]#
algebra_generators()[source]#

Return the algebra generators of self.

EXAMPLES:

sage: Y = algebras.YokonumaHecke(5, 3)
sage: dict(Y.algebra_generators())
{'g1': g[1], 'g2': g[2], 't1': t1, 't2': t2, 't3': t3}

>>> from sage.all import *
>>> Y = algebras.YokonumaHecke(Integer(5), Integer(3))
>>> dict(Y.algebra_generators())
{'g1': g[1], 'g2': g[2], 't1': t1, 't2': t2, 't3': t3}

e(i)[source]#

Return the element $$e_i$$.

EXAMPLES:

sage: Y = algebras.YokonumaHecke(4, 3)
sage: Y.e(1)
1/4 + 1/4*t1*t2^3 + 1/4*t1^2*t2^2 + 1/4*t1^3*t2
sage: Y.e(2)
1/4 + 1/4*t2*t3^3 + 1/4*t2^2*t3^2 + 1/4*t2^3*t3

>>> from sage.all import *
>>> Y = algebras.YokonumaHecke(Integer(4), Integer(3))
>>> Y.e(Integer(1))
1/4 + 1/4*t1*t2^3 + 1/4*t1^2*t2^2 + 1/4*t1^3*t2
>>> Y.e(Integer(2))
1/4 + 1/4*t2*t3^3 + 1/4*t2^2*t3^2 + 1/4*t2^3*t3

g(i=None)[source]#

Return the generator(s) $$g_i$$.

INPUT:

• i – (default: None) the generator $$g_i$$ or if None, then the list of all generators $$g_i$$

EXAMPLES:

sage: Y = algebras.YokonumaHecke(8, 3)
sage: Y.g(1)
g[1]
sage: Y.g()
[g[1], g[2]]

>>> from sage.all import *
>>> Y = algebras.YokonumaHecke(Integer(8), Integer(3))
>>> Y.g(Integer(1))
g[1]
>>> Y.g()
[g[1], g[2]]

gens()[source]#

Return the generators of self.

EXAMPLES:

sage: Y = algebras.YokonumaHecke(5, 3)
sage: Y.gens()
(g[1], g[2], t1, t2, t3)

>>> from sage.all import *
>>> Y = algebras.YokonumaHecke(Integer(5), Integer(3))
>>> Y.gens()
(g[1], g[2], t1, t2, t3)

inverse_g(i)[source]#

Return the inverse of the generator $$g_i$$.

From the quadratic relation, we have

$g_i^{-1} = g_i - (q - q^{-1}) e_i.$

EXAMPLES:

sage: Y = algebras.YokonumaHecke(2, 4)
sage: [2*Y.inverse_g(i) for i in range(1, 4)]
[(q^-1+q) + 2*g[1] + (q^-1+q)*t1*t2,
(q^-1+q) + 2*g[2] + (q^-1+q)*t2*t3,
(q^-1+q) + 2*g[3] + (q^-1+q)*t3*t4]

>>> from sage.all import *
>>> Y = algebras.YokonumaHecke(Integer(2), Integer(4))
>>> [Integer(2)*Y.inverse_g(i) for i in range(Integer(1), Integer(4))]
[(q^-1+q) + 2*g[1] + (q^-1+q)*t1*t2,
(q^-1+q) + 2*g[2] + (q^-1+q)*t2*t3,
(q^-1+q) + 2*g[3] + (q^-1+q)*t3*t4]

one_basis()[source]#

Return the index of the basis element of $$1$$.

EXAMPLES:

sage: Y = algebras.YokonumaHecke(5, 3)
sage: Y.one_basis()
((0, 0, 0), [1, 2, 3])

>>> from sage.all import *
>>> Y = algebras.YokonumaHecke(Integer(5), Integer(3))
>>> Y.one_basis()
((0, 0, 0), [1, 2, 3])

product_on_basis(m1, m2)[source]#

Return the product of the basis elements indexed by m1 and m2.

EXAMPLES:

sage: Y = algebras.YokonumaHecke(4, 3)
sage: m = ((1, 0, 2), Permutations(3)([2,1,3]))
sage: 4 * Y.product_on_basis(m, m)
-(q^-1-q)*t2^2*g[1] + 4*t1*t2 - (q^-1-q)*t1*t2*g[1]
- (q^-1-q)*t1^2*g[1] - (q^-1-q)*t1^3*t2^3*g[1]

>>> from sage.all import *
>>> Y = algebras.YokonumaHecke(Integer(4), Integer(3))
>>> m = ((Integer(1), Integer(0), Integer(2)), Permutations(Integer(3))([Integer(2),Integer(1),Integer(3)]))
>>> Integer(4) * Y.product_on_basis(m, m)
-(q^-1-q)*t2^2*g[1] + 4*t1*t2 - (q^-1-q)*t1*t2*g[1]
- (q^-1-q)*t1^2*g[1] - (q^-1-q)*t1^3*t2^3*g[1]


Check that we apply the permutation correctly on $$t_i$$:

sage: Y = algebras.YokonumaHecke(4, 3)
sage: g1, g2, t1, t2, t3 = Y.algebra_generators()
sage: g21 = g2 * g1
sage: g21 * t1
t3*g[2,1]

>>> from sage.all import *
>>> Y = algebras.YokonumaHecke(Integer(4), Integer(3))
>>> g1, g2, t1, t2, t3 = Y.algebra_generators()
>>> g21 = g2 * g1
>>> g21 * t1
t3*g[2,1]

t(i=None)[source]#

Return the generator(s) $$t_i$$.

INPUT:

• i – (default: None) the generator $$t_i$$ or if None, then the list of all generators $$t_i$$

EXAMPLES:

sage: Y = algebras.YokonumaHecke(8, 3)
sage: Y.t(2)
t2
sage: Y.t()
[t1, t2, t3]

>>> from sage.all import *
>>> Y = algebras.YokonumaHecke(Integer(8), Integer(3))
>>> Y.t(Integer(2))
t2
>>> Y.t()
[t1, t2, t3]