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
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:
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:
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
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 byla
.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 isself
.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
andy
.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