Ariki-Koike Algebras#
The Ariki-Koike algebras were introduced by Ariki and Koike [AK1994] as
a natural generalization of the Iwahori-Hecke algebras of types IwahoriHeckeAlgebra
).
Soon afterwards, Broué and Malle defined analogues of the Hecke
algebras for all complex reflection groups
Fix non-negative integers
AUTHORS:
Travis Scrimshaw (2016-04): initial version
Andrew Mathas (2016-07): improved multiplication code
REFERENCES:
- class sage.algebras.hecke_algebras.ariki_koike_algebra.ArikiKoikeAlgebra(r, n, q, u, R)[source]#
Bases:
Parent
,UniqueRepresentation
The Ariki-Koike algebra
.Let
be an unital integral domain. Let such that . The Ariki-Koike algebra is the unital associative algebra generated by that satisfies the following relations:The parameter
is called the Hecke parameter and the parameters are called the cyclotomic parameters. Thus, the Ariki-Koike algebra is a deformation of the group algebra of the complex reflection group .Next, we define Jucys-Murphy elements
for
.Note
These element differ by a power of
from the corresponding elements in [AK1994]. However, these elements are more commonly used because they lead to nicer representation theoretic formulas.Ariki and Koike [AK1994] showed that
is a free -module with a basis given byIn particular, we have
. Moreover, we have for all .The Ariki-Koike algebra
can be considered as a quotient of the group algebra of the braid group for by the ideal generated by and . Furthermore, can be constructed as a quotient of the extended affine Hecke algebra of type by .Since the Ariki-Koike algebra is a quotient of the group algebra of the braid group of
, we can recover the group algebra of as follows. Consider , where is a primitive -th root of unity, then we haveINPUT:
r
– the maximum power ofn
– the rankq
– (optional) an invertible element in a commutative ring; the default is , where is the ring containing the variablesu
u
– (optional) the variables ; the default is the generators ofR
– (optional) a commutative ring containingq
andu
; the default is the parent of anduse_fraction_field
– (default:False
) whether to use the fraction field or not
EXAMPLES:
We start by constructing an Ariki-Koike algebra where the values
are generic and do some computations:sage: H = algebras.ArikiKoike(3, 4)
H = algebras.ArikiKoike(3, 4)
>>> from sage.all import * >>> H = algebras.ArikiKoike(Integer(3), Integer(4))
Next, we do some computations using the
basis:sage: LT = H.LT() sage: LT.inject_variables() Defining L1, L2, L3, L4, T1, T2, T3 sage: T1 * T2 * T1 * T2 q*T[2,1] - (1-q)*T[2,1,2] sage: T1 * L1 * T2 * L3 * T1 * T2 -(q-q^2)*L2*L3*T[2] + q*L1*L2*T[2,1] - (1-q)*L1*L2*T[2,1,2] sage: L1^3 u0*u1*u2 + ((-u0*u1-u0*u2-u1*u2))*L1 + ((u0+u1+u2))*L1^2 sage: L3 * L2 * L1 L1*L2*L3 sage: u = LT.u() sage: q = LT.q() sage: (q + 2*u[0]) * (T1 * T2) * L3 (-2*u0+(2*u0-1)*q+q^2)*L3*T[1] + (-2*u0+(2*u0-1)*q+q^2)*L2*T[2] + (2*u0+q)*L1*T[1,2]
LT = H.LT() LT.inject_variables() T1 * T2 * T1 * T2 T1 * L1 * T2 * L3 * T1 * T2 L1^3 L3 * L2 * L1 u = LT.u() q = LT.q() (q + 2*u[0]) * (T1 * T2) * L3
>>> from sage.all import * >>> LT = H.LT() >>> LT.inject_variables() Defining L1, L2, L3, L4, T1, T2, T3 >>> T1 * T2 * T1 * T2 q*T[2,1] - (1-q)*T[2,1,2] >>> T1 * L1 * T2 * L3 * T1 * T2 -(q-q^2)*L2*L3*T[2] + q*L1*L2*T[2,1] - (1-q)*L1*L2*T[2,1,2] >>> L1**Integer(3) u0*u1*u2 + ((-u0*u1-u0*u2-u1*u2))*L1 + ((u0+u1+u2))*L1^2 >>> L3 * L2 * L1 L1*L2*L3 >>> u = LT.u() >>> q = LT.q() >>> (q + Integer(2)*u[Integer(0)]) * (T1 * T2) * L3 (-2*u0+(2*u0-1)*q+q^2)*L3*T[1] + (-2*u0+(2*u0-1)*q+q^2)*L2*T[2] + (2*u0+q)*L1*T[1,2]
We check the defining relations:
sage: prod(L1 - val for val in u) == H.zero() True sage: L1 * T1 * L1 * T1 == T1 * L1 * T1 * L1 True sage: T1 * T2 * T1 == T2 * T1 * T2 True sage: T2 * T3 * T2 == T3 * T2 * T3 True sage: L2 == q^-1 * T1 * L1 * T1 True sage: L3 == q^-2 * T2 * T1 * L1 * T1 * T2 True
prod(L1 - val for val in u) == H.zero() L1 * T1 * L1 * T1 == T1 * L1 * T1 * L1 T1 * T2 * T1 == T2 * T1 * T2 T2 * T3 * T2 == T3 * T2 * T3 L2 == q^-1 * T1 * L1 * T1 L3 == q^-2 * T2 * T1 * L1 * T1 * T2
>>> from sage.all import * >>> prod(L1 - val for val in u) == H.zero() True >>> L1 * T1 * L1 * T1 == T1 * L1 * T1 * L1 True >>> T1 * T2 * T1 == T2 * T1 * T2 True >>> T2 * T3 * T2 == T3 * T2 * T3 True >>> L2 == q**-Integer(1) * T1 * L1 * T1 True >>> L3 == q**-Integer(2) * T2 * T1 * L1 * T1 * T2 True
We construct an Ariki-Koike algebra with
, where is a primitive third root of unity:sage: # needs sage.rings.number_field sage: F = CyclotomicField(3) sage: zeta3 = F.gen() sage: R.<q> = LaurentPolynomialRing(F) sage: H = algebras.ArikiKoike(3, 4, q=q, u=[1, zeta3, zeta3^2], R=R) sage: H.LT().inject_variables() Defining L1, L2, L3, L4, T1, T2, T3 sage: L1^3 1 sage: L2^3 1 - (q^-1-1)*T[1] - (q^-1-1)*L1*L2^2*T[1] - (q^-1-1)*L1^2*L2*T[1]
# needs sage.rings.number_field F = CyclotomicField(3) zeta3 = F.gen() R.<q> = LaurentPolynomialRing(F) H = algebras.ArikiKoike(3, 4, q=q, u=[1, zeta3, zeta3^2], R=R) H.LT().inject_variables() L1^3 L2^3
>>> from sage.all import * >>> # needs sage.rings.number_field >>> F = CyclotomicField(Integer(3)) >>> zeta3 = F.gen() >>> R = LaurentPolynomialRing(F, names=('q',)); (q,) = R._first_ngens(1) >>> H = algebras.ArikiKoike(Integer(3), Integer(4), q=q, u=[Integer(1), zeta3, zeta3**Integer(2)], R=R) >>> H.LT().inject_variables() Defining L1, L2, L3, L4, T1, T2, T3 >>> L1**Integer(3) 1 >>> L2**Integer(3) 1 - (q^-1-1)*T[1] - (q^-1-1)*L1*L2^2*T[1] - (q^-1-1)*L1^2*L2*T[1]
Next, we additionally take
to obtain the group algebra of :sage: # needs sage.rings.number_field sage: F = CyclotomicField(3) sage: zeta3 = F.gen() sage: H = algebras.ArikiKoike(3, 4, q=1, u=[1, zeta3, zeta3^2], R=F) sage: LT = H.LT() sage: LT.inject_variables() Defining L1, L2, L3, L4, T1, T2, T3 sage: A = ColoredPermutations(3, 4).algebra(F) sage: s1, s2, s3, s0 = list(A.algebra_generators()) sage: all(L^3 == LT.one() for L in LT.L()) True sage: J = [s0, s3*s0*s3, s2*s3*s0*s3*s2, s1*s2*s3*s0*s3*s2*s1] sage: all(Ji^3 == A.one() for Ji in J) True
# needs sage.rings.number_field F = CyclotomicField(3) zeta3 = F.gen() H = algebras.ArikiKoike(3, 4, q=1, u=[1, zeta3, zeta3^2], R=F) LT = H.LT() LT.inject_variables() A = ColoredPermutations(3, 4).algebra(F) s1, s2, s3, s0 = list(A.algebra_generators()) all(L^3 == LT.one() for L in LT.L()) J = [s0, s3*s0*s3, s2*s3*s0*s3*s2, s1*s2*s3*s0*s3*s2*s1] all(Ji^3 == A.one() for Ji in J)
>>> from sage.all import * >>> # needs sage.rings.number_field >>> F = CyclotomicField(Integer(3)) >>> zeta3 = F.gen() >>> H = algebras.ArikiKoike(Integer(3), Integer(4), q=Integer(1), u=[Integer(1), zeta3, zeta3**Integer(2)], R=F) >>> LT = H.LT() >>> LT.inject_variables() Defining L1, L2, L3, L4, T1, T2, T3 >>> A = ColoredPermutations(Integer(3), Integer(4)).algebra(F) >>> s1, s2, s3, s0 = list(A.algebra_generators()) >>> all(L**Integer(3) == LT.one() for L in LT.L()) True >>> J = [s0, s3*s0*s3, s2*s3*s0*s3*s2, s1*s2*s3*s0*s3*s2*s1] >>> all(Ji**Integer(3) == A.one() for Ji in J) True
- class LT(algebra)[source]#
Bases:
_Basis
The basis of the Ariki-Koike algebra given by monomials of the form
, where is product of Jucys-Murphy elements and is a product of .This was the basis defined in [AK1994] except using the renormalized Jucys-Murphy elements.
- class Element[source]#
Bases:
IndexedFreeModuleElement
- L(i=None)[source]#
Return the generator(s)
.INPUT:
i
– (default:None
) the generator or ifNone
, then the list of all generators
EXAMPLES:
sage: LT = algebras.ArikiKoike(8, 3).LT() sage: LT.L(2) L2 sage: LT.L() [L1, L2, L3] sage: LT = algebras.ArikiKoike(1, 3).LT() sage: LT.L(2) u + (-u*q^-1+u)*T[1] sage: LT.L() [u, u + (-u*q^-1+u)*T[1], u + (-u*q^-1+u)*T[2] + (-u*q^-2+u*q^-1)*T[2,1,2]]
LT = algebras.ArikiKoike(8, 3).LT() LT.L(2) LT.L() LT = algebras.ArikiKoike(1, 3).LT() LT.L(2) LT.L()
>>> from sage.all import * >>> LT = algebras.ArikiKoike(Integer(8), Integer(3)).LT() >>> LT.L(Integer(2)) L2 >>> LT.L() [L1, L2, L3] >>> LT = algebras.ArikiKoike(Integer(1), Integer(3)).LT() >>> LT.L(Integer(2)) u + (-u*q^-1+u)*T[1] >>> LT.L() [u, u + (-u*q^-1+u)*T[1], u + (-u*q^-1+u)*T[2] + (-u*q^-2+u*q^-1)*T[2,1,2]]
- T(i=None)[source]#
Return the generator(s)
ofself
.INPUT:
i
– (default:None
) the generator or ifNone
, then the list of all generators
EXAMPLES:
sage: LT = algebras.ArikiKoike(8, 3).LT() sage: LT.T(1) T[1] sage: LT.T() [L1, T[1], T[2]] sage: LT.T(0) L1
LT = algebras.ArikiKoike(8, 3).LT() LT.T(1) LT.T() LT.T(0)
>>> from sage.all import * >>> LT = algebras.ArikiKoike(Integer(8), Integer(3)).LT() >>> LT.T(Integer(1)) T[1] >>> LT.T() [L1, T[1], T[2]] >>> LT.T(Integer(0)) L1
- algebra_generators()[source]#
Return the algebra generators of
self
.EXAMPLES:
sage: LT = algebras.ArikiKoike(5, 3).LT() sage: dict(LT.algebra_generators()) {'L1': L1, 'L2': L2, 'L3': L3, 'T1': T[1], 'T2': T[2]} sage: LT = algebras.ArikiKoike(1, 4).LT() sage: dict(LT.algebra_generators()) {'T1': T[1], 'T2': T[2], 'T3': T[3]}
LT = algebras.ArikiKoike(5, 3).LT() dict(LT.algebra_generators()) LT = algebras.ArikiKoike(1, 4).LT() dict(LT.algebra_generators())
>>> from sage.all import * >>> LT = algebras.ArikiKoike(Integer(5), Integer(3)).LT() >>> dict(LT.algebra_generators()) {'L1': L1, 'L2': L2, 'L3': L3, 'T1': T[1], 'T2': T[2]} >>> LT = algebras.ArikiKoike(Integer(1), Integer(4)).LT() >>> dict(LT.algebra_generators()) {'T1': T[1], 'T2': T[2], 'T3': T[3]}
- inverse_T(i)[source]#
Return the inverse of the generator
.From the quadratic relation, we have
EXAMPLES:
sage: LT = algebras.ArikiKoike(3, 4).LT() sage: [LT.inverse_T(i) for i in range(1, 4)] [(q^-1-1) + (q^-1)*T[1], (q^-1-1) + (q^-1)*T[2], (q^-1-1) + (q^-1)*T[3]]
LT = algebras.ArikiKoike(3, 4).LT() [LT.inverse_T(i) for i in range(1, 4)]
>>> from sage.all import * >>> LT = algebras.ArikiKoike(Integer(3), Integer(4)).LT() >>> [LT.inverse_T(i) for i in range(Integer(1), Integer(4))] [(q^-1-1) + (q^-1)*T[1], (q^-1-1) + (q^-1)*T[2], (q^-1-1) + (q^-1)*T[3]]
- product_on_basis(m1, m2)[source]#
Return the product of the basis elements indexed by
m1
andm2
.EXAMPLES:
sage: LT = algebras.ArikiKoike(6, 3).LT() sage: m = ((1, 0, 2), Permutations(3)([2,1,3])) sage: LT.product_on_basis(m, m) q*L1*L2*L3^4 sage: LT = algebras.ArikiKoike(4, 3).LT() sage: L1,L2,L3,T1,T2 = LT.algebra_generators() sage: L1 * T1 * L1^2 * T1 q*L1*L2^2 + (1-q)*L1^2*L2*T[1] sage: L1^2 * T1 * L1^2 * T1 q*L1^2*L2^2 + (1-q)*L1^3*L2*T[1] sage: L1^3 * T1 * L1^2 * T1 (-u0*u1*u2*u3+u0*u1*u2*u3*q)*L2*T[1] + ((u0*u1*u2+u0*u1*u3+u0*u2*u3+u1*u2*u3)+(-u0*u1*u2-u0*u1*u3-u0*u2*u3-u1*u2*u3)*q)*L1*L2*T[1] + ((-u0*u1-u0*u2-u1*u2-u0*u3-u1*u3-u2*u3)+(u0*u1+u0*u2+u1*u2+u0*u3+u1*u3+u2*u3)*q)*L1^2*L2*T[1] + ((u0+u1+u2+u3)+(-u0-u1-u2-u3)*q)*L1^3*L2*T[1] + q*L1^3*L2^2 sage: L1^2 * T1 * L1^3 * T1 (-u0*u1*u2*u3+u0*u1*u2*u3*q)*L2*T[1] + ((u0*u1*u2+u0*u1*u3+u0*u2*u3+u1*u2*u3)+(-u0*u1*u2-u0*u1*u3-u0*u2*u3-u1*u2*u3)*q)*L1*L2*T[1] + ((-u0*u1-u0*u2-u1*u2-u0*u3-u1*u3-u2*u3)+(u0*u1+u0*u2+u1*u2+u0*u3+u1*u3+u2*u3)*q)*L1^2*L2*T[1] + q*L1^2*L2^3 + ((u0+u1+u2+u3)+(-u0-u1-u2-u3)*q)*L1^3*L2*T[1] + (1-q)*L1^3*L2^2*T[1] sage: L1^2 * T1*T2*T1 * L2 * L3 * T2 (q-2*q^2+q^3)*L1^2*L2*L3 - (1-2*q+2*q^2-q^3)*L1^2*L2*L3*T[2] - (q-q^2)*L1^3*L3*T[1] + (1-2*q+q^2)*L1^3*L3*T[1,2] + q*L1^3*L2*T[2,1] - (1-q)*L1^3*L2*T[2,1,2] sage: LT = algebras.ArikiKoike(2, 3).LT() sage: L3 = LT.L(3) sage: x = LT.an_element() sage: (x * L3) * L3 == x * (L3 * L3) True
LT = algebras.ArikiKoike(6, 3).LT() m = ((1, 0, 2), Permutations(3)([2,1,3])) LT.product_on_basis(m, m) LT = algebras.ArikiKoike(4, 3).LT() L1,L2,L3,T1,T2 = LT.algebra_generators() L1 * T1 * L1^2 * T1 L1^2 * T1 * L1^2 * T1 L1^3 * T1 * L1^2 * T1 L1^2 * T1 * L1^3 * T1 L1^2 * T1*T2*T1 * L2 * L3 * T2 LT = algebras.ArikiKoike(2, 3).LT() L3 = LT.L(3) x = LT.an_element() (x * L3) * L3 == x * (L3 * L3)
>>> from sage.all import * >>> LT = algebras.ArikiKoike(Integer(6), Integer(3)).LT() >>> m = ((Integer(1), Integer(0), Integer(2)), Permutations(Integer(3))([Integer(2),Integer(1),Integer(3)])) >>> LT.product_on_basis(m, m) q*L1*L2*L3^4 >>> LT = algebras.ArikiKoike(Integer(4), Integer(3)).LT() >>> L1,L2,L3,T1,T2 = LT.algebra_generators() >>> L1 * T1 * L1**Integer(2) * T1 q*L1*L2^2 + (1-q)*L1^2*L2*T[1] >>> L1**Integer(2) * T1 * L1**Integer(2) * T1 q*L1^2*L2^2 + (1-q)*L1^3*L2*T[1] >>> L1**Integer(3) * T1 * L1**Integer(2) * T1 (-u0*u1*u2*u3+u0*u1*u2*u3*q)*L2*T[1] + ((u0*u1*u2+u0*u1*u3+u0*u2*u3+u1*u2*u3)+(-u0*u1*u2-u0*u1*u3-u0*u2*u3-u1*u2*u3)*q)*L1*L2*T[1] + ((-u0*u1-u0*u2-u1*u2-u0*u3-u1*u3-u2*u3)+(u0*u1+u0*u2+u1*u2+u0*u3+u1*u3+u2*u3)*q)*L1^2*L2*T[1] + ((u0+u1+u2+u3)+(-u0-u1-u2-u3)*q)*L1^3*L2*T[1] + q*L1^3*L2^2 >>> L1**Integer(2) * T1 * L1**Integer(3) * T1 (-u0*u1*u2*u3+u0*u1*u2*u3*q)*L2*T[1] + ((u0*u1*u2+u0*u1*u3+u0*u2*u3+u1*u2*u3)+(-u0*u1*u2-u0*u1*u3-u0*u2*u3-u1*u2*u3)*q)*L1*L2*T[1] + ((-u0*u1-u0*u2-u1*u2-u0*u3-u1*u3-u2*u3)+(u0*u1+u0*u2+u1*u2+u0*u3+u1*u3+u2*u3)*q)*L1^2*L2*T[1] + q*L1^2*L2^3 + ((u0+u1+u2+u3)+(-u0-u1-u2-u3)*q)*L1^3*L2*T[1] + (1-q)*L1^3*L2^2*T[1] >>> L1**Integer(2) * T1*T2*T1 * L2 * L3 * T2 (q-2*q^2+q^3)*L1^2*L2*L3 - (1-2*q+2*q^2-q^3)*L1^2*L2*L3*T[2] - (q-q^2)*L1^3*L3*T[1] + (1-2*q+q^2)*L1^3*L3*T[1,2] + q*L1^3*L2*T[2,1] - (1-q)*L1^3*L2*T[2,1,2] >>> LT = algebras.ArikiKoike(Integer(2), Integer(3)).LT() >>> L3 = LT.L(Integer(3)) >>> x = LT.an_element() >>> (x * L3) * L3 == x * (L3 * L3) True
- class T(algebra)[source]#
Bases:
_Basis
The basis of the Ariki-Koike algebra given by monomials of the generators
.We use the choice of reduced expression given by [BM1997]:
where
(note that ) and is a reduced expression of an element in .- L(i=None)[source]#
Return the Jucys-Murphy element(s)
.The Jucys-Murphy element
is defined asINPUT:
i
– (default:None
) the Jucys-Murphy element or ifNone
, then the list of all
EXAMPLES:
sage: T = algebras.ArikiKoike(8, 3).T() sage: T.L(2) (q^-1)*T[1,0,1] sage: T.L() [T[0], (q^-1)*T[1,0,1], (q^-2)*T[2,1,0,1,2]] sage: T0,T1,T2 = T.T() sage: q = T.q() sage: T.L(1) == T0 True sage: T.L(2) == q^-1 * T1*T0*T1 True sage: T.L(3) == q^-2 * T2*T1*T0*T1*T2 True sage: T = algebras.ArikiKoike(1, 3).T() sage: T.L(2) u + (-u*q^-1+u)*T[1] sage: T.L() [u, u + (-u*q^-1+u)*T[1], u + (-u*q^-1+u)*T[2] + (-u*q^-2+u*q^-1)*T[2,1,2]]
T = algebras.ArikiKoike(8, 3).T() T.L(2) T.L() T0,T1,T2 = T.T() q = T.q() T.L(1) == T0 T.L(2) == q^-1 * T1*T0*T1 T.L(3) == q^-2 * T2*T1*T0*T1*T2 T = algebras.ArikiKoike(1, 3).T() T.L(2) T.L()
>>> from sage.all import * >>> T = algebras.ArikiKoike(Integer(8), Integer(3)).T() >>> T.L(Integer(2)) (q^-1)*T[1,0,1] >>> T.L() [T[0], (q^-1)*T[1,0,1], (q^-2)*T[2,1,0,1,2]] >>> T0,T1,T2 = T.T() >>> q = T.q() >>> T.L(Integer(1)) == T0 True >>> T.L(Integer(2)) == q**-Integer(1) * T1*T0*T1 True >>> T.L(Integer(3)) == q**-Integer(2) * T2*T1*T0*T1*T2 True >>> T = algebras.ArikiKoike(Integer(1), Integer(3)).T() >>> T.L(Integer(2)) u + (-u*q^-1+u)*T[1] >>> T.L() [u, u + (-u*q^-1+u)*T[1], u + (-u*q^-1+u)*T[2] + (-u*q^-2+u*q^-1)*T[2,1,2]]
- T(i=None)[source]#
Return the generator(s)
ofself
.INPUT:
i
– (default:None
) the generator or ifNone
, then the list of all generators
EXAMPLES:
sage: T = algebras.ArikiKoike(8, 3).T() sage: T.T(1) T[1] sage: T.T() [T[0], T[1], T[2]] sage: T = algebras.ArikiKoike(1, 4).T()
T = algebras.ArikiKoike(8, 3).T() T.T(1) T.T() T = algebras.ArikiKoike(1, 4).T()
>>> from sage.all import * >>> T = algebras.ArikiKoike(Integer(8), Integer(3)).T() >>> T.T(Integer(1)) T[1] >>> T.T() [T[0], T[1], T[2]] >>> T = algebras.ArikiKoike(Integer(1), Integer(4)).T()
- algebra_generators()[source]#
Return the algebra generators of
self
.EXAMPLES:
sage: T = algebras.ArikiKoike(5, 3).T() sage: dict(T.algebra_generators()) {0: T[0], 1: T[1], 2: T[2]} sage: T = algebras.ArikiKoike(1, 4).T() sage: dict(T.algebra_generators()) {1: T[1], 2: T[2], 3: T[3]}
T = algebras.ArikiKoike(5, 3).T() dict(T.algebra_generators()) T = algebras.ArikiKoike(1, 4).T() dict(T.algebra_generators())
>>> from sage.all import * >>> T = algebras.ArikiKoike(Integer(5), Integer(3)).T() >>> dict(T.algebra_generators()) {0: T[0], 1: T[1], 2: T[2]} >>> T = algebras.ArikiKoike(Integer(1), Integer(4)).T() >>> dict(T.algebra_generators()) {1: T[1], 2: T[2], 3: T[3]}
- product_on_basis(m1, m2)[source]#
Return the product of the basis elements indexed by
m1
andm2
.EXAMPLES:
sage: T = algebras.ArikiKoike(2, 3).T() sage: T0, T1, T2 = T.T() sage: T.product_on_basis(T0.leading_support(), T1.leading_support()) T[0,1] sage: T1 * T2 T[1,2] sage: T2 * T1 T[2,1] sage: T2 * (T2 * T1 * T0) -(1-q)*T[2,1,0] + q*T[1,0] sage: (T1 * T0 * T1 * T0) * T0 (-u0*u1)*T[1,0,1] + ((u0+u1))*T[0,1,0,1] sage: (T0 * T1 * T0 * T1) * (T0 * T1) (-u0*u1*q)*T[1,0] + (u0*u1-u0*u1*q)*T[1,0,1] + ((u0+u1)*q)*T[0,1,0] + ((-u0-u1)+(u0+u1)*q)*T[0,1,0,1] sage: T1 * (T0 * T2 * T1 * T0) T[1,0,2,1,0] sage: (T1 * T2) * (T2 * T1 * T0) -(1-q)*T[2,1,0,2] - (q-q^2)*T[1,0] + q^2*T[0] sage: (T2*T1*T2) * (T2*T1*T0*T1*T2) -(q-q^2)*T[2,1,0,1,2] + (1-2*q+q^2)*T[2,1,0,2,1,2] - (q-q^2)*T[1,0,2,1,2] + q^2*T[0,2,1,2]
T = algebras.ArikiKoike(2, 3).T() T0, T1, T2 = T.T() T.product_on_basis(T0.leading_support(), T1.leading_support()) T1 * T2 T2 * T1 T2 * (T2 * T1 * T0) (T1 * T0 * T1 * T0) * T0 (T0 * T1 * T0 * T1) * (T0 * T1) T1 * (T0 * T2 * T1 * T0) (T1 * T2) * (T2 * T1 * T0) (T2*T1*T2) * (T2*T1*T0*T1*T2)
>>> from sage.all import * >>> T = algebras.ArikiKoike(Integer(2), Integer(3)).T() >>> T0, T1, T2 = T.T() >>> T.product_on_basis(T0.leading_support(), T1.leading_support()) T[0,1] >>> T1 * T2 T[1,2] >>> T2 * T1 T[2,1] >>> T2 * (T2 * T1 * T0) -(1-q)*T[2,1,0] + q*T[1,0] >>> (T1 * T0 * T1 * T0) * T0 (-u0*u1)*T[1,0,1] + ((u0+u1))*T[0,1,0,1] >>> (T0 * T1 * T0 * T1) * (T0 * T1) (-u0*u1*q)*T[1,0] + (u0*u1-u0*u1*q)*T[1,0,1] + ((u0+u1)*q)*T[0,1,0] + ((-u0-u1)+(u0+u1)*q)*T[0,1,0,1] >>> T1 * (T0 * T2 * T1 * T0) T[1,0,2,1,0] >>> (T1 * T2) * (T2 * T1 * T0) -(1-q)*T[2,1,0,2] - (q-q^2)*T[1,0] + q^2*T[0] >>> (T2*T1*T2) * (T2*T1*T0*T1*T2) -(q-q^2)*T[2,1,0,1,2] + (1-2*q+q^2)*T[2,1,0,2,1,2] - (q-q^2)*T[1,0,2,1,2] + q^2*T[0,2,1,2]
We check some relations:
sage: T0 * T1 * T0 * T1 == T1 * T0 * T1 * T0 True sage: T1 * T2 * T1 == T2 * T1 * T2 True sage: (T1 * T0) * T0 == T1 * (T0 * T0) True sage: (T.L(1) * T.L(2)) * T.L(2) - T.L(1) * (T.L(2) * T.L(2)) 0 sage: (T.L(2) * T.L(3)) * T.L(3) - T.L(2) * (T.L(3) * T.L(3)) 0
T0 * T1 * T0 * T1 == T1 * T0 * T1 * T0 T1 * T2 * T1 == T2 * T1 * T2 (T1 * T0) * T0 == T1 * (T0 * T0) (T.L(1) * T.L(2)) * T.L(2) - T.L(1) * (T.L(2) * T.L(2)) (T.L(2) * T.L(3)) * T.L(3) - T.L(2) * (T.L(3) * T.L(3))
>>> from sage.all import * >>> T0 * T1 * T0 * T1 == T1 * T0 * T1 * T0 True >>> T1 * T2 * T1 == T2 * T1 * T2 True >>> (T1 * T0) * T0 == T1 * (T0 * T0) True >>> (T.L(Integer(1)) * T.L(Integer(2))) * T.L(Integer(2)) - T.L(Integer(1)) * (T.L(Integer(2)) * T.L(Integer(2))) 0 >>> (T.L(Integer(2)) * T.L(Integer(3))) * T.L(Integer(3)) - T.L(Integer(2)) * (T.L(Integer(3)) * T.L(Integer(3))) 0
- a_realization()[source]#
Return a realization of
self
.EXAMPLES:
sage: H = algebras.ArikiKoike(5, 2) sage: H.a_realization() Ariki-Koike algebra of rank 5 and order 2 with q=q and u=(u0, u1, u2, u3, u4) ... in the LT-basis
H = algebras.ArikiKoike(5, 2) H.a_realization()
>>> from sage.all import * >>> H = algebras.ArikiKoike(Integer(5), Integer(2)) >>> H.a_realization() Ariki-Koike algebra of rank 5 and order 2 with q=q and u=(u0, u1, u2, u3, u4) ... in the LT-basis
- cyclotomic_parameters()[source]#
Return the cyclotomic parameters
ofself
.EXAMPLES:
sage: H = algebras.ArikiKoike(5, 3) sage: H.cyclotomic_parameters() (u0, u1, u2, u3, u4)
H = algebras.ArikiKoike(5, 3) H.cyclotomic_parameters()
>>> from sage.all import * >>> H = algebras.ArikiKoike(Integer(5), Integer(3)) >>> H.cyclotomic_parameters() (u0, u1, u2, u3, u4)
- hecke_parameter()[source]#
Return the Hecke parameter
ofself
.EXAMPLES:
sage: H = algebras.ArikiKoike(5, 3) sage: H.hecke_parameter() q
H = algebras.ArikiKoike(5, 3) H.hecke_parameter()
>>> from sage.all import * >>> H = algebras.ArikiKoike(Integer(5), Integer(3)) >>> H.hecke_parameter() q
- q()[source]#
Return the Hecke parameter
ofself
.EXAMPLES:
sage: H = algebras.ArikiKoike(5, 3) sage: H.hecke_parameter() q
H = algebras.ArikiKoike(5, 3) H.hecke_parameter()
>>> from sage.all import * >>> H = algebras.ArikiKoike(Integer(5), Integer(3)) >>> H.hecke_parameter() q
- specht_module(la)[source]#
Return the Specht module of
self
corresponding to the shapela
.EXAMPLES:
sage: AK = algebras.ArikiKoike(4, 6) sage: AK.specht_module([[2], [], [1,1,1], [1]]) Specht module of shape ([2], [], [1, 1, 1], [1]) for Ariki-Koike algebra of rank 4 and order 6 with q=q and u=(u0, u1, u2, u3) over ... over Integer Ring
AK = algebras.ArikiKoike(4, 6) AK.specht_module([[2], [], [1,1,1], [1]])
>>> from sage.all import * >>> AK = algebras.ArikiKoike(Integer(4), Integer(6)) >>> AK.specht_module([[Integer(2)], [], [Integer(1),Integer(1),Integer(1)], [Integer(1)]]) Specht module of shape ([2], [], [1, 1, 1], [1]) for Ariki-Koike algebra of rank 4 and order 6 with q=q and u=(u0, u1, u2, u3) over ... over Integer Ring
- u()[source]#
Return the cyclotomic parameters
ofself
.EXAMPLES:
sage: H = algebras.ArikiKoike(5, 3) sage: H.cyclotomic_parameters() (u0, u1, u2, u3, u4)
H = algebras.ArikiKoike(5, 3) H.cyclotomic_parameters()
>>> from sage.all import * >>> H = algebras.ArikiKoike(Integer(5), Integer(3)) >>> H.cyclotomic_parameters() (u0, u1, u2, u3, u4)