#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 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 this, 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!)
>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.
> 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.
>
> [Edit - I should actually think a little bit more and remember that I am
testing this mechanism for the tensor product.]
>
> 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.
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. 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))`.
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`. 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. 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.
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.
--
Ticket URL: <http://trac.sagemath.org/ticket/19506#comment:8>
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.