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
ifself
is an even element or1
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
- extra_super_categories()[source]#
Adds
VectorSpaces
to the super categories ofself
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 ofSuperModules
and not a join category of an instance of this class and ofVectorSpaces(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