Usage:
<double_dual M N f
N is set equal to the double dual
Hom(M,Hom (M, R)) of M over whatever ring
M is defined. f is set to the natural map from
M to N (that is, from the free module giving
the generators of M to the one giving the generators
of N.
Parameters:
M = module
Output values:
N = M^**
f : M --> N the natural map (given on the generators)
The torsion submodule of M is the kernel of the map f;
it can be computed by a call of the form
<kernel f M N torsion
type torsion
See the script "kernel" for an example.
Method: Let m be the dual of a presentation map of M. 2 steps of
the resolution of m are computed. Writing n.-1 for
the dual of the second, the desired presentation of
N is obtained as n.1 , the 3rd map in the resolution
beginning with n.-1. The map f is obtained by lifting
the dual of m.2 along n.0.
Caveats:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;