{"id":1475,"date":"2011-07-03T12:17:21","date_gmt":"2011-07-03T16:17:21","guid":{"rendered":"http:\/\/scientopia.org\/blogs\/goodmath\/?p=1475"},"modified":"2011-07-03T12:17:21","modified_gmt":"2011-07-03T16:17:21","slug":"topoi-prerequisites-an-intro-to-pre-sheafs","status":"publish","type":"post","link":"http:\/\/www.goodmath.org\/blog\/2011\/07\/03\/topoi-prerequisites-an-intro-to-pre-sheafs\/","title":{"rendered":"Topoi Prerequisites: an Intro to Pre-Sheafs"},"content":{"rendered":"<p> I&#8217;m in the process of changing jobs. As a result of that, I&#8217;ve actually got some time between leaving the old, and starting the new. So I&#8217;ve been trying to look into Topoi. Topoi are, basically, an alternative formulation of mathematical logic. In most common presentations of logic, set theory is used as the underlying mathematical basis &#8211; set theory and a mathematical logic built alongside it provide a complete foundational structure for mathematics.<\/p>\n<p> Topoi is a different approach. Instead of starting with set theory and a logic with set theoretic semantics, Topoi starts with <em>categories<\/em>. (I&#8217;ve done a bunch of writing about categories before: see <a href=\"http:\/\/scientopia.org\/blogs\/goodmath\/category\/good-math\/category-theory\/\">the archives<\/a> for my category theory posts.)<\/p>\n<p> Reading about Topoi is rough going. The references I&#8217;ve found so far are seriously rough going. So instead of diving right in, I&#8217;m going to take a couple of steps back, to some of the foundational material that I think helps make it easier to see where the category theory is coming from. (As a general statement, I find that category theory is fascinating, but it&#8217;s so abstract that you really need to do some work to ground it in a way that makes sense. Even then, it&#8217;s not easy to grasp, but it&#8217;s worth the effort!)<\/p>\n<p> A lot of category theoretic concepts originated in algebraic topology. Topoi follows that &#8211; one of its foundational concepts is related to the topological idea of a <em>sheaf<\/em>. So we&#8217;re going to start by looking at what a sheaf is.<\/p>\n<p><!--more--><\/p>\n<p> Suppose we&#8217;ve got a topological space. A topological space is, intuitively, a collection of objects called <em>points<\/em>, and a relationship that defines &#8220;nearness&#8221;. If you pick any point in the space, then you can define an ever-expanding circle of <em>neighborhoods<\/em>, where being in a neighborhood of a point means, roughly, that you&#8217;re <em>no further<\/em> from that point than any of the other points in the neighborhood. There&#8217;s a lot more to it than that, but that&#8217;s a good intuitive start.<\/p>\n<p> In basic topology, we mostly focus either vary narrowly on local properties of a topological space (for example, when we study manifolds, which are objects that on a small, local scale look like they&#8217;re euclidean, even though on a large scale, they may not be), or they focus on global properties of the entire space. Sheafs are a mechanism that can allow us to bridge those two disparate universes, and find the connection between the local view and the global view.<\/p>\n<p> A sheaf is a very general kind of structure that provides ways of mapping or relating local information about a topological space to global information about that space. There are many different kinds of sheaves; rather than being exhaustive, I&#8217;ll pretty much stick to a simple sheaf of functions on the topological space. Sheaves show up <em>all over<\/em> the place, in everything from abstract algebra to algebraic geometry to number theory to analysis to differential calculus &#8211; pretty much every major abstract area of mathematics uses sheaves.<\/p>\n<p> Since what I&#8217;m ultimately interested in Topoi, I&#8217;m going to stick to a simple categorical definition of a sheaf of continuous functions on a topological space. To figure out what a sheaf is, we&#8217;ll start with something weaker: a <em>presheaf<\/em>. <\/p>\n<p> A <em>presheaf<\/em> <img src='http:\/\/l.wordpress.com\/latex.php?latex=F&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='F' style='vertical-align:1%' class='tex' alt='F' \/> of sets on a topological space <img src='http:\/\/l.wordpress.com\/latex.php?latex=T&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='T' style='vertical-align:1%' class='tex' alt='T' \/> can be defined in terms of the category <img src='http:\/\/l.wordpress.com\/latex.php?latex=mbox%7Bbf%20Set%7D&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='mbox{bf Set}' style='vertical-align:1%' class='tex' alt='mbox{bf Set}' \/> of sets as:<\/p>\n<ul>\n<li> <img src='http:\/\/l.wordpress.com\/latex.php?latex=forall%20o%3A%20o%20in%20Open%28T%29&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='forall o: o in Open(T)' style='vertical-align:1%' class='tex' alt='forall o: o in Open(T)' \/>, the presheaf has a mapping <img src='http:\/\/l.wordpress.com\/latex.php?latex=F%28O%29%20in%20Obj%28mbox%7Bbf%20Set%7D%29&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='F(O) in Obj(mbox{bf Set})' style='vertical-align:1%' class='tex' alt='F(O) in Obj(mbox{bf Set})' \/> to an object in the category of sets. That is, we&#8217;ve got some way of mapping from the open sets (that is, collections of neigborhoods in the topological space) to objects in the category of sets. What that means is that we&#8217;ve got a way of talking about the open sets of a topological space using the category of sets.<\/li>\n<li> <img src='http:\/\/l.wordpress.com\/latex.php?latex=forall%20N%2CO%20in%20Open%28T%29%2C%20N%20subseteq%20O&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='forall N,O in Open(T), N subseteq O' style='vertical-align:1%' class='tex' alt='forall N,O in Open(T), N subseteq O' \/>, the presheaf contains a morphism <img src='http:\/\/l.wordpress.com\/latex.php?latex=rho_%7BN%2CO%7D&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='rho_{N,O}' style='vertical-align:1%' class='tex' alt='rho_{N,O}' \/> which goes from <img src='http:\/\/l.wordpress.com\/latex.php?latex=F%28O%29%20rightarrow%20F%28N%29%20in%20mbox%7Bbf%20Set%7D&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='F(O) rightarrow F(N) in mbox{bf Set}' style='vertical-align:1%' class='tex' alt='F(O) rightarrow F(N) in mbox{bf Set}' \/>, called a <em>restriction morphism<\/em>, which must have the following properties.\n<ul>\n<li> <img src='http:\/\/l.wordpress.com\/latex.php?latex=forall%20M%20in%20Open%28T%29%3A%20rho_%7BM%2CM%7D%20%3D%20id_%7BF%28M%29%7D&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='forall M in Open(T): rho_{M,M} = id_{F(M)}' style='vertical-align:1%' class='tex' alt='forall M in Open(T): rho_{M,M} = id_{F(M)}' \/>. (The restriction morphism from any open set to itself must be identity.)<\/li>\n<li> <img src='http:\/\/l.wordpress.com\/latex.php?latex=forall%20M%2C%20N%2C%20O%20in%20Open%28T%29%3A%20rho_%7BM%2CN%7D%20circ%20rho_%7BN%2CO%7D%20%3D%20rho_%7BM%2CO%7D&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='forall M, N, O in Open(T): rho_{M,N} circ rho_{N,O} = rho_{M,O}' style='vertical-align:1%' class='tex' alt='forall M, N, O in Open(T): rho_{M,N} circ rho_{N,O} = rho_{M,O}' \/>. (The mapping to restriction morphisms must compose properly.)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p> That&#8217;s one hell of a mouthful, so let&#8217;s pick it apart a bit.<\/p>\n<p> The restriction morphisms are the important thing in the definition. What we&#8217;re doing with the presheaf is providing a way of taking some statement about <img src='http:\/\/l.wordpress.com\/latex.php?latex=T&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='T' style='vertical-align:1%' class='tex' alt='T' \/> as a whole, and providing a way of <em>restricting<\/em> it to one of the open sets of <img src='http:\/\/l.wordpress.com\/latex.php?latex=T&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='T' style='vertical-align:1%' class='tex' alt='T' \/>.<\/p>\n<p> The properties of the restriction morphisms basically say:<\/p>\n<ol>\n<li>if you restrict a subset to itself, none of its properties change;<\/li>\n<li> if you restrict from the space down to an open set <img src='http:\/\/l.wordpress.com\/latex.php?latex=N&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='N' style='vertical-align:1%' class='tex' alt='N' \/>, and then restrict the results of that down to a <em>smaller<\/em> open space <img src='http:\/\/l.wordpress.com\/latex.php?latex=M&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='M' style='vertical-align:1%' class='tex' alt='M' \/>, you end up with the same property as if you restricted directly to <img src='http:\/\/l.wordpress.com\/latex.php?latex=M&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='M' style='vertical-align:1%' class='tex' alt='M' \/> without going through <img src='http:\/\/l.wordpress.com\/latex.php?latex=N&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='N' style='vertical-align:1%' class='tex' alt='N' \/>. So if we want to look at the properties of an open set, it doesn&#8217;t matter whether we restrict things to it in one step, or if we do it gradually in a series of steps: the result will be exactly the same.<\/li>\n<\/ol>\n<p> So, basically, we&#8217;ve got a mapping from open sets in a space to sets, and that mapping is guaranteed to preserve the structure of the topological space.  Why should we care about that? Because we can map it to sets that describe things about the space in ways that are easier to understand that the space itself. Topological spaces can be nightmarish beasts to work with; we can instead look at simpler sets. But because the presheaf gives us a mapping to the simpler sets that&#8217;s guaranteed to keep the structure of the topological space, we can safely work with the simpler objects.<\/p>\n<p> There&#8217;s also another way of describing a presheaf in terms of category theory which I hadn&#8217;t seen before, but which I discovered via <a href=\"http:\/\/mathworld.wolfram.com\/Presheaf.html\">Wolfram&#8217;s Mathworld<\/a> while I was researching this post. It&#8217;s based on the idea of <em>contravariant functors<\/em>.<\/p>\n<p> This is going to get a bit dense, but bear with me. It does, eventually, make sense.<\/p>\n<p> We&#8217;ll start with a quick reminder of what a functor is. For a bit more depth, you could look <a href=\"http:\/\/scientopia.org\/blogs\/goodmath\/2006\/06\/12\/more-category-theory-getting-into-functors\/\">here<\/a>.<\/p>\n<p> A category is basically a collection of objects that are connected by arrows, called morphisms. There are a bunch of rules about how the morphisms in a category work &#8211; but the basic idea is that you&#8217;ve got objects and arrows, and the structure of the category is described by the ways that the objects are connected by the arrows. For example, in the category of sets, the objects are sets, and arrows between objects represent functions. <\/p>\n<p> A functor is a structure-preserving mapping from one category to another. Since the structure is expressed by the arrows, what that means is that the functor maps arrows in a way that preserves the structural relationships of those arrows. To be more precise:<\/p>\n<p> Suppose you&#8217;ve got two categories, <img src='http:\/\/l.wordpress.com\/latex.php?latex=C&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='C' style='vertical-align:1%' class='tex' alt='C' \/> and <img src='http:\/\/l.wordpress.com\/latex.php?latex=D&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='D' style='vertical-align:1%' class='tex' alt='D' \/>. A covariant functor <img src='http:\/\/l.wordpress.com\/latex.php?latex=F&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='F' style='vertical-align:1%' class='tex' alt='F' \/> from <img src='http:\/\/l.wordpress.com\/latex.php?latex=C&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='C' style='vertical-align:1%' class='tex' alt='C' \/> to <img src='http:\/\/l.wordpress.com\/latex.php?latex=D&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='D' style='vertical-align:1%' class='tex' alt='D' \/> consists of:<\/p>\n<ol>\n<li> A mapping from each object <img src='http:\/\/l.wordpress.com\/latex.php?latex=o%20in%20C&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='o in C' style='vertical-align:1%' class='tex' alt='o in C' \/> to an object <img src='http:\/\/l.wordpress.com\/latex.php?latex=F%28o%29%20in%20D&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='F(o) in D' style='vertical-align:1%' class='tex' alt='F(o) in D' \/>.<\/li>\n<li> A mapping from each morphism <img src='http:\/\/l.wordpress.com\/latex.php?latex=m%20%3A%20x%20rightarrow%20y%20in%20C&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='m : x rightarrow y in C' style='vertical-align:1%' class='tex' alt='m : x rightarrow y in C' \/> to a morphism <img src='http:\/\/l.wordpress.com\/latex.php?latex=F%28m%29%20%3A%20F%28x%29%20rightarrow%20F%28y%29%20in%20D&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='F(m) : F(x) rightarrow F(y) in D' style='vertical-align:1%' class='tex' alt='F(m) : F(x) rightarrow F(y) in D' \/>.<\/li>\n<\/ol>\n<p> This mapping must preserve the composition structure of <img src='http:\/\/l.wordpress.com\/latex.php?latex=C&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='C' style='vertical-align:1%' class='tex' alt='C' \/> &#8211; meaning that:<\/p>\n<ul>\n<li> <img src='http:\/\/l.wordpress.com\/latex.php?latex=forall%20o%20in%20C%2C%20F%28id_o%29%20%3D%20id_%7BF%28o%29%7D&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='forall o in C, F(id_o) = id_{F(o)}' style='vertical-align:1%' class='tex' alt='forall o in C, F(id_o) = id_{F(o)}' \/> &#8211; that is, every identity arrow of an object in <img src='http:\/\/l.wordpress.com\/latex.php?latex=C&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='C' style='vertical-align:1%' class='tex' alt='C' \/> is mapped to an identity arrow in <img src='http:\/\/l.wordpress.com\/latex.php?latex=D&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='D' style='vertical-align:1%' class='tex' alt='D' \/> of the corresponding object in <img src='http:\/\/l.wordpress.com\/latex.php?latex=D&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='D' style='vertical-align:1%' class='tex' alt='D' \/>;<\/li>\n<li> <img src='http:\/\/l.wordpress.com\/latex.php?latex=forall%20f%20%3A%20x%20rightarrow%20y%2C%20g%20%3A%20y%20rightarrow%20z%20in%20C%2C%20F%28g%20circ%20f%29%20%3D%20F%28g%29%20circ%20F%28f%29&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='forall f : x rightarrow y, g : y rightarrow z in C, F(g circ f) = F(g) circ F(f)' style='vertical-align:1%' class='tex' alt='forall f : x rightarrow y, g : y rightarrow z in C, F(g circ f) = F(g) circ F(f)' \/> &#8211; if you compose <img src='http:\/\/l.wordpress.com\/latex.php?latex=f&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='f' style='vertical-align:1%' class='tex' alt='f' \/> and <img src='http:\/\/l.wordpress.com\/latex.php?latex=g&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='g' style='vertical-align:1%' class='tex' alt='g' \/> in <img src='http:\/\/l.wordpress.com\/latex.php?latex=C&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='C' style='vertical-align:1%' class='tex' alt='C' \/>, and then map it to <img src='http:\/\/l.wordpress.com\/latex.php?latex=D&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='D' style='vertical-align:1%' class='tex' alt='D' \/> using the functor, you get the same result as if you first mapped <img src='http:\/\/l.wordpress.com\/latex.php?latex=f&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='f' style='vertical-align:1%' class='tex' alt='f' \/> and <img src='http:\/\/l.wordpress.com\/latex.php?latex=g&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='g' style='vertical-align:1%' class='tex' alt='g' \/> to arrows in <img src='http:\/\/l.wordpress.com\/latex.php?latex=D&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='D' style='vertical-align:1%' class='tex' alt='D' \/>,\tand then applied the functor. So they compose the same way in both categories.<\/li>\n<\/ul>\n<p> A normal functor like this is called a <em>covariant<\/em> functor.  For presheafs, we want <em>contravariant<\/em> functors. A contravariant functor is almost the same thing, except that the structural preservation property is <em>reversed<\/em>: <img src='http:\/\/l.wordpress.com\/latex.php?latex=forall%20f%20%3A%20x%20rightarrow%20y%2C%20g%20%3A%20y%20rightarrow%20z%20in%20C%2C%20F%28gcirc%20f%29%20%3D%20F%28f%29%20circ%20F%28g%29&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='forall f : x rightarrow y, g : y rightarrow z in C, F(gcirc f) = F(f) circ F(g)' style='vertical-align:1%' class='tex' alt='forall f : x rightarrow y, g : y rightarrow z in C, F(gcirc f) = F(f) circ F(g)' \/>.<\/p>\n<p> To understand this, think of the normal way that composition works in categories (or in functions); a contravariant functor <em>reverses<\/em> the direction of composition. One way of looking at that is to say that that the normal functor preserves structure by making all of the composition relations work normally &#8211; an arrow <img src='http:\/\/l.wordpress.com\/latex.php?latex=m&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='m' style='vertical-align:1%' class='tex' alt='m' \/> from <img src='http:\/\/l.wordpress.com\/latex.php?latex=f&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='f' style='vertical-align:1%' class='tex' alt='f' \/> to <img src='http:\/\/l.wordpress.com\/latex.php?latex=g&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='g' style='vertical-align:1%' class='tex' alt='g' \/> in a category will compose with arrows from <img src='http:\/\/l.wordpress.com\/latex.php?latex=g&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='g' style='vertical-align:1%' class='tex' alt='g' \/> to something else after applying the functor. So in some sense, when it maps a morphism, it&#8217;s preserving the relations with other morphisms that <em>start<\/em> where <img src='http:\/\/l.wordpress.com\/latex.php?latex=m&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='m' style='vertical-align:1%' class='tex' alt='m' \/> ends. But it doesn&#8217;t say anything about what happens when the morphism is composed with something that <em>ends<\/em> where <img src='http:\/\/l.wordpress.com\/latex.php?latex=m&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='m' style='vertical-align:1%' class='tex' alt='m' \/> <em>starts<\/em>. A contravariant functor does the opposite; it makes sure that through its transformation, the arrow composes properly with everything that ends where it starts, but doesn&#8217;t care about the other way. <\/p>\n<p> To get what that means, you can think of it in terms of the category <b>Set<\/b> of sets and functions between them. A functor from <b>Set<\/b> to <b>Set<\/b> maps objects to objects, and functions to functions. A <em>covariant<\/em> functor says that for a set <img src='http:\/\/l.wordpress.com\/latex.php?latex=A&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='A' style='vertical-align:1%' class='tex' alt='A' \/>, every function <img src='http:\/\/l.wordpress.com\/latex.php?latex=f%20%3A%20A%20rightarrow%20B&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='f : A rightarrow B' style='vertical-align:1%' class='tex' alt='f : A rightarrow B' \/> will be mapped to a function <em>whose results<\/em> are acceptable as inputs to the mappings of things that used to compose with f.<\/p>\n<p> It does <em>not<\/em> say anything about how the mapping of <img src='http:\/\/l.wordpress.com\/latex.php?latex=f&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='f' style='vertical-align:1%' class='tex' alt='f' \/> will composite with things that used to provide valid <em>inputs<\/em> to <img src='http:\/\/l.wordpress.com\/latex.php?latex=f&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='f' style='vertical-align:1%' class='tex' alt='f' \/>. The covariant functor can therefore be thought of as constraining the <em>output<\/em> of the function. The contravariant function does the opposite; it constrains the <em>input<\/em>.<\/p>\n<p> Anyway &#8211; the point of that little diversion was to let us see an equivalent simpler definition of the presheaf, which works for presheafs of all of the different kinds of sheaves. Given a topological space <img src='http:\/\/l.wordpress.com\/latex.php?latex=T&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='T' style='vertical-align:1%' class='tex' alt='T' \/>, we can define a category over the open sets of <img src='http:\/\/l.wordpress.com\/latex.php?latex=T&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='T' style='vertical-align:1%' class='tex' alt='T' \/>, <img src='http:\/\/l.wordpress.com\/latex.php?latex=mbox%7Bbf%20Top%7D_T&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='mbox{bf Top}_T' style='vertical-align:1%' class='tex' alt='mbox{bf Top}_T' \/>, where the objects in the category are the open sets of <img src='http:\/\/l.wordpress.com\/latex.php?latex=T&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='T' style='vertical-align:1%' class='tex' alt='T' \/>, and where for any two objects <img src='http:\/\/l.wordpress.com\/latex.php?latex=a%2Cb%20in%20T&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='a,b in T' style='vertical-align:1%' class='tex' alt='a,b in T' \/>, there is an arrow <img src='http:\/\/l.wordpress.com\/latex.php?latex=m%20%3A%20a%20rightarrow%20b&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='m : a rightarrow b' style='vertical-align:1%' class='tex' alt='m : a rightarrow b' \/> if\/f <img src='http:\/\/l.wordpress.com\/latex.php?latex=a%20subseteq%20b&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='a subseteq b' style='vertical-align:1%' class='tex' alt='a subseteq b' \/>.<\/p>\n<p> Now, take a category, <img src='http:\/\/l.wordpress.com\/latex.php?latex=C&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='C' style='vertical-align:1%' class='tex' alt='C' \/>, which which contains the values that you want the presheaf to operate over (which would be <b>Set<\/b> in the definition above); the presheaf is just a contravariant functor from <img src='http:\/\/l.wordpress.com\/latex.php?latex=mbox%7Bbf%20Top%7D_T&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='mbox{bf Top}_T' style='vertical-align:1%' class='tex' alt='mbox{bf Top}_T' \/> to <img src='http:\/\/l.wordpress.com\/latex.php?latex=C&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='C' style='vertical-align:1%' class='tex' alt='C' \/>.<\/p>\n<p> The neat thing about this is that the presheaf is supposed to include <em>restricting<\/em> morphisms. The contravariant functor from <img src='http:\/\/l.wordpress.com\/latex.php?latex=mbox%7Bbf%20Top%7D_T&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='mbox{bf Top}_T' style='vertical-align:1%' class='tex' alt='mbox{bf Top}_T' \/> to <img src='http:\/\/l.wordpress.com\/latex.php?latex=C&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='C' style='vertical-align:1%' class='tex' alt='C' \/> guarantees that moving to subsets will <em>restrict<\/em> the values in <img src='http:\/\/l.wordpress.com\/latex.php?latex=C&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='C' style='vertical-align:1%' class='tex' alt='C' \/>. That is, if you constrain the input to a function by only giving it a subset, it will behave correctly; it will restrict the output the same way that the input was restricted. So we&#8217;ve effectively found all of those restriction morphism embodied in the structure of the contravariant functor. I thought that was pretty nifty. It&#8217;s a nice example of what I think is interesting about category theory. Category theory takes a lot of effort to absorb &#8211; but once you do, you find lots of complicated ideas can be expressed very simply. You need to learn all of that morphism stuff &#8211; but if you do that once, you&#8217;ll keep get rewarded for it, because so many things become easier.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;m in the process of changing jobs. As a result of that, I&#8217;ve actually got some time between leaving the old, and starting the new. So I&#8217;ve been trying to look into Topoi. Topoi are, basically, an alternative formulation of mathematical logic. In most common presentations of logic, set theory is used as the underlying [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[76,65],"tags":[122,231,246,316],"class_list":["post-1475","post","type-post","status-publish","format-standard","hentry","category-category-theory","category-topology","tag-category-theory-2","tag-sheaf","tag-topoi","tag-topology"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p4lzZS-nN","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/posts\/1475","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/comments?post=1475"}],"version-history":[{"count":0,"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/posts\/1475\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/media?parent=1475"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/categories?post=1475"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/tags?post=1475"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}