#14261: Iwahori-Hecke algebra with several bases
-------------------------------------+-------------------------------------
       Reporter:  brant              |        Owner:  sage-combinat
           Type:  enhancement        |       Status:  needs_review
       Priority:  major              |    Milestone:  sage-5.12
      Component:  combinatorics      |   Resolution:
       Keywords:  Iwahori Hecke      |    Merged in:
  algebra                            |    Reviewers:  Andrew Mathas, Brant
        Authors:  Brant Jones,       |  Jones, Travis Scrimshaw
  Travis Scrimshaw                   |  Work issues:
Report Upstream:  N/A                |       Commit:
         Branch:                     |     Stopgaps:
   Dependencies:  #13735 #14014      |
  #14678 #14516                      |
-------------------------------------+-------------------------------------

Comment (by andrew.mathas):

 Replying to [comment:39 nthiery]:

 > So one could imagine a similar approach where: if the user wants the
 > full featured Hecke algebra, (s)he would have to provide explicitly a
 > method implementing the bar involution on the ground field (assuming
 > of course it actually makes sense!).

 Hi Nicolas,

 Unfortunatey, having  user supplied bar involution isn't going to work
 here. For example, it makes perfect sense to talk about the Kazhdan-
 Lusztig bases of the group ring `ZW` (by specialisation) BUT you can can't
 define an appropriate bar involution on `ZW`. The point is that you can't
 detect the KL-bases inside `ZW`: to find them you have to work generically
 and then specialise -- that is, you have to work in a completely different
 (but related) algebra to define these bases.


 It turns out that if you have a Hecke algebra with quadratic relations of
 the form
 {{{
 (T_r-a)(T_r-b)=0
 }}}
 such that the square root of `-ab` is a well-defined element of the ground
 ring then this Hecke algebra has well-defined Kazhdan-Lusztig bases (not
 sure if this is written down anywhere but, nonetheless, it is true).

 To define the KL-bases one has to go to a suitable generic suitation and
 then specialize. One way of doing this is to work with the Hecke algebra
 defined over the Laurent polynomial ring `Z[u,u^-1,v,v^-1]` which has
 quadratic relations
 {{{
 (T_r-u)(T_r+v^2u^-1)=0
 }}}
 and then specialize `u` to `a` and `v` to `\sqrt{-ab}` -- so that,
 `-v^2/u` maps to `b`. There is a bar involution on this "generic" Hecke
 algebra which sends `u` to `u^-1`, `v` to `v^-1` and `T_w` to
 `T_{w^{-1}}^{-1}`. Moreover, there are bar invariant bases `{C_w}` and
 `{C'_w}` which are unique subject to a Kazhdan and Lusztig like property.

 Implementing the KL-basis via this strange two parameter generic Hecke
 algebra behind the scenes means that the KL-bases will be defined for
 `ZW`. In addition, the KL-basis will automatically work correctly if I
 consider the Hecke algebra which has quadratric relations of the form
 `(T_r-v^2)(T_r+1)=0` or of the form `(T_r-v)(T_r+v^{-1})=0`. From the
 user's point of view they will get the right bases in all of thesse cases,
 and more, without them needing to do anything special.

 In principle I have a patch which impements this approach, but I am
 running into a strange inheritance issue which I don't understand. In the
 original patch we have an implementation of the Iwahori-Hecke algebra `H`,
 with parameters `a=q1` and `b=q2`, using the standard structure:
 {{{#!python
 class IwahoriHeckeAlgebra(Parent, UniqueRepresentation):
     class T(CombinatorialFreeModule, BindableClass):
         class Element(CombinatorialFreeModuleElement):
     class _KLHeckeBasis(CombinatorialFreeModule, BindableClass):
     class C_prime(_KLHeckeBasis):
         def to_T_basis(self, w):
             ....
     class C(_KLHeckeBasis):
 }}}
 Whenever the squareroot of `-ab` is well-defined I am attaching a "generic
 Hecke algebra" `GH` to `H` together with Kazhdan-Lusztig `C` and `C'`
 bases which are computed generically in `GH` then automatically
 specialised back to `H`. As the methods for converting between the KL-
 basis in the two `H` and `GH` are different I have created another class
 for the generic Hecke algebra which looks like:
 {{{
 class _AGenericIwahoriHeckeAlgebra(IwahoriHeckeAlgebra):
     class T(IwahoriHeckeAlgebra.T):
         class Element(CombinatorialFreeModuleElement):
     class C_prime(IwahoriHeckeAlgebra.C_prime):
         def to_T_basis(self, w):
             ....
     class C(IwahoriHeckeAlgebra.C_prime):
 }}}
 In principle, what is supposed to happen is that everything inherits from
 `IwahoriHeckeAlgebras` and I just overwrite the basis conversion functions
 -- and a few other things. Everything is working exactly as I expect
 EXCEPT that when a "generic" method already exists in a "non-generic"
 basis class then it is NOT overriding the corresponding method in
 `IwahoriHeckeAlgebra`.

 For example, as above, the 'C_prime' basis classes of `H` and `GH` both
 contain a method `to_T_basis`. The method in `GH` implicitly calls the
 corresponding method in `GH` and then specialises the result back to `H`.
 The corresponding generic method for `GH` implements the inductive
 construction of the `C'`-basis in terms of the `T`-basis. For some reason,
 however, both of these `to_T_basis` methods are the method defined in
 `IwahoriHeckeAlegbras` and the new method in `_AGenericIahoriHeckeAlgebra`
 is being ignored.

 The categories etc of the various different Hecke algebras and bases all
 appear to be correct (and they are different for the generic and non-
 generic versions). I am just getting the wrong methods in the generic
 bases. Other "generic" methods which do not have "non-generic"
 counterparts, such as specialization, are working fine.

 I suspect that I am running foul of the category framework somewhere and
 that it doesn't like the way that am trying to use inheritance above. Can
 anyone tell me what I am doing wrong and what I should be doing?

 Andrew

--
Ticket URL: <http://trac.sagemath.org/ticket/14261#comment:40>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to