# homomorphism -- get the homomorphism from element of Hom

## Synopsis

• Usage:
homomorphism f
• Inputs:
• f, of the form Hom(M,N) <-- R^1, where Hom(M,N) has been previously computed, and R is the ring of f, M and N
• Outputs:
• the Matrix M --> N, corresponding to the element f

## Description

 i1 : R = QQ[x,y,z,Degrees=>{2,3,1}]/(y^2-x^3) o1 = R o1 : QuotientRing i2 : H = Hom(ideal(x,y), R^1) -- ker (39) called with OptionTable: OptionTable{SubringLimit => infinity} -- ker (39) returned CacheFunction: -*a cache function*- -- ker (39) called with Matrix: {-5} | y -x | -- {-6} | x2 -y | -- ker (39) returned Module: image {-2} | x y | -- {-3} | y x2 | assert( ker(map(R^{{5}, {6}},R^{{2}, {3}},{{y,-x}, {x^2,-y}})) === (image(map(R^{{2}, {3}},R^{{0}, {-1}},{{x,y}, {y,x^2}})))) o2 = image {-2} | x y | {-3} | y x2 | 2 o2 : R-module, submodule of R i3 : f = H_{1} o3 = {0} | 0 | {1} | 1 | o3 : Matrix i4 : g = homomorphism f o4 = | y x2 | o4 : Matrix
The source and target are what they should be.
 i5 : source g === module ideal(x,y) o5 = true i6 : target g === R^1 o6 = true

Except for a possible redistribution of degrees between the map and modules, we can undo the process with homomorphism'.

 i7 : f' = homomorphism' g -- ker (40) called with OptionTable: OptionTable{SubringLimit => infinity} -- ker (40) returned CacheFunction: -*a cache function*- -- ker (40) called with Matrix: 0 -- 2 -- ker (40) returned Module: R assert( ker(map(R^0,R^{{2}, {3}},0)) === (R^{{2}, {3}})) o7 = {0} | 0 | {1} | 1 | o7 : Matrix i8 : f === f' o8 = false i9 : f - f' o9 = 0 o9 : Matrix i10 : degree f, degree f' o10 = ({0}, {1}) o10 : Sequence i11 : degrees f, degrees f' o11 = ({{{0}, {1}}, {{1}}}, {{{0}, {1}}, {{0}}}) o11 : Sequence

After pruning a Hom module, one cannot use homomorphism directly. Instead, first apply the pruning map:

 i12 : H1 = prune H o12 = cokernel {0} | y x2 | {1} | -x -y | 2 o12 : R-module, quotient of R i13 : homomorphism(H1.cache.pruningMap * H1_{1}) o13 = | y x2 | o13 : Matrix

## See also

• Hom -- module of homomorphisms
• prune -- prune, e.g., compute a minimal presentation
• random -- get a random element
• basis -- basis or generating set of all or part of a ring, ideal or module

## Ways to use homomorphism :

• "homomorphism(Matrix)"

## For the programmer

The object homomorphism is .