Fret not if you’re unfamiliar with the term *functor*; it’s a concept in category theory we will use implicitly without delving into the specific definition. This topic is, unfortunately, a little on the dry side but it’s a necessary evil to get through.

Let *R* be a ring, and *M*, *N* be left *R*-modules. The set of *R*-module homomorphisms *M*→*N* is denoted by Hom_{R}(*M*, *N*) or just Hom(*M*, *N*) when the base ring is clear. This forms an *abelian group* under addition, where adding *f*, *g* : *M* → *N* just gives:

When *R* is commutative, in fact Hom(*M*, *N*) is an *R*-module since given *r*∈*R*, *f* : *M* → *N*, we can define (*r*·*f*) : *M* → *N* to be the map This fails when the base ring is non-commutative because

**Functoriality**

By functoriality, we mean the following:

Lemma. If g : N → N’ is a homomorphism of R-modules, then composing gives us group homomorphisms:Furthermore, if h : N’ → N” is another R-module homomorphism, then composing gives:

Finally, given any module N, the identity map 1

_{N}: N → N gives the identity maps for the following:

The proofs for the above are quite easy and thus omitted. Hence, we need to bear in mind that **the Hom functor is direction-reversing in the first term and direction-preserving in the second**. [ *At worst, just memorise it; that certainly beats getting confused by the direction all the time*. ]

**Note**

Under category theory, direction-reversing (resp. -preserving) is given the term *contravariant* (resp. *covariant*). It is standard notation in literature to denote a contravariant functor by and covariant one by Breaking this convention will result in unnecessary confusion!

**Example**

To motivate the above definition, let us look not at modules but at rings instead. Consider the following ring *R*:

Any ring homomorphism *f* : *R*→*S* then corresponds to picking elements *w*, *x*, *y*, *z* ∈ *S* such that *wz* – *xy* = 1, i.e. a 2 × 2 matrix of determinant 1. Indeed, for such an *f*, we just take the images *f*(*a*), *f*(*b*), *f*(*c*), *f*(*d*) ∈ *S*. Furthermore, if *g* : *S*→*T* is a ring homomorphism, then the map:

corresponds to mapping elements *w*, *x*, *y*, *z* ∈ *S* such that *wz* – *xy* = 1 to *g*(*w*), *g*(*x*), *g*(*y*), *g*(*z*) ∈ *T*, which also satisfy the same equation.

## Bimodules

When *M* or *N* is endowed with additional structure, it is possible to form a module out of Hom(*M*, *N*):

Definition. Let R, S be rings. An (R, S)-bimoduleis an abelian group M equipped with a left R-module and right S-module structure such that both commute, i.e. for all r∈R, s∈S, m∈M, we have (rm)s = r(ms).One way of visualizing this is via an expression:

which is associative, i.e. independent of our choice of bracketing.

**Examples**

- If
*R*is commutative, any*R*-module is automatically an (*R*,*R*)-bimodule. - Any ring
*R*is an (*R*,*R*)-bimodule. - More generally, if
*R*→*S*is a ring homomorphism, then*S*is an*R*-algebra and*S*is an (*R*,*S*)-, (*S*,*R*)- and (*R*,*R*)-bimodule. - If
*M*is a left*R*-module, we can turn it into a right*R*^{op}module by defining*mr’*(*r’*∈*R*^{op}) to be*rm*where*r*∈*R*is the element corresponding to*r’*∈*R*^{op}. Does this turn*M*into an (*R*,*R*^{op})-bimodule? [ Answer: no because the left and right actions don’t commute. ]

When either *M* or *N* is a bimodule, the resulting Hom(*M*, *N*) gets a module structure.

Proposition. Let M, N be R-modules.

- If M is an (R, S)-bimodule, then Hom
_{R}(M, N) is a left S-module, via- If N is an (R, S)-bimodule, then Hom
_{R}(M, N) is a right S-module, via

**Proof**

We will only check the commutativity of the action of *S*. For the first case,

For the second case,

♦

Here’s one way to remember this: as we mentioned earlier, **Hom reverses direction in the first component by turning the right S-action into a left one, and preserves direction in the second**.

**Quick exercise**

We know that Hom_{R}(*R*, *M*) is uniquely determined by the image of 1∈*R*. Thus we get a bijection *M* ↔ Hom_{R}(*R*, *M*). This is clearly an isomorphism of abelian groups. On the other hand, *R* is an (*R*, *R*)-bimodule so Hom_{R}(*R*, *M*) also becomes a left *R*-module. Check that the bijection is an isomorphism of left *R*-modules.

Definition. Let M be a left R-module. From the (R, R)-bimodule structure of R, we get a right-module structure onHom_{R}(M, R). This is called thedualof M and denoted by M*.

**Note**

Linear algebra over division rings is mostly identical to that over fields, but the dual of a left vector space becomes a right vector space.

## Hom Functor is Left Exact

The main result we’d like to show is:

Theorem. Suppose is an exact sequence of modules. Then for any module N, the following sequence is exact as well:

**Proof**

There are several parts to this result:

- is injective: if
*h*:*N*→*M’*is such that*fh*:*N*→*M*is zero, then since*f*is injective,*h*= 0. - Since
*gf*= 0, we also have Thus - Conversely, suppose so
*h*:*N*→*M*is a map such that*gh*:*N*→*M”*is the zero map. Then im(*h*) ⊆ ker(*g*) = im(*f*). Since*f*:*M’**→ M*is injective, this gives and ♦

The following result is sometimes useful too:

Proposition. If is a sequence of modules such thatis exact for all N, then the sequence is exact.

**Sketch of Proof**

Let *N* = *R*, the base ring. Then we recover the exact desired sequence. ♦

**Motivation**

Let us briefly explain why the above results are of interest. Ideally, we would like to have a functor *F* such that whenever *M’* → *M* → *M”* is exact, the resulting *F*(*M’*) → *F*(*M*) → *F*(*M”*) is exact too. This is tremendously convenient, since *F* then commutes with kernel, image, cokernel etc. However, the above result says Hom(*N*, -) is only “*left-exact”*. For example, consider the surjective map of **Z**-modules, **Z** → **Z**/2 → 0. Taking *N* = **Z**/2 gives us Hom(**Z**/2, **Z**) → Hom(**Z**/2, **Z**/2) → 0 which is not exact since the first term is 0.

Suppose we would like to prove that some functor *F* is left-exact. Here’s one way:

- Represent
*F*using the Hom-functor, i.e. find an*N*such that*F*(*M*) = Hom(*N*,*M*). - From the above result, we immediately see that
*F*is left-exact.

**Exercise**

Prove the above for Hom(-, *N*) as well: i.e. suppose is an exact sequence. Then for any module *N*, we get an exact sequence:

Conversely, if the above sequence is exact for all *N*, then is exact.

Thus, Hom(*N*, -) takes left-exact sequences to left-exact sequences and Hom(-, *N*) takes right-exact to left-exact sequences too. In both cases, the final outcome is left-exact and one often says in short, *the Hom functor is left-exact*.