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 modulesvalues
– a list of elements in the codomain; each element corresponds (by their ordering) to a module generator in the domain
EXAMPLES:
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]
- degree()#
The degree of
self
.OUTPUT:
The degree of this homomorphism. Raise an error if this is the trivial homomorphism.
EXAMPLES:
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
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: 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