#19506: Implement cellular algebras
-------------------------------------+-------------------------------------
       Reporter:  tscrim             |        Owner:  sage-combinat
           Type:  enhancement        |       Status:  needs_review
       Priority:  major              |    Milestone:  sage-6.10
      Component:  categories         |   Resolution:
       Keywords:  cellular algebra   |    Merged in:
        Authors:  Travis Scrimshaw   |    Reviewers:
Report Upstream:  N/A                |  Work issues:
         Branch:                     |       Commit:
  public/categories/cellular_algebras-19506|  
75215b6d63159e95b21e9d95d2f6e8f9a2cfc1aa
   Dependencies:                     |     Stopgaps:
-------------------------------------+-------------------------------------

Comment (by tscrim):

 Thank you for your detailed response.

 Replying to [comment:8 andrew.mathas]:
 > Replying to [comment:5 tscrim]:
 > > I was originally following the lecture notes by Xi above, where RSK
 was define the basis (see example 5). However my test suite actually told
 me this was incorrect.
 >
 > Example 5 of Xi's notes says that the Kazhdan-Lustig basis, via RSK,
 defines a cellular basis: that is, the cellular basis element indexed by
 (P,Q) is C_w if w corresponds to (P,Q) under RSK. This was Graham's
 motoviating example (and it is certainly correct). From the way that Xi
 has written it, however, I think that this result is only clear if you
 have already seen it before. Rather than Xi's notes the original Graham-
 Lehrer paper or my book would be a better reference (of course I am
 biased!)

 Ah, I see. I had a suspicion that it was going to be the KL basis. I
 misinterpreted the `w \in \Sigma_n` as an element of the natural basis
 since RSK of w vs w^-1^ switches the two tableaux. At least that tells me
 a way to implement the cellular basis for the Iwahori-Hecke algebra (for
 type A).

 Math question, do you know if the other type analogues of RSK extend to
 give a cellular basis for the Iwahori-Hecke algebras of other types, such
 as Lecouvey's insertion for type C?

 > >So instead I switched to the seminormal basis, which as far as I can
 tell, is the specialization of the Murphy basis of the Hecke algebra.
 >
 > A seminormal basis is a Wedderburn basis for the semisimple symmetric
 group or algebra. Wedderburn bases are always cellular but they are not
 particularly interesting examples of cellular bases because once you have
 a Wedderburn basis all of the consequences of cellularity are already
 obvious. The Murphy basis is an ''integral'' basis of the group algebra of
 the symmetric group (there are generalisations of the Murphy basis to
 other algebras). The transition matrix between the Murphy basis and one
 particular seminormal basis is unitriangular -- the off- diagonal entries
 of this transition matrix are not at all understood. I have no idea which
 seminormal basis is implemented in sage but I would guess that it is not
 the one that is closely related to the Murphy basis.

 Hmm...interesting and good to know. I will have to change some of my
 documentation.

 We definitely have to implement each of these bases as actual instances
 and some point in the near future I will (finally) convert the symmetric
 group algebra into the `WithRealizations` framework. (Yes, I know I have
 said this a few times in the past.)

 > > To implement an object in cellular algebras, one needs to implement
 the following:
 > >
 > > - `cell_poset` which returns the poset parameterizing the cells.
 > > - `cell` which takes an element `la` in the cell poset and returns the
 cell `M(la)`.
 > > - One of the following:
 > >   * `_to_cellular_element` which takes a basis index `i` and return an
 element in `cellular_basis`.
 > >   * `_from_cellular_index` which takes `(la, s, t)` and returns an
 element of the algebra.
 > >   * `cellular_basis` which returns an algebra with a basis indexed by
 `(la, s, t)` and has coercions to and from the algebra.
 > >
 > > The first two are simply data, but the non-trivial part is the third
 one. However my current framework in a way assumes a distinguished
 cellular basis, but that is not to say it limits the algebra to one
 cellular basis.
 > >
 > > The next step would be to implement the representations, bilinear
 form, decomposition matrix, and Cartan matrix.
 >
 > I have had a quick look at your code. I don't think that it makes much
 sense to have a CellularBasis class without first developing a non-trivial
 example because without a proper example you will not see what is likely
 to be needed in general.
 >
 > I think that the idea is to provide extra functionality/structure on top
 of an AlgebraWithBasis. The non-trivial work in implementing a real
 example is in writing the coercion/conversion code going from a standard
 basis (for example, the permutation basis of the group algebra of the
 symmetric group) to a cellular basis (for example, the Murphy or Kazhdan-
 Lusztig bases of the group algebra of the symmetric group). Typically it
 is easy to write the cellular basis elements in terms of standard bases
 elements but the inverse operation is often tricky.

 The nice thing about the way I've done it using `module_morphism` is that
 it computes the inverse transition for free (at least when working over a
 field). So it is sufficient to define the transition from the cellular
 basis to the standard basis.

 > If `C` were a cellular basis class then I would expect `C(s,t)` to
 return the cellular basis element indexed by `s` and `t`. Strictly
 speaking, this should be `C(mu,s,t)` but in all of the interesting
 examples the "shape" `mu` (=element of the indexing poset) is implicitly
 encoded in `s` and `t` so there is no need to specify it.

 I agree that there should be a mechanism for shortening the input. I think
 I can add something to the category so that this can be done.

 > The methods `_to_cellular_element` and `_from_cellular_index` should be
 hidden, as you have them. I would expect them to be called implicitly via
 commands like `A(C(s,t))` and `C(A(w))`.

 You are correct; that is what currently occurs by passing them to
 `module_morphism`.

 > There probably should be a `cell_poset` method, as you have, but the
 `cell` method seems slightly strange to me, I might call this
 `cell_module_indices`.

 I wasn't too happy with the name `cell` either. Will change.

 > The most important method should be a `cell_module` method that returns
 the (left or right) cell module: `C.cell_module(mu)` or perhaps
 `C.left_cell_module(m)` and `C.right_cell_module(mu)`. These should be
 something like a CombinatorialFreeModules and they should come with
 actions of the algebra.

 This is what I am currently working on.

 > The bilinear form on the cell module would of course be defined on this
 module. I would expect things the like following to work:
 > {{{
 > sage: M=SymmetricGroupAlgebra(ZZ,4).Murphy_basis()
 > sage: Smu=M.cell_module(3,1)
 > sage: Smu.basis()
 > { S([[1,2,3],[4]]), S([[1,2,4],[3]]), S([[1,3,4],[2]]) ]
 > sage: M([[1,2,4],[3]], [[1,2,3],[4]]) * S([[1,2,3],[4]])
 > 6*S([[1,2,4],[3]])
 > sage: Smu.inner_product([[1,2,3],[4]], [[1,2,3],[4]])
 > 6
 > }}}
 >
 > Note that indexing set for the basis of the cell modules is your `.cell`
 method and that the action of the cellular basis on the cell module gives
 the inner product.

 I'm glad to know that we are on the same page for this.

 > There are no (good) algorithms for computing the decomposition matrices
 and Cartan matrices -- except for special cases like the Iwahori-Hecke
 algebras of types A and B using Kazhdan-Lustzig polynomial combinatorics.

 We have the capacity to compute the radical and the quotient in Sage. I
 guess the trouble is determining the exact decompositions in the quotient.
 I wasn't so hopeful on this.

--
Ticket URL: <http://trac.sagemath.org/ticket/19506#comment:9>
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/d/optout.

Reply via email to