Projective Modules, The Dual of a Module
Given modules A and B, the dual of A with respect to B
is the set of module homomorphisms from A into B.
This is written hom(A,B).
If B is not specified then hom(A,R) is assumed.
This is called the dual of A.
Realize that hom(A,B) is itself an R module.
Homomorphisms can be added together,
and if R is commutative,
they can be scaled by elements of R on the right, within the module B.
Dual of Dual
Note that the dual of the dual of M is not M.
Start with Z2, as a Z module.
It's dual is 0, and the dual of 0 is 0.
In this sense, dual is perhaps a misnomer,
since the word "dual" usually implies its own inverse.
Assume B is the direct product of modules Bj.
A function from A into B is now the direct product of functions from A into each Bj.
Each function into B defines component functions into each Bj,
and a collection of component functions can be combined to build a composite function from A into B.
Verify that the composite function is a homomorphism iff each component function is a homomorphism.
Therefore hom(A,B) is canonically equivalent to the direct product of hom(A,Bj).
The same reasoning applies when A is a direct product of modules.
This does not hold when B is the direct sum over Bj.
Let A be a free module with infinitely many generators,
and let a function map A into B by carrying the jth generator of A to a nontrivial element of Bj.
This function cannot be realized by taking the direct sum of functions from A into Bj,
for such a function would map A into 0 at almost every Bj.
Similar reasoning holds when A is an infinite direct sum.
Let f map each component of A into something nontrivial in B,
and f cannot be realized as a direct sum of functions,
for such A function would be 0 on almost every ai.
Consider the R homomorhpisms from R into R.
They define, and are defined by, the image of 1.
Thus the dual of R equals R.
In general, hom(R,M) = M.
Apply these results to a free module of finite rank,
and hom(Rj,M) = Mj.
Induced Function On Duels
Imagine a square with R modules at the corners.
Place X1 at the upper left and X2 at the upper right.
Place Y1 at the lower left and Y2 at the lower right.
Now hom(X1,X2) is a collection of arrows going across the top of the square, from left to right,
and hom(Y1,Y2) is a collection of arrows going across the bottom of the square, from left to right.
Assume there is a given homomorphism from Y1 to X1, going up the left side,
and another homomorphism from X2 to Y2, going down the right side.
This establishes a function f from hom(X1,X2) into hom(Y1,Y2).
Given a homomorphism from X1 to X2,
prepend the homomorphism going up the left side,
and append the homomorphism going down the right side,
to find a homomorphism from Y1 to Y2.
This is a map from hom(X1,X2) into hom(Y1,Y2).
You can verify that this map is an R module homomorphism.