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

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 – a list of elements in the codomain; each element corresponds (by their ordering) to a module generator in the domain

EXAMPLES:

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]
degree()#

The degree of self.

OUTPUT:

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

EXAMPLES:

sage: A = SteenrodAlgebra(2)
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

The zero homomorphism has no degree:

sage: 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: A = SteenrodAlgebra(2)
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],)