Super modules#

class sage.categories.super_modules.SuperModules(base_category)[source]#

Bases: SuperModulesCategory

The category of super modules.

An \(R\)-super module (where \(R\) is a ring) is an \(R\)-module \(M\) equipped with a decomposition \(M = M_0 \oplus M_1\) into two \(R\)-submodules \(M_0\) and \(M_1\) (called the even part and the odd part of \(M\), respectively).

Thus, an \(R\)-super module automatically becomes a \(\ZZ / 2 \ZZ\)-graded \(R\)-module, with \(M_0\) being the degree-\(0\) component and \(M_1\) being the degree-\(1\) component.

EXAMPLES:

sage: Modules(ZZ).Super()
Category of super modules over Integer Ring
sage: Modules(ZZ).Super().super_categories()
[Category of graded modules over Integer Ring]
>>> from sage.all import *
>>> Modules(ZZ).Super()
Category of super modules over Integer Ring
>>> Modules(ZZ).Super().super_categories()
[Category of graded modules over Integer Ring]

The category of super modules defines the super structure which shall be preserved by morphisms:

sage: Modules(ZZ).Super().additional_structure()
Category of super modules over Integer Ring
>>> from sage.all import *
>>> Modules(ZZ).Super().additional_structure()
Category of super modules over Integer Ring
class ElementMethods[source]#

Bases: object

is_even()[source]#

Return if self is an even element.

EXAMPLES:

sage: # needs sage.combinat sage.modules
sage: cat = Algebras(QQ).WithBasis().Super()
sage: C = CombinatorialFreeModule(QQ, Partitions(), category=cat)
sage: C.degree_on_basis = sum
sage: C.basis()[2,2,1].is_even()
False
sage: C.basis()[2,2].is_even()
True
>>> from sage.all import *
>>> # needs sage.combinat sage.modules
>>> cat = Algebras(QQ).WithBasis().Super()
>>> C = CombinatorialFreeModule(QQ, Partitions(), category=cat)
>>> C.degree_on_basis = sum
>>> C.basis()[Integer(2),Integer(2),Integer(1)].is_even()
False
>>> C.basis()[Integer(2),Integer(2)].is_even()
True
is_even_odd()[source]#

Return 0 if self is an even element or 1 if an odd element.

Note

The default implementation assumes that the even/odd is determined by the parity of degree().

Overwrite this method if the even/odd behavior is desired to be independent.

EXAMPLES:

sage: # needs sage.combinat sage.modules
sage: cat = Algebras(QQ).WithBasis().Super()
sage: C = CombinatorialFreeModule(QQ, Partitions(), category=cat)
sage: C.degree_on_basis = sum
sage: C.basis()[2,2,1].is_even_odd()
1
sage: C.basis()[2,2].is_even_odd()
0
>>> from sage.all import *
>>> # needs sage.combinat sage.modules
>>> cat = Algebras(QQ).WithBasis().Super()
>>> C = CombinatorialFreeModule(QQ, Partitions(), category=cat)
>>> C.degree_on_basis = sum
>>> C.basis()[Integer(2),Integer(2),Integer(1)].is_even_odd()
1
>>> C.basis()[Integer(2),Integer(2)].is_even_odd()
0
is_odd()[source]#

Return if self is an odd element.

EXAMPLES:

sage: # needs sage.combinat sage.modules
sage: cat = Algebras(QQ).WithBasis().Super()
sage: C = CombinatorialFreeModule(QQ, Partitions(), category=cat)
sage: C.degree_on_basis = sum
sage: C.basis()[2,2,1].is_odd()
True
sage: C.basis()[2,2].is_odd()
False
>>> from sage.all import *
>>> # needs sage.combinat sage.modules
>>> cat = Algebras(QQ).WithBasis().Super()
>>> C = CombinatorialFreeModule(QQ, Partitions(), category=cat)
>>> C.degree_on_basis = sum
>>> C.basis()[Integer(2),Integer(2),Integer(1)].is_odd()
True
>>> C.basis()[Integer(2),Integer(2)].is_odd()
False
class ParentMethods[source]#

Bases: object

extra_super_categories()[source]#

Adds VectorSpaces to the super categories of self if the base ring is a field.

EXAMPLES:

sage: Modules(QQ).Super().extra_super_categories()
[Category of vector spaces over Rational Field]
sage: Modules(ZZ).Super().extra_super_categories()
[]
>>> from sage.all import *
>>> Modules(QQ).Super().extra_super_categories()
[Category of vector spaces over Rational Field]
>>> Modules(ZZ).Super().extra_super_categories()
[]

This makes sure that Modules(QQ).Super() returns an instance of SuperModules and not a join category of an instance of this class and of VectorSpaces(QQ):

sage: type(Modules(QQ).Super())
<class 'sage.categories.super_modules.SuperModules_with_category'>
>>> from sage.all import *
>>> type(Modules(QQ).Super())
<class 'sage.categories.super_modules.SuperModules_with_category'>

Todo

Get rid of this workaround once there is a more systematic approach for the alias Modules(QQ) -> VectorSpaces(QQ). Probably the latter should be a category with axiom, and covariant constructions should play well with axioms.

super_categories()[source]#

EXAMPLES:

sage: Modules(ZZ).Super().super_categories()
[Category of graded modules over Integer Ring]
>>> from sage.all import *
>>> Modules(ZZ).Super().super_categories()
[Category of graded modules over Integer Ring]

Nota bene:

sage: Modules(QQ).Super()
Category of super modules over Rational Field
sage: Modules(QQ).Super().super_categories()
[Category of graded modules over Rational Field]
>>> from sage.all import *
>>> Modules(QQ).Super()
Category of super modules over Rational Field
>>> Modules(QQ).Super().super_categories()
[Category of graded modules over Rational Field]
class sage.categories.super_modules.SuperModulesCategory(base_category)[source]#

Bases: CovariantConstructionCategory, Category_over_base_ring

EXAMPLES:

sage: C = Algebras(QQ).Super()
sage: C
Category of super algebras over Rational Field
sage: C.base_category()
Category of algebras over Rational Field
sage: sorted(C.super_categories(), key=str)
[Category of graded algebras over Rational Field,
 Category of super modules over Rational Field]

sage: AlgebrasWithBasis(QQ).Super().base_ring()
Rational Field
sage: HopfAlgebrasWithBasis(QQ).Super().base_ring()
Rational Field
>>> from sage.all import *
>>> C = Algebras(QQ).Super()
>>> C
Category of super algebras over Rational Field
>>> C.base_category()
Category of algebras over Rational Field
>>> sorted(C.super_categories(), key=str)
[Category of graded algebras over Rational Field,
 Category of super modules over Rational Field]

>>> AlgebrasWithBasis(QQ).Super().base_ring()
Rational Field
>>> HopfAlgebrasWithBasis(QQ).Super().base_ring()
Rational Field
classmethod default_super_categories(category, *args)[source]#

Return the default super categories of \(F_{Cat}(A,B,...)\) for \(A,B,...\) parents in \(Cat\).

INPUT:

  • cls – the category class for the functor \(F\)

  • category – a category \(Cat\)

  • *args – further arguments for the functor

OUTPUT:

A join category.

This implements the property that subcategories constructed by the set of whitelisted axioms is a subcategory.

EXAMPLES:

sage: HopfAlgebras(ZZ).WithBasis().FiniteDimensional().Super()  # indirect doctest
Category of finite dimensional super Hopf algebras with basis over Integer Ring
>>> from sage.all import *
>>> HopfAlgebras(ZZ).WithBasis().FiniteDimensional().Super()  # indirect doctest
Category of finite dimensional super Hopf algebras with basis over Integer Ring