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 : Rmodule, 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
