-
-
Notifications
You must be signed in to change notification settings - Fork 657
Commit e866070

Release Manager
Trac #32352: Efficient algorithm to compute products in the C' basis of an Iwahori-Hecke algebra
> '''(Update after review completed)''' The `Cp_Coxeter3` class
mentioned below was eventually merged into the `Cp` class, and the
`Cp_Coxeter3.product_on_basis` method is moved into the latter.
This ticket introduces, in the class `IwahoriHeckeAlgebra.Cp_Coxeter3`,
an alternative implementation of the Kazhdan--Lusztig C'-basis in an
Iwahori--Hecke algebra. This new implementation is to be contrasted with
the existing implementation of the same C'-basis via the class
`IwahoriHeckeAlgebra.Cp`. The latter class computes products in the
C'-basis indirectly by converting elements to the T-basis, performing
multiplication there, and converting back, while the main feature of our
new class is the direct computation of products in the C'-basis. By
delegating some computations to the optional package coxeter3, the new
class is able to compute products in the C'-basis more quickly,
including some products that take prohibitively long in the existing
`Cp` class. For example, the following calculation takes 5 seconds in
`Cp` but is instant in `Cp_Coxeter3`:
{{{
#!python
sage: R.<v> = LaurentPolynomialRing(ZZ) # optional -
coxeter3
sage: W = CoxeterGroup('H4', implementation='coxeter3') # optional -
coxeter3
sage: H = IwahoriHeckeAlgebra(W, v**2) # optional -
coxeter3
sage: Cp = H.Cp(); CpC = H.Cp_Coxeter3() # optional -
coxeter3
sage: Cp[3,4,3]*Cp[3,4,3,4]*Cp[1,2,3,4] # long time
(5 seconds) # optional - coxeter3
(v^-2+2+v^2)*Cp[4,3,4,3,4,1,2,3,4]
+ (v^-2+2+v^2)*Cp[4,3,4,3,4,1,2]
+ (v^-1+v)*Cp[3,4,1,2,3,4]
+ (v^-3+3*v^-1+3*v+v^3)*Cp[4,3,4,3,4,1]
+ (v^-1+v)*Cp[3,4,1,2]
sage: CpC[3,4,3]*CpC[3,4,3,4]*CpC[1,2,3,4] # optional -
coxeter3
(v^-2+2+v^2)*CpC[4,3,4,3,4,1,2,3,4]
+ (v^-2+2+v^2)*CpC[4,3,4,3,4,1,2]
+ (v^-1+v)*CpC[3,4,1,2,3,4]
+ (v^-3+3*v^-1+3*v+v^3)*CpC[4,3,4,3,4,1]
+ (v^-1+v)*CpC[3,4,1,2]
}}}
The following computation also seems infeasible in the existing `Cp`
basis (it did not terminate in any reasonable time), but it is again
instant in `Cp_Coxeter3`:
{{{
#!python
sage: W = CoxeterGroup('A9', implementation='coxeter3') # optional -
coxeter3
sage: H = IwahoriHeckeAlgebra(W, v**2) # optional -
coxeter3
sage: CpC = H.Cp_Coxeter3() # optional -
coxeter3
sage: CpC[1,2,1,8,9,8]*CpC[1,2,3,7,8,9] # optional -
coxeter3
(v^-2+2+v^2)*CpC[1,2,1,3,7,8,7,9,8,7]
+ (v^-2+2+v^2)*CpC[1,2,1,3,8,9,8,7]
+ (v^-3+3*v^-1+3*v+v^3)*CpC[1,2,1,3,8,9,8]
}}}
The main function for the class `IwahoriHeckeAlgebra.Cp_Coxeter3` is
`IwahoriHeckeAlgebra.Cp_Coxeter3.product_on_basis`. Explanations of the
relevant algorithms and detailed examples (including more previously
infeasible computations) are given in the documentation for this
function and the class. We also handle conversions between the C'-basis
(implemented in `Cp_Coxeter3`) and other bases of the Iwahori--Hecke
algebra, by building on existing conversions involving the `Cp`
implementation of the same C'-basis in a trivial way.
The product computations introduced in this ticket can potentially be
used to calculate the left, right, or two-sided Kazhdan-Lusztig cell
containing arbitrary Coxeter group elements, which can in turn be used
to determine all cells in any finite Coxeter group. We have included
functions in `sage/categories/coxeter_groups.py` that can calculate the
cells containing an element or compute all cells within a finite Coxeter
group. Some example computations are given below.
{{{
#!python
sage: W = CoxeterGroup('B3', implementation='coxeter3') # optional -
coxeter3
sage: s1,s2,s3 = W.simple_reflections() # optional -
coxeter3
sage: W.kazhdan_lusztig_cell(s1*s2*s1) # optional -
coxeter3
{[2, 1, 2], [2, 3, 2, 1, 2], [3, 2, 1, 2]}
sage: W.kazhdan_lusztig_cell(s3, side='right') # optional -
coxeter3
{[3], [3, 2], [3, 2, 1], [3, 2, 3]}
sage: W.kazhdan_lusztig_cell(s3, side='two-sided') # optional -
coxeter3
{[1], [1, 2], [1, 2, 3], [1, 2, 3, 2], [1, 2, 3, 2, 1], [2], [2, 1],
[2, 3], [2, 3, 2], [2, 3, 2, 1], [3], [3, 2], [3, 2, 1], [3, 2, 3]}
}}}
URL: https://trac.sagemath.org/32352
Reported by: gh-cemulate
Ticket author(s): Chase Meadors, Tianyuan Xu
Reviewer(s): Travis ScrimshawFile tree
Expand file treeCollapse file tree
2 files changed
+639
-4
lines changedFilter options
- src/sage
- algebras
- categories
Expand file treeCollapse file tree
2 files changed
+639
-4
lines changed
0 commit comments