Coxeter Group Algebras¶
- class sage.categories.coxeter_group_algebras.CoxeterGroupAlgebras(category, *args)[source]¶
Bases:
AlgebrasCategory
- class ParentMethods[source]¶
Bases:
object
- demazure_lusztig_eigenvectors(q1, q2)[source]¶
Return the family of eigenvectors for the Cherednik operators.
INPUT:
self
– a finite Coxeter group \(W\)q1
,q2
– two elements of the ground ring \(K\)
The affine Hecke algebra \(H_{q_1,q_2}(\tilde W)\) acts on the group algebra of \(W\) through the Demazure-Lusztig operators \(T_i\). Its Cherednik operators \(Y^\lambda\) can be simultaneously diagonalized as long as \(q_1/q_2\) is not a small root of unity [HST2008].
This method returns the family of joint eigenvectors, indexed by \(W\).
See also
EXAMPLES:
sage: W = WeylGroup(["B",2]) sage: W.element_class._repr_=lambda x: "".join(str(i) for i in x.reduced_word()) sage: K = QQ['q1,q2'].fraction_field() sage: q1, q2 = K.gens() sage: KW = W.algebra(K) sage: E = KW.demazure_lusztig_eigenvectors(q1,q2) sage: E.keys() # needs sage.rings.number_field Weyl Group of type ['B', 2] (as a matrix group acting on the ambient space) sage: w = W.an_element() sage: E[w] # needs sage.rings.number_field (q2/(-q1+q2))*2121 + ((-q2)/(-q1+q2))*121 - 212 + 12
>>> from sage.all import * >>> W = WeylGroup(["B",Integer(2)]) >>> W.element_class._repr_=lambda x: "".join(str(i) for i in x.reduced_word()) >>> K = QQ['q1,q2'].fraction_field() >>> q1, q2 = K.gens() >>> KW = W.algebra(K) >>> E = KW.demazure_lusztig_eigenvectors(q1,q2) >>> E.keys() # needs sage.rings.number_field Weyl Group of type ['B', 2] (as a matrix group acting on the ambient space) >>> w = W.an_element() >>> E[w] # needs sage.rings.number_field (q2/(-q1+q2))*2121 + ((-q2)/(-q1+q2))*121 - 212 + 12
W = WeylGroup(["B",2]) W.element_class._repr_=lambda x: "".join(str(i) for i in x.reduced_word()) K = QQ['q1,q2'].fraction_field() q1, q2 = K.gens() KW = W.algebra(K) E = KW.demazure_lusztig_eigenvectors(q1,q2) E.keys() # needs sage.rings.number_field w = W.an_element() E[w] # needs sage.rings.number_field
- demazure_lusztig_operator_on_basis(w, i, q1, q2, side='right')[source]¶
Return the result of applying the \(i\)-th Demazure Lusztig operator on
w
.INPUT:
w
– an element of the Coxeter groupi
– an element of the index setq1
,q2
– two elements of the ground ringbar
– boolean (default:False
)
See
demazure_lusztig_operators()
for details.EXAMPLES:
sage: W = WeylGroup(["B",3]) sage: W.element_class._repr_=lambda x: "".join(str(i) for i in x.reduced_word()) sage: K = QQ['q1,q2'] sage: q1, q2 = K.gens() sage: KW = W.algebra(K) sage: w = W.an_element() sage: KW.demazure_lusztig_operator_on_basis(w, 0, q1, q2) (-q2)*323123 + (q1+q2)*123 sage: KW.demazure_lusztig_operator_on_basis(w, 1, q1, q2) q1*1231 sage: KW.demazure_lusztig_operator_on_basis(w, 2, q1, q2) q1*1232 sage: KW.demazure_lusztig_operator_on_basis(w, 3, q1, q2) (q1+q2)*123 + (-q2)*12
>>> from sage.all import * >>> W = WeylGroup(["B",Integer(3)]) >>> W.element_class._repr_=lambda x: "".join(str(i) for i in x.reduced_word()) >>> K = QQ['q1,q2'] >>> q1, q2 = K.gens() >>> KW = W.algebra(K) >>> w = W.an_element() >>> KW.demazure_lusztig_operator_on_basis(w, Integer(0), q1, q2) (-q2)*323123 + (q1+q2)*123 >>> KW.demazure_lusztig_operator_on_basis(w, Integer(1), q1, q2) q1*1231 >>> KW.demazure_lusztig_operator_on_basis(w, Integer(2), q1, q2) q1*1232 >>> KW.demazure_lusztig_operator_on_basis(w, Integer(3), q1, q2) (q1+q2)*123 + (-q2)*12
W = WeylGroup(["B",3]) W.element_class._repr_=lambda x: "".join(str(i) for i in x.reduced_word()) K = QQ['q1,q2'] q1, q2 = K.gens() KW = W.algebra(K) w = W.an_element() KW.demazure_lusztig_operator_on_basis(w, 0, q1, q2) KW.demazure_lusztig_operator_on_basis(w, 1, q1, q2) KW.demazure_lusztig_operator_on_basis(w, 2, q1, q2) KW.demazure_lusztig_operator_on_basis(w, 3, q1, q2)
At \(q_1=1\) and \(q_2=0\) we recover the action of the isobaric divided differences \(\pi_i\):
sage: KW.demazure_lusztig_operator_on_basis(w, 0, 1, 0) 123 sage: KW.demazure_lusztig_operator_on_basis(w, 1, 1, 0) 1231 sage: KW.demazure_lusztig_operator_on_basis(w, 2, 1, 0) 1232 sage: KW.demazure_lusztig_operator_on_basis(w, 3, 1, 0) 123
>>> from sage.all import * >>> KW.demazure_lusztig_operator_on_basis(w, Integer(0), Integer(1), Integer(0)) 123 >>> KW.demazure_lusztig_operator_on_basis(w, Integer(1), Integer(1), Integer(0)) 1231 >>> KW.demazure_lusztig_operator_on_basis(w, Integer(2), Integer(1), Integer(0)) 1232 >>> KW.demazure_lusztig_operator_on_basis(w, Integer(3), Integer(1), Integer(0)) 123
KW.demazure_lusztig_operator_on_basis(w, 0, 1, 0) KW.demazure_lusztig_operator_on_basis(w, 1, 1, 0) KW.demazure_lusztig_operator_on_basis(w, 2, 1, 0) KW.demazure_lusztig_operator_on_basis(w, 3, 1, 0)
At \(q_1=1\) and \(q_2=-1\) we recover the action of the simple reflection \(s_i\):
sage: KW.demazure_lusztig_operator_on_basis(w, 0, 1, -1) 323123 sage: KW.demazure_lusztig_operator_on_basis(w, 1, 1, -1) 1231 sage: KW.demazure_lusztig_operator_on_basis(w, 2, 1, -1) 1232 sage: KW.demazure_lusztig_operator_on_basis(w, 3, 1, -1) 12
>>> from sage.all import * >>> KW.demazure_lusztig_operator_on_basis(w, Integer(0), Integer(1), -Integer(1)) 323123 >>> KW.demazure_lusztig_operator_on_basis(w, Integer(1), Integer(1), -Integer(1)) 1231 >>> KW.demazure_lusztig_operator_on_basis(w, Integer(2), Integer(1), -Integer(1)) 1232 >>> KW.demazure_lusztig_operator_on_basis(w, Integer(3), Integer(1), -Integer(1)) 12
KW.demazure_lusztig_operator_on_basis(w, 0, 1, -1) KW.demazure_lusztig_operator_on_basis(w, 1, 1, -1) KW.demazure_lusztig_operator_on_basis(w, 2, 1, -1) KW.demazure_lusztig_operator_on_basis(w, 3, 1, -1)
- demazure_lusztig_operators(q1, q2, side='right', affine=True)[source]¶
Return the Demazure Lusztig operators acting on
self
.INPUT:
q1
,q2
– two elements of the ground ring \(K\)side
–'left'
or'right'
(default:'right'
); which side to act uponaffine
– boolean (default:True
)
The Demazure-Lusztig operator \(T_i\) is the linear map \(R \to R\) obtained by interpolating between the simple projection \(\pi_i\) (see
CoxeterGroups.ElementMethods.simple_projection()
) and the simple reflection \(s_i\) so that \(T_i\) has eigenvalues \(q_1\) and \(q_2\):\[(q_1 + q_2) \pi_i - q_2 s_i.\]The Demazure-Lusztig operators give the usual representation of the operators \(T_i\) of the \(q_1,q_2\) Hecke algebra associated to the Coxeter group.
For a finite Coxeter group, and if
affine=True
, the Demazure-Lusztig operators \(T_1,\dots,T_n\) are completed by \(T_0\) to implement the level \(0\) action of the affine Hecke algebra.EXAMPLES:
sage: W = WeylGroup(["B",3]) sage: W.element_class._repr_=lambda x: "".join(str(i) for i in x.reduced_word()) sage: K = QQ['q1,q2'] sage: q1, q2 = K.gens() sage: KW = W.algebra(K) sage: T = KW.demazure_lusztig_operators(q1, q2, affine=True) sage: x = KW.monomial(W.an_element()); x 123 sage: T[0](x) (-q2)*323123 + (q1+q2)*123 sage: T[1](x) q1*1231 sage: T[2](x) q1*1232 sage: T[3](x) (q1+q2)*123 + (-q2)*12 sage: T._test_relations()
>>> from sage.all import * >>> W = WeylGroup(["B",Integer(3)]) >>> W.element_class._repr_=lambda x: "".join(str(i) for i in x.reduced_word()) >>> K = QQ['q1,q2'] >>> q1, q2 = K.gens() >>> KW = W.algebra(K) >>> T = KW.demazure_lusztig_operators(q1, q2, affine=True) >>> x = KW.monomial(W.an_element()); x 123 >>> T[Integer(0)](x) (-q2)*323123 + (q1+q2)*123 >>> T[Integer(1)](x) q1*1231 >>> T[Integer(2)](x) q1*1232 >>> T[Integer(3)](x) (q1+q2)*123 + (-q2)*12 >>> T._test_relations()
W = WeylGroup(["B",3]) W.element_class._repr_=lambda x: "".join(str(i) for i in x.reduced_word()) K = QQ['q1,q2'] q1, q2 = K.gens() KW = W.algebra(K) T = KW.demazure_lusztig_operators(q1, q2, affine=True) x = KW.monomial(W.an_element()); x T[0](x) T[1](x) T[2](x) T[3](x) T._test_relations()
Note
For a finite Weyl group \(W\), the level 0 action of the affine Weyl group \(\tilde W\) only depends on the Coxeter diagram of the affinization, not its Dynkin diagram. Hence it is possible to explore all cases using only untwisted affinizations.