Homsets of finitely presented graded 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.homspace.FPModuleHomspace(X, Y, category=None, base=None, check=True)[source]¶
Bases:
Homset
- Element[source]¶
alias of
FPModuleMorphism
- an_element(n=0)[source]¶
Create a homomorphism belonging to
self
.INPUT:
n
– (default: 0) an integer degree
OUTPUT: a module homomorphism of degree
n
EXAMPLES:
sage: from sage.modules.fp_graded.module import FPModule sage: A = SteenrodAlgebra(2) sage: HZ = FPModule(A, [0], relations=[[Sq(1)]]) sage: Hom(HZ, HZ).an_element(3) Module endomorphism of Finitely presented left module on 1 generator and 1 relation over mod 2 Steenrod algebra, milnor basis Defn: g[0] |--> Sq(0,1)*g[0]
>>> from sage.all import * >>> from sage.modules.fp_graded.module import FPModule >>> A = SteenrodAlgebra(Integer(2)) >>> HZ = FPModule(A, [Integer(0)], relations=[[Sq(Integer(1))]]) >>> Hom(HZ, HZ).an_element(Integer(3)) Module endomorphism of Finitely presented left module on 1 generator and 1 relation over mod 2 Steenrod algebra, milnor basis Defn: g[0] |--> Sq(0,1)*g[0]
from sage.modules.fp_graded.module import FPModule A = SteenrodAlgebra(2) HZ = FPModule(A, [0], relations=[[Sq(1)]]) Hom(HZ, HZ).an_element(3)
- basis_elements(n)[source]¶
Return a basis for the free module of degree
n
morphisms.INPUT:
n
– integer degree
OUTPUT: a basis for the set of all module homomorphisms of degree
n
EXAMPLES:
sage: from sage.modules.fp_graded.module import FPModule sage: A = SteenrodAlgebra(2) sage: Hko = FPModule(A, [0], relations=[[Sq(2)], [Sq(1)]]) sage: Hom(Hko, Hko).basis_elements(21) [Module endomorphism of Finitely presented left module on 1 generator and 2 relations over mod 2 Steenrod algebra, milnor basis Defn: g[0] |--> (Sq(0,0,3)+Sq(0,2,0,1))*g[0], Module endomorphism of Finitely presented left module on 1 generator and 2 relations over mod 2 Steenrod algebra, milnor basis Defn: g[0] |--> Sq(8,2,1)*g[0]]
>>> from sage.all import * >>> from sage.modules.fp_graded.module import FPModule >>> A = SteenrodAlgebra(Integer(2)) >>> Hko = FPModule(A, [Integer(0)], relations=[[Sq(Integer(2))], [Sq(Integer(1))]]) >>> Hom(Hko, Hko).basis_elements(Integer(21)) [Module endomorphism of Finitely presented left module on 1 generator and 2 relations over mod 2 Steenrod algebra, milnor basis Defn: g[0] |--> (Sq(0,0,3)+Sq(0,2,0,1))*g[0], Module endomorphism of Finitely presented left module on 1 generator and 2 relations over mod 2 Steenrod algebra, milnor basis Defn: g[0] |--> Sq(8,2,1)*g[0]]
from sage.modules.fp_graded.module import FPModule A = SteenrodAlgebra(2) Hko = FPModule(A, [0], relations=[[Sq(2)], [Sq(1)]]) Hom(Hko, Hko).basis_elements(21)
- identity()[source]¶
Return the identity homomorphism.
EXAMPLES:
sage: from sage.modules.fp_graded.module import FPModule sage: A2 = SteenrodAlgebra(2, profile=(3,2,1)) sage: L = FPModule(A2, [2,3], [[Sq(2),Sq(1)], [0,Sq(2)]]) sage: one = Hom(L, L).identity(); one Module endomorphism of Finitely presented left module on 2 generators and 2 relations over sub-Hopf algebra of mod 2 Steenrod algebra, milnor basis, profile function [3, 2, 1] Defn: g[2] |--> g[2] g[3] |--> g[3] sage: e = L.an_element(5) sage: e == one(e) True
>>> from sage.all import * >>> from sage.modules.fp_graded.module import FPModule >>> A2 = SteenrodAlgebra(Integer(2), profile=(Integer(3),Integer(2),Integer(1))) >>> L = FPModule(A2, [Integer(2),Integer(3)], [[Sq(Integer(2)),Sq(Integer(1))], [Integer(0),Sq(Integer(2))]]) >>> one = Hom(L, L).identity(); one Module endomorphism of Finitely presented left module on 2 generators and 2 relations over sub-Hopf algebra of mod 2 Steenrod algebra, milnor basis, profile function [3, 2, 1] Defn: g[2] |--> g[2] g[3] |--> g[3] >>> e = L.an_element(Integer(5)) >>> e == one(e) True
from sage.modules.fp_graded.module import FPModule A2 = SteenrodAlgebra(2, profile=(3,2,1)) L = FPModule(A2, [2,3], [[Sq(2),Sq(1)], [0,Sq(2)]]) one = Hom(L, L).identity(); one e = L.an_element(5) e == one(e)
It is an error to call this function when the homset is not a set of endomorphisms:
sage: F = FPModule(A2, [1,3]) sage: Hom(F,L).identity() Traceback (most recent call last): ... TypeError: this homspace does not consist of endomorphisms
>>> from sage.all import * >>> F = FPModule(A2, [Integer(1),Integer(3)]) >>> Hom(F,L).identity() Traceback (most recent call last): ... TypeError: this homspace does not consist of endomorphisms
F = FPModule(A2, [1,3]) Hom(F,L).identity()
An example with free graded modules:
sage: A2 = SteenrodAlgebra(2, profile=(3,2,1)) sage: L = A2.free_graded_module((2,3)) sage: H = Hom(L, L) sage: H.identity() Module endomorphism of Free graded left module on 2 generators over sub-Hopf algebra of mod 2 Steenrod algebra, milnor basis, profile function [3, 2, 1] Defn: g[2] |--> g[2] g[3] |--> g[3]
>>> from sage.all import * >>> A2 = SteenrodAlgebra(Integer(2), profile=(Integer(3),Integer(2),Integer(1))) >>> L = A2.free_graded_module((Integer(2),Integer(3))) >>> H = Hom(L, L) >>> H.identity() Module endomorphism of Free graded left module on 2 generators over sub-Hopf algebra of mod 2 Steenrod algebra, milnor basis, profile function [3, 2, 1] Defn: g[2] |--> g[2] g[3] |--> g[3]
A2 = SteenrodAlgebra(2, profile=(3,2,1)) L = A2.free_graded_module((2,3)) H = Hom(L, L) H.identity()
- zero()[source]¶
Create the trivial homomorphism in
self
.EXAMPLES:
sage: from sage.modules.fp_graded.module import FPModule sage: A2 = SteenrodAlgebra(2, profile=(3,2,1)) sage: F = FPModule(A2, [1,3]) sage: L = FPModule(A2, [2,3], [[Sq(2),Sq(1)], [0,Sq(2)]]) sage: z = Hom(F, L).zero() sage: z(F.an_element(5)) 0 sage: z(F.an_element(23)) 0
>>> from sage.all import * >>> from sage.modules.fp_graded.module import FPModule >>> A2 = SteenrodAlgebra(Integer(2), profile=(Integer(3),Integer(2),Integer(1))) >>> F = FPModule(A2, [Integer(1),Integer(3)]) >>> L = FPModule(A2, [Integer(2),Integer(3)], [[Sq(Integer(2)),Sq(Integer(1))], [Integer(0),Sq(Integer(2))]]) >>> z = Hom(F, L).zero() >>> z(F.an_element(Integer(5))) 0 >>> z(F.an_element(Integer(23))) 0
from sage.modules.fp_graded.module import FPModule A2 = SteenrodAlgebra(2, profile=(3,2,1)) F = FPModule(A2, [1,3]) L = FPModule(A2, [2,3], [[Sq(2),Sq(1)], [0,Sq(2)]]) z = Hom(F, L).zero() z(F.an_element(5)) z(F.an_element(23))
Example with free modules:
sage: A2 = SteenrodAlgebra(2, profile=(3,2,1)) sage: F = A2.free_graded_module((1,3)) sage: L = A2.free_graded_module((2,3)) sage: H = Hom(F, L) sage: H.zero() Module morphism: From: Free graded left module on 2 generators over sub-Hopf algebra of mod 2 Steenrod algebra, milnor basis, profile function [3, 2, 1] To: Free graded left module on 2 generators over sub-Hopf algebra of mod 2 Steenrod algebra, milnor basis, profile function [3, 2, 1] Defn: g[1] |--> 0 g[3] |--> 0
>>> from sage.all import * >>> A2 = SteenrodAlgebra(Integer(2), profile=(Integer(3),Integer(2),Integer(1))) >>> F = A2.free_graded_module((Integer(1),Integer(3))) >>> L = A2.free_graded_module((Integer(2),Integer(3))) >>> H = Hom(F, L) >>> H.zero() Module morphism: From: Free graded left module on 2 generators over sub-Hopf algebra of mod 2 Steenrod algebra, milnor basis, profile function [3, 2, 1] To: Free graded left module on 2 generators over sub-Hopf algebra of mod 2 Steenrod algebra, milnor basis, profile function [3, 2, 1] Defn: g[1] |--> 0 g[3] |--> 0
A2 = SteenrodAlgebra(2, profile=(3,2,1)) F = A2.free_graded_module((1,3)) L = A2.free_graded_module((2,3)) H = Hom(F, L) H.zero()