dependent product


Category theory

Limits and colimits

Dependent products


The dependent product is a universal construction in category theory. It generalizes the internal hom, and hence indexed products, to the situation where the codomain may depend on the domain, hence it forms sections of a bundle.

The dual concept is that of dependent sum.

The concept of cartesian product of sets makes sense for any family of sets, while the category-theoretic product makes sense for any family of objects. In each case, however, the family is indexed by a set; how can we get a purely category-theoretic product indexed by an object?

First we need to describe a family of objects indexed by an object; it's common to interpret this as a bundle, that is an arbitrary morphism g:BAg: B \to A. (In Set, AA would be the index set of the family, and the fiber of the bundle over an element xx of AA would be the set indexed by xx. Conversely, given a family of sets, BB can be constructed as its disjoint union.)

In these terms, the cartesian product of the family of sets is the set SS of (global) sections of the bundle. This set comes equipped with an evaluation map ev:S×ABev: S \times A \to B such that

S×AevBgA S \times A \stackrel{ev}\to B \stackrel{g}\to A

equals the usual product projection from S×AS \times A to AA; So evev is a morphism in the over category Set/ASet/A. The universal property of SS is that, given any set TT and morphism T×ABT \times A \to B in Set/ASet/A, there's a unique map TST \to S that makes everything commute.

In other words, SS and evev define an adjunction from SetSet to Set/ASet/A in which taking the product with AA is the left adjoint and applying this universal property is the right adjoint. This is the basis for the definition below, but we add one further level of generality: we move everything from SetSet to an arbitrary over category 𝒞/I\mathcal{C}/I.


Let 𝒞\mathcal{C} be a category, and g:BAg\colon B \to A a morphism in 𝒞\mathcal{C}, such that pullbacks along this morphism exist. These then constitute the base change functor between the corresponding slice categories

g *:𝒞 /A𝒞 /B. g^* \colon \mathcal{C}_{/A} \to \mathcal{C}_{/B} \,.

The dependent product along gg is, if it exists, the right adjoint functor g::𝒞 /B𝒞 /A\prod_g \colon : \mathcal{C}_{/B} \to \mathcal{C}_{/A} to the base change along gg

(g * g):𝒞 /B gg *𝒞 /A. (g^* \dashv \prod_g) \colon \mathcal{C}_{/B} \stackrel{\overset{g^* }{\leftarrow}}{\underset{\prod_g}{\to}} \mathcal{C}_{/A} \,.

So a category with all dependent products is necessarily a category with all pullbacks.


Relation to spaces of sections


Let 𝒞\mathcal{C} be a cartesian closed category with all limits and note that 𝒞/*𝒞\mathcal{C}/*\cong\mathcal{C}. Let XCX \in C be any object and identify it with the terminal morphism X*X\to *. Then the dependent product functor

𝒞/X xX×X𝒞 \mathcal{C}/X \stackrel{\overset{- \times X}{\leftarrow}}{\underset{\prod_{x \in X}}{\to}} \mathcal{C}

sends bundles PXP \to X to their object of sections.

xXP xΓ X(P):=[X,P]× [X,X]{id}. \prod_{x \in X} P_x \simeq \Gamma_X(P) := [X,P] \times_{[X,X]} \{id\} \,.

One computes for every A𝒞A \in \mathcal{C}

𝒞/X(A×X,PX) =𝒞(A×X,P)× 𝒞(A×X,X){p 2} =𝒞(A,[X,P])× 𝒞(A,[X,X]){p˜ 2} =𝒞(A,[X,P]× [X,X]{Id}) =𝒞(A,Γ X(P)). \begin{aligned} \mathcal{C}/X(A \times X, P \to X) &= \mathcal{C}(A \times X, P ) \times_{\mathcal{C}(A \times X, X)} \{p_2\} \\ & = \mathcal{C}(A, [X,P]) \times_{\mathcal{C}(A,[X,X])} \{\tilde p_2\} \\ &= \mathcal{C}(A, [X,P] \times_{[X,X]} \{Id\}) \\ &= \mathcal{C}(A, \Gamma_X(P)) \end{aligned} \,.

This statement and its proof remain valid in homotopy theory. More in detail, if 𝒞\mathcal{C} is a simplicial model category, XX, AA and X×AX \times A are cofibrant, PP and XX are fibrant and PXP \to X is a fibration, then Γ X(A)\Gamma_X(A) as above is the homotopy-correct derived section space.

Relation to exponential objects / internal homs

As a special case of prop. 1 one obtains exponential objects/internal homs.

Let 𝒞\mathcal{C} have a terminal object *𝒞* \in \mathcal{C}. Let AA and XX in 𝒞\mathcal{C} be objects and let A:A*A \colon A \to * and X:X*X \colon X \to * be the terminal morphisms.


The dependent product along XX of the arrow obtained by base change of AA along XX is the exponential object [X,A][X,A]:

XX *A[X,A]𝒞. \prod_{X} X^* A \simeq [X,A] \in \mathcal{C} \,.

This is essentially a categorified version of the familiar fact that the product nmn\cdot m of two natural numbers can be identified with the sum m++mn\overset{n}{\overbrace{m+\dots +m}} of nn copies of mm.


Consider the chain of equivalences from [X,A][X,A] to XX *A\prod_{X} X^* A in Set: Firstly, the exponential object [X,A][X,A] is characterized in [Y,[X,A]][Y,[X,A]] as right adjoint to [Y×X,A][Y\times X,A]. Secondly, the elements θ\theta of [Y×X,A][Y\times X,A] are in turn in bijection with those functions (y,x)(θ(y,x),x)(y,x)\mapsto (\theta(y,x),x) from [Y×X,A×X][Y\times X,A\times X], that leave the second component fixed. The condition just stated is the definition of arrows in the overcategory Set/X{Set}/X, between the right projections out of Y×XY\times X resp. A×XA\times X. If we identify objects ZSetZ\in{Set} with their terminal morphisms Z:Z*Z:Z\to * in Set/*{Set}/*, those two right projections are the pullbacks X *YX^* Y and X *AX^* A, respectively. Thirdly, thus, the subset of [Y×X,A×X][Y\times X,A\times X] we are interested in corresponds to [X *Y,X *A][X^* Y,X^* A] in Set/X{Set}/X. Finally, the right adjoint to X *X^* is a functor X\prod_{X} from Set/X{Set}/X to Set/*{Set}/*, such that [X *Y,X *A][Y, XX *A][X^* Y,X^* A]\simeq [Y, \prod_{X} X^* A]. Hence XX *A\prod_{X} X^* A must correspond to [X,A][X,A].

Relation to type theory and quantification in logic

The dependent product is the categorical semantics of what in type theory is the formation of dependent product types. Under propositions as types this corresponds to universal quantification.

type theorycategory theory
natural deductionuniversal construction
dependent product typedependent product
type formationX:Typex:XA(x):Type( x:XA(x)):Type\displaystyle\frac{\vdash\: X \colon Type \;\;\;\;\; x \colon X \;\vdash\; A(x)\colon Type}{\vdash \; \left(\prod_{x \colon X} A\left(x\right)\right) \colon Type}(A p 1 p 1 X p 1𝒞)( x:XA(x)𝒞)\left( \array{ A^{\phantom{p_1}} \\ \downarrow^{p_1} \\ X_{\phantom{p_1}}} \in \mathcal{C}\right) \Rightarrow \left( \prod_{x\colon X} A\left(x\right) \in \mathcal{C}\right)
term introductionx:Xa(x):A(x)(xa(x)): x:XA(x)\displaystyle\frac{x \colon X \;\vdash\; a\left(x\right) \colon A\left(x\right)}{\vdash (x \mapsto a\left(x\right)) \colon \prod_{x' \colon X} A\left(x'\right) }
term eliminationf:( x:XA(x))x:Xx:Xf(x):A(x)\displaystyle\frac{\vdash\; f \colon \left(\prod_{x \colon X} A\left(x\right)\right)\;\;\;\; \vdash \; x \colon X}{x \colon X\;\vdash\; f(x) \colon A(x)}
computation rule(ya(y))(x)=a(x)(y \mapsto a(y))(x) = a(x)


Dependent products (and sums) exist in any topos:


For CC a topos and f:AIf : A \to I any morphism in CC, both the left adjoint f:C/AC/I\sum_f : C/A \to C/I as well as the right adjoint f:C/AC/I\prod_f: C/A \to C/I to f *:C/IC/Af^*: C/I \to C/A exist.

Moreover, f *f^* preserves the subobject classifier and internal homs.

This is (MacLaneMoerdijk, theorem 2 in section IV, 7).

The dependent product plays a role in the definition of universe in a topos.


Standard textbook accounts include section A1.5.3 of

and section IV of

Revised on September 9, 2015 03:47:25 by Urs Schreiber (