Hom is left exact
Hom preserves kernels: Hom_R(M,-) is left exact (covariant) and Hom_R(-,N) is left exact (contravariant); Ext measures the failure of exactness beyond that.
Let be a ring and write for the Hom functor.
Statement (covariant in the second variable)
Fix a left -module . If
is an exact sequence of left -modules, then
is exact.
Equivalently: preserves kernels (and monomorphisms), but it need not preserve cokernels (and epimorphisms).
Statement (contravariant in the first variable)
Fix a left -module . If
is exact, then applying yields an exact sequence
Failure of right exactness and Ext
The failure of to be exact is measured by Ext: (and higher ) are the right derived functors of , and every short exact sequence gives a long exact sequence in Ext (a special case of the long exact sequence for derived functors).
If is projective, then is exact. If is injective, then is exact.
Examples
Example 1: Hom need not be right exact (over )
Start from the short exact sequence
Apply . Since and , we get
The map is not surjective for , so fails to preserve the cokernel; the cokernel is
Example 2: If is free, then Hom is exact
If is free, then
Thus is a finite product of the identity functor, hence exact (it preserves both kernels and cokernels).
Example 3: Vector spaces over a field
If is a field and is a -vector space, then is free (hence projective). Therefore is exact, and equivalently
for all -vector spaces .