Cartesian Closed Categories

Cartesian Closure When Closure Fails Exponentials in a Presheaf Category Function Types and the Logic of Presheaves

Cartesian Closure

An adjunction can be discovered or demanded. In \(\mathbf{Set}\) it was discovered. The bijection between functions of two arguments and functions valued in function sets was already there, waiting to be recognized as \(- \times B \dashv (-)^B\). Demanding the same pattern of an arbitrary category is a strong condition, and the categories that meet it are those whose objects can hold the maps between objects of their own kind. Such a category carries an internal notion of function.

Definition: Cartesian Closed Category

A category \(\mathscr{A}\) is cartesian closed if it has finite products, that is, binary products and a terminal object, and if for every object \(B\) the functor \(- \times B : \mathscr{A} \to \mathscr{A}\) has a right adjoint, written \((-)^B\). For objects \(B\) and \(C\), the object \(C^B\) is the exponential of \(C\) by \(B\). Adjointness says that for all objects \(A\), \(B\), \(C\) of \(\mathscr{A}\) there is a bijection \[ \mathscr{A}(A \times B, C) \cong \mathscr{A}(A, C^B), \] natural in \(A\) and in \(C\).

The definition asks for a right adjoint, not for a formula, so \(C^B\) is pinned down only up to isomorphism and a cartesian closed structure carries a choice of exponentials along with it. The counit of \(- \times B \dashv (-)^B\) has components \[ \operatorname{ev}_{B,C} : C^B \times B \to C , \] the evaluation maps, and by the transpose formulae the bijection of the definition, read from right to left, sends \(\bar{h} : A \to C^B\) to \(\operatorname{ev}_{B,C} \circ (\bar{h} \times 1_B)\). A map out of a product is recovered from its transpose by feeding the transpose its second argument.

Naturality in the exponent \(B\) is absent from the definition, and it need not be imposed, because it follows. Fix \(C\) and let \(g : B' \to B\) be a map. The exponential is made contravariantly functorial in the exponent by defining \(g^* : C^B \to C^{B'}\) to be the transpose of \(\operatorname{ev}_{B,C} \circ (1_{C^B} \times g)\), which is to say the unique map with \[ \operatorname{ev}_{B',C} \circ (g^* \times 1_{B'}) = \operatorname{ev}_{B,C} \circ (1_{C^B} \times g) . \] With that definition the bijection is natural in \(B\) as well.

The transposes agree. Let \(h : A \times B \to C\) with transpose \(\bar{h} : A \to C^B\). Since a map into an exponential is determined by its composite with the evaluation map, it is enough to compare the two candidates after that composition, and \[ \begin{align*} \operatorname{ev}_{B',C} \circ \big((g^* \circ \bar{h}) \times 1_{B'}\big) &= \operatorname{ev}_{B',C} \circ (g^* \times 1_{B'}) \circ (\bar{h} \times 1_{B'}) \\\\ &= \operatorname{ev}_{B,C} \circ (1_{C^B} \times g) \circ (\bar{h} \times 1_{B'}) \\\\ &= \operatorname{ev}_{B,C} \circ (\bar{h} \times 1_B) \circ (1_A \times g) \\\\ &= h \circ (1_A \times g) . \end{align*} \] The second equality is the defining property of \(g^*\), and the third holds because the product of the two maps \(\bar{h}\) and \(g\) may be formed one coordinate at a time, in either order. The last line is the image of \(h\) under precomposition with \(1_A \times g\), so \(g^* \circ \bar{h}\) is the transpose of \(h \circ (1_A \times g)\), which is exactly the naturality square in \(B\).

Sets

The category \(\mathbf{Set}\) is cartesian closed, and it is the example the definition was reverse engineered from. It has finite products, the product of sets together with a one-element set as terminal object, and the currying adjunction is the required right adjoint, with the exponential \(C^B\) the set of functions from \(B\) to \(C\). The evaluation map of the definition is the function \((h, b) \mapsto h(b)\) recorded there, so the abstract counit is the concrete act of applying a function to an argument.

Small categories

The category \(\mathbf{Cat}\) of small categories is cartesian closed, with the exponential \(\mathscr{C}^{\mathscr{B}} = [\mathscr{B}, \mathscr{C}]\) the functor category. Three things have to hold: that \(\mathbf{Cat}\) has finite products, that \([\mathscr{B}, \mathscr{C}]\) is again small and so is an object of \(\mathbf{Cat}\), and that the currying isomorphism already proved for functor categories is an adjunction.

The product category \(\mathscr{A} \times \mathscr{B}\), equipped with the two coordinate projections, is a product in \(\mathbf{Cat}\). Its objects, maps, composition and identities are all formed coordinatewise, so a functor \(\mathscr{X} \to \mathscr{A} \times \mathscr{B}\) is precisely a pair of functors \(\mathscr{X} \to \mathscr{A}\) and \(\mathscr{X} \to \mathscr{B}\), which is the universal property. The category \(\mathbf{1}\) with a single object and only its identity map is terminal, every functor into it being forced.

Smallness of \([\mathscr{B}, \mathscr{C}]\) follows from the argument that made \(\mathbf{Cat}\) locally small. A functor between small categories is set-sized data, so the functors \(\mathscr{B} \to \mathscr{C}\) form a set. A natural transformation between two of them is a family of maps of \(\mathscr{C}\) indexed by the objects of \(\mathscr{B}\), and both indexing collection and value collection are sets, so the natural transformations form a set as well. Hence \([\mathscr{B}, \mathscr{C}]\) is small.

Currying for functor categories supplies the adjunction. For small \(\mathscr{A}\), \(\mathscr{B}\) and \(\mathscr{C}\) it gives an isomorphism of categories \([\mathscr{A} \times \mathscr{B}, \mathscr{C}] \cong [\mathscr{A}, [\mathscr{B}, \mathscr{C}]]\), sending a functor \(D\) to \(\widehat{D}\) with \(\widehat{D}(A) = D(A, -)\) on objects and \(\widehat{D}(u) = D(u, -)\) on maps. Reading off the objects on the two sides is a bijection \[ \mathbf{Cat}\big(\mathscr{A} \times \mathscr{B}, \mathscr{C}\big) \cong \mathbf{Cat}\big(\mathscr{A}, [\mathscr{B}, \mathscr{C}]\big) . \]

What the definition demands beyond the bijection is naturality in \(\mathscr{A}\) and \(\mathscr{C}\), and the explicit formula for \(\widehat{D}\) supplies both. For a functor \(K : \mathscr{A}' \to \mathscr{A}\) the two functors \(\widehat{D \circ (K \times 1_{\mathscr{B}})}\) and \(\widehat{D} \circ K\) send an object \(A'\) of \(\mathscr{A}'\) to \(D(KA', -)\) and a map \(u\) of \(\mathscr{A}'\) to \(D(Ku, -)\), so they agree.

For a functor \(L : \mathscr{C} \to \mathscr{C}'\) the candidate right adjoint acts by postcomposition, \(L_* = [\mathscr{B}, L]\), and both \(\widehat{L \circ D}\) and \(L_* \circ \widehat{D}\) send \(A\) to \(L \circ D(A, -)\) and \(u\) to \(L \circ D(u, -)\). The bijection is therefore natural in both variables, and \(- \times \mathscr{B} \dashv [\mathscr{B}, -]\) on \(\mathbf{Cat}\).

Examples that fit tell little about the reach of a definition. The instructive question is which familiar categories fail to be cartesian closed, and what the failure costs them.

When Closure Fails

The two examples so far might suggest that any category whose maps assemble into an object of the same kind is cartesian closed. Vector spaces are the standard warning. Over a field \(k\), the linear maps \(V \to W\) form a vector space under pointwise addition and scaling, so \(\mathbf{Vect}_k\) has spaces of maps in the most literal sense available, and it is still not cartesian closed. The space of linear maps is a perfectly good object. It is simply adjoint to the wrong operation.

The direct sum defeats closure

Finite products are present. The direct sum \(V \oplus W\) with its two coordinate projections is a product in \(\mathbf{Vect}_k\), since a linear map \(U \to V \oplus W\) is exactly a pair of linear maps \(U \to V\) and \(U \to W\), read off coordinatewise. The zero space \(\{0\}\) is terminal and initial at once, the zero map being the only linear map into it and the only one out of it.

Suppose \(\mathbf{Vect}_k\) were cartesian closed and fix an object \(B\). Then \(- \times B\) has a right adjoint, and \(\mathbf{Vect}_k\) is locally small, the linear maps between two vector spaces forming a set, so left adjoints preserve colimits applies to it. An initial object is the colimit of the empty diagram, so preservation forces \(\{0\} \times B\) to be initial in \(\mathbf{Vect}_k\). The product is the direct sum, and \[ \{0\} \oplus B \cong B , \] the isomorphism sending \((0, b)\) to \(b\).

So \(B\) would be initial, and since initial objects are unique up to isomorphism, every object \(B\) whatsoever would be isomorphic to \(\{0\}\). The field \(k\) is itself a vector space over \(k\) and is not the zero space, a field having \(1 \neq 0\). The supposition fails, and \(\mathbf{Vect}_k\) is not cartesian closed.

The isomorphism \(0 \times B \cong 0\) in \(\mathbf{Set}\) is the statement just refuted, transported to another category. It was obtained from the currying adjunction as the categorical form of the annihilation of zero. Cartesian closure casts an arithmetic shadow, and the shadow is one that \(\mathbf{Vect}_k\) declines to cast, because its initial object is also its terminal object and a product with a terminal object absorbs nothing.

Bilinearity, and the operation that fits

The reason \([V, W]\), the space of linear maps from \(V\) to \(W\), fails to be an exponential is worth isolating, because the failure is precise rather than accidental.

A linear map \(\varphi : U \to [V, W]\) is the same data as a function \(b : U \times V \to W\) with \(b(u, v) = \varphi(u)(v)\). Linearity of \(\varphi\) makes \(b\) linear in its first argument, and linearity of each value \(\varphi(u)\) makes it linear in the second. Maps into \([V, W]\) therefore correspond to bilinear maps out of \(U \times V\). Linear maps \(U \oplus V \to W\) are pairs of linear maps, since such a map is determined by its restrictions to the two summands and any pair of linear maps on the summands arises from one. That is a different correspondence altogether.

The adjunction pattern survives once the operation on the left is changed to fit. The tensor product \(U \otimes V\) is the vector space whose defining property is exactly the one now wanted. Linear maps \(U \otimes V \to W\) correspond to bilinear maps \(U \times V \to W\). Its construction is not carried out here. Composing the two correspondences gives \[ \mathbf{Vect}_k\big(U \otimes V, W\big) \cong \mathbf{Vect}_k\big(U, [V, W]\big) , \] natural in \(U\) and in \(W\), since both correspondences are given by composition. A category carrying an adjunction of this shape for an operation that need not be the categorical product is called monoidal closed, and cartesian closure is the case where the operation is the product.

The distinction is not bookkeeping. The tensor product is not the categorical product in \(\mathbf{Vect}_k\), the direct sum already being that, and in finite dimensions the two are told apart by a dimension count, one multiplying where the other adds.

So \(U \otimes V\) arrives with no projections and no diagonal handed to it by a universal property, and a map out of a tensor product cannot in general read its two inputs separately, copy one of them, or throw one away. Compositional accounts of learning systems, in which a parameter is consumed by the process it feeds rather than duplicated across it, are naturally staged in monoidal closed rather than cartesian closed categories. The difference between the two is the difference this section has just measured.

Sets and small categories are closed, vector spaces are not. The category the rest of the page is about lies between the two in difficulty. Presheaf categories are cartesian closed, but their exponentials are not computed pointwise, and locating them takes nearly everything the surrounding pages have built.

Exponentials in a Presheaf Category

Throughout this section \(\mathbf{A}\) is a small category and presheaves on it are written \(X\), \(Y\), \(Z\).

Convention. The presheaf category \([\mathbf{A}^{\mathrm{op}}, \mathbf{Set}]\) is abbreviated \(\hat{\mathbf{A}}\) for the remainder of the page, since its hom-sets are displayed repeatedly in the argument ahead and the unabbreviated name would not fit on a line. It is locally small, a map of presheaves being a family of functions indexed by the objects of \(\mathbf{A}\) and so an element of a set-indexed product of sets.

Half of cartesian closure is already in hand. Presheaf categories are complete and cocomplete, so finite products exist, and the same result records that each evaluation functor preserves them, so that products of presheaves are computed pointwise. What is missing is the exponential, and the first thing to establish is that it cannot also be pointwise.

What the exponential is forced to be

When \(\mathbf{A}\) is discrete a presheaf is nothing but a family of sets indexed by the objects, a map of presheaves is a family of functions, and everything in sight is computed coordinate by coordinate. Cartesian closure is then inherited from \(\mathbf{Set}\) coordinatewise, exponentials included. The general case is not like this, and the quickest way to see what it must look like instead is to assume the conclusion and read off the consequence.

Suppose then that \(\hat{\mathbf{A}}\) were cartesian closed, with exponentials \(Z^Y\). Evaluating a presheaf at an object is the same as probing it by a representable, so for every \(A \in \mathbf{A}\) the Yoneda lemma followed by the adjointness bijection would give \[ Z^Y(A) \cong \hat{\mathbf{A}}\big(H_A, Z^Y\big) \cong \hat{\mathbf{A}}\big(H_A \times Y, Z\big) . \] The exponential is thereby forced. Its value at \(A\) has to be the set of maps \(H_A \times Y \to Z\).

Notice what that value is not. It is not \(Z(A)^{Y(A)}\), and exponentials in a presheaf category are accordingly not generally computed pointwise, in contrast with the products and colimits of the pages leading here. The value at \(A\) sees not only \(A\) but everything that maps into it.

Turn the consequence into a definition. Given presheaves \(Y\) and \(Z\), let \[ Z^Y(A) = \hat{\mathbf{A}}\big(H_A \times Y, Z\big) \] for each object \(A\), and for a map \(f : A' \to A\) of \(\mathbf{A}\) let \(Z^Y(f)\) send \(\sigma : H_A \times Y \to Z\) to \(\sigma \circ (H_f \times 1_Y) : H_{A'} \times Y \to Z\), where \(H_f : H_{A'} \to H_A\) is the image of \(f\) under the Yoneda embedding. Because \(H_\bullet\) is a functor and composition is associative, this assignment respects identities and composites in the direction required of a presheaf, so \(Z^Y\) is an object of \(\hat{\mathbf{A}}\).

Evaluation, and the map to be inverted

A candidate exponential is not an exponential until a bijection is produced, and a bijection produced one object at a time would not be enough. Adjointness demands naturality in \(X\) and in \(Z\), and naturality is a property of a map, not of a family of bijections. So the map comes first. In a cartesian closed category the map is composition with the counit, and here the counit can be written down.

Define \(\operatorname{ev} : Z^Y \times Y \to Z\) by \[ \operatorname{ev}_A(\sigma, y) = \sigma_A(1_A, y) \] for \(A \in \mathbf{A}\), \(\sigma \in Z^Y(A)\) and \(y \in Y(A)\), the product being pointwise. This is the only reasonable thing to write. An element of \(Z^Y(A)\) is a map \(H_A \times Y \to Z\) and the one element of \(H_A(A)\) that is always available is the identity.

Evaluation is natural. Let \(f : A' \to A\) in \(\mathbf{A}\). The presheaf \(Z^Y \times Y\) carries \((\sigma, y)\) to \(\big(\sigma \circ (H_f \times 1_Y), (Yf)(y)\big)\), and \[ \begin{align*} \operatorname{ev}_{A'}\big(\sigma \circ (H_f \times 1_Y), (Yf)(y)\big) &= \sigma_{A'}\big(H_f(1_{A'}), (Yf)(y)\big) \\\\ &= \sigma_{A'}\big(f, (Yf)(y)\big) \\\\ &= (Zf)\big(\sigma_A(1_A, y)\big) \\\\ &= (Zf)\big(\operatorname{ev}_A(\sigma, y)\big) , \end{align*} \] the second line because \(H_f\) sends \(1_{A'}\) to \(f \circ 1_{A'}\), and the third by the naturality of \(\sigma : H_A \times Y \to Z\) at \(f\), applied to the element \((1_A, y)\), whose image under \(H_A(f) \times Y(f)\) is \((1_A \circ f, (Yf)(y))\).

With evaluation in place, define for every presheaf \(X\) \[ \Theta_X : \hat{\mathbf{A}}\big(X, Z^Y\big) \to \hat{\mathbf{A}}\big(X \times Y, Z\big), \quad \Theta_X(\varphi) = \operatorname{ev} \circ (\varphi \times 1_Y) , \] whose value on components reads \(\Theta_X(\varphi)_A(x, y) = \big(\varphi_A(x)\big)_A(1_A, y)\).

Three properties come for nothing. The values of \(\Theta_X\) are maps of presheaves, being composites of such maps. It is natural in \(X\), since precomposing \(\varphi\) with \(k : X' \to X\) precomposes \(\Theta_X(\varphi)\) with \(k \times 1_Y\). And it is natural in \(Z\). For \(t : Z \to Z'\), postcomposition with \(t\) is a map of presheaves \(t_* : Z^Y \to (Z')^Y\), by associativity of composition, and it makes \(Z \mapsto Z^Y\) a functor, identities and composites being preserved for the same reason. Naturality reduces to the identity \(\operatorname{ev}' \circ (t_* \times 1_Y) = t \circ \operatorname{ev}\), since precomposing it with \(\varphi \times 1_Y\) turns \(\operatorname{ev}' \circ \big((t_* \circ \varphi) \times 1_Y\big)\) into \(t \circ \Theta_X(\varphi)\), and both of its sides send \((\sigma, y)\) to \(t_A(\sigma_A(1_A, y))\).

Everything therefore rests on a single question, and it is a question about one map rather than about a family of sets: is \(\Theta_X\) a bijection?

Two tools

The first tool is the dual of the fact that representables preserve limits. Applied in \(\mathscr{S}^{\mathrm{op}}\), which is locally small exactly when \(\mathscr{S}\) is, that proposition concerns the covariant hom-functor of the opposite category based at an object \(W\), which is the contravariant hom-functor \(\mathscr{S}(-, W)\). A colimit cocone on a diagram \(D\) is a limit cone on \(D^{\mathrm{op}}\). The dualization was recorded when the proposition was proved, there in isomorphism form.

In cone form the statement reads as follows. If \(\big(D(I) \to C\big)_{I \in \mathbf{I}}\) is a colimit cocone in a locally small \(\mathscr{S}\), then \[ \Big(\mathscr{S}(C, W) \to \mathscr{S}\big(D(I), W\big)\Big)_{I \in \mathbf{I}^{\mathrm{op}}}, \] with legs given by precomposition with the coprojections, is a limit cone in \(\mathbf{Set}\). Colimits go in, limits come out.

The second tool converts cartesian closure of \(\mathbf{Set}\) into a statement about presheaves. Closure is not a curiosity about sets. It propagates.

Proposition: Products with a Fixed Presheaf Preserve Colimits

Let \(\mathbf{A}\) be a small category and \(Y\) a presheaf on \(\mathbf{A}\). Then the functor \(- \times Y : \hat{\mathbf{A}} \to \hat{\mathbf{A}}\) preserves colimits.

Proof

Reduction to sets. Let \(\big(D(I) \to C\big)_{I \in \mathbf{I}}\) be a colimit cocone in \(\hat{\mathbf{A}}\) on a diagram \(D : \mathbf{I} \to \hat{\mathbf{A}}\) of small shape. Fix \(A \in \mathbf{A}\). Evaluation at \(A\) preserves all limits and all colimits, so applying it to the given cocone yields a colimit cocone \(\big(D(I)(A) \to C(A)\big)_{I \in \mathbf{I}}\) in \(\mathbf{Set}\), and applying it to the cocone \(\big(D(I) \times Y \to C \times Y\big)_{I}\) yields the family \(\big(D(I)(A) \times Y(A) \to C(A) \times Y(A)\big)_{I}\).

Sets do the work. \(\mathbf{Set}\) is locally small and cartesian closed, so \(- \times Y(A)\) is a left adjoint and therefore preserves colimits. The second family above is thus a colimit cocone in \(\mathbf{Set}\), for every \(A\).

Back up to presheaves. Every diagram of small shape in \(\mathbf{Set}\) has a colimit, and \(\mathbf{A}^{\mathrm{op}}\) is small along with \(\mathbf{A}\), so the criterion that colimits in a functor category are pointwise applies to the diagram \(I \mapsto D(I) \times Y\). Its second half states that a cocone whose image under every evaluation functor is a colimit cocone is itself one. Hence \(\big(D(I) \times Y \to C \times Y\big)_{I \in \mathbf{I}}\) is a colimit cocone in \(\hat{\mathbf{A}}\), which is what preservation of colimits asks.

The proof is worth reading twice for its shape rather than its content. The currying adjunction on \(\mathbf{Set}\), the single concrete adjunction these pages began with, is fed to the preservation theorem, and what comes out is a statement about presheaves on an arbitrary small category. The bootstrap is the whole mechanism.

The exponential exists

Theorem: Presheaf Categories are Cartesian Closed

Let \(\mathbf{A}\) be a small category. Then the presheaf category \(\hat{\mathbf{A}}\) is cartesian closed, with exponentials given by \[ Z^Y(A) = \hat{\mathbf{A}}\big(H_A \times Y, Z\big) \] and with the adjointness bijection \(\hat{\mathbf{A}}(X \times Y, Z) \cong \hat{\mathbf{A}}(X, Z^Y)\) inverse to composition with the evaluation map.

Proof

Finite products exist and \(\Theta_X\) has been constructed, natural in \(X\) and in \(Z\). It remains to prove that \(\Theta_X\) is a bijection for every presheaf \(X\), since a natural bijection is exactly what adjointness requires.

Representable \(X\). Take \(X = H_A\) and let \(\varphi : H_A \to Z^Y\). The Yoneda lemma classifies \(\varphi\) by the element \(\varphi_A(1_A)\) of \(Z^Y(A)\), an element that is itself a map \(H_A \times Y \to Z\). We claim it is the same map as \(\Theta_{H_A}(\varphi)\).

Let \(B \in \mathbf{A}\), let \(p \in H_A(B)\), a map \(p : B \to A\), and let \(y \in Y(B)\). Naturality of \(\varphi\) at \(p\) gives \(\varphi_B(p) = \varphi_B\big(H_A(p)(1_A)\big) = Z^Y(p)\big(\varphi_A(1_A)\big) = \varphi_A(1_A) \circ (H_p \times 1_Y)\), and evaluating both sides at \(B\) on the element \((1_B, y)\), \[ \Theta_{H_A}(\varphi)_B(p, y) = \big(\varphi_B(p)\big)_B(1_B, y) = \big(\varphi_A(1_A)\big)_B(p, y) , \] since \(H_p\) sends \(1_B\) to \(p \circ 1_B\). So \(\Theta_{H_A}\) agrees with the Yoneda bijection and is itself a bijection.

Arbitrary \(X\), by density. Every presheaf is a colimit of representables. Writing \(P : \mathbf{E}(X) \to \mathbf{A}\) for the projection from the category of elements, the tautological cocone \(\big(\alpha_x : H_A \to X\big)_{(A, x) \in \mathbf{E}(X)}\) exhibits \(X\) as the colimit of \(H_\bullet \circ P\). Its shape is small because \(\mathbf{A}\) is. Apply the two tools to this one cocone.

The first tool, with \(W = Z^Y\), turns it into a limit cone \[ \Big(\hat{\mathbf{A}}\big(X, Z^Y\big) \to \hat{\mathbf{A}}\big(H_A, Z^Y\big)\Big)_{(A, x)}, \] with legs \(\varphi \mapsto \varphi \circ \alpha_x\).

The second tool says that \(\big(\alpha_x \times 1_Y\big)_{(A, x)}\) is again a colimit cocone, now exhibiting \(X \times Y\) as the colimit of \((H_\bullet \circ P) \times Y\), and the first tool applied to it, with \(W = Z\), gives a second limit cone \[ \Big(\hat{\mathbf{A}}\big(X \times Y, Z\big) \to \hat{\mathbf{A}}\big(H_A \times Y, Z\big)\Big)_{(A, x)}, \] with legs \(\psi \mapsto \psi \circ (\alpha_x \times 1_Y)\).

The two cones lie over different diagrams of shape \(\mathbf{E}(X)^{\mathrm{op}}\), and \(\Theta\) is the bridge between them. Its component \(\Theta_{H_A}\) at the object \((A, x)\) is a bijection by the representable case, and naturality of \(\Theta\) in its presheaf variable makes these components commute with the maps of both diagrams, so they constitute an isomorphism of diagrams. Composing the first limit cone with that isomorphism yields a limit cone on the second diagram, with unchanged vertex \(\hat{\mathbf{A}}(X, Z^Y)\) and with legs \(\varphi \mapsto \Theta_X(\varphi) \circ (\alpha_x \times 1_Y)\), the same naturality identifying \(\Theta_{H_A}(\varphi \circ \alpha_x)\) with \(\Theta_X(\varphi) \circ (\alpha_x \times 1_Y)\).

Two limit cones on one diagram remain. By the uniqueness of limits there is a unique isomorphism between their vertices commuting with the legs, and by the universal property any map between the vertices commuting with the legs is that one. The displayed identity of legs says precisely that \(\Theta_X\) commutes with them. Hence \(\Theta_X\) is an isomorphism in \(\mathbf{Set}\), that is, a bijection, and \(\hat{\mathbf{A}}\) is cartesian closed.

Read backwards, the proof is an inventory of the surrounding pages. Yoneda supplies the representable case, density reduces the general case to it, representables preserving limits converts colimits of presheaves into limits of hom-sets, and the preservation theorem for adjoints, applied to currying in \(\mathbf{Set}\), supplies the one step where the two variables interact. The exponential of presheaves is not built by hand. It is assembled out of results that were proved for other reasons.

Function Types and the Logic of Presheaves

A definition earns its keep by what it turns out to be equivalent to. Cartesian closure has two such second lives, one in the theory of programming languages and one in the theory of toposes, and the exponential just constructed sits at the junction.

Types

The correspondence between logic and type theory lines up propositions with types: a conjunction with a product type, a disjunction with a sum type, an implication with a function type, truth with the unit type and falsity with the empty type.

Read that dictionary once more with a cartesian closed category in view and a third column appears. A product type is a product, a function type \(B \to C\) is an exponential \(C^B\), and the unit type is the terminal object. The transposition that carries a map \(A \times B \to C\) to a map \(A \to C^B\) is the operation a programmer knows as currying and a logician as the deduction theorem. Evaluation \(\operatorname{ev} : C^B \times B \to C\) is function application.

Several rows of the dictionary reach past cartesian closure and it is worth saying where the boundary lies. Sum types and the empty type ask for coproducts and an initial object, which a cartesian closed category is not required to have. The dependent function and pair types ask for more still, a compatibility of exponentials with slicing that the present definition does not mention.

What the theorem of the previous section delivers is the simply typed fragment, and it delivers it exactly. The syntactic category built from a simply typed calculus is cartesian closed, and every cartesian closed category interprets that calculus, the two passages being mutually inverse up to the appropriate notion of sameness. That equivalence, due to Joachim Lambek, is a substantial theorem, and it is not proved here. What is proved here is that presheaf categories are on the semantic side of it.

Toposes

The other second life begins from an observation about \(\mathbf{Set}\) already on record. Subsets of a set \(A\) correspond to functions \(A \to 2\), so that the power set is the exponential \(2^A\), and the two-element set does for subsets what an exponential does for maps. That set turns a property into an object of the category. An object with this behaviour is called a subobject classifier. Its formal definition requires the notion of subobject, which this page does not develop, and the discussion here goes no further than naming the pattern.

A topos is a cartesian closed category with finite limits and a subobject classifier. Of the three requirements, presheaf categories have now been shown to meet the first, and they meet the second with room to spare, having all limits and not merely the finite ones. They meet the third as well, though stating the classifier explicitly would call for the definition just deferred. Taking \(\mathbf{A}\) to be the terminal category recovers \(\mathbf{Set}\). So cartesian closure, the part established above, is the hard third of the statement that every presheaf category is a topos.

The name carries two readings that pull in opposite directions and are both accurate. A topos is a universe of sets, in which one may reason about objects as though they were sets, with the caution that the reasoning permitted is intuitionistic rather than classical. A topos is also a generalized space, of which the presheaf categories are the tamest examples, and the topological properties of a space can be read off from categorical properties of an associated topos. Neither reading is developed further here.

Why the exponential could not be pointwise

The formula \(Z^Y(A) = \hat{\mathbf{A}}(H_A \times Y, Z)\) looked at first like an accident of the proof. It is not. Read an object \(A\) of \(\mathbf{A}\) as a stage of information and a map \(A' \to A\) as a passage to a later stage, so that a presheaf assigns to every stage the data available there. Then \(Z^Y(A)\) is not the set of functions from \(Y(A)\) to \(Z(A)\), which would be a promise about the present alone. It is the set of ways of turning \(Y\) into \(Z\) at \(A\) and at every stage beyond it, coherently. A function type is a commitment that must survive every future refinement of what is known.

That commitment is why the internal logic of a presheaf category is intuitionistic. An implication holds at a stage when it holds at every later stage, so establishing one requires a construction that keeps working as information grows. The law of the excluded middle, which would let a disjunction be settled at the present stage without evidence for either half, need not be available. The same discipline is what a proof assistant enforces when it demands a term rather than a truth value, and the failure of pointwise computation for exponentials is the categorical shadow of that demand.

The arc of these pages closes on itself. It opened by asking what a functor with an adjoint does to limits, and the answer, that a right adjoint preserves them, looked at the time like a technical convenience. That convenience was the engine. Applied to the diagonal it explained why limits commute with limits. Applied to currying in \(\mathbf{Set}\), and combined with density and the Yoneda lemma, it produced an exponential in a category no one constructed by hand. With that exponential came a universe in which sets, spaces, and the terms of a typed calculus are all describable as the same kind of object.