Filtered Modules - Category Framework

Skip to content
Back to top
View this page
Edit this page

# 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)

  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

      sage: Modules(ZZ).Filtered()
      Category of filtered modules over Integer Ring
      sage: Modules(ZZ).Filtered().super_categories()
      [Category of modules over Integer Ring]

  Python

      >>> 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:

  - Wikipedia article Filtration_(mathematics)

  class Connected(base_category)

    Bases: `CategoryWithAxiom_over_base_ring`

  class SubcategoryMethods

    Bases: `object`

    Connected()

      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

          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

      Python

          >>> 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()

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

    EXAMPLES:

    Sage

        sage: Modules(QQ).Filtered().is_subcategory(VectorSpaces(QQ))
        True
        sage: Modules(ZZ).Filtered().extra_super_categories()
        []

    Python

        >>> 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

        sage: type(Modules(QQ).Filtered())
        <class 'sage.categories.vector_spaces.VectorSpaces.Filtered_with_category'>

    [Python]

        >>> 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)

  Bases: `RegressiveCovariantConstructionCategory`, `Category_over_base_ring`

  EXAMPLES:

  Sage

      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

  Python

      >>> 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