Cellular Basis - Algebras

Skip to content
Back to top
View this page
Edit this page

# Cellular Basis

Cellular algebras are a class of algebras introduced by Graham and Lehrer [GrLe1996]. The `CellularBasis` class provides a general framework for implementing cellular algebras and their cell modules and simple modules.

Let \(R\) be a commutative ring. A \(R\)-algebra \(A\) is a cellular algebra if it has a cell datum, which is a tuple \((\Lambda, i, M, C)\), where \(\Lambda\) is finite poset with order \(\ge\), if \(\mu \in \Lambda\) then \(T(\mu)\) is a finite set and

\[C \colon \coprod_{\mu \in \Lambda} T(\mu) \times T(\mu) \longrightarrow A; (\mu,s,t) \mapsto c^\mu_{st} \text{ is an injective map}\]

such that the following holds:

- The set \(\{c^\mu_{st}\mid \mu\in\Lambda, s,t\in T(\mu)\}\) is a basis of \(A\).

- If \(a \in A\) and \(\mu\in\Lambda, s,t \in T(\mu)\) then:

  \[a c^\mu_{st} = \sum_{u\in T(\mu)} r_a(s,u) c^\mu_{ut} \pmod{A^{>\mu}},\]

  where \(A^{>\mu}\) is spanned by

  \[`\{c^\nu_{ab} | \nu > \mu\text{ and } a,b \in T(\nu)\}`.\]

  Moreover, the scalar \(r_a(s,u)\) depends only on \(a\), \(s\) and \(u\) and, in particular, is independent of \(t\).

- The map \(\iota \colon A \longrightarrow A; c^\mu_{st} \mapsto c^\mu_{ts}\) is an algebra anti-isomorphism.

A cellular basis for \(A\) is any basis of the form \(\{c^\mu_{st} \mid \mu \in \Lambda, s,t \in T(\mu) \}\).

Note that the scalars \(r_a(s,u) \in R\) depend only if \(a\), \(s\) and \(u\) and, in particular, they do not depend on \(t\). It follows from the definition of a cell datum that \(A^{>\mu}\) is a two-sided ideal of \(A\). More importantly, if \(\mu \in \Lambda\) then the `CellModule` \(C^\mu\) is the free \(R\)-module with basis \(\{c^\mu_s \mid \mu \in \Lambda, s \in T(\mu)\}\) and with \(A\)-action:

\[a c^\mu_{s} = \sum_{u \in T(\mu)} r_a(s,u) c^\mu_{u},\]

where the scalars \(r_a(s,u)\) are those appearing in the definition of the cell datum. It follows from the cellular basis axioms that \(C^\mu\) comes equipped with a bilinear form \(\langle\ ,\ \rangle\) that is determined by:

\[c^\mu_{st} c^\mu_u = \langle c^\mu_{s}, c^\mu_t \rangle c^\mu_u.\]

The radical of \(C^\mu\) is the \(A\)-submodule \(\operatorname{rad} C^\mu = \{x \in C^\mu | \langle x,y \rangle = 0 \}\). Hence, \(D^\mu = C^\mu / \operatorname{rad} C^\mu\) is also an \(A\)-module. It is not difficult to show that \(\{ D^\mu \mid D^\mu \neq 0 \}\) is a complete set of pairwise non-isomorphic \(A\)-modules. Hence, a cell datum for \(A\) gives an explicit construction of the irreducible \(A\)-modules. The module `simple_module()` \(D^\mu\) is either zero or absolutely irreducible.

EXAMPLES:

We compute a cellular basis and do some basic computations:

Sage

    sage: S = SymmetricGroupAlgebra(QQ, 3)
    sage: C = S.cellular_basis()
    sage: C
    Cellular basis of Symmetric group algebra of order 3
     over Rational Field

Python

    >>> from sage.all import *
    >>> S = SymmetricGroupAlgebra(QQ, Integer(3))
    >>> C = S.cellular_basis()
    >>> C
    Cellular basis of Symmetric group algebra of order 3
     over Rational Field

See also

`CellModule`

AUTHOR:

- Travis Scrimshaw (2015-11-5): Initial version

REFERENCES:

- [GrLe1996]

- [KX1998]

- [Mat1999]

- Wikipedia article Cellular_algebra

- http://webusers.imj-prg.fr/~bernhard.keller/ictp2006/lecturenotes/xi.pdf

class sage.algebras.cellular_basis.CellularBasis(A, to_algebra=None, from_algebra=None, **kwargs)

  Bases: `CombinatorialFreeModule`

  The cellular basis of a cellular algebra, in the sense of Graham and Lehrer [GrLe1996].

  INPUT:

  - `A` – the cellular algebra

  EXAMPLES:

  We compute a cellular basis and do some basic computations:

  Sage

      sage: S = SymmetricGroupAlgebra(QQ, 3)
      sage: C = S.cellular_basis()
      sage: C
      Cellular basis of Symmetric group algebra of order 3
       over Rational Field
      sage: len(C.basis())
      6
      sage: len(S.basis())
      6
      sage: a,b,c,d,e,f = C.basis()
      sage: f
      C([3], [[1, 2, 3]], [[1, 2, 3]])
      sage: c
      C([2, 1], [[1, 3], [2]], [[1, 2], [3]])
      sage: d
      C([2, 1], [[1, 2], [3]], [[1, 3], [2]])
      sage: f * f
      C([3], [[1, 2, 3]], [[1, 2, 3]])
      sage: f * c
      0
      sage: d * c
      C([2, 1], [[1, 2], [3]], [[1, 2], [3]])
      sage: c * d
      C([2, 1], [[1, 3], [2]], [[1, 3], [2]])
      sage: S(f)
      1/6*[1, 2, 3] + 1/6*[1, 3, 2] + 1/6*[2, 1, 3] + 1/6*[2, 3, 1]
       + 1/6*[3, 1, 2] + 1/6*[3, 2, 1]
      sage: S(d)
      1/4*[1, 3, 2] - 1/4*[2, 3, 1] + 1/4*[3, 1, 2] - 1/4*[3, 2, 1]
      sage: B = list(S.basis())
      sage: B[2]
      [2, 1, 3]
      sage: C(B[2])
      -C([1, 1, 1], [[1], [2], [3]], [[1], [2], [3]])
       + C([2, 1], [[1, 2], [3]], [[1, 2], [3]])
       - C([2, 1], [[1, 3], [2]], [[1, 3], [2]])
       + C([3], [[1, 2, 3]], [[1, 2, 3]])

  Python

      >>> from sage.all import *
      >>> S = SymmetricGroupAlgebra(QQ, Integer(3))
      >>> C = S.cellular_basis()
      >>> C
      Cellular basis of Symmetric group algebra of order 3
       over Rational Field
      >>> len(C.basis())
      6
      >>> len(S.basis())
      6
      >>> a,b,c,d,e,f = C.basis()
      >>> f
      C([3], [[1, 2, 3]], [[1, 2, 3]])
      >>> c
      C([2, 1], [[1, 3], [2]], [[1, 2], [3]])
      >>> d
      C([2, 1], [[1, 2], [3]], [[1, 3], [2]])
      >>> f * f
      C([3], [[1, 2, 3]], [[1, 2, 3]])
      >>> f * c
      0
      >>> d * c
      C([2, 1], [[1, 2], [3]], [[1, 2], [3]])
      >>> c * d
      C([2, 1], [[1, 3], [2]], [[1, 3], [2]])
      >>> S(f)
      1/6*[1, 2, 3] + 1/6*[1, 3, 2] + 1/6*[2, 1, 3] + 1/6*[2, 3, 1]
       + 1/6*[3, 1, 2] + 1/6*[3, 2, 1]
      >>> S(d)
      1/4*[1, 3, 2] - 1/4*[2, 3, 1] + 1/4*[3, 1, 2] - 1/4*[3, 2, 1]
      >>> B = list(S.basis())
      >>> B[Integer(2)]
      [2, 1, 3]
      >>> C(B[Integer(2)])
      -C([1, 1, 1], [[1], [2], [3]], [[1], [2], [3]])
       + C([2, 1], [[1, 2], [3]], [[1, 2], [3]])
       - C([2, 1], [[1, 3], [2]], [[1, 3], [2]])
       + C([3], [[1, 2, 3]], [[1, 2, 3]])

  cell_module_indices(la)

    Return the indices of the cell module of `self` indexed by `la` .

    This is the finite set \(M(\lambda)\).

    EXAMPLES:

    Sage

        sage: S = SymmetricGroupAlgebra(QQ, 3)
        sage: C = S.cellular_basis()
        sage: C.cell_module_indices([2,1])
        Standard tableaux of shape [2, 1]

    Python

        >>> from sage.all import *
        >>> S = SymmetricGroupAlgebra(QQ, Integer(3))
        >>> C = S.cellular_basis()
        >>> C.cell_module_indices([Integer(2),Integer(1)])
        Standard tableaux of shape [2, 1]

  cell_poset()

    Return the cell poset of `self`.

    EXAMPLES:

    Sage

        sage: S = SymmetricGroupAlgebra(QQ, 3)
        sage: C = S.cellular_basis()
        sage: C.cell_poset()
        Finite poset containing 3 elements

    Python

        >>> from sage.all import *
        >>> S = SymmetricGroupAlgebra(QQ, Integer(3))
        >>> C = S.cellular_basis()
        >>> C.cell_poset()
        Finite poset containing 3 elements

  cellular_basis()

    Return the cellular basis of `self`, which is `self`.

    EXAMPLES:

    Sage

        sage: S = SymmetricGroupAlgebra(QQ, 3)
        sage: C = S.cellular_basis()
        sage: C.cellular_basis() is C
        True

    Python

        >>> from sage.all import *
        >>> S = SymmetricGroupAlgebra(QQ, Integer(3))
        >>> C = S.cellular_basis()
        >>> C.cellular_basis() is C
        True

  cellular_basis_of()

    Return the defining algebra of `self`.

    EXAMPLES:

    Sage

        sage: S = SymmetricGroupAlgebra(QQ, 3)
        sage: C = S.cellular_basis()
        sage: C.cellular_basis_of() is S
        True

    Python

        >>> from sage.all import *
        >>> S = SymmetricGroupAlgebra(QQ, Integer(3))
        >>> C = S.cellular_basis()
        >>> C.cellular_basis_of() is S
        True

  one()

    Return the element \(1\) in `self`.

    EXAMPLES:

    Sage

        sage: S = SymmetricGroupAlgebra(QQ, 3)
        sage: C = S.cellular_basis()
        sage: C.one()
        C([1, 1, 1], [[1], [2], [3]], [[1], [2], [3]])
         + C([2, 1], [[1, 2], [3]], [[1, 2], [3]])
         + C([2, 1], [[1, 3], [2]], [[1, 3], [2]])
         + C([3], [[1, 2, 3]], [[1, 2, 3]])

    Python

        >>> from sage.all import *
        >>> S = SymmetricGroupAlgebra(QQ, Integer(3))
        >>> C = S.cellular_basis()
        >>> C.one()
        C([1, 1, 1], [[1], [2], [3]], [[1], [2], [3]])
         + C([2, 1], [[1, 2], [3]], [[1, 2], [3]])
         + C([2, 1], [[1, 3], [2]], [[1, 3], [2]])
         + C([3], [[1, 2, 3]], [[1, 2, 3]])

  product_on_basis(x, y)

    Return the product of basis indices by `x` and `y`.

    EXAMPLES:

    Sage

        sage: S = SymmetricGroupAlgebra(QQ, 3)
        sage: C = S.cellular_basis()
        sage: la = Partition([2,1])
        sage: s = StandardTableau([[1,2],[3]])
        sage: t = StandardTableau([[1,3],[2]])
        sage: C.product_on_basis((la, s, t), (la, s, t))
        0

    Python

        >>> from sage.all import *
        >>> S = SymmetricGroupAlgebra(QQ, Integer(3))
        >>> C = S.cellular_basis()
        >>> la = Partition([Integer(2),Integer(1)])
        >>> s = StandardTableau([[Integer(1),Integer(2)],[Integer(3)]])
        >>> t = StandardTableau([[Integer(1),Integer(3)],[Integer(2)]])
        >>> C.product_on_basis((la, s, t), (la, s, t))
        0