Finite dimensional algebras with basis¶
REFERENCES:
[CR62] | (1, 2) Curtis, Charles W.; Reiner, Irving “Representation theory of finite groups and associative algebras.” Pure and Applied Mathematics, Vol. XI Interscience Publishers, a division of John Wiley & Sons, New York-London 1962 pp 545–547 |
-
class
sage.categories.finite_dimensional_algebras_with_basis.
FiniteDimensionalAlgebrasWithBasis
(base_category)¶ Bases:
sage.categories.category_with_axiom.CategoryWithAxiom_over_base_ring
The category of finite dimensional algebras with a distinguished basis.
EXAMPLES:
sage: C = FiniteDimensionalAlgebrasWithBasis(QQ); C Category of finite dimensional algebras with basis over Rational Field sage: C.super_categories() [Category of algebras with basis over Rational Field, Category of finite dimensional modules with basis over Rational Field] sage: C.example() An example of a finite dimensional algebra with basis: the path algebra of the Kronecker quiver (containing the arrows a:x->y and b:x->y) over Rational Field
TESTS:
sage: TestSuite(C).run() sage: C is Algebras(QQ).FiniteDimensional().WithBasis() True sage: C is Algebras(QQ).WithBasis().FiniteDimensional() True
-
class
ElementMethods
¶ -
on_left_matrix
(base_ring=None, action=<built-in function mul>, side='left')¶ Return the matrix of the action of
self
on the algebra.INPUT:
base_ring
– the base ring for the matrix to be constructedaction
– a bivariate function (default:operator.mul()
)side
– ‘left’ or ‘right’ (default: ‘left’)
EXAMPLES:
sage: QS3 = SymmetricGroupAlgebra(QQ, 3) sage: a = QS3([2,1,3]) sage: a.to_matrix(side='left') [0 0 1 0 0 0] [0 0 0 0 1 0] [1 0 0 0 0 0] [0 0 0 0 0 1] [0 1 0 0 0 0] [0 0 0 1 0 0] sage: a.to_matrix(side='right') [0 0 1 0 0 0] [0 0 0 1 0 0] [1 0 0 0 0 0] [0 1 0 0 0 0] [0 0 0 0 0 1] [0 0 0 0 1 0] sage: a.to_matrix(base_ring=RDF, side="left") [0.0 0.0 1.0 0.0 0.0 0.0] [0.0 0.0 0.0 0.0 1.0 0.0] [1.0 0.0 0.0 0.0 0.0 0.0] [0.0 0.0 0.0 0.0 0.0 1.0] [0.0 1.0 0.0 0.0 0.0 0.0] [0.0 0.0 0.0 1.0 0.0 0.0]
AUTHORS: Mike Hansen, ...
-
to_matrix
(base_ring=None, action=<built-in function mul>, side='left')¶ Return the matrix of the action of
self
on the algebra.INPUT:
base_ring
– the base ring for the matrix to be constructedaction
– a bivariate function (default:operator.mul()
)side
– ‘left’ or ‘right’ (default: ‘left’)
EXAMPLES:
sage: QS3 = SymmetricGroupAlgebra(QQ, 3) sage: a = QS3([2,1,3]) sage: a.to_matrix(side='left') [0 0 1 0 0 0] [0 0 0 0 1 0] [1 0 0 0 0 0] [0 0 0 0 0 1] [0 1 0 0 0 0] [0 0 0 1 0 0] sage: a.to_matrix(side='right') [0 0 1 0 0 0] [0 0 0 1 0 0] [1 0 0 0 0 0] [0 1 0 0 0 0] [0 0 0 0 0 1] [0 0 0 0 1 0] sage: a.to_matrix(base_ring=RDF, side="left") [0.0 0.0 1.0 0.0 0.0 0.0] [0.0 0.0 0.0 0.0 1.0 0.0] [1.0 0.0 0.0 0.0 0.0 0.0] [0.0 0.0 0.0 0.0 0.0 1.0] [0.0 1.0 0.0 0.0 0.0 0.0] [0.0 0.0 0.0 1.0 0.0 0.0]
AUTHORS: Mike Hansen, ...
-
-
class
FiniteDimensionalAlgebrasWithBasis.
ParentMethods
¶ -
cartan_invariants_matrix
()¶ Return the Cartan invariants matrix of the algebra.
OUTPUT: a matrix of non negative integers
Let
be this finite dimensional algebra and
be representatives of the right simple modules of
. Note that their adjoints
are representatives of the left simple modules.
Let
and
be respectively representatives of the corresponding indecomposable projective left and right modules of
. In particular, we assume that the indexing is consistent so that
and
.
The Cartan invariant matrix
is a matrix of non negative integers that encodes much of the representation theory of
; namely:
counts how many times
appears as composition factor of
seen as a bimodule over itself;
;
counts how many times
appears as composition factor of
;
;
counts how many times
appears as composition factor of
.
In the commutative case, the Cartan invariant matrix is diagonal. In the context of solving systems of multivariate polynomial equations of dimension zero,
is the quotient of the polynomial ring by the ideal generated by the equations, the simple modules correspond to the roots, and the numbers
give the multiplicities of those roots.
Note
For simplicity, the current implementation, assumes that the index set
is of the form
. Better indexations will be possible in the future.
ALGORITHM:
The Cartan invariant matrix of
is computed from the dimension of the summands of its peirce decomposition.
EXAMPLES:
For a semisimple algebra, in particular for group algebras in chararacteristic zero, the Cartan invariants matrix is the identity:
sage: A3 = SymmetricGroup(3).algebra(QQ) sage: A3.cartan_invariants_matrix() [1 0 0] [0 1 0] [0 0 1]
For the path algebra of a quiver, the Cartan invariants matrix counts the number of paths between two vertices:
sage: A = Algebras(QQ).FiniteDimensional().WithBasis().example() sage: A.cartan_invariants_matrix() [1 2] [0 1]
In the commutative case, the Cartan invariant matrix is diagonal:
sage: Z12 = Monoids().Finite().example(); Z12 An example of a finite multiplicative monoid: the integers modulo 12 sage: A = Z12.algebra(QQ) sage: A.cartan_invariants_matrix() [1 0 0 0 0 0 0 0 0] [0 1 0 0 0 0 0 0 0] [0 0 2 0 0 0 0 0 0] [0 0 0 1 0 0 0 0 0] [0 0 0 0 2 0 0 0 0] [0 0 0 0 0 1 0 0 0] [0 0 0 0 0 0 1 0 0] [0 0 0 0 0 0 0 2 0] [0 0 0 0 0 0 0 0 1]
With the algebra of the
-Hecke monoid:
sage: from sage.monoids.hecke_monoid import HeckeMonoid sage: A = HeckeMonoid(SymmetricGroup(4)).algebra(QQ) sage: A.cartan_invariants_matrix() [1 0 0 0 0 0 0 0] [0 2 1 0 1 1 0 0] [0 1 1 0 1 0 0 0] [0 0 0 1 0 1 1 0] [0 1 1 0 1 0 0 0] [0 1 0 1 0 2 1 0] [0 0 0 1 0 1 1 0] [0 0 0 0 0 0 0 1]
-
center
()¶ Return the center of
self
.See also
EXAMPLES:
sage: A = Algebras(QQ).FiniteDimensional().WithBasis().example(); A An example of a finite dimensional algebra with basis: the path algebra of the Kronecker quiver (containing the arrows a:x->y and b:x->y) over Rational Field sage: center = A.center(); center Center of An example of a finite dimensional algebra with basis: the path algebra of the Kronecker quiver (containing the arrows a:x->y and b:x->y) over Rational Field sage: center in Algebras(QQ).WithBasis().FiniteDimensional().Commutative() True sage: center.dimension() 1 sage: center.basis() Finite family {0: B[0]} sage: center.ambient() is A True sage: [c.lift() for c in center.basis()] [x + y]
The center of a semisimple algebra is semisimple:
sage: DihedralGroup(6).algebra(QQ).center() in Algebras(QQ).Semisimple() True
Todo
- Pickling by construction, as
A.center()
? - Lazy evaluation of
_repr_
TESTS:
sage: TestSuite(center).run()
- Pickling by construction, as
-
center_basis
()¶ Return a basis of the center of
self
.OUTPUT:
- a list of elements of
self
.
See also
EXAMPLES:
sage: A = Algebras(QQ).FiniteDimensional().WithBasis().example(); A An example of a finite dimensional algebra with basis: the path algebra of the Kronecker quiver (containing the arrows a:x->y and b:x->y) over Rational Field sage: A.center_basis() [x + y]
- a list of elements of
-
idempotent_lift
(x)¶ Lift an idempotent of the semisimple quotient into an idempotent of
self
.Let
be this finite dimensional algebra and
be the projection
on its semisimple quotient. Let
be an idempotent of
, and
any lift thereof in
. This returns an idempotent
of
such that
and
is a polynomial in
.
INPUT:
– an element of
that projects on an idempotent
of the semisimple quotient of
. Alternatively one may give as input the idempotent
, in which case some lift thereof will be taken for
.
OUTPUT: the idempotent
of
self
ALGORITHM:
Iterate the formula
until having an idempotent.
See [CR62] for correctness and termination proofs.
EXAMPLES:
sage: A = Algebras(QQ).FiniteDimensional().WithBasis().example() sage: S = A.semisimple_quotient() sage: A.idempotent_lift(S.basis()['x']) x sage: A.idempotent_lift(A.basis()['y']) y
Todo
Add some non trivial example
-
is_identity_decomposition_into_orthogonal_idempotents
(l)¶ Return whether
l
is a decomposition of the identity into orthogonal idempotents.INPUT:
l
– a list or iterable of elements ofself
EXAMPLES:
sage: A = FiniteDimensionalAlgebrasWithBasis(QQ).example(); A An example of a finite dimensional algebra with basis: the path algebra of the Kronecker quiver (containing the arrows a:x->y and b:x->y) over Rational Field sage: x,y,a,b = A.algebra_generators(); x,y,a,b (x, y, a, b) sage: A.is_identity_decomposition_into_orthogonal_idempotents([A.one()]) True sage: A.is_identity_decomposition_into_orthogonal_idempotents([x,y]) True sage: A.is_identity_decomposition_into_orthogonal_idempotents([x+a, y-a]) True
Here the idempotents do not sum up to
:
sage: A.is_identity_decomposition_into_orthogonal_idempotents([x]) False
Here
and
are neither idempotent nor orthogonal:
sage: A.is_identity_decomposition_into_orthogonal_idempotents([1+x,-x]) False
With the algebra of the
-Hecke monoid:
sage: from sage.monoids.hecke_monoid import HeckeMonoid sage: A = HeckeMonoid(SymmetricGroup(4)).algebra(QQ) sage: idempotents = A.orthogonal_idempotents_central_mod_radical() sage: A.is_identity_decomposition_into_orthogonal_idempotents(idempotents) True
Todo
Add examples of elements that are orthogonal and sum to the identity yet are not idempotent, and reciprocally.
-
isotypic_projective_modules
(side='left')¶ Return the isotypic projective
side
self
-modules.Let
be representatives of the indecomposable projective
side
-modules of this finite dimensional algebra, and
be the associated simple modules.
The regular
side
representation ofcan be decomposed as a direct sum
where each
is an isotypic projective module; namely
is the direct sum of
copies of the indecomposable projective module
. This decomposition is not unique.
The isotypic projective modules are constructed as
, where the
is the decomposition of the identity into orthogonal idempotents obtained by lifting the central orthogonal idempotents of the semisimple quotient of
.
INPUT:
side
– ‘left’ or ‘right’ (default: ‘left’)
OUTPUT: a list of subspaces of
self
.EXAMPLES:
sage: A = Algebras(QQ).FiniteDimensional().WithBasis().example(); A An example of a finite dimensional algebra with basis: the path algebra of the Kronecker quiver (containing the arrows a:x->y and b:x->y) over Rational Field sage: Q = A.isotypic_projective_modules(side="left"); Q [Free module generated by {0} over Rational Field, Free module generated by {0, 1, 2} over Rational Field] sage: [[x.lift() for x in Qi.basis()] ....: for Qi in Q] [[x], [y, a, b]]
We check that the sum of the dimensions of the isotypic projective modules is the dimension of
self
:sage: sum([Qi.dimension() for Qi in Q]) == A.dimension() True
-
orthogonal_idempotents_central_mod_radical
()¶ Return a family of orthogonal idempotents of
self
that project on the central orthogonal idempotents of the semisimple quotient.OUTPUT:
- a list of orthogonal idempotents obtained by lifting the central orthogonal idempotents of the semisimple quotient.
ALGORITHM:
The orthogonal idempotents of
are obtained by lifting the central orthogonal idempotents of the semisimple quotient
.
Namely, let
be the central orthogonal idempotents of the semisimple quotient of
. We recursively construct orthogonal idempotents of
by the following procedure: assuming
is a set of already constructed orthogonal idempotent, we construct
by idempotent lifting of
, where
is any lift of
and
.
See [CR62] for correctness and termination proofs.
See also
Algebras.SemiSimple.FiniteDimensional.WithBasis.ParentMethods.central_orthogonal_idempotents()
idempotent_lift()
EXAMPLES:
sage: A = Algebras(QQ).FiniteDimensional().WithBasis().example(); A An example of a finite dimensional algebra with basis: the path algebra of the Kronecker quiver (containing the arrows a:x->y and b:x->y) over Rational Field sage: A.orthogonal_idempotents_central_mod_radical() [x, y]
sage: Z12 = Monoids().Finite().example(); Z12 An example of a finite multiplicative monoid: the integers modulo 12 sage: A = Z12.algebra(QQ) sage: idempotents = A.orthogonal_idempotents_central_mod_radical() sage: sorted(idempotents, key=str) [-1/2*B[3] + 1/2*B[9], -1/2*B[8] + 1/2*B[4], -B[0] + 1/2*B[3] + 1/2*B[9], -B[0] + 1/2*B[4] + 1/2*B[8], 1/4*B[1] + 1/2*B[3] + 1/4*B[5] - 1/4*B[7] - 1/2*B[9] - 1/4*B[11], 1/4*B[1] + 1/4*B[11] - 1/4*B[5] - 1/4*B[7], 1/4*B[1] - 1/2*B[4] - 1/4*B[5] + 1/4*B[7] + 1/2*B[8] - 1/4*B[11], B[0], B[0] + 1/4*B[1] - 1/2*B[3] - 1/2*B[4] + 1/4*B[5] + 1/4*B[7] - 1/2*B[8] - 1/2*B[9] + 1/4*B[11]] sage: sum(idempotents) == 1 True sage: all(e*e == e for e in idempotents) True sage: all(e*f == 0 and f*e == 0 for e in idempotents for f in idempotents if e != f) True
This is best tested with:
sage: A.is_identity_decomposition_into_orthogonal_idempotents(idempotents) True
We construct orthogonal idempotents for the algebra of the
-Hecke monoid:
sage: from sage.monoids.hecke_monoid import HeckeMonoid sage: A = HeckeMonoid(SymmetricGroup(4)).algebra(QQ) sage: idempotents = A.orthogonal_idempotents_central_mod_radical() sage: A.is_identity_decomposition_into_orthogonal_idempotents(idempotents) True
-
peirce_decomposition
(idempotents=None, check=True)¶ Return a Peirce decomposition of
self
.Let
be a collection of orthogonal idempotents of
with sum
. The Peirce decomposition of
is the decomposition of
into the direct sum of the subspaces
.
With the default collection of orthogonal idempotents, one has
where
are the simple modules of
and
is the Cartan invariants matrix.
INPUT:
idempotents
– a list of orthogonal idempotentsof the algebra that sum to
(default: the idempotents returned by
orthogonal_idempotents_central_mod_radical()
)check
– (default:True) whether to check that the idempotents are indeed orthogonal
OUTPUT:
A list of lists
such that
l[i][j]
is the subspace.
EXAMPLES:
sage: A = Algebras(QQ).FiniteDimensional().WithBasis().example(); A An example of a finite dimensional algebra with basis: the path algebra of the Kronecker quiver (containing the arrows a:x->y and b:x->y) over Rational Field sage: A.orthogonal_idempotents_central_mod_radical() [x, y] sage: decomposition = A.peirce_decomposition(); decomposition [[Free module generated by {0} over Rational Field, Free module generated by {0, 1} over Rational Field], [Free module generated by {} over Rational Field, Free module generated by {0} over Rational Field]] sage: [ [[x.lift() for x in decomposition[i][j].basis()] ....: for j in range(2)] ....: for i in range(2)] [[[x], [a, b]], [[], [y]]]
We recover that the group algebra of the symmetric group
is a block matrix algebra:
sage: A = SymmetricGroup(4).algebra(QQ) sage: decomposition = A.peirce_decomposition() # long time sage: [[decomposition[i][j].dimension() # long time (4s) ....: for j in range(len(decomposition))] ....: for i in range(len(decomposition))] [[1, 0, 0, 0, 0], [0, 9, 0, 0, 0], [0, 0, 4, 0, 0], [0, 0, 0, 9, 0], [0, 0, 0, 0, 1]]
The dimension of each block is
, where
is the dimension of the corresponding simple module of
. The latter are given by:
sage: [p.standard_tableaux().cardinality() for p in Partitions(4)] [1, 3, 2, 3, 1]
-
peirce_summand
(ei, ej)¶ Return the Peirce decomposition summand
.
INPUT:
self
– an algebraei
,ej
– two idempotents of
OUTPUT:
, as a subspace of
.
See also
EXAMPLES:
sage: A = Algebras(QQ).FiniteDimensional().WithBasis().example() sage: idemp = A.orthogonal_idempotents_central_mod_radical() sage: A.peirce_summand(idemp[0], idemp[1]) Free module generated by {0, 1} over Rational Field sage: A.peirce_summand(idemp[1], idemp[0]) Free module generated by {} over Rational Field
We recover the
block of
corresponding to the unique simple module of dimension
of the symmetric group
:
sage: A4 = SymmetricGroup(4).algebra(QQ) sage: e = A4.central_orthogonal_idempotents()[2] sage: A4.peirce_summand(e, e) Free module generated by {0, 1, 2, 3} over Rational Field
-
principal_ideal
(a, side='left')¶ Construct the
side
principal ideal generated bya
.EXAMPLES:
In order to highlight the difference between left and right principal ideals, our first example deals with a non commutative algebra:
sage: A = Algebras(QQ).FiniteDimensional().WithBasis().example(); A An example of a finite dimensional algebra with basis: the path algebra of the Kronecker quiver (containing the arrows a:x->y and b:x->y) over Rational Field sage: x, y, a, b = A.basis()
In this algebra, multiplication on the right by
annihilates all basis elements but
:
sage: x*x, y*x, a*x, b*x (x, 0, 0, 0)
so the left ideal generated by
is one-dimensional:
sage: Ax = A.principal_ideal(x, side='left'); Ax Free module generated by {0} over Rational Field sage: [B.lift() for B in Ax.basis()] [x]
Multiplication on the left by
annihilates only
and fixes the other basis elements:
sage: x*x, x*y, x*a, x*b (x, 0, a, b)
so the right ideal generated by
is 3-dimensional:
sage: xA = A.principal_ideal(x, side='right'); xA Free module generated by {0, 1, 2} over Rational Field sage: [B.lift() for B in xA.basis()] [x, a, b]
See also
-
radical
()¶ Return the Jacobson radical of
self
.This uses
radical_basis()
, whose default implementation handles algebras over fields of characteristic zero or fields of characteristicin which we can compute
.
See also
EXAMPLES:
sage: A = Algebras(QQ).FiniteDimensional().WithBasis().example(); A An example of a finite dimensional algebra with basis: the path algebra of the Kronecker quiver (containing the arrows a:x->y and b:x->y) over Rational Field sage: radical = A.radical(); radical Radical of An example of a finite dimensional algebra with basis: the path algebra of the Kronecker quiver (containing the arrows a:x->y and b:x->y) over Rational Field
The radical is an ideal of
, and thus a finite dimensional non unital associative algebra:
sage: from sage.categories.associative_algebras import AssociativeAlgebras sage: radical in AssociativeAlgebras(QQ).WithBasis().FiniteDimensional() True sage: radical in Algebras(QQ) False sage: radical.dimension() 2 sage: radical.basis() Finite family {0: B[0], 1: B[1]} sage: radical.ambient() is A True sage: [c.lift() for c in radical.basis()] [a, b]
Todo
- Tell Sage that the radical is in fact an ideal;
- Pickling by construction, as
A.center()
; - Lazy evaluation of
_repr_
.
TESTS:
sage: TestSuite(radical).run()
-
radical_basis
()¶ Return a basis of the Jacobson radical of this algebra.
Note
This implementation handles algebras over fields of characteristic zero (using Dixon’s lemma) or fields of characteristic
in which we can compute
[FR85], [Eb89].
REFERENCES:
[Eb89] Eberly, Wayne. “Computations for algebras and group representations.” Ph.D. Thesis, University of Toronto, 1989.
[FR85] Friedl, Katalin, and Lajos Rónyai. “Polynomial time solutions of some problems of computational algebra.” Proceedings of the seventeenth annual ACM symposium on Theory of computing. ACM, 1985.
OUTPUT:
- a list of elements of
self
.
See also
EXAMPLES:
sage: A = Algebras(QQ).FiniteDimensional().WithBasis().example(); A An example of a finite dimensional algebra with basis: the path algebra of the Kronecker quiver (containing the arrows a:x->y and b:x->y) over Rational Field sage: A.radical_basis() [a, b]
We construct the group algebra of the Klein Four-Group over the rationals:
sage: A = KleinFourGroup().algebra(QQ)
This algebra belongs to the category of finite dimensional algebras over the rationals:
sage: A in Algebras(QQ).FiniteDimensional().WithBasis() True
Since the field has characteristic
, Maschke’s Theorem tells us that the group algebra is semisimple. So its radical is the zero ideal:
sage: A in Algebras(QQ).Semisimple() True sage: A.radical_basis() []
Let’s work instead over a field of characteristic
:
sage: A = KleinFourGroup().algebra(GF(2)) sage: A in Algebras(GF(2)).Semisimple() False sage: A.radical_basis() [B[()] + B[(1,2)(3,4)], B[(3,4)] + B[(1,2)(3,4)], B[(1,2)] + B[(1,2)(3,4)]]
We now implement the algebra
, where
is a finite field of characteristic
, and check its radical; alas, we currently need to wrap
to make it a proper
ModulesWithBasis
:sage: class AnAlgebra(CombinatorialFreeModule): ....: def __init__(self, F): ....: R.<x> = PolynomialRing(F) ....: I = R.ideal(x**F.characteristic()-F.one()) ....: self._xbar = R.quotient(I).gen() ....: basis_keys = [self._xbar**i for i in range(F.characteristic())] ....: CombinatorialFreeModule.__init__(self, F, basis_keys, ....: category=Algebras(F).FiniteDimensional().WithBasis()) ....: def one(self): ....: return self.basis()[self.base_ring().one()] ....: def product_on_basis(self, w1, w2): ....: return self.from_vector(vector(w1*w2)) sage: AnAlgebra(GF(3)).radical_basis() [B[1] + 2*B[xbar^2], B[xbar] + 2*B[xbar^2]] sage: AnAlgebra(GF(16,'a')).radical_basis() [B[1] + B[xbar]] sage: AnAlgebra(GF(49,'a')).radical_basis() [B[1] + 6*B[xbar^6], B[xbar] + 6*B[xbar^6], B[xbar^2] + 6*B[xbar^6], B[xbar^3] + 6*B[xbar^6], B[xbar^4] + 6*B[xbar^6], B[xbar^5] + 6*B[xbar^6]]
TESTS:
sage: A = KleinFourGroup().algebra(GF(2)) sage: A.radical_basis() [B[()] + B[(1,2)(3,4)], B[(3,4)] + B[(1,2)(3,4)], B[(1,2)] + B[(1,2)(3,4)]] sage: A = KleinFourGroup().algebra(QQ, category=Monoids()) sage: A.radical_basis.__module__ 'sage.categories.finite_dimensional_algebras_with_basis' sage: A.radical_basis() []
- a list of elements of
-
semisimple_quotient
()¶ Return the semisimple quotient of
self
.This is the quotient of
self
by its radical.See also
EXAMPLES:
sage: A = Algebras(QQ).FiniteDimensional().WithBasis().example(); A An example of a finite dimensional algebra with basis: the path algebra of the Kronecker quiver (containing the arrows a:x->y and b:x->y) over Rational Field sage: a,b,x,y = sorted(A.basis()) sage: S = A.semisimple_quotient(); S Semisimple quotient of An example of a finite dimensional algebra with basis: the path algebra of the Kronecker quiver (containing the arrows a:x->y and b:x->y) over Rational Field sage: S in Algebras(QQ).Semisimple() True sage: S.basis() Finite family {'y': B['y'], 'x': B['x']} sage: xs,ys = sorted(S.basis()) sage: (xs + ys) * xs B['x']
Sanity check: the semisimple quotient of the
-th descent algebra of the symmetric group is of dimension the number of partitions of
:
sage: [ DescentAlgebra(QQ,n).B().semisimple_quotient().dimension() ....: for n in range(6) ] [1, 1, 2, 3, 5, 7] sage: [Partitions(n).cardinality() for n in range(10)] [1, 1, 2, 3, 5, 7, 11, 15, 22, 30]
Todo
- Pickling by construction, as
A.semisimple_quotient()
? - Lazy evaluation of
_repr_
TESTS:
sage: TestSuite(S).run()
- Pickling by construction, as
-
-
class