next | previous | forward | backward | up | top | index | toc | Macaulay2 website
Macaulay2Doc :: homomorphism

homomorphism -- get the homomorphism from element of Hom

Synopsis

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

Ways to use homomorphism :

For the programmer

The object homomorphism is a method function.