When
H := Hom(M,N) is computed, enough information is stored in
H.cache.Hom to compute this correspondence.
i1 : R = QQ[x,y,z]/(y^2-x^3)
o1 = R
o1 : QuotientRing
|
i2 : H = Hom(ideal(x,y), R^1)
o2 = image {-1} | x y |
{-1} | y x2 |
2
o2 : R-module, submodule of R
|
i3 : g = homomorphism H_{1}
o3 = | y x2 |
o3 : Matrix
|
The homomorphism g takes x to y and y to x2. The source and target are what they should be.
i4 : source g
o4 = image | x y |
1
o4 : R-module, submodule of R
|
i5 : target g
1
o5 = R
o5 : R-module, free
|
After
pruning a Hom module, one cannot use homomorphism directly. Instead, first apply the pruning map:
i6 :
H1 = prune H
o6 = cokernel {0} | -y x2 |
{1} | x -y |
2
o6 : R-module, quotient of R
|
Sometime, one wants a random homomorphism of a given degree. Here is one method:
i7 : homomorphism(H1.cache.pruningMap * H1_{1})
o7 = | y x2 |
o7 : Matrix
|