- Cartesian closed category
In
category theory , a category is cartesian closed if, roughly speaking, anymorphism 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 inmathematical logic and the theory ofprogramming , in that they provide a natural setting forlambda calculus . For generalizations of this notion to monoidal categories, seeclosed monoidal category .Definition
The category "C" is called cartesian closed
iff it satisfies the following three properties:
* it has aterminal 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"For the first two conditions above, it is the same to require 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 noticing that the empty product in a category is nothing but the
terminal object of that category.For the third condition it is equivalent to ask 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 aright adjoint , usually denoted –"Y", for all objects "Y" in "C". This in turn, is expressed by the existence of abijection between thehom-set s:which is natural in both "X" and "Z".If a category is such that all its slice categories are cartesian closed, then it is called locally cartesian closed.
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") = "g".(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 thefunctor category consisting of all functors from "D" to "C", withnatural transformation s as morphisms.
* If "C" is asmall category , then thefunctor category Set"C" consisting of all covariant functors from "C" into the category of sets, withnatural transformation s 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 ("X",−) × "G" 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 underfunctor category .
* Inalgebraic topology , cartesian closed categories are particularly easy to work with. Neither the category oftopological space s 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 generatedHausdorff space s is cartesian closed, as is the category ofFrölicher space s.
* Inorder theory ,complete partial order s ("cpo"s) have a natural topology, theScott topology , whose continuous maps do form a cartesian closed category (that is, the objects are the cpos, and the functors are theScott continuous maps). Bothcurrying and "apply " are continuous functions in the Scott topology, and currying, together with apply, provide the adjoint. [H.P. Barendregt, "The Lambda Calculus", (1984) North-Holland ISBN 0-444-87508-5 "(See theorem 1.2.16)"]
* AHeyting algebra is a Cartesian closedposet . An important example arises fromtopological space s. If "X" is atopological space , then theopen set s in "X" form the objects of a category O("X") for which there's 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 of "U"∪("X""V").The following categories are "not" cartesian closed:
* The category of allvector space s over some fixed field is not cartesian closed; neither is the category of all finite-dimensional vector spaces. While they have products (called direct sums), the product functors don't have right adjoints. (They are, however, symmetricmonoidal closed categories : the set of linear transformations between two vector spaces forms another vector space, so they're closed, and if one replaces the product by thetensor product , a similar isomorphism exists between the Hom spaces.)
* The category ofabelian group s is not cartesian closed, for the same reason.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 ascurrying ; it has led to the realization that simply-typedlambda 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, orFunction-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.Equational theory
In every cartesian closed category (using exponential notation), ("X""Y")"Z" and ("X""Z")"Y" are
isomorphic 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 [S. Soloviev. "Category of Finite Sets and Cartesian Closed Categories", Journal of Soviet Mathematics, 22, 3 (1983)] :
*"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")References
Wikimedia Foundation. 2010.