Homomorphisms of finitely generated free graded left modules - Modules

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

# Homomorphisms of finitely generated free graded left modules

AUTHORS:

- Robert R. Bruner, Michael J. Catanzaro (2012): Initial version.

- Sverre Lunoee–Nielsen and Koen van Woerden (2019-11-29): Updated the original software to Sage version 8.9.

- Sverre Lunoee–Nielsen (2020-07-01): Refactored the code and added new documentation and tests.

class sage.modules.fp_graded.free_morphism.FreeGradedModuleMorphism(parent, values)

  Bases: `FPModuleMorphism`

  Create a homomorphism from a finitely generated free graded module to a graded module.

  INPUT:

  - `parent` – a homspace in the category of finitely generated free modules

  - `values` – list of elements in the codomain; each element corresponds (by their ordering) to a module generator in the domain

  EXAMPLES:

  Sage

      sage: from sage.modules.fp_graded.free_module import FreeGradedModule
      sage: A = SteenrodAlgebra(2)
      sage: F1 = FreeGradedModule(A, (4,5), names='b')
      sage: F2 = FreeGradedModule(A, (3,4), names='c')
      sage: F3 = FreeGradedModule(A, (2,3), names='d')
      sage: H1 = Hom(F1, F2)
      sage: H2 = Hom(F2, F3)
      sage: f = H1((F2((Sq(4), 0)), F2((0, Sq(4)))))
      sage: g = H2((F3((Sq(2), 0)), F3((Sq(3), Sq(2)))))
      sage: g*f
      Module morphism:
        From: Free graded left module on 2 generators over mod 2 Steenrod algebra, milnor basis
        To:   Free graded left module on 2 generators over mod 2 Steenrod algebra, milnor basis
        Defn: b[4] |--> (Sq(0,2)+Sq(3,1)+Sq(6))*d[2]
              b[5] |--> (Sq(1,2)+Sq(7))*d[2] + (Sq(0,2)+Sq(3,1)+Sq(6))*d[3]

  Python

      >>> from sage.all import *
      >>> from sage.modules.fp_graded.free_module import FreeGradedModule
      >>> A = SteenrodAlgebra(Integer(2))
      >>> F1 = FreeGradedModule(A, (Integer(4),Integer(5)), names='b')
      >>> F2 = FreeGradedModule(A, (Integer(3),Integer(4)), names='c')
      >>> F3 = FreeGradedModule(A, (Integer(2),Integer(3)), names='d')
      >>> H1 = Hom(F1, F2)
      >>> H2 = Hom(F2, F3)
      >>> f = H1((F2((Sq(Integer(4)), Integer(0))), F2((Integer(0), Sq(Integer(4))))))
      >>> g = H2((F3((Sq(Integer(2)), Integer(0))), F3((Sq(Integer(3)), Sq(Integer(2))))))
      >>> g*f
      Module morphism:
        From: Free graded left module on 2 generators over mod 2 Steenrod algebra, milnor basis
        To:   Free graded left module on 2 generators over mod 2 Steenrod algebra, milnor basis
        Defn: b[4] |--> (Sq(0,2)+Sq(3,1)+Sq(6))*d[2]
              b[5] |--> (Sq(1,2)+Sq(7))*d[2] + (Sq(0,2)+Sq(3,1)+Sq(6))*d[3]

  degree()

    The degree of `self`.

    OUTPUT:

    The degree of this homomorphism. Raise an error if this is the trivial homomorphism.

    EXAMPLES:

    Sage

        sage: from sage.modules.fp_graded.free_module import FreeGradedModule
        sage: A = SteenrodAlgebra(2)
        sage: homspace = Hom(FreeGradedModule(A, (0,1)), FreeGradedModule(A, (0,)))
        sage: N = homspace.codomain()
        sage: values = [Sq(5)*N.generator(0), Sq(3,1)*N.generator(0)]
        sage: f = homspace(values)
        sage: f.degree()
        5

    Python

        >>> from sage.all import *
        >>> from sage.modules.fp_graded.free_module import FreeGradedModule
        >>> A = SteenrodAlgebra(Integer(2))
        >>> homspace = Hom(FreeGradedModule(A, (Integer(0),Integer(1))), FreeGradedModule(A, (Integer(0),)))
        >>> N = homspace.codomain()
        >>> values = [Sq(Integer(5))*N.generator(Integer(0)), Sq(Integer(3),Integer(1))*N.generator(Integer(0))]
        >>> f = homspace(values)
        >>> f.degree()
        5

    The zero homomorphism has no degree:

    Sage

        sage: homspace.zero().degree()
        Traceback (most recent call last):
        ...
        ValueError: the zero morphism does not have a well-defined degree

    [Python]

        >>> from sage.all import *
        >>> homspace.zero().degree()
        Traceback (most recent call last):
        ...
        ValueError: the zero morphism does not have a well-defined degree

  fp_module()

    Create a finitely presented module from `self`.

    OUTPUT: the finitely presented module with presentation equal to `self`

    EXAMPLES:

    Sage

        sage: A = SteenrodAlgebra(2)
        sage: F1 = A.free_graded_module([2])
        sage: F2 = A.free_graded_module([0])
        sage: v = F2([Sq(2)])
        sage: pres = Hom(F1, F2)([v])
        sage: M = pres.fp_module(); M
        Finitely presented left module on 1 generator and 1 relation over
         mod 2 Steenrod algebra, milnor basis
        sage: M.generator_degrees()
        (0,)
        sage: M.relations()
        (Sq(2)*g[0],)

        sage: from sage.modules.fp_graded.module import FPModule
        sage: A = SteenrodAlgebra(2)
        sage: F1 = A.free_graded_module((2,))
        sage: F2 = FPModule(A, (0,), [[Sq(4)]])
        sage: v = F2([Sq(2)])
        sage: pres = Hom(F1, F2)([v])
        sage: pres.fp_module()
        Traceback (most recent call last):
        ...
        ValueError: this is not a morphism between free modules

    Python

        >>> from sage.all import *
        >>> A = SteenrodAlgebra(Integer(2))
        >>> F1 = A.free_graded_module([Integer(2)])
        >>> F2 = A.free_graded_module([Integer(0)])
        >>> v = F2([Sq(Integer(2))])
        >>> pres = Hom(F1, F2)([v])
        >>> M = pres.fp_module(); M
        Finitely presented left module on 1 generator and 1 relation over
         mod 2 Steenrod algebra, milnor basis
        >>> M.generator_degrees()
        (0,)
        >>> M.relations()
        (Sq(2)*g[0],)

        >>> from sage.modules.fp_graded.module import FPModule
        >>> A = SteenrodAlgebra(Integer(2))
        >>> F1 = A.free_graded_module((Integer(2),))
        >>> F2 = FPModule(A, (Integer(0),), [[Sq(Integer(4))]])
        >>> v = F2([Sq(Integer(2))])
        >>> pres = Hom(F1, F2)([v])
        >>> pres.fp_module()
        Traceback (most recent call last):
        ...
        ValueError: this is not a morphism between free modules