Morphisms between finitely generated modules over a PID¶
AUTHOR:
William Stein, 2009
-
sage.modules.fg_pid.fgp_morphism.
FGP_Homset
(X, Y)¶ EXAMPLES:
sage: V = span([[1/2,1,1],[3/2,2,1],[0,0,1]],ZZ); W = V.span([2*V.0+4*V.1, 9*V.0+12*V.1, 4*V.2]); Q = V/W sage: Q.Hom(Q) # indirect doctest Set of Morphisms from Finitely generated module V/W over Integer Ring with invariants (4, 12) to Finitely generated module V/W over Integer Ring with invariants (4, 12) in Category of modules over Integer Ring sage: True # Q.Hom(Q) is Q.Hom(Q) True sage: type(Q.Hom(Q)) <class 'sage.modules.fg_pid.fgp_morphism.FGP_Homset_class_with_category'>
-
class
sage.modules.fg_pid.fgp_morphism.
FGP_Homset_class
(X, Y, category=None)¶ Bases:
sage.categories.homset.Homset
Homsets of
FGP_Module
-
Element
¶ alias of
FGP_Morphism
-
-
class
sage.modules.fg_pid.fgp_morphism.
FGP_Morphism
(parent, phi, check=True)¶ Bases:
sage.categories.morphism.Morphism
A morphism between finitely generated modules over a PID.
EXAMPLES:
An endomorphism:
sage: V = span([[1/2,1,1],[3/2,2,1],[0,0,1]],ZZ); W = V.span([2*V.0+4*V.1, 9*V.0+12*V.1, 4*V.2]) sage: Q = V/W; Q Finitely generated module V/W over Integer Ring with invariants (4, 12) sage: phi = Q.hom([Q.0+3*Q.1, -Q.1]); phi Morphism from module over Integer Ring with invariants (4, 12) to module with invariants (4, 12) that sends the generators to [(1, 3), (0, 11)] sage: phi(Q.0) == Q.0 + 3*Q.1 True sage: phi(Q.1) == -Q.1 True
A morphism between different modules V1/W1 —> V2/W2 in different ambient spaces:
sage: V1 = ZZ^2; W1 = V1.span([[1,2],[3,4]]); A1 = V1/W1 sage: V2 = span([[1/2,1,1],[3/2,2,1],[0,0,1]],ZZ); W2 = V2.span([2*V2.0+4*V2.1, 9*V2.0+12*V2.1, 4*V2.2]); A2=V2/W2 sage: A1 Finitely generated module V/W over Integer Ring with invariants (2) sage: A2 Finitely generated module V/W over Integer Ring with invariants (4, 12) sage: phi = A1.hom([2*A2.0]) sage: phi(A1.0) (2, 0) sage: 2*A2.0 (2, 0) sage: phi(2*A1.0) (0, 0)
-
im_gens
()¶ Return tuple of the images of the generators of the domain under this morphism.
EXAMPLES:
sage: V = span([[1/2,1,1],[3/2,2,1],[0,0,1]],ZZ); W = V.span([2*V.0+4*V.1, 9*V.0+12*V.1, 4*V.2]); Q = V/W sage: phi = Q.hom([Q.0,Q.0 + 2*Q.1]) sage: phi.im_gens() ((1, 0), (1, 2)) sage: phi.im_gens() is phi.im_gens() True
-
image
()¶ Compute the image of this homomorphism.
EXAMPLES:
sage: V = span([[1/2,1,1],[3/2,2,1],[0,0,1]],ZZ); W = V.span([2*V.0+4*V.1, 9*V.0+12*V.1, 4*V.2]) sage: Q = V/W; Q Finitely generated module V/W over Integer Ring with invariants (4, 12) sage: Q.hom([Q.0+3*Q.1, -Q.1]).image() Finitely generated module V/W over Integer Ring with invariants (4, 12) sage: Q.hom([3*Q.1, Q.1]).image() Finitely generated module V/W over Integer Ring with invariants (12)
-
inverse_image
(A)¶ Given a submodule A of the codomain of this morphism, return the inverse image of A under this morphism.
EXAMPLES:
sage: V = span([[1/2,1,1],[3/2,2,1],[0,0,1]],ZZ); W = V.span([2*V.0+4*V.1, 9*V.0+12*V.1, 4*V.2]); Q = V/W; Q Finitely generated module V/W over Integer Ring with invariants (4, 12) sage: phi = Q.hom([0, Q.1]) sage: phi.inverse_image(Q.submodule([])) Finitely generated module V/W over Integer Ring with invariants (4) sage: phi.kernel() Finitely generated module V/W over Integer Ring with invariants (4) sage: phi.inverse_image(phi.codomain()) Finitely generated module V/W over Integer Ring with invariants (4, 12) sage: phi.inverse_image(Q.submodule([Q.0])) Finitely generated module V/W over Integer Ring with invariants (4) sage: phi.inverse_image(Q.submodule([Q.1])) Finitely generated module V/W over Integer Ring with invariants (4, 12) sage: phi.inverse_image(ZZ^3) Traceback (most recent call last): ... TypeError: A must be a finitely generated quotient module sage: phi.inverse_image(ZZ^3 / W.scale(2)) Traceback (most recent call last): ... ValueError: A must be a submodule of the codomain
-
kernel
()¶ Compute the kernel of this homomorphism.
EXAMPLES:
sage: V = span([[1/2,1,1],[3/2,2,1],[0,0,1]],ZZ); W = V.span([2*V.0+4*V.1, 9*V.0+12*V.1, 4*V.2]) sage: Q = V/W; Q Finitely generated module V/W over Integer Ring with invariants (4, 12) sage: Q.hom([0, Q.1]).kernel() Finitely generated module V/W over Integer Ring with invariants (4) sage: A = Q.hom([Q.0, 0]).kernel(); A Finitely generated module V/W over Integer Ring with invariants (12) sage: Q.1 in A True sage: phi = Q.hom([Q.0-3*Q.1, Q.0+Q.1]) sage: A = phi.kernel(); A Finitely generated module V/W over Integer Ring with invariants (4) sage: phi(A) Finitely generated module V/W over Integer Ring with invariants ()
-
lift
(x)¶ Given an element x in the codomain of self, if possible find an element y in the domain such that self(y) == x. Raise a ValueError if no such y exists.
INPUT:
x
– element of the codomain of self.
EXAMPLES:
sage: V = span([[1/2,1,1],[3/2,2,1],[0,0,1]],ZZ); W = V.span([2*V.0+4*V.1, 9*V.0+12*V.1, 4*V.2]) sage: Q=V/W; phi = Q.hom([2*Q.0, Q.1]) sage: phi.lift(Q.1) (0, 1) sage: phi.lift(Q.0) Traceback (most recent call last): ... ValueError: no lift of element to domain sage: phi.lift(2*Q.0) (1, 0) sage: phi.lift(2*Q.0+Q.1) (1, 1) sage: V = span([[5, -1/2]],ZZ); W = span([[20,-2]],ZZ); Q = V/W; phi=Q.hom([2*Q.0]) sage: x = phi.image().0; phi(phi.lift(x)) == x True
-