Product category

☆ Save On Wikipedia ↗

In the mathematical field of category theory, the product of two categories C and D, denoted C × D and called a product category, is an extension of the concept of the Cartesian product of two sets. Product categories are used to define bifunctors and multifunctors.[1]

Definition

The product category C × D has:

  • as objects:
    pairs of objects (A, B), where A is an object of C and B of D;
  • as arrows from (A1, B1) to (A2, B2):
    pairs of arrows (f, g), where f : A1A2 is an arrow of C and g : B1B2 is an arrow of D;
  • as composition, component-wise composition from the contributing categories:
    (f2, g2) o (f1, g1) = (f2 o f1, g2 o g1);
  • as identities, pairs of identities from the contributing categories:
    1(A, B) = (1A, 1B).

A product of a family of categories is defined exactly the same way.

Universal property

Just like for sets, a product of a family of categories is characterized by the following universal property. Given categories C i {\displaystyle C_{i}} {\displaystyle C_{i}} indexed by a set I {\displaystyle I} {\displaystyle I}, P = ∏ C i , p j : P → C j , j ∈ I {\displaystyle P=\prod C_{i},p_{j}:P\to C_{j},j\in I} {\displaystyle P=\prod C_{i},p_{j}:P\to C_{j},j\in I} satisfy:

given a family of functors f i : D → C i {\displaystyle f_{i}:D\to C_{i}} {\displaystyle f_{i}:D\to C_{i}}, there exists a unique functor f : D → P {\displaystyle f:D\to P} {\displaystyle f:D\to P} such that f j = p j ∘ f {\displaystyle f_{j}=p_{j}\circ f} {\displaystyle f_{j}=p_{j}\circ f} for each j ∈ I {\displaystyle j\in I} {\displaystyle j\in I}.

Put in another way, a product of a family of small categories is exactly the categorical product of them in the category of small categories C a t {\displaystyle {\mathsf {Cat}}} {\displaystyle {\mathsf {Cat}}}. Thus, for example, F c t ( A , ∏ i B i ) ≃ ∏ i F c t ( A , B i ) {\displaystyle \textstyle {\mathsf {Fct}}(A,\prod _{i}B_{i})\simeq \prod _{i}{\mathsf {Fct}}(A,B_{i})} {\displaystyle \textstyle {\mathsf {Fct}}(A,\prod _{i}B_{i})\simeq \prod _{i}{\mathsf {Fct}}(A,B_{i})}

where F c t {\displaystyle {\mathsf {Fct}}} {\displaystyle {\mathsf {Fct}}} denotes a functor category.[2]

Functoriality

Given two functors f : C → D , g : C ′ → D ′ {\displaystyle f:C\to D,g:C'\to D'} {\displaystyle f:C\to D,g:C'\to D'}, the product f × g : C × C ′ → D × D ′ {\displaystyle f\times g:C\times C'\to D\times D'} {\displaystyle f\times g:C\times C'\to D\times D'} is defined component-wise; that is, ( f × g ) ( x , x ′ ) = ( f ( x ) , g ( x ′ ) ) {\displaystyle (f\times g)(x,x')=(f(x),g(x'))} {\displaystyle (f\times g)(x,x')=(f(x),g(x'))} for a pair of objects or morphisms x , x ′ {\displaystyle x,x'} {\displaystyle x,x'}.[3] (This product may also be characterized by the universal property similar to that for categories.) This way, we get the functor

× : C a t × C a t → C a t . {\displaystyle \times :{\mathsf {Cat}}\times {\mathsf {Cat}}\to {\mathsf {Cat}}.} {\displaystyle \times :{\mathsf {Cat}}\times {\mathsf {Cat}}\to {\mathsf {Cat}}.}

It satisfies the tensor-hom adjunction in the sense

Hom C a t ⁡ ( A × B , C ) ≃ Hom C a t ⁡ ( A , F c t ( B , C ) ) {\displaystyle \operatorname {Hom} _{\mathsf {Cat}}(A\times B,C)\simeq \operatorname {Hom} _{\mathsf {Cat}}(A,{\mathsf {Fct}}(B,C))} {\displaystyle \operatorname {Hom} _{\mathsf {Cat}}(A\times B,C)\simeq \operatorname {Hom} _{\mathsf {Cat}}(A,{\mathsf {Fct}}(B,C))}

where F c t {\displaystyle {\mathsf {Fct}}} {\displaystyle {\mathsf {Fct}}} denotes a functor category.[4]

Example: C × 2

Let f , g : C → D {\displaystyle f,g:C\to D} {\displaystyle f,g:C\to D} be functors. Suppose there is a natural transformation φ : f → g {\displaystyle \varphi :f\to g} {\displaystyle \varphi :f\to g}. Then φ {\displaystyle \varphi } {\displaystyle \varphi } determines the functor

h : C × 2 _ → D {\displaystyle h:C\times {\underline {2}}\to D} {\displaystyle h:C\times {\underline {2}}\to D}

such that

h ( ⋅ , 0 ) = f , h ( ⋅ , 1 ) = g {\displaystyle h(\cdot ,0)=f,\,h(\cdot ,1)=g} {\displaystyle h(\cdot ,0)=f,\,h(\cdot ,1)=g},

where 2 _ = { 0 , 1 } {\displaystyle {\underline {2}}=\{0,1\}} {\displaystyle {\underline {2}}=\{0,1\}} is the category with two objects and the non-identity morphism ⇝: 0 → 1 {\displaystyle \rightsquigarrow :0\to 1} {\displaystyle \rightsquigarrow :0\to 1}.[3] Intuitively, h is a non-invertible homotopy from f {\displaystyle f} {\displaystyle f} to g {\displaystyle g} {\displaystyle g}. Indeed, define h {\displaystyle h} {\displaystyle h} by, for x : a → b {\displaystyle x:a\to b} {\displaystyle x:a\to b} in C {\displaystyle C} {\displaystyle C},

h ( x , id 0 ) = f ( x ) , h ( x , id 1 ) = g ( x ) , h ( x , ⇝ ) = g ( x ) ∘ φ a = φ b ∘ f ( x ) . {\displaystyle h(x,\operatorname {id} _{0})=f(x),\,h(x,\operatorname {id} _{1})=g(x),\,h(x,\rightsquigarrow )=g(x)\circ \varphi _{a}=\varphi _{b}\circ f(x).} {\displaystyle h(x,\operatorname {id} _{0})=f(x),\,h(x,\operatorname {id} _{1})=g(x),\,h(x,\rightsquigarrow )=g(x)\circ \varphi _{a}=\varphi _{b}\circ f(x).}

Conversely, given h : C × 2 _ → D {\displaystyle h:C\times {\underline {2}}\to D} {\displaystyle h:C\times {\underline {2}}\to D}, we get f , g , φ {\displaystyle f,g,\varphi } {\displaystyle f,g,\varphi } by f = h ( ⋅ , 0 ) , g = h ( ⋅ , 1 ) {\displaystyle f=h(\cdot ,0),\,g=h(\cdot ,1)} {\displaystyle f=h(\cdot ,0),\,g=h(\cdot ,1)} and φ a = h ( id a , ⇝ ) {\displaystyle \varphi _{a}=h(\operatorname {id} _{a},\rightsquigarrow )} {\displaystyle \varphi _{a}=h(\operatorname {id} _{a},\rightsquigarrow )}.[5]

Bifunctor

A functor whose domain is a product category is called a bifunctor. A bifunctor can be defined in each variable separately in the following sense:

Proposition[6] Each bifunctor

F : A × B → C {\displaystyle F:A\times B\to C} {\displaystyle F:A\times B\to C}

determines the families of the functors, for objects a {\displaystyle a} {\displaystyle a} in A {\displaystyle A} {\displaystyle A} and b {\displaystyle b} {\displaystyle b} in B {\displaystyle B} {\displaystyle B},

F b : A → C , F a : B → C {\displaystyle F_{b}:A\to C,\,F_{a}:B\to C} {\displaystyle F_{b}:A\to C,\,F_{a}:B\to C}

given by

F b a = F ( a , b ) {\displaystyle F_{b}a=F(a,b)} {\displaystyle F_{b}a=F(a,b)} and F b f = F ( f , id b ) {\displaystyle F_{b}f=F(f,\operatorname {id} _{b})} {\displaystyle F_{b}f=F(f,\operatorname {id} _{b})}

for f : a → a ′ {\displaystyle f:a\to a'} {\displaystyle f:a\to a'} and similarly for F a {\displaystyle F_{a}} {\displaystyle F_{a}}. They commute in the sense:

F a ′ g ∘ F b f = F b ′ f ∘ F a g {\displaystyle F_{a'}g\circ F_{b}f=F_{b'}f\circ F_{a}g} {\displaystyle F_{a'}g\circ F_{b}f=F_{b'}f\circ F_{a}g}.

Conversely, given families of functors F b , F a {\displaystyle F_{b},F_{a}} {\displaystyle F_{b},F_{a}} as above, if they commute, they define the bifunctor F : A × B → C {\displaystyle F:A\times B\to C} {\displaystyle F:A\times B\to C} by

F ( f , g ) = F b ′ f ∘ F a g {\displaystyle F(f,g)=F_{b'}f\circ F_{a}g} {\displaystyle F(f,g)=F_{b'}f\circ F_{a}g}.

For example, consider ( a , b ) ↦ Hom ⁡ ( a , b ) : C o p × C → S e t {\displaystyle (a,b)\mapsto \operatorname {Hom} (a,b):C^{op}\times C\to {\mathsf {Set}}} {\displaystyle (a,b)\mapsto \operatorname {Hom} (a,b):C^{op}\times C\to {\mathsf {Set}}}. For each fixed b {\displaystyle b} {\displaystyle b} in B {\displaystyle B} {\displaystyle B}, we have the functor

Hom ⁡ ( − , b ) : C o p → S e t {\displaystyle \operatorname {Hom} (-,b):C^{op}\to {\mathsf {Set}}} {\displaystyle \operatorname {Hom} (-,b):C^{op}\to {\mathsf {Set}}}

by pullback; i.e., f : a → a ′ {\displaystyle f:a\to a'} {\displaystyle f:a\to a'} goes to the function

f ∗ : Hom ⁡ ( a ′ , b ) → Hom ⁡ ( a , b ) {\displaystyle f^{*}:\operatorname {Hom} (a',b)\to \operatorname {Hom} (a,b)} {\displaystyle f^{*}:\operatorname {Hom} (a',b)\to \operatorname {Hom} (a,b)}

defined by f ∗ g = g ∘ f {\displaystyle f^{*}g=g\circ f} {\displaystyle f^{*}g=g\circ f}. On the other hand, Hom ⁡ ( a , − ) : C → S e t {\displaystyle \operatorname {Hom} (a,-):C\to {\mathsf {Set}}} {\displaystyle \operatorname {Hom} (a,-):C\to {\mathsf {Set}}} is defined by pushforward; i.e., f ↦ f ∗ = f ∘ − {\displaystyle f\mapsto f_{*}=f\circ -} {\displaystyle f\mapsto f_{*}=f\circ -}. Clearly, these two functors commute (the associativity of composition) and so, by the proposition, we get the functor called the Hom functor

Hom ⁡ ( − , − ) : C o p × C → S e t , {\displaystyle \operatorname {Hom} (-,-):C^{op}\times C\to {\mathsf {Set}},} {\displaystyle \operatorname {Hom} (-,-):C^{op}\times C\to {\mathsf {Set}},}

which is explicitly given as: ( f , g ) ↦ ( h ↦ g ∘ h ∘ f ) . {\displaystyle (f,g)\mapsto (h\mapsto g\circ h\circ f).} {\displaystyle (f,g)\mapsto (h\mapsto g\circ h\circ f).}

There is a similar result for natural transformations between bifunctors:

Proposition[7] Let F , G : A , B → C {\displaystyle F,G:A,B\to C} {\displaystyle F,G:A,B\to C} be bifunctors and

α = { α a , b : F ( a , b ) → G ( a , b ) ∣ a ∈ Ob ⁡ ( A ) , b ∈ Ob ⁡ ( B ) } {\displaystyle \alpha =\{\alpha _{a,b}:F(a,b)\to G(a,b)\mid a\in \operatorname {Ob} (A),b\in \operatorname {Ob} (B)\}} {\displaystyle \alpha =\{\alpha _{a,b}:F(a,b)\to G(a,b)\mid a\in \operatorname {Ob} (A),b\in \operatorname {Ob} (B)\}}

a family of morphisms. Then α : F → G {\displaystyle \alpha :F\to G} {\displaystyle \alpha :F\to G} is a natural transformation if and only if it is natural in the first variable and the second variable separately; i.e., for each object b {\displaystyle b} {\displaystyle b} in B {\displaystyle B} {\displaystyle B},

α − , b : F ( − , b ) → G ( − , b ) {\displaystyle \alpha _{-,b}:F(-,b)\to G(-,b)} {\displaystyle \alpha _{-,b}:F(-,b)\to G(-,b)}

is a natural transformation and similarly in the second variable.

References

  1. Mac Lane 1978, p. 37.
  2. Mac Lane 1978, Ch. II., § 5., Exercise 2.
  3. Mac Lane 1978, Ch. II., § 3.
  4. Mac Lane 1978, Ch. II., § 5., Exercise 1.
  5. Mac Lane 1978, Ch. II., § 4., Exercise 8.
  6. Mac Lane 1978, Ch. II., § 3., Proposition 1.
  7. Mac Lane 1978, Ch. II., § 3., Proposition 2.