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: S = SymmetricGroupAlgebra(QQ, 3)
sage: C = S.cellular_basis()
sage: C
Cellular basis of Symmetric group algebra of order 3
 over Rational Field
>>> 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:

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

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: 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]])
>>> 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)[source]#

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

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

EXAMPLES:

sage: S = SymmetricGroupAlgebra(QQ, 3)
sage: C = S.cellular_basis()
sage: C.cell_module_indices([2,1])
Standard tableaux of shape [2, 1]
>>> 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()[source]#

Return the cell poset of self.

EXAMPLES:

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

Return the cellular basis of self, which is self.

EXAMPLES:

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

Return the defining algebra of self.

EXAMPLES:

sage: S = SymmetricGroupAlgebra(QQ, 3)
sage: C = S.cellular_basis()
sage: C.cellular_basis_of() is S
True
>>> from sage.all import *
>>> S = SymmetricGroupAlgebra(QQ, Integer(3))
>>> C = S.cellular_basis()
>>> C.cellular_basis_of() is S
True
one()[source]#

Return the element \(1\) in self.

EXAMPLES:

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]])
>>> 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)[source]#

Return the product of basis indices by x and y.

EXAMPLES:

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
>>> 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