Often we’ll need to think about functors of more than one variable. When we deal with functions on sets we talk about product sets to handle this. So, naturally, we’ll use product categories here.
Given categories and we define the product category like we did the direct product of groups and other such algebraic gadgets. We need a category with “projection functors” and onto the two categories we start with, and we use a universal property like we did for groups.
Explicitly, we define , and . The source of a pair of morphisms is the pair of objects obtained by taking the source of each morphism, and similarly for the target. Compositions and identities are also defined component-by-component. This shows that such product categories actually do exist.
Now we can define functors of two variables like . Similarly we can keep going and take the product of three categories (how well is this defined?) and use it to define functors of three variables, and so on.
Notice that morphisms coming from and from “commute”, in the sense that . This comes in handy when we’re dealing with functors of more than one variable. Let’s say we’ve got a construction we want to prove is a functor of two variables: . First we define its value on pairs of objects: . Then we define its value on morphisms from one of the input categories at a time: and . Now we check that these two commute: . This gives us the value of . Finally we check functoriality in each variable: and . This tells us that
To sum this up, a construction going from any number of categories to another is a functor of the product category if and only if it is functorial in each variable and the images of morphisms from distinct input categories all commute. By “functorial in each variable”, I mean that if you pick any objects to stick in all variables of the construction but one, then what’s left is a functor of the remaining variable.
If this seems confusing, don’t worry. We’ll be back soon enough with examples that illustrate how it shows up in practice.