In
category theory
Category theory is a general theory of mathematical structures and their relations that was introduced by Samuel Eilenberg and Saunders Mac Lane in the middle of the 20th century in their foundational work on algebraic topology. Nowadays, cate ...
, a
category is Cartesian closed if, roughly speaking, any
morphism
In mathematics, particularly in category theory, a morphism is a structure-preserving map from one mathematical structure to another one of the same type. The notion of morphism recurs in much of contemporary mathematics. In set theory, morphisms a ...
defined on a
product of two
objects can be naturally identified with a morphism defined on one of the factors. These categories are particularly important in
mathematical logic and the theory of programming, in that their
internal language is the
simply typed lambda calculus. They are generalized by
closed monoidal categories
In mathematics, especially in category theory, a closed monoidal category (or a ''monoidal closed category'') is a category that is both a monoidal category and a closed category in such a way that the structures are compatible.
A classic example ...
, whose internal language,
linear type system
Substructural type systems are a family of type systems analogous to substructural logics where one or more of the structural rules are absent or only allowed under controlled circumstances. Such systems are useful for constraining access to sy ...
s, are suitable for both
quantum
In physics, a quantum (plural quanta) is the minimum amount of any physical entity (physical property) involved in an interaction. The fundamental notion that a physical property can be "quantized" is referred to as "the hypothesis of quantizati ...
and classical computation.
Etymology
Named after (1596–1650), French philosopher, mathematician, and scientist, whose formulation of analytic geometry gave rise to the concept of
Cartesian product
In mathematics, specifically set theory, the Cartesian product of two sets ''A'' and ''B'', denoted ''A''×''B'', is the set of all ordered pairs where ''a'' is in ''A'' and ''b'' is in ''B''. In terms of set-builder notation, that is
: A\ti ...
, which was later generalized to the notion of
categorical product.
Definition
The category ''C'' is called Cartesian closed
if and only if it satisfies the following three properties:
* It has a
terminal object.
* Any two objects ''X'' and ''Y'' of ''C'' have a
product ''X'' ×''Y'' in ''C''.
* Any two objects ''Y'' and ''Z'' of ''C'' have an
exponential ''Z''
''Y'' in ''C''.
The first two conditions can be combined to the single requirement that any finite (possibly empty) family of objects of ''C'' admit a product in ''C'', because of the natural
associativity of the categorical product and because the
empty product in a category is the terminal object of that category.
The third condition is equivalent to the requirement that the
functor – ×''Y'' (i.e. the functor from ''C'' to ''C'' that maps objects ''X'' to ''X'' ×''Y'' and morphisms φ to φ×id
''Y'') has a
right adjoint, usually denoted –
''Y'', for all objects ''Y'' in ''C''.
For
locally small categories, this can be expressed by the existence of a
bijection
In mathematics, a bijection, also known as a bijective function, one-to-one correspondence, or invertible function, is a function between the elements of two sets, where each element of one set is paired with exactly one element of the other s ...
between the
hom-sets
:
which is
natural in both ''X'' and ''Z''.
Take care to note that a Cartesian closed category need not have finite limits; only finite products are guaranteed.
If a category has the property that all its
slice categories are Cartesian closed, then it is called ''locally cartesian closed''. Note that if ''C'' is locally Cartesian closed, it need not actually be Cartesian closed; that happens if and only if ''C'' has a terminal object.
Basic constructions
Evaluation
For each object ''Y'', the counit of the exponential adjunction is a natural transformation
:
called the (internal) evaluation map. More generally, we can construct the
partial application map as the composite
:
In the particular case of the category Set, these reduce to the ordinary operations:
:
Composition
Evaluating the exponential in one argument at a morphism ''p'' : ''X'' → ''Y'' gives morphisms
:
:
corresponding to the operation of composition with ''p''. Alternate notations for the operation ''p''
''Z'' include ''p''
* and ''p∘-''. Alternate notations for the operation ''Z''
''p'' include ''p''
* and ''-∘p''.
Evaluation maps can be chained as
:
the corresponding arrow under the exponential adjunction
:
is called the (internal) composition map.
In the particular case of the category Set, this is the ordinary composition operation:
:
Sections
For a morphism ''p'':''X'' → ''Y'', suppose the following pullback square exists, which defines the subobject of ''X''
''Y'' corresponding to maps whose composite with ''p'' is the identity:
:
where the arrow on the right is ''p''
''Y'' and the arrow on the bottom corresponds to the identity on ''Y''. Then Γ
''Y''(''p'') is called the
object of sections of ''p''. It is often abbreviated as Γ
''Y''(''X'').
If Γ
''Y''(''p'') exists for every morphism ''p'' with codomain ''Y'', then it can be assembled into a functor Γ
''Y'' : ''C''/''Y'' → ''C'' on the slice category, which is right adjoint to a variant of the product functor:
:
The exponential by ''Y'' can be expressed in terms of sections:
:
Examples
Examples of Cartesian closed categories include:
* The category Set of all
sets, with
functions as morphisms, is Cartesian closed. The product ''X''×''Y'' is the Cartesian product of ''X'' and ''Y'', and ''Z''
''Y'' is the set of all functions from ''Y'' to ''Z''. The adjointness is expressed by the following fact: the function ''f'' : ''X''×''Y'' → ''Z'' is naturally identified with the
curried function ''g'' : ''X'' → ''Z''
''Y'' defined by ''g''(''x'')(''y'') = ''f''(''x'',''y'') for all ''x'' in ''X'' and ''y'' in ''Y''.
* The category of
finite sets, with functions as morphisms, is Cartesian closed for the same reason.
* If ''G'' is a
group, then the category of all
''G''-sets is Cartesian closed. If ''Y'' and ''Z'' are two ''G''-sets, then ''Z''
''Y'' is the set of all functions from ''Y'' to ''Z'' with ''G'' action defined by (''g''.''F'')(''y'') = F(''g''
−1.y) for all ''g'' in ''G'', ''F'':''Y'' → ''Z'' and ''y'' in ''Y''.
* The category of finite ''G''-sets is also Cartesian closed.
* The category Cat of all small categories (with functors as morphisms) is Cartesian closed; the exponential ''C''
''D'' is given by the
functor category consisting of all functors from ''D'' to ''C'', with natural transformations as morphisms.
* If ''C'' is a
small category, then the functor category Set
''C'' consisting of all covariant functors from ''C'' into the category of sets, with natural transformations as morphisms, is Cartesian closed. If ''F'' and ''G'' are two functors from ''C'' to Set, then the exponential ''F''
''G'' is the functor whose value on the object ''X'' of ''C'' is given by the set of all natural transformations from to ''F''.
** The earlier example of ''G''-sets can be seen as a special case of functor categories: every group can be considered as a one-object category, and ''G''-sets are nothing but functors from this category to Set
** The category of all
directed graphs is Cartesian closed; this is a functor category as explained under functor category.
** In particular, the category of
simplicial sets (which are functors ''X'' : Δ
op → Set) is Cartesian closed.
* Even more generally, every elementary
topos is Cartesian closed.
* In
algebraic topology, Cartesian closed categories are particularly easy to work with. Neither the category of
topological spaces with
continuous maps nor the category of
smooth manifolds with smooth maps is Cartesian closed. Substitute categories have therefore been considered: the category of
compactly generated Hausdorff spaces is Cartesian closed, as is the category of
Frölicher space In mathematics, Frölicher spaces extend the notions of calculus and smooth manifolds. They were introduced in 1982 by the mathematician
A mathematician is someone who uses an extensive knowledge of mathematics in their work, typically to solv ...
s.
* In
order theory,
complete partial orders (''cpo''s) have a natural topology, the
Scott topology, whose continuous maps do form a Cartesian closed category (that is, the objects are the cpos, and the morphisms are the
Scott continuous In mathematics, given two partially ordered sets ''P'' and ''Q'', a function ''f'': ''P'' → ''Q'' between them is Scott-continuous (named after the mathematician Dana Scott) if it preserves all directed suprema. That is, for every directed subse ...
maps). Both
currying
In mathematics and computer science, currying is the technique of translating the evaluation of a function that takes multiple arguments into evaluating a sequence of functions, each with a single argument. For example, currying a function f that ...
and ''
apply
In mathematics and computer science, apply is a function that applies a function to arguments. It is central to programming languages derived from lambda calculus, such as LISP and Scheme, and also in functional languages. It has a role in the s ...
'' are continuous functions in the Scott topology, and currying, together with apply, provide the adjoint.
* A
Heyting algebra is a Cartesian closed (bounded)
lattice. An important example arises from topological spaces. If ''X'' is a topological space, then the
open sets in ''X'' form the objects of a category O(''X'') for which there is a unique morphism from ''U'' to ''V'' if ''U'' is a subset of ''V'' and no morphism otherwise. This
poset is a Cartesian closed category: the "product" of ''U'' and ''V'' is the intersection of ''U'' and ''V'' and the exponential ''U''
''V'' is the
interior
Interior may refer to:
Arts and media
* ''Interior'' (Degas) (also known as ''The Rape''), painting by Edgar Degas
* ''Interior'' (play), 1895 play by Belgian playwright Maurice Maeterlinck
* ''The Interior'' (novel), by Lisa See
* Interior de ...
of .
* A category with a
zero object is Cartesian closed if and only if it is equivalent to a category with only one object and one identity morphism. Indeed, if 0 is an initial object and 1 is a final object and we have
, then
which has only one element.
**In particular, any non-trivial category with a zero object, such as an
abelian category, is not Cartesian closed. So the category of
modules over a ring is not Cartesian closed. However, the functor
tensor product with a fixed module does have a
right adjoint. The tensor product is not a categorical product, so this does not contradict the above. We obtain instead that the category of modules is
monoidal closed.
Examples of locally Cartesian closed categories include:
* Every elementary topos is locally Cartesian closed. This example includes Set, ''FinSet'', ''G''-sets for a group ''G'', as well as Set
''C'' for small categories ''C''.
* The category ''LH'' whose objects are topological spaces and whose morphisms are
local homeomorphisms is locally Cartesian closed, since ''LH/X'' is equivalent to the category of sheaves . However, ''LH'' does not have a terminal object, and thus is not Cartesian closed.
* If ''C'' has pullbacks and for every arrow ''p'' : ''X'' → ''Y'', the functor ''p''
* : ''C/Y'' → ''C/X'' given by taking pullbacks has a right adjoint, then ''C'' is locally Cartesian closed.
* If ''C'' is locally Cartesian closed, then all of its slice categories ''C/X'' are also locally Cartesian closed.
Non-examples of locally Cartesian closed categories include:
* Cat is not locally Cartesian closed.
Applications
In Cartesian closed categories, a "function of two variables" (a morphism ''f'' : ''X''×''Y'' → ''Z'') can always be represented as a "function of one variable" (the morphism λ''f'' : ''X'' → ''Z''
''Y''). In
computer science applications, this is known as
currying
In mathematics and computer science, currying is the technique of translating the evaluation of a function that takes multiple arguments into evaluating a sequence of functions, each with a single argument. For example, currying a function f that ...
; it has led to the realization that simply-typed lambda calculus can be interpreted in any Cartesian closed category.
The
Curry–Howard–Lambek correspondence provides a deep isomorphism between intuitionistic logic, simply-typed lambda calculus and Cartesian closed categories.
Certain Cartesian closed categories, the
topoi, have been proposed as a general setting for mathematics, instead of traditional
set theory.
The renowned computer scientist
John Backus has advocated a variable-free notation, or
Function-level programming, which in retrospect bears some similarity to the
internal language of Cartesian closed categories.
CAML is more consciously modelled on Cartesian closed categories.
Dependent sum and product
Let ''C'' be a locally Cartesian closed category. Then ''C'' has all pullbacks, because the pullback of two arrows with codomain ''Z'' is given by the product in ''C/Z''.
For every arrow ''p'' : ''X'' → ''Y'', let ''P'' denote the corresponding object of ''C/Y''. Taking pullbacks along ''p'' gives a functor ''p''
* : ''C/Y'' → ''C/X'' which has both a left and a right adjoint.
The left adjoint
is called the dependent sum and is given by composition
.
The right adjoint
is called the dependent product.
The exponential by ''P'' in ''C/Y'' can be expressed in terms of the dependent product by the formula
.
The reason for these names is because, when interpreting ''P'' as a
dependent type , the functors
and
correspond to the type formations
and
respectively.
Equational theory
In every Cartesian closed category (using exponential notation), (''X''
''Y'')
''Z'' and (''X''
''Z'')
''Y'' are
isomorphic
In mathematics, an isomorphism is a structure-preserving mapping between two structures of the same type that can be reversed by an inverse mapping. Two mathematical structures are isomorphic if an isomorphism exists between them. The word is ...
for all objects ''X'', ''Y'' and ''Z''. We write this as the "equation"
:(''x''
''y'')
''z'' = (''x''
''z'')
''y''.
One may ask what other such equations are valid in all Cartesian closed categories. It turns out that all of them follow logically from the following axioms:
*''x''×(''y''×''z'') = (''x''×''y'')×''z''
*''x''×''y'' = ''y''×''x''
*''x''×1 = ''x'' (here 1 denotes the terminal object of ''C'')
*1
''x'' = 1
*''x''
1 = ''x''
*(''x''×''y'')
''z'' = ''x''
''z''×''y''
''z''
*(''x''
''y'')
''z'' = ''x''
(''y''×''z'')
Bicartesian closed categories
Bicartesian closed categories extend Cartesian closed categories with binary
coproducts and an
initial object, with products distributing over coproducts. Their equational theory is extended with the following axioms, yielding something similar to
Tarski's high school axioms but with a zero:
*''x'' + ''y'' = ''y'' + ''x''
*(''x'' + ''y'') + ''z'' = ''x'' + (''y'' + ''z'')
*''x''×(''y'' + ''z'') = ''x''×''y'' + ''x''×''z''
*''x''
(''y'' + ''z'') = ''x
y×x
z''
*0 + ''x'' = ''x''
*''x''×0 = 0
*''x''
0 = 1
Note however that the above list is not complete; type isomorphism in the free BCCC is not finitely axiomatizable, and its decidability is still an open problem.
References
*
External links
*
*
{{category theory
Closed categories
Lambda calculus