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-Heckeof 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] sage: all(Y.inverse_g(i) * Y.g(i) == Y.one() for i in range(1, 4)) True sage: all(Y.g(i) * Y.inverse_g(i) == Y.one() for i in range(1, 4)) True - >>> 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] >>> all(Y.inverse_g(i) * Y.g(i) == Y.one() for i in range(Integer(1), Integer(4))) True >>> all(Y.g(i) * Y.inverse_g(i) == Y.one() for i in range(Integer(1), Integer(4))) True 
 - 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 - m1and- 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]