Yokonuma-Hecke Algebras

AUTHORS:

  • Travis Scrimshaw (2015-11): initial version

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

Bases: CombinatorialFreeModule

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]

Bases: IndexedFreeModuleElement

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]