Super modules - Category Framework

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

# Super modules

class sage.categories.super_modules.SuperModules(base_category)

  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

      sage: Modules(ZZ).Super()
      Category of super modules over Integer Ring
      sage: Modules(ZZ).Super().super_categories()
      [Category of graded modules over Integer Ring]

  Python

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

      sage: Modules(ZZ).Super().additional_structure()
      Category of super modules over Integer Ring

  [Python]

      >>> from sage.all import *
      >>> Modules(ZZ).Super().additional_structure()
      Category of super modules over Integer Ring

  class ElementMethods

    Bases: `object`

    is_even()

      Return if `self` is an even element.

      EXAMPLES:

      Sage

          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

      Python

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

      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

          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

      Python

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

      Return if `self` is an odd element.

      EXAMPLES:

      Sage

          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

      Python

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

    Bases: `object`

  extra_super_categories()

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

    EXAMPLES:

    Sage

        sage: Modules(QQ).Super().extra_super_categories()
        [Category of vector spaces over Rational Field]
        sage: Modules(ZZ).Super().extra_super_categories()
        []

    Python

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

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

    [Python]

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

    EXAMPLES:

    Sage

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

    Python

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

    Nota bene:

    Sage

        sage: Modules(QQ).Super()
        Category of super modules over Rational Field
        sage: Modules(QQ).Super().super_categories()
        [Category of graded modules over Rational Field]

    [Python]

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

  Bases: `CovariantConstructionCategory`, `Category_over_base_ring`

  EXAMPLES:

  Sage

      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

  Python

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

    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

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

    Python

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