Open MathsAll courses

Functor stacks, cartesian currying and two-fibre products

Written by GPT-6.1 Sol (OpenAI), October 2026. Original text: CC0.

Two objects can have compatible images without those images being literally equal. A two-fibre product records the chosen comparison isomorphism. A functor of stacks has another kind of compatibility: it acts on every slice and commutes with every restriction. These constructions give products and internal functors for stacks, and they interact well with the associated-stack construction.

Work on a small Grothendieck sieve site \((\mathcal C,J)\). Use the definitions, full universal property and local equivalence criterion in Stackification by cartesian sections on covering sieves, Sections 1–6. Choose ambient universes large enough for the displayed categories of functors and transformations. Base fibre products and points are not assumed. Fibre morphisms and transformations may be noninvertible; only explicitly stated comparison maps are required to be isomorphisms.

The existing Dual and tensor products of locally module stacks, Lemma 2.1 proves gluing for linear functors with stack right adjoints. We retain that result and its hypotheses. The internal functor category below includes all stack functors, and the tensor product in that module-stack lesson is distinct from the cartesian product here.

1. The comparison is part of a two-fibre product

For functors \(r:A\to C\), \(s:B\to C\), define \(A\times_C^2B\) to have objects \((a,b,\phi)\), where \(\phi:r(a)\to s(b)\) is an isomorphism. A morphism to \((a',b',\psi)\) is a pair \((u:a\to a',v:b\to b')\) with

\[ \psi\,r(u)=s(v)\,\phi. \tag{1.1} \]

Neither \(u\) nor \(v\) is required to be invertible. Identities are identity pairs, and composition is componentwise. For a second compatible pair \((u',v')\),

\[ \begin{gathered} \chi\,r(u'u)=s(v')\,\psi\,r(u)\\ =s(v'v)\,\phi, \end{gathered} \tag{1.2} \]

so the composite again satisfies (1.1). Associativity follows in \(A,B\). The projections have a specified invertible natural transformation between their composites to \(C\), with components \(\phi\).

For every category \(D\), a functor \(D\to A\times_C^2B\) is exactly a pair of functors \(F:D\to A\), \(G:D\to B\) with an invertible natural transformation \(rF\to sG\). Equation (1.1) is its naturality equation. A transformation between two such functors is exactly a pair of transformations satisfying that same comparison square at every object of \(D\). These constructions are inverse on objects, arrows, identities and composition. This proves the full comparison-isomorphism universal property, including noninvertible transformations between cones.

The construction is invariant under equivalences of the three categories and coherent isomorphisms of the two functors. Indeed, lift an object of the new product to objects in the two original categories. Transport its comparison isomorphism along those chosen equivalences, then use full faithfulness of the middle equivalence to lift it and its inverse. Full faithfulness also lifts (1.1) and identifies all pairs of arrows. The resulting functor is fully faithful and essentially surjective, hence an equivalence by the full criterion in Equivalences and chosen representatives, Theorem 1.1. A strict equality of images would not permit that transport; Exercise 1 computes the difference.

Now let \(r:\mathsf A\to\mathsf C\), \(s:\mathsf B\to\mathsf C\) be morphisms of category-valued presheaves, with coherent invertible restriction comparisons. Define

\[ \mathsf P(U)=\mathsf A(U)\times^2_{\mathsf C(U)}\mathsf B(U). \tag{1.3} \]

For \(f:V\to U\), write \(\rho^r_a:r_V(f^*a)\to f^*r_U(a)\) and similarly for \(s\). The restricted comparison of a triple is

\[ \begin{gathered} (\rho^s_b)^{-1}\,f^*(\phi)\,\rho^r_a:\\ r_V(f^*a)\longrightarrow s_V(f^*b). \end{gathered} \tag{1.4} \]

Restrict its two component arrows in the original presheaves. Naturality of \(\rho^r,\rho^s\) makes (1.1) hold after this restriction. The unit and composite restriction comparisons are the component comparisons in \(\mathsf A,\mathsf B\); their compatibility with (1.4) is the coherence law for \(r,s\). Thus \(\mathsf P\) is a category-valued presheaf. Applying the preceding cone correspondence on every slice, with (1.4), gives the two-fibre-product universal property for category-valued presheaves and all their transformations.

2. Descent and stackification of the product

Theorem 2.1. If \(\mathsf A,\mathsf B,\mathsf C\) are stacks, then \(\mathsf P\) in (1.3) is a stack.

Proof. Between two triples, its Hom presheaf is the equalizer of the two maps

\[ \begin{gathered} H_{a,a'}\times H_{b,b'} \rightrightarrows H_{r(a),s(b')},\\ (u,v)\longmapsto\psi r(u),\\ (u,v)\longmapsto s(v)\phi. \end{gathered} \tag{2.1} \]

All identifications with restrictions use (1.4). This equalizer is a sheaf: glue the two components in their Hom sheaves; their required equality holds on the cover, hence globally in the last Hom sheaf. Uniqueness is componentwise.

For object descent on a covering sieve \(R\), project a cartesian section of triples to sections in \(\mathsf A\) and \(\mathsf B\). Descend them to \(a\in\mathsf A(U)\), \(b\in\mathsf B(U)\), with their prescribed local identifications. Transport the local comparison isomorphisms to arrows from \(f^*r(a)\) to \(f^*s(b)\), for \(f\in R\). The compatibility equation for the section of triples, including (1.4), says they are a matching family in that Hom sheaf of \(\mathsf C\). Glue them to \(\phi:r(a)\to s(b)\). Their inverses are also a matching family; gluing them proves both inverse identities, so \(\phi\) is an isomorphism. The local identifications with \((a,b,\phi)\) satisfy (1.1), because that is how \(\phi\) was glued. Their section compatibility is the original descent compatibility. Thus they descend the original triples, proving effectiveness. Empty covers are included in these same Hom and object descent arguments. \(\square\)

Write \(\operatorname{St}\) for the associated stack of the linked sieve construction. Its functoriality carries the two projections and their invertible comparison to a morphism

\[ \begin{gathered} K:\operatorname{St}(\mathsf A\times^2_{\mathsf C}\mathsf B)\\ \longrightarrow \operatorname{St}(\mathsf A) \times^2_{\operatorname{St}(\mathsf C)} \operatorname{St}(\mathsf B). \end{gathered} \tag{2.2} \]

This morphism is canonical up to its coherent comparisons, rather than a literal equality of chosen presentations.

Theorem 2.2. The morphism \(K\) is an equivalence for arbitrary category-valued presheaves \(\mathsf A,\mathsf B,\mathsf C\).

Proof: morphisms. First map the original presheaf of triples into the right side of (2.2), using the three units. Coherent unit comparisons transport each original \(\phi\) to the comparison between the two unit-image objects. For two original triples, an arrow between their images is a compatible pair in the sheafifications of the original component Hom presheaves. Represent its two components on a common covering sieve by original arrows \(u,v\). Their compatibility equation holds in the associated stack of \(\mathsf C\). It is therefore equality of the images of the two original arrows in (1.1). The unit's local equality rule allows a further covering refinement on which (1.1) holds in \(\mathsf C\) itself. On that refinement \((u,v)\) is an actual original product morphism. Local character combines these refinements into a cover of the original object.

If two such original product morphisms have equal images, their component arrows have equal associated-stack images. Refine the cover so that both component equalities hold in the original presheaves. Then the original product morphisms are equal there. Thus the map identifies the sheafification of every original product Hom presheaf with the target Hom sheaf: local representatives give surjectivity and the local equality test gives injectivity.

Proof: objects. Take a triple in the right side of (2.2). Locally represent its first and second objects by original \(a,b\); intersect their representing covering sieves. Transport its comparison to an isomorphism between the unit images of \(r(a)\) and \(s(b)\) in \(\operatorname{St}(\mathsf C)\), using the component and unit comparisons. Represent that arrow and its inverse locally by original arrows \(\phi,\tau\). The two inverse equations hold in \(\operatorname{St}(\mathsf C)\); refine once more so that both hold in the original category \(\mathsf C\). These finite simultaneous refinements are allowed by the local equality rule, intersection of covering sieves and local character. Hence \(\phi\) is an actual original isomorphism on the resulting cover, and \((a,b,\phi)\) is an original product object there. Its image is isomorphic to the given triple by the chosen component identifications, which satisfy (1.1) by construction.

The target of (2.2) is a stack by Theorem 2.1. We have proved the sheafified-Hom and local-object hypotheses of the local equivalence criterion for stackification in Section 6 of the linked sieve lesson. Applying that criterion gives exactly the equivalence (2.2). \(\square\)

The terminal category-valued presheaf is already a stack. Taking the middle presheaf terminal in Theorem 2.2 shows that stackification preserves binary cartesian products; iteration gives all finite products with their projection maps. The theorem also preserves the displayed two-fibre products and their comparison isomorphisms. These statements do not assert preservation of every kind of two-categorical limit.

3. Functors on every slice form a stack

For category-valued presheaves \(\mathsf A,\mathsf B\), define

\[ \begin{gathered} \underline{\operatorname{Fun}}(\mathsf A,\mathsf B)(U)\\ =\operatorname{Fun}_{\mathcal C/U}(\mathsf A|_U,\mathsf B|_U). \end{gathered} \tag{3.1} \]

An object acts on the entire slice site, with coherent invertible restriction comparisons. In particular, it has a component functor \(T_f:\mathsf A(V)\to\mathsf B(V)\) for every object \(f:V\to U\) of the slice, with comparisons \(g^*T_f\simeq T_{fg}g^*\). Different arrows with the same domain retain their distinct components. An arrow in (3.1) is a compatible family of natural transformations, with arbitrary components.

Restriction along \(f:V\to U\) means restricting this entire data along \(\mathcal C/V\to\mathcal C/U\). That functor sends \(g\) to \(fg\); no monomorphism hypothesis on \(f\) is needed. These restrictions have their canonical coherent comparisons. For a slice functor \(T\), the notation \(T_{1_U}\) means its component at the identity object of that slice.

Theorem 3.1. If \(\mathsf B\) is a stack, then (3.1) is a stack, for any category-valued presheaf \(\mathsf A\).

Proof: transformations. Fix functors \(T,S\) over \(U\) and compatible local transformations on a covering sieve \(R\). For \(f:V\to U\) and \(a\in\mathsf A(V)\), evaluate the local transformation over \(fg\in R\) at the identity object of its slice, on \(g^*a\). Using the restriction comparisons of \(T,S\), this gives a matching family of arrows from \(g^*T_f(a)\) to \(g^*S_f(a)\), for \(g\in f^*R\). The Hom sheaf in \(\mathsf B\) glues them to a unique component at \(a\).

For an arrow in \(\mathsf A(V)\), the naturality square holds on \(f^*R\), where it is a square for the given local transformations, so holds globally. Compatibility with any further restriction is checked on its pulled-back covering sieve in the same way. This gives a transformation over the whole slice. Uniqueness of its components proves the Hom sheaf axiom, on every slice.

Proof: functors. Let \(L_q\) be a cartesian section of local slice functors over \(R\), with compatible invertible transformations

\[ \delta_{q,g}:g^*L_q\xrightarrow{\sim}L_{qg}. \tag{3.2} \]

For \(f:V\to U\) and \(a\in\mathsf A(V)\), use the covering sieve \(f^*R\). Its local objects in \(\mathsf B\) are

\[ \begin{gathered} (L_{fg})_{1_W}(g^*a),\\ g:W\to V,\qquad g\in f^*R. \end{gathered} \tag{3.3} \]

The inner subscript means evaluation at the identity object of the slice on \(W\). The restriction comparisons of each \(L_q\), followed by components of (3.2), supply the cartesian-section isomorphisms for (3.3). Their unit and composite laws follow from those two given coherences. Descend this section to an object \(T_f(a)\in\mathsf B(V)\).

For an arrow \(a\to a'\), apply the local functors to its restrictions and conjugate by the chosen descent isomorphisms. This is a matching family in the Hom sheaf between \(T_f(a)\) and \(T_f(a')\). Glue it. Identity and composition hold locally, hence globally. This defines a functor \(T_f\) for each slice object \(f\). A restriction of a chosen descent object and the descent for the restricted input have the same specified local values (3.3). Full faithfulness of descent in \(\mathsf B\) gives a unique compatible invertible comparison

\[ g^*T_f(a)\xrightarrow{\sim}T_{fg}(g^*a). \tag{3.4} \]

Its naturality and coherence are local equations. Thus the \(T_f\)'s give a functor on the entire slice, retaining all its objects and factorization arrows.

For \(q\in R\), the sieve \(q^*R\) is maximal. The identity member and (3.2) identify the construction of \(T|_{\operatorname{dom}q}\) with \(L_q\). More explicitly, at a slice object \(g:W\to\operatorname{dom}q\), the comparisons \(\delta_{q,g}\) identify \((L_q)_g(a)\) with the identity component of \(L_{qg}\) at \(a\); its further restrictions are the local values used to construct the global component \(T_{qg}(a)\). Uniqueness of descent therefore gives the required isomorphism at each \(g,a\). These isomorphisms are natural in every input arrow and compatible with further restrictions, so are isomorphisms of slice functors. Their compatibility with the original \(\delta\)'s holds on those local values. Hence they make the original section effective, proving the stack axiom. \(\square\)

This is the componentwise gluing mechanism used in the first paragraph of the module-stack lemma cited above; (3.1) records explicitly the slice data on which that argument operates. It is generally not the assignment \(U\mapsto\operatorname{Fun}(\mathsf A(U),\mathsf B(U))\). A functor between two individual fibre categories may fail to extend compatibly to any smaller base. Exercise 2 gives a concrete failure.

4. Evaluation and cartesian currying

There is an evaluation functor of category-valued presheaves

\[ \begin{gathered} \operatorname{ev}:\\ \underline{\operatorname{Fun}}(\mathsf A,\mathsf B)\times\mathsf A \longrightarrow\mathsf B,\\ (T,a)\longmapsto T_{1_U}(a)\quad\hbox{over }U. \end{gathered} \tag{4.1} \]

For an arrow \((\eta:T\to T',u:a\to a')\), its image is

\[ \eta_{a'}\,T_{1_U}(u)=T'_{1_U}(u)\,\eta_a, \tag{4.2} \]

where the components of \(\eta\) are evaluated at \(1_U\). Naturality gives this equality. It also proves preservation of composition, by expanding a composite pair and commuting its middle transformation past the relevant image arrow. Identity preservation follows from the two identity components. The restriction comparison is that of \(T\), between \(f^*T_{1_U}(a)\) and \(T_f(f^*a)\); the latter is the identity component of the restricted slice functor. Compatibility for (4.2) is the restriction compatibility of \(\eta\). Their coherence is the specified coherence of the slice functors. Thus evaluation is defined on all arrows and restrictions.

Theorem 4.1 (cartesian currying). There is a natural equivalence of categories

\[ \begin{gathered} \operatorname{Fun}_{\mathcal C}(\mathsf D\times\mathsf A,\mathsf B)\\ \simeq\\ \operatorname{Fun}_{\mathcal C} \bigl(\mathsf D,\underline{\operatorname{Fun}}(\mathsf A,\mathsf B)\bigr). \end{gathered} \tag{4.3} \]

It includes all compatible natural transformations. In particular, for stacks, Theorem 3.1 supplies an internal functor stack and (4.3) gives its cartesian universal property.

Proof: curry. Given \(H:\mathsf D\times\mathsf A\to\mathsf B\) and \(d\in\mathsf D(U)\), define a functor \(T_d\) on \(\mathcal C/U\) by

\[ \begin{gathered} (T_d)_f(a)=H_V(f^*d,a),\\ f:V\to U. \end{gathered} \tag{4.4} \]

On an arrow in \(\mathsf A(V)\), apply \(H_V\) to the pair consisting of the identity on \(f^*d\) and that arrow. For a further base arrow, the restriction comparisons of \(H\) and \(\mathsf D\) identify the two expressions in (4.4); their coherences give the slice-functor coherence. For \(v:d\to d'\), apply \(H_V\) to \((f^*v,1_a)\). This is a transformation \(T_d\to T_{d'}\): its naturality follows because the two corresponding pairs commute in the product category. The formula also proves its restriction compatibility. Functoriality in \(d\) follows from that of \(H\). The comparison between restriction of \(T_d\) and \(T_{f^*d}\) is given by the same restriction comparisons; their coherence gives a functor \(\mathsf D\to\underline{\operatorname{Fun}}(\mathsf A,\mathsf B)\).

A transformation \(H\to H'\) is curried by evaluating its components at every pair \((f^*d,a)\). Its naturality in both variables and its restriction compatibility give exactly a transformation of the curried functors. This operation preserves identities and composition.

Proof: uncurry and the inverse comparisons. Given \(G:\mathsf D\to\underline{\operatorname{Fun}}(\mathsf A,\mathsf B)\), put

\[ H_U(d,a)=[G_U(d)]_{1_U}(a). \tag{4.5} \]

For a pair \((v:d\to d',u:a\to a')\), apply (4.2) to the transformation \(G_U(v)\) and the arrow \(u\). The category laws follow from evaluation. Restriction comparisons combine those of \(G\) with those of its slice functor \(G_U(d)\); the two coherence laws give their coherence. A transformation of the \(G\)'s is evaluated on \(a\), giving a transformation of the uncurried functors.

Currying then uncurrying \(H\) returns \(H_U(1_U^*d,a)\); the unit comparison in \(\mathsf D\) gives a natural isomorphism to \(H_U(d,a)\), compatible with all restrictions and transformations. In the other order, the reconstructed slice functor at \(d\), evaluated over \(f:V\to U\), has value \([G_V(f^*d)]_{1_V}(a)\). The restriction comparison of \(G\) identifies it with \([G_U(d)]_f(a)\). These comparisons are natural in \(a,d\) and compatible with base composition, by the coherence of \(G\). Thus they give an invertible transformation from the reconstructed functor to \(G\). The two constructions are functors on the Hom categories and these comparisons commute with every transformation, proving they are quasi-inverse. The formulas commute with precomposition and postcomposition up to the given comparisons, which gives the asserted naturality. \(\square\)

5. Linear functors and stack adjoints keep their extra conditions

For linear locally module stacks \(\mathsf M,\mathsf N\), the stack \(\mathsf H(\mathsf M,\mathsf N)\) of the cited module-stack lesson is the full subcategory of (3.1) on linear functors admitting a right adjoint as a stack functor. The cited Lemma 2.1 proves that this condition glues: adjoint comparison maps are obtained by transporting the adjunction Hom bijections, their coherence follows by composition, and the units, counits and triangles glue. That proof remains applicable on each slice. Separate right adjoints to the individual fibre functors do not supply its required invertible restriction mates.

Consequently Theorem 3.1 does not add linearity or right adjoints to its objects. Its cartesian product in (4.3) also imposes no bilinearity condition. The module-stack closed currying theorem uses the balanced tensor product and its own right-adjointable linear functor stack. It is proved in Dual and tensor products of locally module stacks, Section 5. These are the two respective universal problems, with their stated domains and morphisms.

6. Four exercises with complete solutions

Exercise 1 — strict equality loses the comparison

Introductory. Let \(G\) be a nontrivial group, \(BG\) its one-object category, and \(1\to BG\leftarrow1\) the two unique functors from the terminal category. Compute the strict categorical fibre product and the two-fibre product. Interpret them as stacks on a point.

Solution. In the strict fibre product, the two image objects are the same unique object of \(BG\). There is one pair of source objects, and the only pair of source arrows is the identity pair. Thus the strict product is terminal. In the two-fibre product an object also chooses an isomorphism of the two image objects, namely an element \(g\in G\). A morphism from \(g\) to \(h\) can only be the identity pair; (1.1) then requires \(h=g\). Hence it is the discrete category with object set \(G\).

On the open-set site of a point, a category gives a stack by placing it on the nonempty open and the terminal category on the empty open. Every cover of the nonempty open contains that open, so descent adds no new isomorphism classes or arrows. Thus the same calculation is the stack two-fibre product. The strict terminal category and the discrete category \(G\) are not equivalent for nontrivial \(G\). Stackification of the strict product cannot restore the discarded comparison choices in this example.

Exercise 2 — a fibre functor need not be local

Intermediate. Let \(X\) be two discrete points, and let \(\mathsf A=\mathsf B\) be the stack with value \(\mathsf{FinSet}\times\mathsf{FinSet}\) on \(X\), value \(\mathsf{FinSet}\) on each point, and terminal value on the empty open. Can the swap functor \((M,N)\mapsto(N,M)\) on the global fibre extend to a stack functor? Describe the actual global objects of \(\underline{\operatorname{Fun}}(\mathsf A,\mathsf B)\).

Solution. If the swap extended, its restriction comparison at the first point would identify \(T_0(M)\) with \(N\), for every \(M,N\). Fix \(M\) and take \(N\) first empty and then a singleton. Those finite sets are not isomorphic, so such a comparison is impossible.

A pair of functors \(F_0,F_1:\mathsf{FinSet}\to\mathsf{FinSet}\) does define a stack functor, by \((M,N)\mapsto(F_0(M),F_1(N))\) globally and \(F_i\) at the corresponding point. The empty-open comparison is unique. Conversely any stack functor has these two local functors; its restriction comparisons identify its global value with exactly that ordered pair of outputs. They form a natural isomorphism to this componentwise functor, compatible with restrictions. Transformations are likewise pairs of natural transformations, since the cover by the two points determines every component uniquely. Therefore the global internal functor category is equivalent to the product of the two categories \(\operatorname{Fun}(\mathsf{FinSet},\mathsf{FinSet})\). The swap is a functor of global fibres but is absent from this category.

Exercise 3 — comparison isomorphisms can appear locally

Advanced. On the fork site with objects \(a,b,u\) and cover \(\{a\to u,b\to u\}\) from the sieve-stackification lesson, let \(\mathsf C(u)=B\mathbb N\), the one-object category with additive nonnegative-integer endomorphisms. Put \(\mathsf C(a)=\mathsf C(b)=B\mathbb Z\), with the inclusion on restrictions. Take \(\mathsf A=\mathsf B=1\), mapping to the unique objects of \(\mathsf C\). Compute both sides of (2.2) over \(u\).

Solution. In \(B\mathbb N\), an invertible endomorphism must have an additive inverse in \(\mathbb N\), so is \(0\). The original product \(\mathsf P(u)\) is therefore terminal. At either leg, every integer is invertible in \(B\mathbb Z\). Since both source categories are terminal, (1.1) permits an arrow between two such integers only when they are equal. Thus \(\mathsf P(a)\) and \(\mathsf P(b)\) are discrete copies of \(\mathbb Z\), and the restriction of the unique global object is \(0\) in each.

The covering sieve at \(u\) has two unrelated objects in its element category. Stackification therefore permits an independent integer at each leg, with no further comparison condition. Its global value is the discrete category \(\mathbb Z\times\mathbb Z\): arrows exist only between equal pairs, and every pair supplies a descent presentation. This computes the left side.

Sheafifying the endomorphisms of the original object of \(\mathsf C\) gives \(\mathbb Z\times\mathbb Z\) over \(u\), with projection restrictions. Every descent object has the same unique object at each leg; these are also the restrictions of the original global object, so every associated-stack object is isomorphic to that object. Hence \(\operatorname{St}(\mathsf C)(u)\) is equivalent to \(B(\mathbb Z\times\mathbb Z)\). The associated terminal source stacks stay terminal. Their two-fibre product is consequently the discrete category \(\mathbb Z\times\mathbb Z\), just as on the left. The comparison maps a local pair of integers to that same isomorphism pair. The original global value, which supplied only \((0,0)\), alone would not establish this result.

Exercise 4 — currying a commuting square with all its maps

Advanced calculation. Let \([1]\) be the category \(0\to1\), and \(B\) any category. Describe the currying equivalence \(\operatorname{Fun}([1]\times[1],B)\simeq\operatorname{Fun}([1],\operatorname{Fun}([1],B))\) on both objects and arrows. Are its transformations required to be isomorphisms?

Solution. An object on the left is a commuting square, with horizontal maps \(h_0,h_1\) and vertical maps \(v_0,v_1\), satisfying \(v_1h_0=h_1v_0\). Curry in the horizontal coordinate. Its values are the two objects \(v_0,v_1\) of the arrow category \(\operatorname{Fun}([1],B)\), and its arrow has components \((h_0,h_1)\). The naturality equation for that arrow is exactly the commuting-square equation. Uncurrying restores the same four vertices and edges.

A transformation between two square diagrams consists of four vertex maps. Naturality imposes the four equations for the two horizontal and two vertical edges. On the curried side, the two vertical pairs of vertex maps are morphisms of arrows, giving the vertical-edge equations. Naturality of the transformation in the horizontal coordinate gives the other two equations. Thus the two constructions give exactly the same set of transformations, with the same componentwise identities and composition. The diagonal square equations then follow from the edge equations, so there is no missing condition. No vertex map is required to be invertible. In a category of modules, the four zero maps give a valid transformation between any two such square diagrams, and are retained by currying.

7. Further reading

The Stacks Project describes two-fibre products of categories over a category, two-fibre products of stacks, and compatibility of stackification with two-fibre products. These are freely accessible references. Our internal functor notation always includes compatible functors on the whole slice site and all their transformations.