Maps between free modules are usually specified as matrices, as described in the section on
matrices. In this section we cover a few other techniques.
Let's set up a ring, a matrix, and a free module.
i1 : R = ZZ/101[x,y,z];
|
i2 : f = vars R
o2 = | x y z |
1 3
o2 : Matrix R <-- R
|
i3 : M = R^4
4
o3 = R
o3 : R-module, free
|
We can use
Module ^ List and
Module _ List to produce projection maps to quotient modules and injection maps from submodules corresponding to specified basis vectors.
i4 : M^{0,1}
o4 = | 1 0 0 0 |
| 0 1 0 0 |
2 4
o4 : Matrix R <-- R
|
i5 : M_{2,3}
o5 = | 0 0 |
| 0 0 |
| 1 0 |
| 0 1 |
4 2
o5 : Matrix R <-- R
|
Natural maps between modules can be obtained with
inducedMap; the first argument is the desired target, and the second is the source.
i6 : inducedMap(source f, ker f)
o6 = {1} | -y 0 -z |
{1} | x -z 0 |
{1} | 0 y x |
o6 : Matrix
|
i7 : inducedMap(coker f, target f)
o7 = | 1 |
o7 : Matrix
|