i1 : R = QQ[x,y,z] o1 = R o1 : PolynomialRing |
i2 : f = vars R ++ vars R
o2 = | x y z 0 0 0 |
| 0 0 0 x y z |
2 6
o2 : Matrix R <--- R
|
i3 : g = homomorphism' f
-- ker (35) called with OptionTable: OptionTable{SubringLimit => infinity}
-- ker (35) returned CacheFunction: -*a cache function*-
-- ker (35) called with Matrix: 0
-- 12
-- ker (35) returned Module: R
assert( ker(map(R^0,R^{{1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}},0)) === (R^{{1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}}))
o3 = {-1} | x |
{-1} | 0 |
{-1} | y |
{-1} | 0 |
{-1} | z |
{-1} | 0 |
{-1} | 0 |
{-1} | x |
{-1} | 0 |
{-1} | y |
{-1} | 0 |
{-1} | z |
12 1
o3 : Matrix R <--- R
|
i4 : target g === Hom(source f, target f) o4 = true |
We can undo the process with homomorphism.
i5 : f' = homomorphism g
o5 = | x y z 0 0 0 |
| 0 0 0 x y z |
2 6
o5 : Matrix R <--- R
|
i6 : f === f' o6 = true |
The object homomorphism' is a method function.