Filtered Modules

A filtered module over a ring \(R\) with a totally ordered indexing set \(I\) (typically \(I = \NN\)) is an \(R\)-module \(M\) equipped with a family \((F_i)_{i \in I}\) of \(R\)-submodules satisfying \(F_i \subseteq F_j\) for all \(i,j \in I\) having \(i \leq j\), and \(M = \bigcup_{i \in I} F_i\). This family is called a filtration of the given module \(M\).

Todo

Implement a notion for decreasing filtrations: where \(F_j \subseteq F_i\) when \(i \leq j\).

Todo

Implement filtrations for all concrete categories.

Todo

Implement \(\operatorname{gr}\) as a functor.

class sage.categories.filtered_modules.FilteredModules(base_category)[source]

Bases: FilteredModulesCategory

The category of filtered modules over a given ring \(R\).

A filtered module over a ring \(R\) with a totally ordered indexing set \(I\) (typically \(I = \NN\)) is an \(R\)-module \(M\) equipped with a family \((F_i)_{i \in I}\) of \(R\)-submodules satisfying \(F_i \subseteq F_j\) for all \(i,j \in I\) having \(i \leq j\), and \(M = \bigcup_{i \in I} F_i\). This family is called a filtration of the given module \(M\).

EXAMPLES:

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

REFERENCES:

class Connected(base_category)[source]

Bases: CategoryWithAxiom_over_base_ring

class SubcategoryMethods[source]

Bases: object

Connected()[source]

Return the full subcategory of the connected objects of self.

A filtered \(R\)-module \(M\) with filtration \((F_0, F_1, F_2, \ldots)\) (indexed by \(\NN\)) is said to be connected if \(F_0\) is isomorphic to \(R\).

EXAMPLES:

sage: Modules(ZZ).Filtered().Connected()
Category of filtered connected modules over Integer Ring
sage: Coalgebras(QQ).Filtered().Connected()
Category of filtered connected coalgebras over Rational Field
sage: AlgebrasWithBasis(QQ).Filtered().Connected()
Category of filtered connected algebras with basis over Rational Field
>>> from sage.all import *
>>> Modules(ZZ).Filtered().Connected()
Category of filtered connected modules over Integer Ring
>>> Coalgebras(QQ).Filtered().Connected()
Category of filtered connected coalgebras over Rational Field
>>> AlgebrasWithBasis(QQ).Filtered().Connected()
Category of filtered connected algebras with basis over Rational Field
extra_super_categories()[source]

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

EXAMPLES:

sage: Modules(QQ).Filtered().is_subcategory(VectorSpaces(QQ))
True
sage: Modules(ZZ).Filtered().extra_super_categories()
[]
>>> from sage.all import *
>>> Modules(QQ).Filtered().is_subcategory(VectorSpaces(QQ))
True
>>> Modules(ZZ).Filtered().extra_super_categories()
[]

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

sage: type(Modules(QQ).Filtered())
<class 'sage.categories.vector_spaces.VectorSpaces.Filtered_with_category'>
>>> from sage.all import *
>>> type(Modules(QQ).Filtered())
<class 'sage.categories.vector_spaces.VectorSpaces.Filtered_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.

class sage.categories.filtered_modules.FilteredModulesCategory(base_category)[source]

Bases: RegressiveCovariantConstructionCategory, Category_over_base_ring

EXAMPLES:

sage: C = Algebras(QQ).Filtered()
sage: C
Category of filtered algebras over Rational Field
sage: C.base_category()
Category of algebras over Rational Field
sage: sorted(C.super_categories(), key=str)
[Category of algebras over Rational Field,
 Category of filtered vector spaces over Rational Field]

sage: AlgebrasWithBasis(QQ).Filtered().base_ring()
Rational Field
sage: HopfAlgebrasWithBasis(QQ).Filtered().base_ring()
Rational Field
>>> from sage.all import *
>>> C = Algebras(QQ).Filtered()
>>> C
Category of filtered algebras over Rational Field
>>> C.base_category()
Category of algebras over Rational Field
>>> sorted(C.super_categories(), key=str)
[Category of algebras over Rational Field,
 Category of filtered vector spaces over Rational Field]

>>> AlgebrasWithBasis(QQ).Filtered().base_ring()
Rational Field
>>> HopfAlgebrasWithBasis(QQ).Filtered().base_ring()
Rational Field