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 generatorsq
– (optional) an invertible element in a commutative ring; the default is \(q \in \QQ[q,q^{-1}]\)R
– (optional) a commutative ring containingq
; 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 ifNone
, 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
andm2
.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 ifNone
, 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]