Direct products of modules

For any family of modules, there is a construction analogous to the Cartesian product in Set that produces a single module characterized by a universal property. Let's first recall the Cartesian product construction in Set.

The Cartesian product of sets


One of the first constructions on sets that most of us learn is probably the Cartesian product of a pair of sets. The way this is usually taught is as follows. For each pair (X,Y) of sets one can construct a new set, denoted X×Y and called the Cartesian product of X and Y, whose elements consist of all ordered pairs (x,y) with xX and yY. The set X×Y also comes equipped with two "canonical projection" maps p1:X×YX and p2:X×Y, defined by sending a pair (x,y) to x or y, respectively.

This construction is also "universal" in the following sense: any set Z equipped with set maps q1:ZX and q2:ZY "factors uniquely" through X×Y; i.e., there exists a unique map h:ZX×Y such that q1=p1h and q2=p2h. We can represent this in the following diagram:

There is nothing special about sets here, though, other than the specific construction of the set X×Y. We can attempt to replicate this situation in any category, starting with a pair of objects (a,b) in a category C and asking whether there exists an object pC with arrows pa and pb with the analogous "universal property". In some categories the answer is "Yes!", in which case that object p is (usually) called the product of a and b and (usually) denoted a×b or ab.

My personal beef with ordered pairs

Call me a curmudgeon, but I don't like introducing new types of objects such as "ordered pairs" or "formal sums", no matter how intuitive and reasonable they might at first seem. In most cases, these new types of objects "break" or become ambiguous when pushed hard enough.

For example, an ordered pair might seem reasonable. So might an ordered triple, or ordered 10-uple. But what about an ordered -tuple? Is that just a sequence? What if I want an "ordered C-tuple", where C is the set of complex numbers? The complex numbers aren't linearly ordered, so we can't even pretend to think of that as a sequence.

When pushed to this extreme, it becomes clear that for an arbitrary set S an "ordered S-tuple" should really just be a set map from S to whatever set contains the elements we want in our "S-tuple". This kind of thinking can allow us to reframe "ordered pairs" and "ordered S-tuples" strictly in terms of arrows in preexisting categories. For example, an ordered pair of sets (X,Y) is really a functor F:SSet, where S is the discrete category on the two-element set {1,2}. The Cartesian product X×Y can then be constructed as the set of set maps f:SZ which satisfy f(1)X and f(2)Y, where Z is any set containing all of the elements of X and Y (guaranteed to exist in our chosen "universe" by the axiomatic properties of the universe).

Besides allowing us to consider families of objects indexed by arbitrary sets (and hence products over such families), this way of thinking also aligns with the general philosophy of category theory: "It's all about the arrows." Every statement should be in terms of arrows. Every construction should be in terms of arrows. Every proof should be in terms of arrows. It might not always be easy to follow this philosophy, but I'm willing to try.

The direct product of two modules


Moving to the category R-Mod, we can easily recreate the construction of the Cartesian product. For simplicity, let's first handle the case of the product of two R-modules and allow ourselves to use the ordered pair notation (despite my misgivings).

So, suppose M1 and M2 are two -modules. Let M1×M2 denote the R-module whose elements are pairs (m1,m2) with m1M1 and m2M2, with component-wise addition and scaling. In other words, the operation is defined by

(m1,m2)+(m1,m2)=(m1+m1,m2+m2),

and the left R-action is defined by r(m1,m2)=(rm1,rm2). (One can verify that this operation and R-action do indeed define an R-module structure on M1×M2.)

We have two "projection" module morphisms πi:M1×M2Mi, which send a pair (m1,m2) to mi, for i=1,2.

We claim that this data satisfies the "usual universal property" for a product, in that it is universal among all such modules equipped with morphisms to M1 and M2. More precisely, for each module P and pair of module morphisms f1:PM1 and f2:PM2 there is a unique module morphism h:PM1×M2 such that the diagram below commutates:

In fact, we can be completely explicit. Suppose, for the moment, such a morphism h:PM1×M2 existed. We can now use the above diagram to reverse engineer a formula for this map. Fix any element pP and consider the mysterious image h(n)M1×M2. This must be represented as h(p)=(m1,m2) for some m1M and m2M2 (presumably which each depend on p.) Looking at the above diagram, we see that we can "recover" m1 using the projection π1. More explicitly, our mystery first component m1 satisfies

m1=π(m1,m2)=π(h(p))=(πh)(p)=f1(p).

Similarly, we can deduce that m2=f2(p). We've now discovered that our map h:PM1×M2 must be given by h(p)=(f1(p),f2(p)). This proves the uniqueness of a morphism h:PM1×M2. As for existence, now we need only confirm that the map we discovered, namely h(p)=(f1(p),f2(p)) is indeed an R-module morphism (which is easy).

The R-module M1×M2, together with its projection morphisms, is called the direct product of M1 and M2. Categorically, it is simply the product of M1 and M2 in the category R-Mod. As such, I will usually drop the word "direct" and just call it the product of M1 and M2.

Products in related categories

Observe that, as an abelian group, M1×M2 is the usual direct product of abelian groups; similarly, as a set, M1×M2 is the usual Cartesian product of sets. More precisely, let U1:R-ModAb and U2:R-ModSet denote the usual forgetful functors. Then U1(M1×M2)U1(M1)×U2(M2) and U2(M1×M2)U2(M1)×U2(M2). It is sometimes said that these two forgetful functors preserve binary products, or something along those lines.

The direct product of an arbitrary collection of modules


Now let's go completely general. Suppose {MssS} is a family of R-modules indexed by some set S. Following the pattern we've established, the (direct) product of this family is an R-module, denoted sSMs, together with module morphisms πt:sSMsMt for every tS, universal among all such data.

As an abelian group, this is the usual direct product of the corresponding abelian groups; as a set, it is the usual Cartesian product of the corresponding sets. Following our earlier thoughts on how the notion of an "ordered S-tuple" for a general set S should really be replaced by set maps from S (with some conditions), we construct the direct product as follows.

The set of elements of sSMs is the collection of all set maps f:SZ such that f(s)Ms for every sS, where Z is any set containing all of the elements of all Ms. The additive operation and R-action are then once again defined "component-wise", which is now more accurately described as "on outputs"; e.g., (rf)(s)=rf(s), where the right-hand side indicates the action of R on the R-module Ms. In other words, for each sS we can think of f(s) as the value of the s-component of the element f.

The finite case can be seen as a special case of this general construction by considering the set S={1,2,,n} and associating each n-tuple (m1,m2,,mn) with miMi to a function f on {1,2,,n} with f(i)=mi for each i.

If you don't like this convoluted construction, have no fear: the construction is only really required to establish the existence of a module with the desired universal property. All properties of that module can be deduced (sometimes easily, sometimes with great effort) from the universal property itself.

Collections of objects via functors

We can give a categorical reinterpretation of a family of objects in a category C indexed by some set S. Let S be the discrete category associated to the set S. Then each functor F:SC is equivalent to the specification of an object F(s) in C for every element sS. More precisely, the object function of F is exactly a function F:SOb(C) from S to the set of objects of C. (Since S is discrete, the arrow function of F is completely determined, namely as simply the assignment F(1s)=1F(s).)

Suggested next notes


Direct sums of modules
Sums of submodules
Direct products vs. direct sums vs. sums