Category Theory
Zulip Server
Archive

You're reading the public-facing archive of the Category Theory Zulip server.
To join the server you need an invite. Anybody can get an invite by contacting Matteo Capucci at name dot surname at gmail dot com.
For all things related to this archive refer to the same person.


Stream: learning: reading & references

Topic: reading through Baez's topos theory blog posts


view this post on Zulip David Egolf (Mar 26 2024 at 17:08):

I'm going to try an experiment, where I work through John Baez's topos theory blog posts while "thinking out loud" in this topic. (For discussion of this idea, see #meta: meta > "learning out loud"? ).

A few disclaimers: I'm not sure how far I'll get! Also, my discussion here is unlikely to be self-contained; if you want to follow along, you may need to reference the blog posts. And finally, I am almost certainly going to make a lot of mistakes!

Please feel free to join in, or just to point out when I'm confused about something! I can't guarantee I'll have the energy to give you a full response if you do so, but please know that I will still appreciate whatever you choose to post.

view this post on Zulip David Egolf (Mar 26 2024 at 17:29):

I'm going to take a puzzle/exercise-based approach. I find it helps me focus my thoughts to have a particular thing I'm trying to figure out. (Sometimes I'll even jump straight to an exercise before reading a section! Then that exercise helps motivate my reading.)

The first exercise I want to contemplate is this:

In many of these examples something nice happens. First, suppose we have sFUs \in F U and an open cover of UU by open sets UiU_i. Then we can restrict ss to UiU_i getting something we can call sUis|_{U_i}. We can then further restrict this to UiUjU_i \cap U_j. And by the definition of presheaf, we have

(sUi)UiUj=(sUj)UiUj(s|_{U_i})|_{U_i \cap U_j} = (s|_{U_j})|_{U_i \cap U_j}

In other words, if we take a guy in FUF U and restrict it to a bunch of open sets covering UU, the resulting guys agree on the overlaps UiUjU_i \cap U_j. Check that this follows from the definition of functor and some other facts!

view this post on Zulip Morgan Rogers (he/him) (Mar 26 2024 at 17:35):

The exercise is "Check that...", right? Do you have an idea of where to start? :wink:

view this post on Zulip David Egolf (Mar 26 2024 at 17:40):

Morgan Rogers (he/him) said:

The exercise is "Check that...", right? Do you have an idea of where to start? :wink:

Yes, that's right! And I think I do have an idea of where to start! It'll take me a minute to type it out, though.

view this post on Zulip David Egolf (Mar 26 2024 at 17:45):

We have a functor F:O(X)opSetF:\mathcal{O}(X)^{\mathrm{op}} \to \mathsf{Set}. Here, O(X)op\mathcal{O}(X)^{\mathrm{op}} is the category of open sets of a topological space XX, where we have a unique morphism from UU to VV exactly if VUV \subseteq U. I think of a morphism from UU to VV as saying "UU contains VV".

The first thing I want to note is that O(X)op\mathcal{O}(X)^{\mathrm{op}} is a poset. Consequently, all diagrams commute in O(X)op\mathcal{O}(X)^{\mathrm{op}}! In particular, this diagram commutes for any Ui,UjUU_i, U_j \subseteq U:
diagram

view this post on Zulip David Egolf (Mar 26 2024 at 17:50):

Next, I'll use the fact that functors send commutative diagrams to commutative diagrams. That means that this diagram in Set\mathsf{Set} also commutes:
diagram

by rUVr_{U \to V} I mean the "restriction function" that restricts things from UU to VV, for VUV \subseteq U. This is the image under FF of the unique morphism from UU to VV in O(X)op\mathcal{O}(X)^{\mathrm{op}}.

view this post on Zulip David Egolf (Mar 26 2024 at 17:53):

Now, let's pick some sFUs \in FU. Since this diagram commutes, we have that rUiUiUjrUUi(s)=rUjUiUjrUUj(s)r_{U_i \to U_i \cap U_j} \circ r_{U \to U_i}(s) = r_{U_j \to U_i \cap U_j} \circ r_{U \to U_j}(s). I believe this is just different notation for the thing we wanted to prove!

view this post on Zulip Peva Blanchard (Mar 26 2024 at 18:01):

(side question: how do you make the diagrams (pictures) so fast?)

view this post on Zulip David Egolf (Mar 26 2024 at 18:12):

Peva Blanchard said:

(side question: how do you make the diagrams (pictures) so fast?)

I use this amazing website to draw the diagrams: https://q.uiver.app/ .
Then all I have to do is take screenshots, and paste them into my draft!

view this post on Zulip David Egolf (Mar 27 2024 at 17:33):

Alright, we next have our first official "puzzle"!

Puzzle. Let X=RX = \mathbb{R} and for each open set URU \subseteq \mathbb{R} take FUF U to be the set of continuous real-valued functions on UU. Show that with the usual concept of restriction of functions, FF is a presheaf and in fact a sheaf.

I'll start by seeking to show that FF is a presheaf.

view this post on Zulip David Egolf (Mar 27 2024 at 17:39):

To show that FF is a presheaf, we need to show that it is a functor F:O(R)opSetF: \mathcal{O}(\mathbb{R})^{\mathrm{op}} \to \mathsf{Set}. Now, for each open URU \subseteq \R, we have that FUFU is the set of continuous-real valued functions on UU. To talk about "continuous" functions means that there needs to be some topology on UU. I think it's reasonable to assume that UU is equipped with the subspace topology it inherits from R\mathbb{R}.

I'm a bit intrigued by the fact that we then have FU=Top(U,R)FU = \mathsf{Top}(U, \mathbb{R}), where UU is equipped with the subspace topology. This leads me to consider the functor Top(,R):TopopSet\mathsf{Top}(-,\mathbb{R}): \mathsf{Top}^{\mathrm{op}} \to \mathsf{Set}.

view this post on Zulip David Egolf (Mar 27 2024 at 17:43):

I'd now like dream up some functor G:O(R)opTopopG: \mathcal{O}(\mathbb{R})^{\mathrm{op}} \to \mathsf{Top}^{\mathrm{op}}, so that we can express FF as F=Top(,R)GF = \mathsf{Top}(-, \mathbb{R}) \circ G.

The first idea that comes to mind is to let GG act as follows:

view this post on Zulip David Egolf (Mar 27 2024 at 17:44):

It remains to show that GG is a really a functor, and that F=Top(,R)GF = \mathsf{Top}(-, \mathbb{R}) \circ G.

view this post on Zulip Peva Blanchard (Mar 27 2024 at 18:17):

I would have gone for a more direct proof that FF is functor.

spoiler

view this post on Zulip David Egolf (Mar 27 2024 at 18:22):

To show that GG is a functor, I think the only tricky thing to check (unless I'm missing something) is as follows: We want to show that if UU and VV, with VUV \subseteq U, are open subsets of R\mathbb{R} equipped with the subspace topology inherited from R\mathbb{R}, then the inclusion function i:VUi:V \to U is continuous.

To show this, I want to use this property of the subspace topology: "Let YY be as subspace of XX and let i:YXi:Y \to X be the inclusion map. Then for any topological space ZZ a map f:ZYf: Z \to Y is continuous if and only if the composite map ifi \circ f is continuous".

In our case, we have the inclusion map iVU:VUi_{V \to U}: V \to U and the two inclusions to R\mathbb{R}, namely: iV:VRi_V: V \to \mathbb{R} and iU:URi_U: U \to \mathbb{R}. Since iUiVU=iVi_U \circ i_{V \to U} = i_V and iVi_V is continuous, we conclude that iVU:VUi_{V \to U}: V \to U is also continuous.

view this post on Zulip David Egolf (Mar 27 2024 at 18:24):

@Peva Blanchard I was strongly considering aiming for a more direct proof! I'll be interested to take a look at the "spoiler" in a bit!

view this post on Zulip David Egolf (Mar 27 2024 at 18:49):

It remains to show that F=Top(,R)GF = \mathsf{Top}(-, \mathbb{R}) \circ G. To show this, it suffices to show the following:

  1. Top(,R)G\mathsf{Top}(-, \mathbb{R}) \circ G sends each open subset UU of R\mathbb{R} to the set of real-valued continuous function on UU
  2. Top(,R)G\mathsf{Top}(-, \mathbb{R}) \circ G sends each morphism in O(R)op\mathcal{O}(\mathbb{R})^{\mathrm{op}} to a function that restricts functions

Let's consider r:UVr:U \to V in O(R)op\mathcal{O}(\mathbb{R})^{\mathrm{op}}. So, VUV \subseteq U. First, we note that Top(,R)G(U)\mathsf{Top}(-, \mathbb{R}) \circ G(U) first equips UU with the subspace topology and then gives the set of all real-valued continuous functions on UU.

Next, we consider Top(,R)G(r)\mathsf{Top}(-, \mathbb{R}) \circ G(r). G(r)G(r) is the morphism iopi^{\mathrm{op}} from UU to VV corresponding to the (continuous) inclusion function i:VUi:V \to U. Then, Top(,R)(iop)=i:Top(U,R)Top(V,R)\mathsf{Top}(-, \mathbb{R})(i^{\mathrm{op}}) = i^*: \mathsf{Top}(U, \mathbb{R}) \to \mathsf{Top}(V, \mathbb{R}). Here, ii^* acts by precomposition, so it sends a continuous function f:URf:U \to \mathbb{R} to the function fi:VRf \circ i:V \to \mathbb{R}. We note that Top(,R)G(r)=i\mathsf{Top}(-, \mathbb{R}) \circ G(r) = i^* is indeed acting to restrict functions, as desired.

view this post on Zulip David Egolf (Mar 27 2024 at 18:52):

Peva Blanchard said:

I would have gone for a more direct proof that FF is functor.

spoiler


I've taken a look at this now! Thanks for chiming in! I went for the less direct approach in part because it felt like it made it easier for me to realize that there are topology things going on. (The "reduction ad obvious-um" is great :laughing:, but I wanted to try and work out the details this time!)

I think there's going to be a bit more topology involved in showing that FF also satisfies the sheaf condition... :upside_down:

view this post on Zulip Peva Blanchard (Mar 27 2024 at 19:09):

:smile: I see, I was not sure which level of details you wanted to work at.

Btw, I find this format very nice. I read John's blog post series on topos not that long ago, but I never took the time to do the puzzles in detail. If you don't mind I'll probably join you on some puzzles, using the "spoiler" feature.

view this post on Zulip David Egolf (Mar 27 2024 at 19:18):

Peva Blanchard said:

:smile: I see, I was not sure which level of details you wanted to work at.

Btw, I find this format very nice. I read John's blog post series on topos not that long ago, but I never took the time to do the puzzles in detail. If you don't mind I'll probably join you on some puzzles, using the "spoiler" feature.

That sounds awesome!

view this post on Zulip Julius Hamilton (Mar 28 2024 at 11:53):

(deleted)

view this post on Zulip Julius Hamilton (Mar 28 2024 at 11:55):

David Egolf said:

I'm going to take a puzzle/exercise-based approach. I find it helps me focus my thoughts to have a particular thing I'm trying to figure out. (Sometimes I'll even jump straight to an exercise before reading a section! Then that exercise helps motivate my reading.)

The first exercise I want to contemplate is this:

In many of these examples something nice happens. First, suppose we have $s \in F U$ and an open cover of $U$ by open sets $U_i$. Then we can restrict $s$ to $U_i$ getting something we can call $s|_{U_i}$. We can then further restrict this to $U_i \cap U_j$. And by the definition of presheaf, we have

$(s|_{U_i})|_{U_i \cap U_j} = (s|_{U_j})|_{U_i \cap U_j}$

In other words, if we take a guy in $F U$ and restrict it to a bunch of open sets covering $U$, the resulting guys agree on the overlaps $U_i \cap U_j$. Check that this follows from the definition of functor and some other facts!

I’ll aim to attempt this exercise today.

view this post on Zulip David Egolf (Mar 28 2024 at 16:44):

Julius Hamilton said:

I’ll aim to attempt this exercise today.

Sounds great! By the way, I think it's very much in the spirit of this topic to "think out loud" a bit on these exercises. So, if you feel like it, please feel free to share some thoughts on the exercise - whether you're stuck on it or whether you have completed it!

view this post on Zulip David Egolf (Mar 28 2024 at 16:45):

Here's the puzzle I was working on above:

Puzzle. Let X=RX = \mathbb{R} and for each open set URU \subseteq \mathbb{R} take FUF U to be the set of continuous real-valued functions on UU. Show that with the usual concept of restriction of functions, FF is a presheaf and in fact a sheaf.

We saw above that FF is a presheaf. It remains to show that FF is a sheaf.

view this post on Zulip David Egolf (Mar 28 2024 at 16:56):

FF is a sheaf if we can do the following:

view this post on Zulip David Egolf (Mar 28 2024 at 17:03):

To give an analogy to imaging, we might think of each sis_i as a picture of some region in space. Then we would like to be able to "stitch together" a bunch of pictures that agree on their overlaps to get one picture of a larger area. Depending on what conditions we place on the pictures in question, this may or may not be possible! For example if we care about "plausibility" in some sense, note that we can't always stitch together plausible images of small areas to make a plausible image of some larger area.

view this post on Zulip David Egolf (Mar 28 2024 at 17:12):

Let us assume that we have selected some UO(R)U \in \mathcal{O}(\mathbb{R}), a bunch of UiO(R)U_i \in \mathcal{O}(\mathbb{R}) so that U=iUiU = \cup_i U_i, and for each ii an siFUis_i \in FU_i so that these selected continuous-real-valued functions "agree on overlaps" in the sense mentioned above. We wish to show that these sis_i can be glued together to form a real-valued continuous function s:URs:U \to \mathbb{R} that restricts to sis_i on UiU_i, and further that this resulting function is unique.

Now, a function s:URs:U \to \mathbb{R} is completely determined by the value that it takes at each point in UU. Since iUi=U\cup_i U_i = U, an arbitrary point xx of UU is in some UiU_i. And since sUi=sis|_{U_i} = s_i we have s(x)=si(x)s(x) = s_i(x). So, the value of ss is determined at each point once we pick sis_i for each ii. So, if ss exists, it is certainly unique.

view this post on Zulip David Egolf (Mar 28 2024 at 17:15):

Let's define s:URs:U \to \mathbb{R} as follows. For xUx \in U, if xUix \in U_i, let s(x)=si(x)s(x) = s_i(x). This definition gives us a function, because if xUix \in U_i and xUjx \in U_j, then si(x)=sj(x)s_i(x) = s_j(x). It remains to show that ss is continuous.

view this post on Zulip David Egolf (Mar 28 2024 at 17:21):

At this point, I recall the "gluing lemma" from topology (the quote below is from "Introduction to Topological Manifolds" by Lee):

Let XX and YY be topological spaces, and let {Ai}\{A_i\} be either an arbitrary open cover of XX or a finite closed cover of XX. Suppose that we are given continuous maps fi:AiYf_i: A_i \to Y that agree on overlaps: fiAiAj=fjAiAj{f_i}|_{A_i \cap A_j} = {f_j}_{A_i \cap A_j}. Then there exists a unique continuous map f:XYf: X \to Y whose restriction to each AiA_i is equal to fif_i .

view this post on Zulip David Egolf (Mar 28 2024 at 17:23):

This lemma assures us that ss is indeed continuous! I think that concludes this puzzle. (If I was working this out offline, I'd consider trying to prove the relevant part of this "gluing lemma". But to keep this topic a bit more focused, I'll not do that here).

view this post on Zulip Reid Barton (Mar 28 2024 at 17:28):

Here's another (possibly tricky) puzzle for you. When you proved that FF was a presheaf, you introduced another functor, GG. Does this proof that FF is a sheaf have some formulation that involves GG?

view this post on Zulip Reid Barton (Mar 28 2024 at 17:29):

(To make things a bit simpler, I suggest getting rid of the "op"s in the definition of GG.)

view this post on Zulip John Baez (Mar 28 2024 at 18:16):

I would like to see a proof of the gluing lemma! To my mind this is the most interesting part of the whole puzzle. It's also not hard to prove. In fact, I never knew anyone had stated it formally as a "lemma" in some book.

The reason it's important is this: to show that R\mathbb{R}-valued continuous functions form a sheaf, it turns out that the crucial step - the only step where something about continuity matters - is the step where you show that continuity is a "local" property.

That is, you can check if a function is continuous by running around your space, looking at each point, and asking "is the function continuous here?" Your function is continuous iff the answer is "yes" at each point.

Later I give an example of a property that's not local: namely, for an R\mathbb{R}-valued function to be bounded is not local. So there's no sheaf of bounded R\mathbb{R}-valued functions.

So, by outsourcing this "gluing lemma" to some textbook, I think you're missing out on an insight that this puzzle was designed to deliver.

view this post on Zulip Peva Blanchard (Mar 28 2024 at 18:16):

David Egolf said:

This lemma assures us that ss is indeed continuous! I think that concludes this puzzle. (If I was working this out offline, I'd consider trying to prove the relevant part of this "gluing lemma". But to keep this topic a bit more focused, I'll not do that here).

This gluing business is really what clicked for me when trying to understand sheaves. Continuity is a "local" property, so it goes well with gluing. I'll try to prove the gluing lemma.

spoiler

view this post on Zulip David Egolf (Mar 28 2024 at 19:06):

Thanks for pointing that out, @John Baez ! (And @Reid Barton , thanks for suggesting another puzzle - I'll potentially take a look at it in a bit! It sounds intriguing.)

I was already a bit "spoiled" on the proof of the gluing lemma, when I looked it up in my book earlier. Lee uses what he calls the "Local Criterion for Continuity" to prove the lemma in the case where the {Ai}\{A_i\} form an open cover of XX. Here is a statement of the "Local Criterion for Continuity" from Lee's book:

A map f:XYf:X \to Y between topological spaces is continuous if and only if each point of XX has a neighborhood on which (the restriction of ) ff is continuous.

If we accept this, then we can use this to prove that our sFUs \in FU is continuous (we recall that s:URs:U \to \mathbb{R}). Let us pick an arbitrary point xx from URU \subseteq \mathbb{R}. We want to show that there is a neighborhood of xx on which the restriction of ss is continuous. Since U=iUiU = \cup_i U_i, we know that xUix \in U_i for some ii. The restriction of ss to UiU_i is sis_i, which we know is continuous. By the "Local Criterion for Continuity", we conclude that s:URs: U \to \mathbb{R} is continuous.

view this post on Zulip David Egolf (Mar 28 2024 at 19:08):

It might be good to take this a step further and prove the "Local Criterion for Continuity" described above. I'll probably give this a try in a bit!

view this post on Zulip John Baez (Mar 28 2024 at 22:23):

Yes, that "local criterion for continuity" is the key step. It's actually a wonderful fact: while continuity is defined in a somewhat "global" way for a function f:XYf: X \to Y, there turns out to be a concept of a function being "continuous at a point", such that ff is continuous iff it is continuous at each point xXx \in X.

If you know how to prove this in your sleep, then of course there's no need to prove it here! But otherwise, it's worth thinking about.

view this post on Zulip Julius Hamilton (Mar 29 2024 at 13:03):

David Egolf said:

Julius Hamilton said:

I’ll aim to attempt this exercise today.

Sounds great! By the way, I think it's very much in the spirit of this topic to "think out loud" a bit on these exercises. So, if you feel like it, please feel free to share some thoughts on the exercise - whether you're stuck on it or whether you have completed it!

That’s exactly what I want to do. I get self conscious that my amateur sloppiness feels like fluff. But I will. One sec.

view this post on Zulip Julius Hamilton (Mar 29 2024 at 13:20):

David Egolf said:

I'm going to take a puzzle/exercise-based approach. I find it helps me focus my thoughts to have a particular thing I'm trying to figure out. (Sometimes I'll even jump straight to an exercise before reading a section! Then that exercise helps motivate my reading.)

The first exercise I want to contemplate is this:

In many of these examples something nice happens. First, suppose we have $s \in F U$ and an open cover of $U$ by open sets $U_i$. Then we can restrict $s$ to $U_i$ getting something we can call $s|_{U_i}$. We can then further restrict this to $U_i \cap U_j$. And by the definition of presheaf, we have

$(s|_{U_i})|_{U_i \cap U_j} = (s|_{U_j})|_{U_i \cap U_j}$

In other words, if we take a guy in $F U$ and restrict it to a bunch of open sets covering $U$, the resulting guys agree on the overlaps $U_i \cap U_j$. Check that this follows from the definition of functor and some other facts!

I live under time constraints (like all of us) so if it seems like I could easily get the answers to these questions just by reading more, I’m just trying to make it clear that I was encouraged by David egolf to “think out loud” and it is helpful for me to be able to learn on-the-go like this. Thanks.

I took a real analysis class as an undergraduate but did not take a lot of other standard math classes. I never really studied topology.

The definition seems simple (I already looked it up). I want to make my thinking super rigorous which is why I am trying to formulate everything in Coq lately. That’s been fun but means I also need to learn more about Coq itself.

(This is meant to be on-topic, I’m saying I prefer to learn by expressing math in Coq).

Set is a fundamental keyword in Coq - I think a Type. I know there is the meta-type Sort as well. I am not clear in some regards how Coq treats types and sets differently. For example, I don’t know if Types have zero implication of their size, ie how many terms are assumed to exist in any given type.

I need to express “some specific element / term of type Set, but I don’t know which one (becusss it’s meant to be arbitrary)”. I think this is the Parameter keyword but not sure yet.

Parameter X : Set.

A topology is arguably of Coq Sort “Record”. I understand Record to be yet another of these mathematical ways of describing “collections” of things. A Record tries to have no commitment to any theories of mathematics, like Sets do. A record is a Type, but it can contain “multiple things”. So, a topology is:

A Record T
Consisting of a set X
And a set O of subsets of X
Such that the 3 topology conditions hold. They are:
Empty set and X are in S.
Arbitrary unions.
Finite intersections.
(I never took the time to think about why unions can be arbitrary but intersections have to be finite).

Actually, Topology should not be a record, it should use keyword Definition, since a Record is better for a single instance of an object? Not sure.

Record T : Type :=
| Parameter X : Set
| Parameter S : Set :=
(assume we just import a “power set function” until I have time to define one myself)
| (I haven’t learn how to state constraints on a type yet, but I need to state here the topology requirements. I guess it’s of type Prop, since they are Boolean. Some like Definition has_empty : S -> Prop := (assume we import a definition of empty set and set membership).

And so on.

There’s my thinking aloud before I head off to work. I wanted to work up to questions I had about presheafs. I was stuck on thinking about inclusion mappings.

view this post on Zulip Julius Hamilton (Mar 29 2024 at 13:21):

Baez’s post mentions that we need to reverse the direction of the arrows (O(X)^{op}) and I was trying to fully understand.

view this post on Zulip Julius Hamilton (Mar 29 2024 at 13:24):

I have actually been spending a lot of time thinking about what the real nature of being “functional” is. I know the common definition. But I want to see clearly why the properties of categories come from mappings being functional (sometimes).

An inclusion mapping is functional. It maps an element of a subset of S to the same element in the set S. How do you define that mathematically?

view this post on Zulip Julius Hamilton (Mar 29 2024 at 13:26):

I guess we can express “mapped to itself” with an expression like f: S1 -> S such that S1 \subset S and f(x) = x. This is allowed by the axiom of extensionality? Though they are elements in different sets, there is already an equality relation defined on the elements of the two respective sets.

view this post on Zulip Julius Hamilton (Mar 29 2024 at 13:26):

How can we reverse an inclusion mapping? It wouldn’t be functional. An inclusion mapping is injective but not surjective.

view this post on Zulip Julius Hamilton (Mar 29 2024 at 13:26):

Thanks!

view this post on Zulip David Egolf (Mar 29 2024 at 17:08):

Thanks for joining in @Julius Hamilton ! I don't know enough about Coq to understand your questions relating to it (hopefully someone else here does, though!).

I can talk a bit about how I understand O(X)\mathcal{O}(X) and O(X)op\mathcal{O}(X)^{\mathrm{op}} though, in case that is helpful to you.

view this post on Zulip Julius Hamilton (Mar 29 2024 at 17:08):

Yeah please do

view this post on Zulip David Egolf (Mar 29 2024 at 17:14):

In my understanding, O(X)\mathcal{O}(X) is a category that we can create when we're given a topology on the set XX. To create this category, we need to say what its objects and morphisms are.

As you mentioned above, any topology on XX has a collection of subsets of XX - the "open sets". The open sets of our topology are the objects of O(X)\mathcal{O}(X).

And given two open sets UU and VV in our topology on XX, we can ask this question: Is UU a subset of VV? If the answer to this question is "yes!", then we put a morphism from UU to VV. Otherwise, we don't put a morphism from UU to VV.

view this post on Zulip David Egolf (Mar 29 2024 at 17:17):

Then O(X)op\mathcal{O}(X)^{\mathrm{op}} is another category: it's just like O(X)\mathcal{O}(X) except we turn all the arrows around. So now we put a morphism from UU to VV exactly if VUV \subseteq U.

view this post on Zulip David Egolf (Mar 29 2024 at 17:19):

I don't really think of these morphisms as functions. I think of them more like "yes!" answers to a yes/no question.

I'm not sure I was really addressing your point of confusion :sweat_smile:. Hopefully this is still somewhat helpful!

view this post on Zulip Julius Hamilton (Mar 29 2024 at 17:28):

Ok. Yeah that simplifies it dramatically.

view this post on Zulip Julius Hamilton (Mar 29 2024 at 17:28):

I think I was confused regarding how simple a morphism can be. I’ll think more about that.

view this post on Zulip Julius Hamilton (Mar 29 2024 at 17:39):

In many of these examples something nice happens. First, suppose we have sFUs \in F U and an open cover of UU by open sets UiU_i.

s is some arbitrary set.
U is an open set in O(X).
Does it matter if it turned out that s was a set in O(X)? Since O(X) is surely a sub-category of Set?

I’ll assume an open cover of U is a union of sets in O(X) such that U \subset of the union.

Then we can restrict ss to UiU_i getting something we can call sUis|_{U_i}.

Baez’s post said we need to flip the morphisms precisely so we can “restrict” the functor. So this is saying, “only those elements of s such that there exists an element x in U_i for which F(x) \in s”. ?

We can’t do this without flipping the morphisms? I’d like to think about how. (Thinking out loud :wink:)

view this post on Zulip David Egolf (Mar 29 2024 at 17:53):

The notation sFUs \in FU means that ss is an element of the set FUFU. For example, depending on what FF does, ss might be a continuous real-valued function with domain of UU.

view this post on Zulip John Baez (Mar 29 2024 at 17:56):

@Julius Hamilton - I think it's very helpful to focus on a specific example of a sheaf when trying to understand the definition of sheaf, and (unsurprisingly) I recommend the example David is talking about, where FUFU is the set of continuous functions f:URf: U \to \mathbb{R}.

Or, if "continuous" is distracting to you, think about the sheaf where FUFU is the set of all functions f:URf: U \to \mathbb{R}.

Or, if R\mathbb{R} is distracting to you, replace it with some other set.

If you read all the sheaf axioms keeping some example like this in mind, they should make more sense.

view this post on Zulip John Baez (Mar 29 2024 at 18:05):

(The reason I picked a sheaf of continuous functions is because topos theory originated as a generalization of topology, as the name suggests - so ideas from topology can help explain what people are doing in topos theory. There are also other ways to get into topos theory, but my course notes - and the book they're based on - start with topology. Luckily you only need to know a small amount of topology.)

view this post on Zulip David Egolf (Mar 29 2024 at 18:53):

In the spirit of trying to better understand why we can detect continuity of a function in a local way, I'll now to try to prove this:

A map f:XYf:X \to Y between topological spaces is continuous if and only if each point of XX has a neighborhood on which (the restriction of ) ff is continuous.

I got stuck along the way. To get unstuck, I referenced Lee's book on topological manifolds. So, what I wrote below below closely follows the proof in Lee's book.

If ff is continuous, then for any point xXx \in X, we have that XX is a neighborhood of xx on which the restriction of ff (which is just ff) is continuous.

For the other direction, we assume that each point of XX has a neighborhood (an open set) on which the restriction of ff is continuous. We wish to show that f:XYf: X \to Y must then be continuous. To show that ff is continuous, we consider an arbitrary open subset VV of YY. We wish to show that the preimage of VV under ff is open in XX.

I'll call this preimage f(V)f^*(V). Now, a set AA is open exactly if every point xx in AA is contained in an open subset UxAU_x \subseteq A. Thinking of openness in this way seems likely helpful, as it involves a condition that can be checked at each point - and we are trying to understand why continuity involves a condition that can be checked at each point.

Now, we know that any xf(V)x \in f^*(V) has some neighborhood UxU_x such that fUx:UxYf|_{U_x}: U_x \to Y is continuous. Since fUxf|_{U_x} is continuous and VV is open, (fUx)(V)(f|_{U_x})^*(V) is also open in the subspace topology on UxU_x. Thus, it is the intersection of some open set AA (in the topology on XX) with UxU_x. Since UxU_x is open and AA is open, (fUx)(V)(f|_{U_x})^*(V) is also open (in the topology on XX).

We are hoping that (fUx)(V)(f|_{U_x})^*(V) is an open subset of f(V)f^*(V) that contains xx. This would provide the neighborhood of "breathing room" about xx in f(V)f^*(V) that we need for f(V)f^*(V) to be open.

By definition, (fUx)(V)(f|_{U_x})^*(V) is the subset of UxU_x that maps into VV under ff. So, its elements are exactly those that are: (1) in UxU_x and (2) map to VV under ff. Thus, (fUx)(V)=Uxf(V)(f|_{U_x})^*(V) = U_x \cap f^*(V). Note that xUxf(V)x \in U_x \cap f^*(V). We also note that (fUx)(V)=Uxf(V)(f|_{U_x})^*(V) = U_x \cap f^*(V) is a subset of f(V)f^*(V).

We conclude that an arbitrary point of f(V)f^*(V) has a neighborhood contained in f(V)f^*(V). Therefore ff is continuous.

view this post on Zulip Julius Hamilton (Mar 29 2024 at 19:02):

John Baez said:

Julius Hamilton - I think it's very helpful to focus on a specific example of a sheaf when trying to understand the definition of sheaf, and (unsurprisingly) I recommend the example David is talking about, where $FU$ is the set of continuous functions $f: U \to \mathbb{R}$.

Or, if "continuous" is distracting to you, think about the sheaf where $FU$ is the set of all functions $f: U \to \mathbb{R}$.

Or, if $\mathbb{R}$ is distracting to you, replace it with some other set.

If you read all the sheaf axioms keeping some example like this in mind, they should make more sense.

A presheaf FF is a functor from O(X)opO(X)^{op} to Set{\mathbf Set}. (Just restating definitions to exercise myself).

Baez says that we can see why we would want to take the opposite category of O(X)O(X) if we think of one possible presheaf FF sending each UOb(O(X))U \in Ob(O(X)) to that set in {Set}\{\mathbf Set\} that contains all real-valued functions over UU.

Let’s consider some examples.

If XX is the real numbers, let’s consider a common topology over the reals. (Which is?)

Topologies are a way to express geometric concepts. Why are they so fundamentally defined in terms of “open sets”?

Perhaps it has to do with continuity and limits. Maybe it allows us to define the epsilon-delta condition without recourse to a distance metric?

view this post on Zulip Julius Hamilton (Mar 29 2024 at 19:06):

David Egolf said:

The first thing I want to note is that $\mathcal{O}(X)^{\mathrm{op}}$ is a poset. Consequently, all diagrams commute in $\mathcal{O}(X)^{\mathrm{op}}$!

Why?

view this post on Zulip Eric M Downes (Mar 29 2024 at 19:29):

Julius Hamilton said:

David Egolf said:

The first thing I want to note is that $\mathcal{O}(X)^{\mathrm{op}}$ is a poset. Consequently, all diagrams commute in $\mathcal{O}(X)^{\mathrm{op}}$!

Why?

  1. Can you distinguish between the "generator arrows" of a poset, and the morphisms only in the closure? The latter are "required to be there" to satisfy the associativity of composition, given the generators; hint: three objects, with two morphisms f,g; dom.g=cod.ff,g;~dom.g=cod.f and dom.fcod.gdom.f\neq cod.g apply transitivity of partial order; what have you got?)
  2. Given two distinct objects X,Yobj.O(X)X,Y\in obj.\mathcal{O}(X), how many generator arrows are you allowed to draw? That is, how big is the homset hom(X,Y)hom(X,Y)?
  3. Does moving to the opposite category change any of this?
  4. So, if you draw a diagram with only morphisms within O(X)\mathcal{O}(X) (no functors to other cats allowed!), how do (1) and (2) constrain said diagrams?

I'm sure there are more sophisticated ways of thinking about this, but that is how I approach it.

view this post on Zulip David Egolf (Mar 29 2024 at 19:58):

Julius Hamilton said:

David Egolf said:

The first thing I want to note is that O(X)op\mathcal{O}(X)^{\mathrm{op}} is a poset. Consequently, all diagrams commute in O(X)op\mathcal{O}(X)^{\mathrm{op}}!

Why?

Here's how I think of it ("it" being "all diagrams commute in a poset"):

When we say (part of) a diagram "commutes", we mean that two different sequences of morphisms compose to the same morphism. If a category is a poset, it has at most one morphism from AA to BB, for any objects AA and BB. Therefore, if I have two different sequences of morphisms from AA to BB, when I compose the morphisms in each sequence there's only one possible morphism for me to get as a result!

Consequently, these two sequences of morphisms must compose to the same morphism. And hence the corresponding (part of a) diagram must commute.

view this post on Zulip Julius Hamilton (Mar 29 2024 at 22:00):

David Egolf said:

Julius Hamilton said:

David Egolf said:

The first thing I want to note is that $\mathcal{O}(X)^{\mathrm{op}}$ is a poset. Consequently, all diagrams commute in $\mathcal{O}(X)^{\mathrm{op}}$!

Why?

Here's how I think of it ("it" being "all diagrams commute in a poset"):

When we say (part of) a diagram "commutes", we mean that two different sequences of morphisms compose to the same morphism. If a category is a poset, it has at most one morphism from $A$ to $B$, for any objects $A$ and $B$. Therefore, if I have two different sequences of morphisms from $A$ to $B$, when I compose the morphisms in each sequence there's only one possible morphism for me to get as a result!

Consequently, these two sequences of morphisms must compose to the same morphism. And hence the corresponding (part of a) diagram must commute.

That is such a beautifully simple explanation. You have a knack for clear simple understanding.

view this post on Zulip Julius Hamilton (Mar 29 2024 at 22:19):

Eric M Downes said:

  1. Can you distinguish between the "generator arrows" of a poset, and the morphisms only in the closure?

I’d never thought of that before. I’m curious to know what those elements might be called in an abstract algebra setting. I’ve been thinking about how a one object category is a monoid, and if there is a corresponding abstract algebraic structure for a “multi-object category”. The thing is, not all the arrows (elements of the “structure”) compose with one another. All algebraic structures I know of are defined by closure and by “totality”.

I think your point is that all the arrows in a thin category are generators. Now I have to think about what how categories can have non-generator arrows.
I think the most basic way of expressing the compositional requirement of the arrows in a category is, “if they can compose, they do.” “If they are composable, then compose.”

I’ll come to the other points you made in a bit.

view this post on Zulip Julius Hamilton (Mar 30 2024 at 00:31):

David Egolf said:

Now, let's pick some $s \in FU$. Since this diagram commutes, we have that $r_{U_i \to U_i \cap U_j} \circ r_{U \to U_i}(s) = r_{U_j \to U_i \cap U_j} \circ r_{U \to U_j}(s)$. I believe this is just different notation for the thing we wanted to prove!

I believe I follow your argument piece by piece but want to digest it more.

Every diagram in a poset commutes.
Functors preserve commutative diagrams (why)?
In O(X)opO(X)^{op}, the morphisms essentially say “contains”.
If we think of FF as mapping a set to a function defined on that set, we can think of the “contains” morphism in O(X)opO(X)^{op} as corresponding, under FF, to a restriction of some function on some subset of its domain.
Baez basically just asks us to show that restricting some sFUs \in FU (which can be thought of as a function) to an open subset UiUU_i \in U, and restrict it to some other subset UjUU_j \in U, you can further restrict both of those restricted functions to UiUjU_i \cap U_j, and they are the same. Which David showed.

Questions:

  1. What is an example of a function which does not have this property?
  2. What if we stop thinking of FF as mapping a domain to a function over that domain? It is harder for me to regain the intuition of what the arrows in Set{\mathbf {Set} } “mean” or “correspond to”.

view this post on Zulip Julius Hamilton (Mar 30 2024 at 00:40):

David Egolf said:

Alright, we next have our first official "puzzle"!

Puzzle. Let $X = \mathbb{R}$ and for each open set $U \subseteq \mathbb{R}$ take $F U$ to be the set of continuous real-valued functions on $U$. Show that with the usual concept of restriction of functions, $F$ is a presheaf and in fact a sheaf.

I'll start by seeking to show that $F$ is a presheaf.

In order to show it is a presheaf, I think we have to show XX has a natural topology and forms a thin category, and then that FF fulfills the functor axioms (if we reverse the direction of the arrows). I’ve been trying to tell myself “a functor is a morphism in the category of categories” as a single idea to remind myself of the definition. I think the important thing is if two arrows f,gf, g in CC compose, then arrows Ff,FgFf, Fg must compose in such a way that FgFf=F(gf)Fg \circ Ff = F(g \circ f). Which basically says, “when you map the morphisms over, you can take the composition before, or you can take it after”.

view this post on Zulip Julius Hamilton (Mar 30 2024 at 00:42):

I’ll follow the rest of David’s proof a little later.

view this post on Zulip David Egolf (Mar 30 2024 at 02:35):

I don't have energy right now to respond in detail to your comments, @Julius Hamilton. But I did notice that above you asked "why?", regarding the fact that functors send commutative diagrams to commutative diagrams. You might find it a helpful exercise to pick a particular (simple) commutative diagram, and then aim to show that applying a functor FF to that diagram yields a commutative diagram.

view this post on Zulip Julius Hamilton (Mar 30 2024 at 02:35):

All good brotha rest up. Yes I will think about that.

view this post on Zulip David Tanzer (Mar 30 2024 at 04:47):

To prove it, need to first formalize what it means for a diagram to be commutative.

view this post on Zulip David Tanzer (Mar 30 2024 at 06:16):

As an aside, in an alternative definition, one could take preserving diagram commutativity as a defining characteristic of a functor; then recover T(fg)=T(f)T(g)T(f \circ g) = T(f) \circ T(g) by applying this to a simple diagram. Not as efficient as a technical definition, but seems conceptually useful.

view this post on Zulip David Egolf (Mar 30 2024 at 16:14):

Reid Barton said:
Before moving on to the next puzzle, I want think about this for a bit:

Here's another (possibly tricky) puzzle for you. When you proved that FF was a presheaf, you introduced another functor, GG. Does this proof that FF is a sheaf have some formulation that involves GG?

The words "possibly tricky" strike some fear into my heart, but this sounds fun to think about - so I'll see what I can figure out...

view this post on Zulip David Egolf (Mar 30 2024 at 16:22):

First, let's recall the context:

view this post on Zulip David Egolf (Mar 30 2024 at 21:53):

Imagine we have two open sets U1U_1 and U2U_2 (in the standard topology on R\mathbb{R}) with U=U1U2U = U_1 \cup U_2. For Top(,R)G\mathsf{Top}(-, \mathbb{R}) \circ G to be a sheaf, I think we need to be able to construct a unique real-valued continuous function s:GURs:GU \to \mathbb{R} from a pair of real-valued continuous functions s1:GU1Rs_1:GU_1 \to \mathbb{R} and s2:GU2Rs_2:GU_2 \to \mathbb{R}, provided that s1s_1 and s2s_2 agree on GU1GU2GU_1 \cap GU_2. [Or should they agree on G(U1U2)G(U_1 \cap U_2)? Still figuring this out...]

We also want to be able to go the other way: given the s:GURs:GU \to \mathbb{R} constructed from s1s_1 and s2s_2 above, we want to be able to recover s1s_1 and s2s_2 from ss by appropriately restricting ss.

When we have two batches of information that we want to be equivalent, that makes me start to think of limits or colimits!

view this post on Zulip David Egolf (Mar 30 2024 at 22:05):

I'm pretty sure what I just wrote above isn't quite right. Or, at least, I'm quite confused about it.

But here's a picture illustrating the very rough idea I have in mind, that I'm still working to clearly spell out:
picture

This diagram is in Topop\mathsf{Top}^{\mathrm{op}}.

view this post on Zulip David Egolf (Mar 30 2024 at 22:07):

Very roughly, I'm starting to wonder if GG should do something like "preserving pullbacks", if Top(,R)G\mathsf{Top}(-, \mathbb{R}) \circ G is to be a sheaf. But it will take me some thinking to express this idea more clearly!

view this post on Zulip John Baez (Mar 30 2024 at 22:16):

I think you're on the right track. I think all this can be simplified a bit.

view this post on Zulip John Baez (Mar 30 2024 at 22:24):

I go into this in a bit more detail in Part 3 of my course. Just two short paragraphs. But you seem to be enjoying discovering this stuff on your own, which is really better.

view this post on Zulip John Baez (Mar 30 2024 at 22:27):

If you try to develop a subject on your own, the way you're doing, it can become much easier to understand what people are doing when you read the 'official' treatment.

view this post on Zulip John Baez (Mar 30 2024 at 22:36):

By the way, another tiny point:

David Egolf said:

Here is a statement of the "Local Criterion for Continuity" from Lee's book:

A map f:XYf:X \to Y between topological spaces is continuous if and only if each point of XX has a neighborhood on which (the restriction of ) ff is continuous.

I'm losing track of who said what where, but I think I saw someone derive this "local criterion for continuity" from something more basic, which might be called the "local criterion for openness:

A subset SS of a topological space is open     \iff each point xSx \in S is contained in some open set OxO_x contained in SS.

This is amusingly easy to prove. For the     \implies direction just take Ox=SO_x = S. For the \Leftarrow direction just note S=xSOxS = \bigcup_{x \in S} O_x and use the fact that a union of open sets is open.

view this post on Zulip John Baez (Mar 30 2024 at 22:38):

So we can say openness is a 'local' condition: to see if a set is open, you can run around checking some condition about all its points, and the set is open iff this condition holds for all its points.

And this implies that continuity is also a local condition: to see if a function is continuous, you can run around checking some condition at all points of its domain, and the function is continuous iff this condition holds for all those points.

view this post on Zulip David Egolf (Mar 30 2024 at 22:40):

Yes, I made implicit use of this "local criterion for openness" above! Before doing so, I had never noticed this connection between continuity being "locally detectable" and openness being "locally detectable"! Cool stuff! :smile:

view this post on Zulip John Baez (Mar 30 2024 at 22:40):

Yes!

And there's a "for all" in both of these "local criteria". I haven't thought about it hard, but I bet this is connected to the fact that the sheaf condition can be stated in terms of limits. (A "for all" is a limit, and the pullback you were looking at is also a limit.)

view this post on Zulip John Baez (Mar 30 2024 at 22:43):

I guess for now the main moral is that sheaves are all about "locally detectable" properties.

view this post on Zulip Peva Blanchard (Mar 30 2024 at 22:46):

I'm wondering then what makes a property "local".

It is as if it was something that is trivially parallelizable: I imagine a (possibly uncountable) set of agents that would check for each point xx whether the property holds "around" that point, and, most importantly, they don't need to communicate/synchronize. And the agents are indistinguishable (each of them runs the same check procedure).

view this post on Zulip John Baez (Mar 30 2024 at 23:00):

That sounds right! It's a nice thought. I can try to make it slightly more precise. There's an agent for each point. Each agent runs the same check procedure, which can be checked in an arbitrarily small neighborhood of their point. Then at the end we report the answer "true" if and only if they all get the answer "true".

view this post on Zulip John Baez (Mar 30 2024 at 23:02):

Important properties of functions f:RRf : \mathbb{R} \to \mathbb{R} like continuity, differentiability, smoothness, analyticity, upper and lower continuity, and measurability all work like this.

view this post on Zulip John Baez (Mar 30 2024 at 23:02):

Later in my posts I talk about the idea of a 'germ', which is connected to this stuff.

view this post on Zulip Peva Blanchard (Mar 30 2024 at 23:22):

Oh yes, I remember now the formal definition of 'germ', but it's the first time that I get an inverse "tree-like" mental picture of it. Here's what I have in mind.

Initially, we have one agent that checks whether the property PP holds over the open set XX. The agent can spawn (possibly uncountably many) new agents, that are clones of their genitor, each of them being responsible for an open subset of XX. The parent agent reports true iff all its children reports true. And the process continues like this.

This is a very poor algorithm: depending on the topological space, this could take a transfinite number of steps and a transfinite number of agents.

What I find amusing is that the opposite category of open subsets of XX somehow describes this big clone-spawning branching process. The points of XX are exactly the (infinitely long) branches.

view this post on Zulip Peva Blanchard (Mar 30 2024 at 23:32):

ps: To be more precise, I should force agents to merge when they work on the same open subset.

view this post on Zulip David Egolf (Mar 31 2024 at 00:10):

The idea of "local agents that can work in parallel" reminds me a whole lot of an ultrasound reconstruction technique I know of, where the reconstruction at each point can be computed in isolation of the reconstruction at different points. But this is not quite analogous because the agents in this case would report a number, not just a "yes!" or "no!" regarding whether some property holds.

view this post on Zulip David Egolf (Mar 31 2024 at 00:11):

One could also consider checking a reconstructed image point by point, and at each point asking if the reconstruction at that point is "plausible" (in some sense) given the observations. (This would probably involve assessing whether the observed data "relevant to this point" is similar enough relative to what we'd expect if our reconstruction as this point reflects the true object).

However, just because a reconstructed image agrees (in some sense) with the observed data at each point does not imply that the entire reconstructed image agrees with the observed data. So, in this example, "reconstruction plausibility" is not "locally detectable".

view this post on Zulip David Egolf (Mar 31 2024 at 00:16):

This has been a fruitful bonus question to think about!

However, starting next week, I'm hoping to move on to the next puzzle in the blog post, which is this:

Let X=RX = \mathbb{R} and for each open set URU \subseteq \mathbb{R} take FUF U to be the set of bounded continuous real-valued functions on UU. Show that with the usual concept of restriction of functions, FF is a separated presheaf but not a sheaf.

view this post on Zulip Peva Blanchard (Mar 31 2024 at 00:44):

David Egolf said:

The idea of "local agents that can work in parallel" reminds me a whole lot of an ultrasound reconstruction technique I know of, where the reconstruction at each point can be computed in isolation of the reconstruction at different points. But this is not quite analogous because the agents in this case would report a number, not just a "yes!" or "no!" regarding whether some property holds.

I'll cheat a bit (because I remember later posts from John's series). I think these Boolean agents actually are the truth values of the topos of sheaves over XX. When the root agent reports "yes!", then the property holds everywhere. When one of its children does, then the property holds on the associated subset. I think we can think of this "collection of boolean agents over XX" as a specific sheaf.

spoiler

Now regarding agents that would report numbers. I think we should remember that the parent agent aggregates the results of its children. In the "yes/no" case, the aggregation is simply a big conjunction. If, oth, "point"-children report numbers, then the parent can aggregate just by making a tuple out of them, indexed by their location. In other words, each agent really reports real-valued function, and the parent aggregation process amounts to gluing the functions reported by its children, i.e., taking a categorical limit.

I will stop there, as otherwise, it's just going to be another burrito tutorial.

Anyway, a lot of things clicked today, so thank you :)

view this post on Zulip John Baez (Mar 31 2024 at 01:44):

Good stuff, Peva! I'm too tired to think hard about what you said, so I'll just report the slogan "topos theory is the study of local truth".

view this post on Zulip Madeleine Birchfield (Mar 31 2024 at 15:16):

Do presheaf categories still have subobject classifiers if Set does not have a subobject classifier because one is a constructive predicativist?

view this post on Zulip Morgan Rogers (he/him) (Mar 31 2024 at 15:23):

Did you already see the nLab page [[predicative topos]]?

view this post on Zulip Eric M Downes (Mar 31 2024 at 18:13):

Julius Hamilton said:

Eric M Downes said:

  1. Can you distinguish between the "generator arrows" of a poset, and the morphisms only in the closure?

I’d never thought of that before. I’m curious to know what those elements might be called in an abstract algebra setting. I’ve been thinking about how a one object category is a monoid, and if there is a corresponding abstract algebraic structure for a “multi-object category”.

"Generators" is most common for such elements in most contexts; famously the symmetric group SnS_n can be generated by just two maps mm+1(modn)m\mapsto m+1\pmod{n} and (12)(12). What is the operation under which a permutation group specifically can be said to be closed?

A family of subsets F(X)\mathcal{F}(X) can generate a topology cl,(F)\mathrm{cl}_{\cup,\cap}(\mathcal{F}). The topology is the closure under arbitrary unions and finite intersections. Is a topology a category?

There is such a thing as a delooping; simplest context is a finite commutative monoid, in which every element is an object. Draw an arrow xyx\to y just when z; y=zx\exists z;~y=zx (Green's relations). Take your favorite finite commutative monoid (without inverses if you want to deal with fewer arrows), how few arrows can you specify, such that asserting closure under composition of arrows fills in the rest of the cayley table?

The above arrow drawing requires associativity of elements. "Magmas" are the non-associative binops. For a familiar structure that is closed in an elemental sense but not closed in another very meaningful sense, consider the rock-paper-scissors magma
rpsrrprpppssrss\begin{array}{c|ccc}& r&p&s\\ \hline r & r & p & r\\ p & p & p & s\\ s & r & s & s\end{array}
This binary operator is not associative. You can rephrase the associativity condition as a kind of closure (or lack-thereof) under a certain familiar operation. What is it? How many elements must the closed structure have?

view this post on Zulip Eric M Downes (Mar 31 2024 at 18:36):

Julius Hamilton said:

I think your point is that all the arrows in a thin category are generators. Now I have to think about what how categories can have non-generator arrows.

No, you can have non-generator arrows in a thin category. Consider a poset ({x,y,z},)\big(\{x,y,z\},\leq\big) and there are two "generator" arrows
xy,yzx\leq y, y\leq z
what third arrow must also be present?

view this post on Zulip Eric M Downes (Mar 31 2024 at 18:44):

(And, having answered that question, and recalling there is at most one arrow between any two objects in a thin category, you should understand why all diagrams* in a thin category commute.)

view this post on Zulip David Egolf (Apr 01 2024 at 16:29):

Here's the next puzzle I want to work through:

Let X=RX = \mathbb{R} and for each open set URU \subseteq \mathbb{R} take FUF U to be the set of bounded continuous real-valued functions on UU. Show that with the usual concept of restriction of functions, FF is a separated presheaf but not a sheaf.

We start by showing FF is a functor F:O(R)opSetF: {\mathcal{O}(\mathbb{R})}^{\mathrm{op}} \to \mathsf{Set}, which means it is a presheaf. On objects, FF sends an open set URU \subseteq \mathbb{R} to the set FUFU of bounded continuous real-valued functions on UU. Note: to determine if a function from UU it continuous, we need to put a topology on UU. To talk about continuity, we equip UU with the subspace topology it inherits from R\mathbb{R}.

On morphisms, FF sends a morphism r:ABr:A \to B to the corresponding restriction function, which sends a bounded continuous real-valued function f:ARf:A \to \mathbb{R} to fi:BRf \circ i:B \to \mathbb{R}, where i:BAi: B \to A is the inclusion map. We saw earlier that inclusion maps like ii are continuous, and therefore the restriction of a continuous function is continuous. Further, restricting a bounded function yields a bounded function.

For each object UU in O(R)op{\mathcal{O}(\mathbb{R})}^{\mathrm{op}}, FF sends the identity morphism 1U:UU1_U: U \to U to the identity function on FUFU. This is because restricting a function to its own domain leaves the function unchanged.

If we have the situation rr=rr \circ r' = r'' in O(R)op{\mathcal{O}(\mathbb{R})}^{\mathrm{op}}, then we have F(r)F(r)=F(r)F(r) \circ F(r') = F(r''). That is because restricting a function to some domain in two steps yields the same result as restricting it to that domain all at once.

We conclude that FF is a functor F:O(R)opSetF: {\mathcal{O}(\mathbb{R})}^{\mathrm{op}} \to \mathsf{Set} and hence a presheaf.

view this post on Zulip David Egolf (Apr 01 2024 at 16:34):

Next, we show that FF is a separated presheaf but not a sheaf. If FF was a sheaf, we'd always be able to do the following:

If this ss always exists and is unique, then FF is a sheaf. If ss doesn't always exist, but is unique when it exists, then FF is a separated presheaf.

view this post on Zulip David Egolf (Apr 01 2024 at 16:40):

In this puzzle, if ss exists it is unique. For any xUx \in U, since U=iUiU = \cup_i U_i, we have that xUix \in U_i for some ii. Then, since sUi=sis|_{U_i} = s_i, we have that s(x)=si(x)s(x) = s_i(x). So, the value of ss at every point is fixed (if it exists) once we pick all our sis_i.

But ss doesn't always exist! That's because if you glue together an infinite number of bounded real-valued continuous functions that agree on overlaps, you don't always get a bounded function! Intuitively, if you run around and check that each little bit of a function is locally bounded, you can't conclude that the whole thing is bounded.

We conclude that FF is a separated presheaf and not a sheaf.

view this post on Zulip David Egolf (Apr 01 2024 at 16:56):

There is quite a bit of discussion before the next puzzle! So, I'll try to introduce the next puzzle a little.

To my understanding, part of the goal of the next puzzle is to work towards a notion of morphism between categories of sheaves. And since each category of sheaves is an "elementary topos", this is relevant for thinking about morphisms between elementary topoi.

view this post on Zulip David Egolf (Apr 01 2024 at 17:03):

And why do we care about morphisms between topoi? Here are a couple possible reasons:

view this post on Zulip David Egolf (Apr 01 2024 at 17:06):

At any rate, here is the next puzzle:

Show that fFf_\ast F is a presheaf. That is, explain how we can restrict an element of (fF)(V)(f_\ast F)(V) to any open set contained in VV, and check that we get a presheaf this way.

Here, fFf_\ast F is defined as: (fF)(V)=F(f1V)(f_\ast F)(V) = F(f^{-1} V) for each open subset VV of a topological space YY. Note that f:XYf: X \to Y is a continuous function and FF is a presheaf on XX. We also have f1V={xX:  f(x)V}Xf^{-1} V = \{x \in X :\; f(x) \in V \} \subseteq X. Note that f1Vf^{-1} V is open because VV is open and ff and continuous.

Roughly, our goal here is to make a presheaf on YY given a continuous function f:XYf:X \to Y and a presheaf FF on XX.

view this post on Zulip Peva Blanchard (Apr 01 2024 at 21:59):

David Egolf said:

In this puzzle, if ss exists it is unique. For any xUx \in U, since U=iUiU = \cup_i U_i, we have that xUix \in U_i for some ii. Then, since sUi=sis|_{U_i} = s_i, we have that s(x)=si(x)s(x) = s_i(x). So, the value of ss at every point is fixed (if it exists) once we pick all our sis_i.

But ss doesn't always exist! That's because if you glue together an infinite number of bounded real-valued continuous functions that agree on overlaps, you don't always get a bounded function! Intuitively, if you run around and check that each little bit of a function is locally bounded, you can't conclude that the whole thing is bounded.

We conclude that FF is a separated presheaf and not a sheaf.

I wanted to provide a concrete counter-example.

Consider the topological space X=(0,1]X = (0,1], the half-open unit interval, with the induced topology from R\mathbb{R}. For all nNn \in \mathbb{N}, let Un=(11+n,1]U_n = \left(\frac{1}{1 + n}, 1\right] and fn(x)=1xf_n(x) = \frac{1}{x} on UnU_n. The UnU_n cover XX, X=nUnX = \bigcup_n U_n, and each fnf_n is bounded. Moreover, for any nmn \leq m, UnUm=UnU_n \cap U_m = U_n and fnf_n and fmf_m obviously match on UnU_n. If the presheaf F\mathcal{F} of bounded functions were a sheaf, there would exist a bounded function ff defined on XX such that fUn=fnf_{|U_n} = f_n. In particular, for all nn

sup fsup fn=n+1sup~f \geq sup~f_n = n + 1

whence a contradiction, i.e., F\mathcal{F} is not a sheaf.

view this post on Zulip Peva Blanchard (Apr 01 2024 at 22:11):

There are variants of this idea: presheaf of Lipschitz functions (take x\sqrt{x} or ln xln~x in the example above) (edit: 1x\frac{1}{x} works as well), presheaf of functions with bounded derivatives of order kk (just integrate kk times the previous examples).

view this post on Zulip David Egolf (Apr 01 2024 at 22:22):

Thanks for sharing some specific examples! I hadn't thought of those!

The counterexample I had in mind looks like this in picture form:
counterexample picture

The idea is to consider the identity function f:RRf: \mathbb{R} \to \mathbb{R} that sends xx to xx. Then, we can get each sis_i by restricting ff to, say, Ui=(i,i+2)U_i=(i, i+2). Each sis_i is then bounded, and the collection of sis_i agrees on overlaps, but when we try to glue together all the sis_i, our resulting function isn't bounded anymore.

view this post on Zulip Peva Blanchard (Apr 01 2024 at 22:29):

oh yes, nice! The common pattern to get a "non-sheafy presheaf" is to start from a invalid candidate defined globally such that the restrictions of this candidate to specific open subsets satisfy a condition.

Each invalid candidate has a sort of singularity at some point (e.g., 0 in my example, and ++\infty in yours), and then we just restrict to open subsets that avoid "just enough" this point.

view this post on Zulip Peva Blanchard (Apr 01 2024 at 22:50):

Mmh, these examples do not work any more if XX is compact. Compact means that from any covering we can extract a finite cover of XX. If XX is compact, is the presheaf of bounded functions on XX a sheaf? It seems so.

view this post on Zulip David Egolf (Apr 01 2024 at 22:59):

If XX is compact, couldn't it still have a non-compact open subset UU? And then we could maybe set up an unbounded function ff defined on UU to show that we don't have a sheaf. (Restrict ff to a bunch of UiU_i where iUi=U\cup_i U_i = U, and where fUif|_{U_i} is bounded for each ii. Then these glue together to ff, which is unbounded. So then, we can't always glue together a bunch of compatible FUiFU_i to make an element of FUFU.)

view this post on Zulip Peva Blanchard (Apr 01 2024 at 23:05):

I'm not sure that a compact set can contain a non-compact open subset. (I'm thinking about the closed unit interval [0,1][0,1]). (edit: oh my brain ...)

view this post on Zulip David Egolf (Apr 01 2024 at 23:07):

My initial thought was that something like (0.4,0.6)(0.4,0.6) would be a non-compact open subset of the topological space [0,1][0,1]. But I am a bit shaky on compactness, so maybe I'm just confused. (I'd need to review this stuff!)

view this post on Zulip Peva Blanchard (Apr 01 2024 at 23:09):

Oh yes you're right!

view this post on Zulip Peva Blanchard (Apr 01 2024 at 23:11):

I focused on the total space, but yes we can reproduce the example on any open subset.

view this post on Zulip Peva Blanchard (Apr 01 2024 at 23:16):

Now, I'm looking for a topological space XX such that the presheaf of bounded functions is indeed a sheaf. From our discussion, it suffices that any open subset of XX be compact, right? I'm wondering what kind of space is that.

view this post on Zulip Peva Blanchard (Apr 01 2024 at 23:17):

One example: any set XX equipped with the trivial topology (\emptyset, XX are the only open sets). Topologically, such a space behaves like a space with one point.

view this post on Zulip Peva Blanchard (Apr 01 2024 at 23:41):

Another example: a finite set XX, with any topology.

view this post on Zulip Peva Blanchard (Apr 01 2024 at 23:42):

In other words: any set XX with a topology admitting a finite number of open sets.

view this post on Zulip David Egolf (Apr 01 2024 at 23:45):

I wonder if there are any examples where XX has an infinite number of open sets.
(Interesting stuff! I need to take a break for today - I have to manage my energy carefully - but of course please feel free to keep posting here.)

view this post on Zulip Peva Blanchard (Apr 01 2024 at 23:50):

Sure! I'll probably continue under another topic, so as not to divert the purpose of yours.

view this post on Zulip John Baez (Apr 01 2024 at 23:56):

Digression: here's another example of a separated presheaf that's not a sheaf, which I just thought of. Take N\mathbb{N} with its usual topology, where all subsets are open, and let FF be the presheaf where F(U)F(U) for any UNU \subset \mathbb{N} is the set of computable partial functions F:NNF: \mathbb{N} \to \mathbb{N} whose domain includes UU.

view this post on Zulip John Baez (Apr 01 2024 at 23:58):

So, simply put, F(U)F(U) consists of all partially defined functions ff from the natural numbers to the natural numbers such that you can write a computer program which halts and spits out f(n)f(n) when nUn \in U.

view this post on Zulip John Baez (Apr 01 2024 at 23:58):

For any finite UU, these are all the functions from UU to N\mathbb{N}.

view this post on Zulip John Baez (Apr 02 2024 at 00:00):

But for U=NU = \mathbb{N} there are lots of functions from UU to NN that aren't computable.

view this post on Zulip Peva Blanchard (Apr 02 2024 at 00:37):

Mmh, it's not as easy to come up with an explicit example (i.e., a witness of the non-sheafiness of FF).

view this post on Zulip Peva Blanchard (Apr 02 2024 at 00:43):

Here's my attempt.

Let N=iNUi\mathbb{N} = \bigcup_{i \in \mathbb{N}} U_i with Ui={i}U_i = \{i\}.

Define si:UiNs_i : U_i \rightarrow \mathbb{N} as the function that outputs 11 if the ii-th Turing machine halts, and 00 otherwise. All the sis_i's agree on the intersections (the UiU_i's are disjoint).

If FF were a sheaf, then there would be a total computable function on N\mathbb{N} that would solve Turing's halting problem, whence a contradiction.

view this post on Zulip Peva Blanchard (Apr 02 2024 at 00:46):

It's a bit weird, I had to convince myself that sis_i does belong to F(Ui)F(U_i) (still not 100% sure). It seems trivially true since UiU_i is finite. The strangeness comes from the fact that I am invoking the halting problem's oracle to define sis_i.

In a sense, the covering of N\mathbb{N} by the UiU_i acts like an oracle.

view this post on Zulip David Egolf (Apr 02 2024 at 17:01):

John Baez said:

So, simply put, F(U)F(U) consists of all partially defined functions ff from the natural numbers to the natural numbers such that you can write a computer program which halts and spits out f(n)f(n) when nUn \in U.

This sounds cool! But I'm having a hard time wrapping my mind around it. Is the idea that we need a single program that takes in any nn and then produces the corresponding f(n)f(n)? Or are we allowed to have different programs, say one for each nn, to calculate f(n)f(n)?

I'm guessing it's the first - we need a single program that can handle any nn. Then if f:UNf:U \to \mathbb{N} and UU is a singleton {n}\{n\}, given f(n)f(n) we can write a very short program that outputs f(n)f(n) given nn: just output f(n)f(n).

Then if UU is finite, and we know f(n)f(n) for each nUn \in U, we can still write a single program that will run in a finite amount of time, and that outputs f(n)f(n) given nn. We can just create a bunch of if/then statements that check to see if the given input value corresponds to the output value f(n)f(n) as nn varies. Since UU is finite, there will be a finite number of if/then statements that run, and so the run-time will be finite.

view this post on Zulip David Egolf (Apr 02 2024 at 17:05):

But if UU is infinite, and there's no clever trick to figure out the values of ff quickly, then I was going to say that the approach I outlined above wouldn't always run in a finite amount of time, because we'd need an infinite number of if/then statements. But, for any finite nn, I think we'd only have to run a finite number of if/then statements to look up the appropriate value for f(n)f(n). So it seems like the runtime would be finite for any input nn?

I think I must be confused on something!

view this post on Zulip David Egolf (Apr 02 2024 at 17:08):

Maybe the problem with the program I outline above (in the case where UU is infinite) is that it would need to be infinite in length (even though its runtime for any input would always be finite). That doesn't sound like a legitimate "computer program"!

view this post on Zulip John Baez (Apr 02 2024 at 17:28):

David Egolf said:

John Baez said:

So, simply put, F(U)F(U) consists of all partially defined functions ff from the natural numbers to the natural numbers such that you can write a computer program which halts and spits out f(n)f(n) when nUn \in U.

This sounds cool! But I'm having a hard time wrapping my mind around it. Is the idea that we need a single program that takes in any nn and then produces the corresponding f(n)f(n)? Or are we allowed to have different programs, say one for each nn, to calculate f(n)f(n)?

You need one program that takes in any nUn \in U and halts after printing out f(n)f(n).

The other option, one program for each nn, would say that every function f:UNf: U \to \mathbb{N} is computable. For any n,mNn, m \in \mathbb{N} you can write a program which prints mm when you input nn.

This fact is exactly the reason why computable functions don't form a sheaf!

view this post on Zulip John Baez (Apr 02 2024 at 17:29):

I can take N\mathbb{N} and cover it with singletons. The restriction of any function f:NNf: \mathbb{N} \to \mathbb{N} to any singleton is computable, even if ff is not computable.

view this post on Zulip John Baez (Apr 02 2024 at 17:31):

In simple rough terms: we're failing to get a sheaf because you can't always glue together infinitely many programs into one program.

Or even more tersely: computability of functions f:NNf: \mathbb{N} \to \mathbb{N} is not a local property.

view this post on Zulip David Tanzer (Apr 02 2024 at 21:49):

From math overflow, another example of presheaves that are not sheaves: presheaves of constant functions

view this post on Zulip David Tanzer (Apr 02 2024 at 21:57):

i.e., generally can't glue compatible local constant functions into a global constant function

view this post on Zulip John Baez (Apr 02 2024 at 23:09):

Nice! We were talking about examples of separated presheaves that are not sheaves, and the presheaf of constant functions is actually a separated presheaf.

Reminder: a presheaf is a sheaf if given sections sαs_\alpha on open sets UαU_\alpha covering UU which agree when restricted to the overlaps UαUβU_\alpha \cap U_\beta, there exists a unique section ss on UU that restricts to each of the sαs_\alpha. If we have uniqueness but perhaps not existence, then our presheaf is called separated. As David showed a while back, the presheaf of bounded real-valued functions on a space is separated but usually not a sheaf.

view this post on Zulip John Baez (Apr 02 2024 at 23:11):

Btw, one reason this concept is important is that there's a trick called 'sheafification' that turns a presheaf into a sheaf. One way to do it involves doing a certain maneuver twice. The first pass turns the presheaf into a separated presheaf, and then second pass turns it into a sheaf! It's kind of amazing.

view this post on Zulip John Baez (Apr 02 2024 at 23:21):

It's probably too technical to get into now, but in case anyone cares, this maneuver is called the "plus construction", and you can read about it on the nLab.

view this post on Zulip David Tanzer (Apr 03 2024 at 07:34):

Cool, thanks for the reminder about the separated aspect. All these examples put a good spotlight on the glueing condition. Now that we've solidly established the definition of a sheaf, which feels rather substantive, I will somewhat naively now ask: what are a couple of cool things that we can do with sheaves, in at least a semi-applied sense? I'm sure there are many; just fishing around here for some favorites.

view this post on Zulip David Tanzer (Apr 03 2024 at 07:55):

p.s. I know that we're headed towards the topos side of town; in this question I'm fishing around for some good immediate / semi-concrete applications. For example, they're somehow going to give us insight into the structure of manifolds? Or stuff in computer science, ...

view this post on Zulip David Tanzer (Apr 03 2024 at 07:59):

(If this would go beyond a few high level points, it could be spun off into a separate topic)

view this post on Zulip Peva Blanchard (Apr 03 2024 at 08:40):

Here is one example of application in network dynamic theory: Opinion dynamics on discourse sheaves.

view this post on Zulip David Egolf (Apr 03 2024 at 16:19):

This paper, which I want to read someday, also comes to mind: Sheaves are the canonical data structure for sensor integration

A sensor integration framework should be sufficiently general to accurately represent all information sources, and also be able to summarize information in a faithful way that emphasizes important, actionable information. Few approaches adequately address these two discordant requirements. The purpose of this expository paper is to explain why sheaves are the canonical data structure for sensor integration and how the mathematics of sheaves satisfies our two requirements. We outline some of the powerful inferential tools that are not available to other representational frameworks.

view this post on Zulip David Egolf (Apr 03 2024 at 16:22):

I want to start thinking a little bit about the next puzzle. Here it is again:

Show that fFf_\ast F is a presheaf. That is, explain how we can restrict an element of (fF)(V)(f_\ast F)(V) to any open set contained in VV, and check that we get a presheaf this way.

Here, fFf_\ast F is defined as: (fF)(V)=F(f1V)(f_\ast F)(V) = F(f^{-1} V) for each open subset VV of a topological space YY. Note that f:XYf: X \to Y is a continuous function and F:O(X)opSetF:{\mathcal{O}(X)}^{\mathrm{op}} \to \mathsf{Set} is a presheaf on XX.

We also have f1V={xX:  f(x)V}Xf^{-1} V = \{x \in X :\; f(x) \in V \} \subseteq X. Note that f1Vf^{-1} V is open because VV is open and ff and continuous.

Roughly, our goal here is to make a presheaf on YY given a continuous function f:XYf:X \to Y and a presheaf F:O(X)opSetF:{\mathcal{O}(X)}^{\mathrm{op}} \to \mathsf{Set} on XX.

view this post on Zulip David Egolf (Apr 03 2024 at 16:23):

I wonder if a continuous function f:XYf: X \to Y induces a functor f:O(Y)opO(X)opf': {\mathcal{O}(Y)}^{\mathrm{op}} \to {\mathcal{O}(X)}^{\mathrm{op}}. If it does, then we could form fFf_\ast F as Ff:O(Y)opSetF \circ f': {\mathcal{O}(Y)}^{\mathrm{op}} \to \mathsf{Set}.

view this post on Zulip David Egolf (Apr 03 2024 at 16:29):

Let's see. If f:XYf: X \to Y is a continuous function, let's try to define a functor f:O(Y)opO(X)opf': {\mathcal{O}(Y)}^{\mathrm{op}} \to {\mathcal{O}(X)}^{\mathrm{op}} as follows:

view this post on Zulip David Egolf (Apr 03 2024 at 16:32):

Our proposed functor f:O(Y)opO(X)opf': {\mathcal{O}(Y)}^{\mathrm{op}} \to {\mathcal{O}(X)}^{\mathrm{op}} automatically respects composition, because all diagrams commute in a poset. And if 1V1_V is the identity morphism for VO(Y)opV \in {\mathcal{O}(Y)}^{\mathrm{op}}, then this gets mapped to the identity morphism on f1(V)f^{-1}(V), as desired.

So, I think that ff' is indeed a functor! (Hopefully I didn't miss something!)

It seems that a continuous function f:XYf: X \to Y does in fact induce a functor f:O(Y)opO(X)opf': {\mathcal{O}(Y)}^{\mathrm{op}} \to {\mathcal{O}(X)}^{\mathrm{op}}.

view this post on Zulip David Egolf (Apr 03 2024 at 16:35):

If that is true, then I think that fFf_* F is just Ff:O(Y)opSetF \circ f':{\mathcal{O}(Y)}^{\mathrm{op}} \to \mathsf{Set}. For an open set VO(Y)opV \in {\mathcal{O}(Y)}^{\mathrm{op}}, it spits out F(f(V))=F(f1(V)F(f'(V)) = F(f^{-1}(V), which is what fFf_*F is supposed to do. And it is indeed a functor, because composing two functors yields a functor.

view this post on Zulip John Baez (Apr 03 2024 at 16:42):

David Tanzer said:

Cool, thanks for the reminder about the separated aspect. All these examples put a good spotlight on the glueing condition. Now that we've solidly established the definition of a sheaf, which feels rather substantive, I'll ask: what are a couple of cool things that we can do with sheaves, in at least a semi-applied sense? I'm sure there are many; just fishing around here for some favorites.

My own favorite applications of sheaves are the ones that made people invent sheaves in the first place - applications to algebraic geometry and toplogy. I don't know how deeply we want to get into those here. But it's not surprising that some of the most exciting applications of a concept are the ones that made people take the trouble to develop it in the first place!

Briefly, since a bounded analytic function must be constant, there are no everywhere defined analytic functions on the Riemann sphere except constants - all the interesting ones have poles. This issue affects all of complex analysis and algebraic geometry. This puts pressure on us to either accept 'partially defined' functions as full-fledged mathematical objects or work with sheaves of functions, e.g. work with lots of different open sets UU in the Riemann sphere and let F(U)F(U) be the set of analytic functions everywhere defined on UU.

Mathematicians took the second course, because partially defined functions where you haven't specified the domain of definition are a pain to work with. So nowadays all of algebraic geometry (subsuming chunks of complex analysis, and much much more) is founded on sheaves. In this subject one can do a lot of amazing things with sheaves. Later on these tricks expanded to algebraic topology. And this is how a typical math grad student (like me) is likely to encounter sheaves.

Needless to say, I'm happy to get into more detail about what we actually do with sheaves. But it's quite extensive: the proof of Fermat's Last Theorem and pretty much all the other big results in algebraic geometry relies heavily on sheaves.

view this post on Zulip John Baez (Apr 03 2024 at 16:47):

Digressing a bit, I found this video pretty amusing, even though it's serious:

This is near the start of a series of over a hundred videos that works through the proof of Fermat's Last Theorem step by step.

view this post on Zulip John Baez (Apr 03 2024 at 16:53):

But this list of prerequisites is very intimidating. Sheaves have a lot of exciting applications in pure math that are infinitely easier to explain.

view this post on Zulip David Tanzer (Apr 03 2024 at 19:14):

I created a new topic to continue the discussion of applications of sheaves #learning: reading & references > Applications of sheaves

view this post on Zulip David Egolf (Apr 04 2024 at 16:51):

Here's the next puzzle in the first blog post:

Show that taking direct images gives a functor from the category of presheaves on XX to the category of presheaves on YY.

In the previous puzzle, we showed that the "direct image" of a presheaf FF on XX is a presheaf fFf_\ast F on YY. As a first step in showing that this gives us a functor, we still need to figure out how our direct image functor D:O(X)^O(Y)^D: \widehat{\mathcal{O}(X)} \to \widehat{\mathcal{O}(Y)} acts on morphisms between presheaves (which are natural transformations).

For my easy reference, I'll note that O(X)^=[O(X)op,Set]\widehat{\mathcal{O}(X)} = [{\mathcal{O}(X)}^{\mathrm{op}}, \mathsf{Set}] and O(Y)^=[O(Y)op,Set]\widehat{\mathcal{O}(Y)} = [{\mathcal{O}(Y)}^{\mathrm{op}}, \mathsf{Set}].

view this post on Zulip David Egolf (Apr 04 2024 at 16:56):

This one is going to take me some thought. I don't have any intuition for natural transformations between presheafs yet. I think what I'll do to start with, is to draw a naturality square describing part of a natural transformation between two presheafs. Hopefully that will help me find some intuition!

view this post on Zulip David Egolf (Apr 04 2024 at 17:10):

If UUU' \subseteq U, we have a (unique) morphism from UU to UU' in O(X)op{\mathcal{O}(X)}^{\mathrm{op}}. Let F,G:O(X)opSetF,G: {\mathcal{O}(X)}^{\mathrm{op}} \to \mathsf{Set} be presheafs on XX. Then, to have a natural transformation α:FG\alpha: F \to G, we need this square to commute for all pairs (U,U)(U, U') where UU and UU' are open sets of XX such that UUU' \subseteq U:

naturality square

view this post on Zulip David Egolf (Apr 04 2024 at 17:16):

Intuitively, for any xFUx \in FU, the natural transformation component αU:FUGU\alpha_U: FU \to GU tells us how to view that FF-data on UU as some GG-data on UU. Further, this process needs to respect restriction.

So we can expect there to be a natural transformation, for example, from the presheaf of bounded and continuous functions on XX to the presheaf of continuous functions on XX. In this case, each αU\alpha_U is an inclusion function.

But I wouldn't expect there to be a natural transformation from the presheaf of continuous functions on XX to the preseheaf of continuosu and bounded function on XX. That's because I can't think of a nice way of converting any continuous functions to a corresponding continuous and bounded function.

view this post on Zulip Peva Blanchard (Apr 04 2024 at 17:18):

I am not so sure about the latter. If GUGU is the singleton set consisting of the zero function on UU, then we can define αU\alpha_{U} as the unique map that sends every element of FUFU to zero.

view this post on Zulip John Baez (Apr 04 2024 at 17:21):

That sounds natural.

Puzzle. Is there a natural transformation from the presheaf of continuous functions to the presheaf of continuous and bounded functions that sends some functions to non-constant functions?

view this post on Zulip Peva Blanchard (Apr 04 2024 at 17:29):

puzzle answer

view this post on Zulip John Baez (Apr 04 2024 at 17:38):

I don't think that's "almost" the answer. I think it's exactly the answer! If there are any non-constant continuous functions on your space, your natural transformation will convert all continuous functions to bounded continuous functions, and send some to non-constant continuous functions.

view this post on Zulip David Egolf (Apr 04 2024 at 17:50):

John Baez said:

Puzzle. Is there a natural transformation from the presheaf of continuous functions to the presheaf of continuous and bounded functions that sends some functions to non-constant functions?

The first idea that comes to mind is:

I think this doesn't work though. That's because a restriction of an unbounded function might be bounded. If that happens, then the naturality square doesn't commute if one tries to follow the approach I described above.

view this post on Zulip David Egolf (Apr 04 2024 at 17:54):

Peaking at @Peva Blanchard 's answer... Huh, I did not expect arctan to show up! I guess its virtue is that it takes in any input, and squishes it down to a fixed finite range. Further, it does this without sending two inputs to the same output. And you can "squish" a function down and then restrict it, or you can restrict it first and then squish it down, and you'll get the same answer. So our naturality square will commute!

view this post on Zulip John Baez (Apr 04 2024 at 17:54):

Anything defined using cases is going to have trouble being natural. It sometimes works - but when I try to do something natural, I avoid methods that involve different cases, because the spirit of naturality is to do something that works uniformly for all cases.

view this post on Zulip John Baez (Apr 04 2024 at 17:56):

What Peva did is postcompose with a bounded continuous function; this turns any continuous function into a bounded continuous function. People who take real analysis use arctan as their go-to guy for this purpose, because this is also 1-1, so postcomposing with it doesn't lose any information, but they could equally well use tanh or lots of other things.

view this post on Zulip John Baez (Apr 04 2024 at 17:56):

For this puzzle postcomposing with sin or cos would work fine too.

view this post on Zulip David Egolf (Apr 04 2024 at 17:58):

That's actually a really cool point! If f:XYf: X \to Y is any continuous function, and g:YRg: Y \to \mathbb{R} is continuous and bounded, then gfg \circ f is also continuous and bounded! And if this post-composition doesn't lose information (which I think corresponds to gg being a monomorphism), then we've managed to produce a continuous bounded function that "still remembers" the original unbounded function that it came from!

view this post on Zulip Peva Blanchard (Apr 04 2024 at 17:59):

This way of "applying the same procedure pointwise". I think it relates to the way one checks the sheaf condition.

view this post on Zulip Peva Blanchard (Apr 04 2024 at 18:02):

(I'm trying to make this statement clearer)

view this post on Zulip John Baez (Apr 04 2024 at 18:03):

It may already show up from the presheaf condition.

To get a natural transformation between presheaves what you do to sections needs to be "local": you can restrict a section to a smaller open set and do the operation, or do the operation and then restrict, and these need to agree.

The most local of local operations are the "pointwise" ones.

But notice that there are other local operations: for example differentiation gives a map from the presheaf of smooth real-valued functions on the real line to itself.

view this post on Zulip John Baez (Apr 04 2024 at 18:04):

(I'm saying "presheaf" a lot here. Each time I could have said "sheaf", but I don't think I'm using the sheaf condition in what I'm saying.)

view this post on Zulip John Baez (Apr 04 2024 at 18:05):

(I should add that a map between sheaves is just defined to be a map between presheaves that happen to be sheaves.)

view this post on Zulip Peva Blanchard (Apr 04 2024 at 18:09):

I have the feeling that, in the case of sheaves, a natural transformation is uniquely determined by what it does "pointwise" (more precisely, on the germs).

view this post on Zulip Peva Blanchard (Apr 04 2024 at 18:14):

Something like: the set of natural transformations from an AA-valued sheaf FF to a BB-valued sheaf GG is equivalently described by a sheaf with values in Set(A,B)Set(A, B) (the functions from AA to BB).

view this post on Zulip John Baez (Apr 04 2024 at 18:14):

Analysts would never say differentiation is done "pointwise" - so yes, I think the correct word should be something like "germwise".

view this post on Zulip John Baez (Apr 04 2024 at 18:15):

This could become a theorem once we (= David) officially study germs; then we could show a map between sheaves is determined by what it does to germs.

view this post on Zulip David Egolf (Apr 05 2024 at 17:13):

Building on the discussion above, I think I can now start to work out how we can get a natural transformation between two direct image functors fF:O(Y)opSetf_*F: \mathcal{O}(Y)^{\mathrm{op}} \to \mathsf{Set} and fG:O(Y)opSetf_*G: \mathcal{O}(Y)^{\mathrm{op}} \to \mathsf{Set}. If we have a natural trasnformation α:FG\alpha: F \to G, then for each open subset VV of YY, we need to figure out how to compute fGf_*G-data on VV from fFf_*F-data on VV. This will serve as the VV-th component of a natural transformation from fFf_*F to fGf_*G.

So, let's assume we have the two sets fF(V)f_*F(V) and fG(V)f_*G(V). We're looking for a function βV:fF(V)fG(V)\beta_V: f_*F(V) \to f_*G(V). Let xfF(V)x \in f_*F(V). Our goal is to figure out βV(x)\beta_V(x).

Since xfF(V)x \in f_*F(V), xF(f1(V))x \in F(f^{-1}(V)). From this, we need to get some element βV(x)fG(V)=G(f1(V))\beta_V(x) \in f_*G(V) = G(f^{-1}(V)). To do this, we can use our natural transformation α:FG\alpha: F \to G. Since αf1V:F(f1(V))G(f1(V))\alpha_{f^{-1}V}: F(f^{-1}(V)) \to G(f^{-1}(V)), we can just provide xx to this function and get out βV(x)\beta_V(x).

We've arrived at the following idea: Let our direct image functor D:O(X)^O(Y)^D:\widehat{\mathcal{O}(X)} \to \widehat{\mathcal{O}(Y)} send a natural transformation α:FG\alpha: F \to G to the natural transformation D(α):fFfGD(\alpha):f_*F \to f_*G having VV-th component D(α)V=αf1(V)D(\alpha)_V = \alpha_{f^{-1}(V)}

view this post on Zulip David Egolf (Apr 05 2024 at 17:29):

Next, let's check that D(α):fFfGD(\alpha): f_*F \to f_*G really is a natural transformation. Evaluating these functors at some morphsim :UV:U \to V in O(Y)op{\mathcal{O}(Y)}^{\mathrm{op}}, we get this square:

square

This square can be rewritten as:
square 2

And this square diagram commutes, because α\alpha is a natural transformation. We conclude that any naturality square for D(α)D(\alpha) commutes, and hence D(α)D(\alpha) is a natural transformation. So, DD is sending natural transformations to natural transformations, as it should.

view this post on Zulip David Egolf (Apr 05 2024 at 17:51):

It only remains to show that D:O(X)^O(Y)^D:\widehat{\mathcal{O}(X)} \to \widehat{\mathcal{O}(Y)} is a functor!

First, we need to check that D(1F)=1F(D)D(1_F) = 1_{F(D)} for any identity morphism 1F:FF1_F: F \to F in O(X)^\widehat{\mathcal{O}(X)}. By our definition of DD, we have D(1F)V=(1F)f1(V)D(1_F)_V = (1_F)_{f^{-1}(V)}. Since each component of 1F1_F is an identity function, (1F)f1(V)(1_F)_{f^{-1}(V)} is the identity function from f1(V)f^{-1}(V) to f1(V)f^{-1}(V). So, we see that D(1F)D(1_F) is the identity natural transformation from fFf_*F to itself. (Indeed, the identity natural transformation from fFf_*F to itself has as its VV-th component the identity function on F(f1V)F(f^{-1}V)).

view this post on Zulip David Egolf (Apr 05 2024 at 18:01):

Lastly, we need to check that DD respects composition. That is, we need to show that D(αβ)=D(α)D(β)D(\alpha \circ \beta) = D(\alpha) \circ D(\beta) for two composable morphisms α,β\alpha, \beta. To show that two natural transformations are equal, it suffices to show that each of their components are equal. So, we wish to show that D(αβ)V=D(α)VD(α)VD(\alpha \circ \beta)_V = D(\alpha)_V \circ D(\alpha)_V, for any VO(Y)opV \in \mathcal{O}(Y)^{\mathrm{op}}.

By definition of DD, we have D(αβ)V=(αβ)f1VD(\alpha \circ \beta)_V = (\alpha \circ \beta)_{f^{-1}V}. We also have D(α)V=αf1VD(\alpha)_V = \alpha_{f^{-1}V} and D(β)V=βf1VD(\beta)_V = \beta_{f^{-1}V}. So, D(αV)D(βV)=αf1Vβf1VD(\alpha_V) \circ D(\beta_V) = \alpha_{f^{-1}V} \circ \beta_{f^{-1}V}. By definition of vertical composition of natural transformations, we have that αf1Vβf1V=(αβ)f1V\alpha_{f^{-1}V} \circ \beta_{f^{-1}V} = (\alpha \circ \beta)_{f^{-1}V}.

We conclude that DD respects composition! And now we can conclude that taking direct images using a continuous function f:XYf: X \to Y yields a functor D:O(X)^O(Y)^D:\widehat{\mathcal{O}(X)} \to \widehat{\mathcal{O}(Y)}!

view this post on Zulip David Egolf (Apr 05 2024 at 18:04):

Whew, that felt like a lot. I suppose this sort of thing gets quicker with practice! But I wonder if there is a faster (more abstract?) way to work this out, as well.

view this post on Zulip David Tanzer (Apr 05 2024 at 18:47):

It would be cool if there were a higher level / more systematic way of proving such things. A proof assistant? I haven't used them. But that wouldn't seem to help with the basic understanding. It's hard to see a way around needed to unpack definitions and verify them in detail. I appreciate the clarity, detail and completeness of your posts here!

view this post on Zulip Peva Blanchard (Apr 05 2024 at 21:30):

I think there is a higher level way of doing, but, at some point, we still need to work out the details.

Here is my attempt.

We have a continuous function f:XYf : X \rightarrow Y. This function ff is equivalently described as a functor f:O(Y)O(X)f^{\star} :O(Y) \rightarrow O(X), viewing the poset of open sets as a category.

Consider the functor H:CatCatopH : Cat \rightarrow Cat^{op} given by the composition

Cat_opCat[_,Set]Catop Cat \xrightarrow{\_^{op}} Cat \xrightarrow{[\_, Set]} Cat^{op}

of the functor "taking the opposite category", and the functor "hom-ing into Set".

In particular, HH maps the functor ff^{\star} to a functor:

Hf:O(X)^O(Y)^H f^{\star} : \widehat{O(X)} \rightarrow \widehat{O(Y)}

It remains to show that HfH f^{\star} is indeed the direct image functor. (I'll skip that part for now)

view this post on Zulip Peva Blanchard (Apr 05 2024 at 21:39):

The tedious details are still present: I haven't proved that the functor "hom-ing into SetSet" is well-defined and a functor. This is, I think, proven exactly as @David Egolf did.

view this post on Zulip John Baez (Apr 05 2024 at 22:36):

David Egolf said:

Whew, that felt like a lot.

For what it's worth, it doesn't feel like a lot to me. I think if this were part of a book it would be less than a page. Some of the work is coming up with the ideas: that's the fun part. But a lot of the work in writing these arguments is just formatting things in LaTeX. I'm very glad you're doing it, because you're helping other people. But it's less work on paper.

Once you do this kind of argument for a few years, the standard moves become so ingrained that they're almost automatic... except when they're not, meaning that some brand new move is required.

view this post on Zulip John Baez (Apr 05 2024 at 22:43):

David Tanzer said:

It would be cool if there were a higher level / more systematic way of proving such things. A proof assistant?

I'm the opposite: what I really want is some software that will go out to dinner and talk to my friends so I can stay home and prove theorems.

view this post on Zulip John Baez (Apr 05 2024 at 23:10):

As for "systematic", I think @David Egolf's approach to this question was perfectly systematic. To prove P implies Q, he expanded out P using definitions to get a short list of things to check, and then checked each of these using Q, which he expanded out just enough to get this done.

view this post on Zulip John Baez (Apr 05 2024 at 23:14):

Category theory is full of proofs like this; many mathematicians look down on it because it's not tricky enough, but to me that's a virtue. The main hard part is keeping track of nested layers of structure imvolved... and a main reason for doing lots of proofs like this is to get good at keeping a lot of structures in mind.

view this post on Zulip John Baez (Apr 05 2024 at 23:27):

The number theorist Serge Lang has an exercise in his book Algebra that goes like this:

Take any book on homological algebra, and prove all the theorems without looking at the proofs given in that book.

Homological algebra was invented by Eilenberg-Mac Lane. General category theory (i. e. the theory of arrow-theoretic results) is generally known as abstract nonsense (the terminology is due to Steenrod).

view this post on Zulip John Baez (Apr 05 2024 at 23:30):

He is of course joking to some extent, and definitely showing off. But the hard part in homological algebra - or other kinds of category theory - is developing an intuition for the structures involved so you can guess what's true. The proofs of theorems are often easy in comparison.

(But sometimes they're not - there are some really deep results too.)

view this post on Zulip David Egolf (Apr 07 2024 at 15:41):

We have now arrived to the final puzzle in the first blog post! For context, recall that f:XYf:X \to Y is a continuous function, that FF is a presheaf on XX, and fFf_*F is the corresponding direct image presheaf on YY. Here's the puzzle:

Puzzle. Show that if FF is a sheaf on XX, its direct image fFf_*F is a sheaf on YY.

We saw above that fFf_*F is a presheaf. So, we only need to check that we can "glue together" things appropriately: if we start with a bunch of sifF(Vi)s_i \in f_*F(V_i) that agree on overlaps, so that siViVj=sjViVj{s_i}|_{V_i \cap V_j}={s_j}|_{V_i \cap V_j} for all ii and jj, then there is always a unique sfF(V)s \in f_*F(V) that restricts to sis_i on ViV_i for each ii. Here, each ViV_i is an open subset of YY and V=iViV = \cup_i V_i.

view this post on Zulip David Egolf (Apr 07 2024 at 16:32):

Let's start out with a bunch of sifF(Vi)s_i \in f_*F(V_i), which agree on overlaps and where iVi=V\cup_i V_i = V. We want to show there is a unique sfF(V)=F(f1V)s \in f_*F(V) = F(f^{-1}V) that restricts to each sis_i on ViV_i.

Note that siF(f1Vi)s_i \in F(f^{-1}V_i) for each ii, by definition of fFf_*F. I want to use the fact that FF is a sheaf to glue together these sis_i to get some sF(f1V)=fF(V)s \in F(f^{-1}V) = f_*F(V).

view this post on Zulip David Egolf (Apr 07 2024 at 16:43):

First, let's show that if1Vi=f1V\cup_i f^{-1}V_i = f^{-1}V, making use of the fact that iVi=V\cup_i V_i = V.

Let xf1Vx \in f^{-1}V. That means that there is some yVy \in V so that f(x)=yf(x) = y. Since V=iViV = \cup_i V_i, that means that yViy \in V_i for some ii. Thus, xf1Vix \in f^{-1}V_i for some ii. Hence, xif1Vix \in \cup_i f^{-1}V_i. We conclude that f1Vif1Vif^{-1}V \subseteq \cup_i f^{-1}V_i.

Next, let xif1Vix \in \cup_i f^{-1} V_i. That means that there is some ii so that xf1Vix \in f^{-1}V_i. Thus, there is some yViy \in V_i so that f(x)=Vif(x)=V_i. Since iVi=V\cup_i V_i = V, we know that ViVV_i \subseteq V. Hence f(x)Vf(x) \in V and thus xf1Vx \in f^{-1} V. Therefore, if1Vif1V\cup_i f^{-1} V_i \subseteq f^{-1} V.

We conclude that if1Vi=f1V\cup_i f^{-1} V_i = f^{-1} V.

view this post on Zulip David Egolf (Apr 07 2024 at 17:34):

The next order of business is to talk about "agreeing on overlaps". With respect to fFf_*F, we know that siViVj=sjViVj{s_i}|_{V_i \cap V_j} = {s_j}|_{V_i \cap V_j} for any ii and jj. A particular element sis_i of fF(Vi)f_*F(V_i) is restricted to ViVjV_i \cap V_j as follows: note that sis_i is an element of F(f1Vi)F(f^{-1}V_i) and then restrict it (using the fact that FF is a presheaf, and so provides a notion of restriction) using FF to an element of F(f1(ViVj))=fF(ViVj)F(f^{-1}(V_i \cap V_j)) = f_*F(V_i \cap V_j).

So, if siViVj=sjViVj{s_i}|_{V_i \cap V_j} = {s_j}|_{V_i \cap V_j} with respect to fFf_*F, then this means that restricting sis_i (using FF) from an element of F(f1Vi)F(f^{-1}V_i) to an element of F(f1(ViVj))F(f^{-1}(V_i \cap V_j)) yields the same result as restricting sjs_j (using FF) from an element of F(f1Vj)F(f^{-1}V_j) to an element of F(f1(ViVj))F(f^{-1}(V_i \cap V_j)).

Now, we'd like to show that if sifF(Vi)s_i \in f_*F(V_i) and sjfF(Vj)s_j \in f_*F(V_j) agree on overlaps with respect to fFf_*F, then they agree on overlaps with respect to FF, where we view sis_i as an element of F(f1Vi)F(f^{-1}V_i) and sjs_j as an element of F(f1Vj)F(f^{-1}V_j). To show they agree on overlaps with respect to FF, we need to show that restricting sis_i from an element of F(f1Vi)F(f^{-1}V_i) to an element of F(f1Vif1Vj)F(f^{-1}V_i \cap f^{-1}V_j) yields the same result as restricting sjs_j from an element of F(f1Vj)F(f^{-1}V_j) to an element of F(f1Vif1Vj)F(f^{-1}V_i \cap f^{-1}V_j).

By the above discussion, this follows provided that F(f1Vif1Vi)=F(f1(ViVj))F(f^{-1}V_i \cap f^{-1}V_i) = F(f^{-1}(V_i \cap V_j)).

view this post on Zulip David Egolf (Apr 07 2024 at 17:37):

We now show that F(f1Vif1Vi)=F(f1(ViVj))F(f^{-1}V_i \cap f^{-1}V_i) = F(f^{-1}(V_i \cap V_j)). It suffices to show that f1Vif1Vi=f1(ViVj)f^{-1}V_i \cap f^{-1}V_i = f^{-1}(V_i \cap V_j).

Let xf1(ViVj)x \in f^{-1}(V_i \cap V_j). That means there is some yViVjy \in V_i \cap V_j so that f(x)=yf(x) = y. Since yViVjy \in V_i \cap V_j, we know that yViy \in V_i and yVjy \in V_j. Hence, xf1Vix \in f^{-1}V_i and xf1Vjx \in f^{-1}V_j. Thus, xf1Vif1Vjx \in f^{-1}V_i \cap f^{-1}V_j, and so f1(ViVj)f1Vif1Vjf^{-1}(V_i \cap V_j) \subseteq f^{-1}V_i \cap f^{-1}V_j.

Next, let xf1Vif1Vjx \in f^{-1}V_i \cap f^{-1}V_j. That means that f(x)Vif(x) \in V_i and f(x)Vjf(x) \in V_j. Hence f(x)ViVjf(x) \in V_i \cap V_j and therefore xf1(ViVj)x \in f^{-1}(V_i \cap V_j). Therefore, f1Vif1Vjf1(ViVj)f^{-1}V_i \cap f^{-1}V_j \subseteq f^{-1}(V_i \cap V_j).

We conclude that f1(ViVj)=f1Vif1Vjf^{-1}(V_i \cap V_j) = f^{-1}V_i \cap f^{-1}V_j, and so F(f1Vif1Vi)=F(f1(ViVj))F(f^{-1}V_i \cap f^{-1}V_i) = F(f^{-1}(V_i \cap V_j)).

view this post on Zulip David Egolf (Apr 07 2024 at 17:40):

From the above discussion, if iVi=V\cup_i V_i = V (where each ViV_i is an open subset of YY) and we have a bunch of sifF(Vi)s_i \in f_*F(V_i) (as ii varies) that agree on overlaps with respect to fFf_*F, then we have:

Since FF is a sheaf, there is then a unique sF(f1V)=fF(V)s \in F(f^{-1}V) = f_*F(V) that restricts (using FF) to sis_i on each f1Vif^{-1}V_i. We hope that this ss restricts to each sis_i on ViV_i with respect to fFf_*F. This is true, because restricting ss to an element of fF(Vi)f_*F(V_i) with respect to fFf_*F is done by restricting ss to an element of F(f1Vi)F(f^{-1}V_i) with respect to FF, and we know this yields sis_i (by definition of ss).

view this post on Zulip David Egolf (Apr 07 2024 at 17:46):

So, I think we have managed to show there is at least one "gluing together" of our sifF(Vi)s_i \in f_*F(V_i) to get a sfF(V)s \in f_*F(V) that restricts to sis_i on each ViV_i. It remains to show that there is only one way to do this, so that ss is the unique "gluing" of our sis_i.

view this post on Zulip David Egolf (Apr 07 2024 at 17:54):

Let's imagine we've got some sfF(V)s' \in f_*F(V) that restricts (with respect to fFf_*F) to sis_i on ViV_i, for each ii. That means it restricts from sF(f1V)s' \in F(f^{-1}V) to siF(f1Vi)s_i \in F(f^{-1}V_i) (with respect to FF) for each ii. That is, ss' is a valid "gluing" of all the siF(f1Vi)s_i \in F(f^{-1}V_i). Since FF is a sheaf, there is only one such gluing, namely ss. Therefore, s=ss'=s.

Consequently, there is exactly one way to "glue together" our sifF(Vi)s_i \in f_*F(V_i) to get a sfF(V)s \in f_*F(V). We conclude that fFf_*F is indeed a sheaf!

view this post on Zulip John Baez (Apr 07 2024 at 18:11):

Great! Your proof looks perfect!

view this post on Zulip John Baez (Apr 07 2024 at 18:13):

The only change I might make is to pull out a few facts as "lemmas", since they don't really involve presheaves per se: they are properties of the inverse image f1(V)f^{-1}(V) of a subset VYV \subset Y along a function f:XYf: X \to Y.

Of course the inverse image of an open subset along a continuous map is open, but these properties are even more fundamental: they work for any subset and any map.

view this post on Zulip John Baez (Apr 07 2024 at 18:16):

So suppose f:XYf: X \to Y is any function.

Lemma 1. If ViV_i are subsets of YY then

f1(iVi)=if1(Vi) f^{-1} (\bigcap_i V_i) = \bigcap_i f^{-1}(V_i)

Lemma 2. If ViV_i are subsets of YY then

f1(iVi)=if1(Vi) f^{-1} (\bigcup_i V_i) = \bigcup_i f^{-1}(V_i)

Just for good measure, let c{}^c denote the operation of taking the complement of a subset.

Lemma 3. If VV is a subset of YY then

f1(Vc)=(f1(V))c f^{-1} (V^c) = (f^{-1}(V))^c

view this post on Zulip John Baez (Apr 07 2024 at 18:18):

I think you used Lemma 1 only in the case of the intersection of two subsets. You used the general case of Lemma 2. And you didn't need Lemma 3 at all.

view this post on Zulip John Baez (Apr 07 2024 at 18:21):

Subsets of a set form a [[complete boolean algebra]] - this is jargon is a way of capturing all the rules that govern intersections, unions and complements in classical logic. Lemmas 1-3 say that f1f^{-1} is a morphism of complete boolean algebras!

view this post on Zulip John Baez (Apr 07 2024 at 18:26):

If someone out there has never thought about this, it's worth comparing the 'image' operation. The image of a subset VXV \subseteq X under a function f:XYf: X \to Y is defined by

f(V)={f(x):xV} f(V) = \{f(x): x \in V\}

The image operation does not obey analogues of all three of Lemmas 1-3. I.e. it doesn't preserve all unions, intersections and complements.

Puzzle. Which lemmas fail?

view this post on Zulip John Baez (Apr 07 2024 at 18:26):

Moral: inverse image is 'better' than image. This is one reason it's nice that we use inverse image, not image, to define continuity.

view this post on Zulip John Baez (Apr 07 2024 at 18:27):

All these simple thoughts will get refined more and more as one digs deeper into topos theory.

view this post on Zulip David Egolf (Apr 07 2024 at 18:41):

John Baez said:

Subsets of a set form a [[complete boolean algebra]] - this is jargon is a way of capturing all the rules that govern intersections, unions and complements in classical logic. Lemmas 1-3 say that f1f^{-1} is a morphism of complete boolean algebras!

That is very cool! I'll plan to think a bit more about this, as well as the puzzle you gave relating to the image operation.

view this post on Zulip John Baez (Apr 07 2024 at 19:27):

Great! I wish someone had told me - way back when I was a youth - that 'inverse image' is better behaved than 'image', and also had explained why. Back then inverse image seems like a more sneaky concept than image, in part because of its name. So it seemed a bit weird that it was used in the definition of continuity. Of course from another viewpoint this makes perfect sense: this gives a definition of continuity of maps between metric spaces that matches the ϵδ\epsilon-\delta definition! But it's much more satisfying to understand the fundamental role of inverse images.

view this post on Zulip David Egolf (Apr 08 2024 at 18:46):

John Baez said:

Subsets of a set form a [[complete boolean algebra]] - this is jargon is a way of capturing all the rules that govern intersections, unions and complements in classical logic. Lemmas 1-3 say that f1f^{-1} is a morphism of complete boolean algebras!

I've reviewed some things relating to Boolean algebras, and I think this is making sense!

One interesting point jumped out to me. When I think about morphisms "preserving the structure", I usually think of equations like this one: g(xy)=g(x)g(y)g(x \cup y) = g(x) \cup g(y). That is, the binary operation \cup only gets applied once on each side of the equation. This is in contrast to something like f1(iVi)=if1(Vi)f^{-1}(\cup_i V_i) = \cup_i f^{-1}(V_i), where potentially we are taking the union of an infinite number of sets on each side of the equation.

I assume that the idea is to "preserve equations". If we know that we are mapping between two complete Boolean algebras, then arbitrary (small) meets and joins always exist in both the source and target Boolean algebras. So then for any collection of ViV_i in some complete Boolean algebra, iVi\lor_i V_i always exists - call it VV. Consequently, we can always write this kind of equation iVi=V\lor_i V_i = V for any collection of elements ViV_i. Asking this equation to be preserved under gg would mean we'd want ig(Vi)=g(V)=g(iVi)\lor_i g(V_i) = g(V) = g(\lor_i V_i).

I guess the moral of the story is this: if we have fancier equations that hold in all the structures of interest, we'll get fancier corresponding requirements for a structure-preserving map.

view this post on Zulip David Egolf (Apr 08 2024 at 18:52):

For f1f^{-1} to be a morphism of complete Boolean algebras, there's another condition we'll want it to meet. It's simple, but I thought it might be nice to note explicitly. In particular, for f:XYf: X \to Y and f1:P(Y)P(X)f^{-1}: \mathcal{P}(Y) \to \mathcal{P}(X), we'll want UVU \subseteq V in P(Y)\mathcal{P}(Y) to imply that f1(U)f1(V)f^{-1}(U) \subseteq f^{-1}(V) in P(X)\mathcal{P}(X).

To see that this holds, let xf1(U)x \in f^{-1}(U). That means that f(x)Uf(x) \in U. Since UVU \subseteq V, that means f(x)Vf(x) \in V and hence xf1(V)x \in f^{-1}(V). Therefore, f1(U)f1(V)f^{-1}(U) \subseteq f^{-1}(V), as desired.

view this post on Zulip Peva Blanchard (Apr 08 2024 at 19:03):

I think the idea of "preserving equations" is right. It can also be rephrased as "preserving limits/colimits". When seeing a complete boolean algebra as a category, then the join (resp. meet) of an arbitrary collection of elements is literally the colimit (resp. limit) of this collection.

view this post on Zulip David Egolf (Apr 08 2024 at 19:25):

I now want to think about the image operator I:P(X)P(Y)I: \mathcal{P}(X) \to \mathcal{P}(Y) for a function f:XYf: X \to Y. We have I(U)={f(x)xU}I(U) = \{f(x) | x \in U\} for any UP(X)U \in \mathcal{P}(X). Let's see in which ways II fails to be a morphism between the complete Boolean algebras P(X)\mathcal{P}(X) and P(Y)\mathcal{P}(Y).

First, notice that I(X)I(X) is not necessarily YY. So the biggest ("top") element is not always mapped to the top element! (This is because ff is not always surjective). However, II does map the empty set to the empty set, and it preserves arbitrary unions. Also, if UUU \subseteq U', then I(U)I(U)I(U) \subseteq I(U').

II doesn't preserve intersections in general. For example, if UU and UU' are disjoint non-empty subsets of XX, but I(U)=I(U)I(U) = I(U'), then I(UU)=I()=I(U \cap U') = I(\emptyset) = \emptyset but I(U)I(U)=I(U)I(U) \cap I(U') = I(U) is not empty. This sort of thing can happen when ff isn't injective.

II also doesn't preserve complements in general. That is, if Uc=VU^c = V, then we don't necessarily have that I(U)c=I(V)=I(Uc)I(U)^c = I(V) = I(U^c). For example, let U=XU = X. Then I(Xc)=I()=I(X^c) = I(\emptyset) = \emptyset. But I(X)I(X) isn't necessarily all of YY (as ff isn't necessarily surjective). Therefore, I(X)cI(X)^c is not always empty.

view this post on Zulip John Baez (Apr 08 2024 at 21:23):

Great, now you see exactly how inverse image is better than image! Inverse image sends maps between sets to maps of complete boolean algebras, and indeed gives a functor from Set\mathrm{Set} to the opposite of the category of complete boolean algebras. I like to call this "the duality between set theory and logic".

There's more to say about this, but enough for now.

A tiny typo here:

II doesn't preserve intersections in general. For example, if UU and UU' are disjoint non-empty subsets of XX, but I(U)=I(U)I(U) = I(U'), then I(UU)=I()=I(U \cap U') = I(\emptyset) = \emptyset but I(U)I(U)=I(U)I(U) \cap I(U') = I(U) is not empty.

You meant it may not be empty... as you made clear in your very next sentence.

view this post on Zulip John Baez (Apr 08 2024 at 21:26):

If you can stand one more puzzle about this: do you see the way in which inverse image is 'logically simpler' and 'easier to compute' than image?

view this post on Zulip David Egolf (Apr 08 2024 at 21:31):

Since I assumed that UU and UU' are non-empty, and also that I(U)=I(U)I(U) = I(U'), I think I(U)I(U)I(U) \cap I(U') actually isn't empty in this case. But one wouldn't need to assume I(U)=I(U)I(U) = I(U')! More generally, I think the idea is that even if UU and UU' are disjoint, I(U)I(U) and I(U)I(U') can have some elements in common.

view this post on Zulip David Egolf (Apr 08 2024 at 21:32):

John Baez said:

If you can stand one more puzzle about this: do you see the way in which inverse image is 'logically simpler' and 'easier to compute' than image?

Hmmm, that's interesting. Nothing immediately comes to mind, but I'll give it some thought!

view this post on Zulip David Egolf (Apr 08 2024 at 21:38):

My initial thought is that an inverse image seems harder to compute then an image!

It seems like it requires at least as many evaluations of ff to compute an inverse image, as compared to an image.

I'll give it some more thought and see what else I can think of...

view this post on Zulip John Baez (Apr 08 2024 at 21:39):

David Egolf said:

Since I assumed that UU and UU' are non-empty, and also that I(U)=I(U)I(U) = I(U'), I think I(U)I(U)I(U) \cap I(U') actually isn't empty in this case. But one wouldn't need to assume I(U)=I(U)I(U) = I(U')! More generally, I think the idea is that even if UU and UU' are disjoint, I(U)I(U) and I(U)I(U') can have some elements in common.

Whoops - you're right, I didn't read your comment carefully enough. Sorry.

view this post on Zulip John Baez (Apr 08 2024 at 21:46):

David Egolf said:

My initial thought is that an inverse image seems harder to compute then an image!

It seems like it requires more evaluations of ff to compute an inverse image, as compared to an image.

Maybe there are dual ways of thinking about this!

I was thinking: given f:XYf: X \to Y and a subset of its domain, what do we have to do to check whether a given element of YY is in the image of that subset?

Given ff and a subset of its codomain, what do we have to do to check whether a given element of XX is in the inverse image of that subset?

view this post on Zulip John Baez (Apr 08 2024 at 21:48):

I believe this explains why inverse image is 'better': always a boolean algebra homomorphism.

view this post on Zulip David Egolf (Apr 08 2024 at 21:52):

I have to take a look at what you just said! Here's the idea that came to mind for me, though:

I think we can use the fact that the inverse image interacts nicely with unions, intersections, and complements. For example, let's say I want to compute the inverse image of V=iViV = \cap_i V_i, and I know the inverse image of each ViV_i. Then I can just compute the intersection of the inverse images of the ViV_i.

By contrast, if I know the image of a bunch of UiU_i, I can't directly compute the image of U=iUiU = \cap_i U_i in an analogous way. That's because I(iUi)I(\cap_i U_i) is not necessarily equal to iI(Ui)\cap_i I(U_i).

So, the inverse image operation is computationally nicer than the image operation in this sense: you can compute more things directly, when given some known prior things.

view this post on Zulip David Egolf (Apr 08 2024 at 21:58):

John Baez said:

Maybe there are dual ways of thinking about this!

I was thinking: given f:XYf: X \to Y and a subset of its domain, what do we have to do to check whether a given element of YY is in the image of that subset?

Given ff and a subset of its codomain, what do we have to do to check whether a given element of XX is in the inverse image of that subset?

Assume we have f:XYf: X \to Y and a subset UU of XX. To check if yYy \in Y is in the image of UU, we need to check each element of UU and see if we ever get yy.

Let's now assume we have a subset VV of YY. To check if xXx \in X is in the inverse image of VV, we just need to compute f(x)f(x) and see if it lands in VV!

So, we'll need fewer evaluations of ff to see if a particular element is in a inverse image, as compared to what we need to check if an element is in an image!

view this post on Zulip David Egolf (Apr 08 2024 at 21:59):

It's interesting to compare these two things:

view this post on Zulip David Egolf (Apr 08 2024 at 22:31):

John Baez said:

Great, now you see exactly how inverse image is better than image! Inverse image sends maps between sets to maps of complete boolean algebras, and indeed gives a functor from Set\mathrm{Set} to the opposite of the category of complete boolean algebras. I like to call this "the duality between set theory and logic".

I somehow missed reading this earlier. I like it!

view this post on Zulip Peva Blanchard (Apr 09 2024 at 07:49):

David Egolf said:

It's interesting to compare these two things:

In complexity theory, enumerating elements of a subset and checking that an element is a member of a subset are somehow related, but not really equivalent (this depends on how "easy to compute" is defined).

a. For instance, regarding your second bullet point, it seems that you have the following picture in mind (I may be wrong):

b. Now the related way is to ask for procedures that decide on whether an element is a member of a subset. In that case, your first bullet point can be restated as:

I think cases a and b are "as easy as each other". They seem "dual", although I don't know if we can make this statement precise.

view this post on Zulip Peva Blanchard (Apr 09 2024 at 07:50):

Things become complicated if we try to apply one case starting from the other. I mean:

view this post on Zulip Peva Blanchard (Apr 09 2024 at 08:53):

Assuming that one can also check the equality "y = f(x)", and one can enumerate elements of the domain of ff, here are two (informal) ways:

view this post on Zulip Peva Blanchard (Apr 09 2024 at 09:33):

Oh! I think there is a more "categorical" rewording of all of the above. Given any category CC and morphism f:XYf: X \rightarrow Y in CC, we get two functors:

  1. between the over categories C/XC/YC / X \rightarrow C / Y : simply post-compose with ff.
  2. between the under categories X/CY/CX / C \leftarrow Y / C : simply pre-compose with ff.

And each of these functors may have adjoints:

  1. left/right Kan lift C/XC/YC/ X \leftarrow C/Y along ff.
  2. left/right Kan extension X/CY/CX/C \rightarrow Y/C along ff.

view this post on Zulip Peva Blanchard (Apr 09 2024 at 10:08):

(this is the kind of things that makes my head spin: over/under, post/pre, left/right)

view this post on Zulip Peva Blanchard (Apr 09 2024 at 12:11):

(edit: deleted the latest message. I thought I could reformulate the above in terms of adjunctions between pre/post-composition and left/right Kan extension/lift, but it was incorrect.)

view this post on Zulip David Egolf (Apr 09 2024 at 16:14):

Thanks for the link on "dovetailing". That's a neat concept I'd not heard of before!

I'm not quite understanding why you want to enumerate the elements (y,x)(y,x) of V×dom(f)V \times dom(f), though. Wouldn't it be less work to just loop over all the elements in dom(f)dom(f) (which I've been assuming is all of XX) and then apply ff to those, and see if we ever get an element of VV?

I guess my proposed approach here involves two loops:

for all xdom(f)x \in dom(f):
-- y=f(x)y=f(x)
-- for all vVv \in V:
---- check if v=yv=y

view this post on Zulip David Egolf (Apr 09 2024 at 16:18):

I suppose these two loops effectively involve considering each element of V×dom(f)V \times dom(f), unless we add a "break" statement in the second loop. The break statement could let us quit out of the second loop early if we find some vVv \in V that y=f(x)y=f(x) is equal to.

That explains, I think, why you wanted to enumerate all elements of V×dom(f)V \times dom(f). I think we basically had the same idea; I was just struggling to see that the way you formalized the idea matched (at least roughly) what I had in mind!

view this post on Zulip Peva Blanchard (Apr 09 2024 at 16:26):

I think it is the same idea. Dovetailing is relevant when the sets are infinite. For instance, in your pseudo-code example (the two loops), the inner loop can be infinite, so you never enumerate all of V×dom(f)V \times dom(f). But, besides that technical point, you really expressed the same idea.

view this post on Zulip David Egolf (Apr 09 2024 at 16:41):

Today, I want to start on Part 2 of the blog post series! :tada:

The first puzzle is this:

Check that with this choice of restriction maps Γp\Gamma_p is a presheaf, and in fact a sheaf.

This puzzle needs some context! Here it is:

view this post on Zulip Peva Blanchard (Apr 09 2024 at 16:44):

Now, it seems to me that, in maths, unless you work in computability theory, it is unusual to consider structures that can be enumerated. It makes no sense, a priori, for most mathematical structures, e.g., the real numbers. The other way, i.e., testing an element is more common, and, by varying what is meant by "testing", easier to generalize.

This is why I think, the inverse image f1(V)f^{-1}(V) seems "logically easier" to conceive than the image f(U)f(U). More precisely, in SetSet, the mother of all tests is the membership test yVy \in V, i.e., a characteristic function χV:Y{0,1}\chi_V : Y \rightarrow \{0,1\}. You can transport these characteristic functions along ff just by pre-composing with ff.

view this post on Zulip Peva Blanchard (Apr 09 2024 at 16:45):

oops, you already moved to Part 2. Let's move on then :)

view this post on Zulip David Egolf (Apr 09 2024 at 16:47):

Peva Blanchard said:

oops, you already moved to Part 2. Let's move on then :)

There's no rush! What you are saying is interesting, and I look forward to thinking about it! If there's more you want to say on that topic, please feel free to keep posting about it here. I can always shuffle the "part two" messages to the bottom afterwards.

view this post on Zulip David Egolf (Apr 09 2024 at 17:00):

Here's a picture, to help visualize the concept of a "bundle":

bundle

In this case the blue area is YY and the black line is XX. Our continuous map p:YXp:Y \to X projects each point down to the corresponding point on the black line.

view this post on Zulip Peva Blanchard (Apr 09 2024 at 17:04):

There is another bundle that may be familiar to you. Say we encode RGB pixel values with real values between 00 and 11, i.e., C=[0,1]3C = [0,1]^3 is the space of colors. Let S=[0,1]2S = [0,1]^2 be the unit square, thought of as a canvas. Then we have a (trivial) bundle S×CSS \times C \rightarrow S (just the projection on the first factor) that represent all the possible RGB-images on the unit square.

view this post on Zulip David Egolf (Apr 09 2024 at 17:10):

That's a neat example! I'm imagining all possible RGB values "floating over" each point of our square. A section of that bundle I think corresponds to an RGB image over (an open subset) of the unit square.

view this post on Zulip David Egolf (Apr 09 2024 at 17:12):

Here's a picture to visualize the concept of "section", using the bundle I drew above:
section

The orange line is a section of our bundle p:YXp:Y \to X over the yellow subset of XX.

In this case, we might imagine that the black line is an observed noisy signal, and the blue "envelope" describes at each point the possible "actual" (without noise) signal values. A section then is a "point-wise plausible guess" for a portion of a denoised signal.

view this post on Zulip John Baez (Apr 09 2024 at 17:25):

At first you said the black line was a picture of X, but to me it looks like a picture of a section... they're both reasonable interpretations but people tend use the latter, and draw X as a horizontal line down below the bundle itself, so that p "projects down" from Y to X. Later you seem to have used the latter interpretation because you said "the black line is an observed noisy signal", which sounds like a section to me.

view this post on Zulip John Baez (Apr 09 2024 at 17:26):

Here's a 3d picture of a bundle and a section s from Wikipedia:

.

view this post on Zulip John Baez (Apr 09 2024 at 17:27):

People like to use E instead of X and B instead of Y, and call E the total space and B the base space of the bundle.

view this post on Zulip Peva Blanchard (Apr 09 2024 at 17:49):

I guess we might have weird cases, like this one.

image.png

view this post on Zulip Morgan Rogers (he/him) (Apr 09 2024 at 19:02):

It might also be useful to have some more explicitly defined examples, like the exponential map from C\mathbb{C} to C{0}\mathbb{C} - \{0\} ;)

view this post on Zulip Peva Blanchard (Apr 09 2024 at 19:07):

Morgan Rogers (he/him) said:

It might also be useful to have some more explicitly defined examples, like the exponential map from C\mathbb{C} to C{0}\mathbb{C} - \{0\} ;)

oh yes, another one would be zz2z \mapsto z^2 on the complex numbers, or more generally zznz \mapsto z^n.

(Which makes me wonder, since ez=nznn!e^z = \sum_n \frac{z^n}{n!}, if we can combine multiple bundles together)

view this post on Zulip Morgan Rogers (he/him) (Apr 09 2024 at 19:29):

There are ways to combine bundles over general spaces XX but the kind you're thinking of (taking products and sums) relies on the algebraic structure of C\mathbb{C}. See if you can figure out how you might use the addition and multiplication of the complex numbers to combine bundles! Power series are a bonus challenge ;)

view this post on Zulip John Baez (Apr 09 2024 at 20:18):

Peva Blanchard said:

I guess we might have weird cases, like this one.

Yes, that picture shows a 'bundle' in the extremely general sense introduced here (a continuous map from a space EE to a space BB), but not a [[fiber bundle]]. For a fiber bundle we typically want the 'fibers' p1(b)p^{-1}(b) to be homeomorphic to each other for all bBb \in B, while in the picture some fibers are homeomorphic to [0,1][0,1] and others to [0,1][2,3][0,1] \cup [2,3].

view this post on Zulip Peva Blanchard (Apr 09 2024 at 21:43):

Morgan Rogers (he/him) said:

There are ways to combine bundles over general spaces XX but the kind you're thinking of (taking products and sums) relies on the algebraic structure of C\mathbb{C}. See if you can figure out how you might use the addition and multiplication of the complex numbers to combine bundles! Power series are a bonus challenge ;)

I see. Indeed, if we consider only bundles over C\mathbb{C} (or any other ring actually), we can do something as follows. Let p1:E1Cp_1 : E_1 \rightarrow \mathbb{C} and p2:E2Cp_2 : E_2 \rightarrow \mathbb{C}, then we can define p1+p2:E1×E2Cp_1 + p_2 : E_1 \times E_2 \rightarrow \mathbb{C} as the composite

E1×E2(p1,p2)C×C+C E_1 \times E_2 \xrightarrow{(p_1, p_2)} \mathbb{C} \times \mathbb{C} \xrightarrow{+} \mathbb{C}

We can do the same for any other binary continuous operations like, e.g., multiplication.

Similarly, given a complex number ss and a bundle p:ECp : E \rightarrow \mathbb{C}, I can define the bundle sp:ECs \cdot p : E \rightarrow \mathbb{C} by pointwise multiplication esp(e)e \mapsto s \cdot p(e).

Now, let's use the notation z:CCz : \mathbb{C} \rightarrow \mathbb{C} for the bundle corresponding to the identity morphisms. Then we wave zn:CnCz^n : \mathbb{C}^n \rightarrow \mathbb{C}, and more generally for any polynomial

P=a0+a1X++anXnP = a_0 + a_1 \cdot X + \dots + a_n \cdot X^n

we get a bundle

P(z):0knCkC((zki)1ik)0kn0knak1ikzki\begin{align*} P(z) : \prod_{0 \le k \le n} \mathbb{C}^k &\rightarrow \mathbb{C} \\ ((z_{ki})_{1 \le i \le k})_{0 \le k \le n} &\mapsto \sum_{0 \le k \le n} a_k \cdot \prod_{1 \le i \le k} z_{ki} \end{align*}

view this post on Zulip Peva Blanchard (Apr 09 2024 at 21:49):

(This is a weird entity. I would expect the total space to look more like a polynomial, but here it is just a big cartesian product)

view this post on Zulip Peva Blanchard (Apr 09 2024 at 21:58):

If PP is a power series instead of a mere polynomial, the bundle P(z)P(z) is not well-defined. It is not clear at all if the series converges; plus it is a weird series as it involves infinitely many different variables.

view this post on Zulip Peva Blanchard (Apr 09 2024 at 22:07):

If I assume that the series has a positive radius of convergence, e.g. 1, it might help. We know then that for any complex number ss with s<1|s| < 1, the series kaksk\sum_k a_k \cdot s^k converges to a well-defined (complex) value, and the induced function is continuous.

I could restrict my setting to the situation where the zkiz_{ki} all have modulus less than 11. But yet, as we have infinitely many variables, I'm not sure that the series kak1ikzki\sum_k a_k \prod_{1 \le i \le k} z_{ki} converges. Even less that it depends continuously on the zkiz_{ki}'s.

view this post on Zulip Peva Blanchard (Apr 09 2024 at 22:19):

I will leave it here. I may have taken the wrong turn when defining things.

view this post on Zulip Morgan Rogers (he/him) (Apr 10 2024 at 05:37):

Nice attempt! You got the main ideas I think, but some things to note: first, at the moment you have a lot of variables around; there is a way to reduce them by also precomposing with something. Second, there are indeed a bunch of subtleties to beware of for power series: for it to define a bundle, you not only need to restrict to a subset where the series converges, you need to make sure the function is continuous! It's hard to express those conditions categorically, which is why you'll rarely see analysis and category theory talking to each other. Or to turn that comment into an exercise: one way you might hope to express a power series is as a diagram of bundles over C\mathbb{C} whose colimit would determine the power series. But this can't work because of the way we define morphisms of bundles; can you see why?

view this post on Zulip Peva Blanchard (Apr 10 2024 at 11:42):

Indeed, there is a brutal way to reduce the number of variables. It suffices to precompose what I did with the diagonal map z(z,z,z,)z \mapsto (z, z, z, \dots). This amounts to consider only the bundles of the form CC\mathbb{C} \rightarrow \mathbb{C}.

More precisely, given a polynomial PP, this amounts to consider the function zP(z)z \mapsto P(z) as a bundle CC\mathbb{C} \rightarrow \mathbb{C}.

When PP is a (formal) power series, then the domain of PP cannot be the whole complex plane. For instance,

P(z)=11z=n0znP(z) = \frac{1}{1-z} = \sum_{n \ge 0} z^n

which is defined on C{1}\mathbb{C} - \{1\}.

So we must restrict the domain. Let's consider all the ways to restrict this power series. That is we consider all the bundles UCU \rightarrow \mathbb{C} with zP(z)z \mapsto P(z), where UU is an open subset where the series converges and is continuous. My knowledge about complex analysis is a bit rusty, so I'm being a bit sketchy here...

These bundles are objects in the over category Top/CTop/\mathbb{C}. Let's consider the category P\mathcal{P} with those bundles as objects, and as morphisms the ones induced by inclusion of subsets UVU \subseteq V. We could take the colimit L:XCL : X \rightarrow \mathbb{C} of P\mathcal{P} in Top/CTop/\mathbb{C}, provided it exists (I don't know any argument in favor of that, on the top of my mind).

It looks like XX would be the "maximal" domain of definition of the power series PP. But, thanks to your hint, I think this is wrong. That's because there are other morphisms in Top/CTop/\mathbb{C}, e.g., homeomorphisms. So, there could be issues like the total space XX being homeomorphic to the maximal domain of PP (???).

view this post on Zulip Peva Blanchard (Apr 10 2024 at 11:46):

Oh yes, in particular, the coefficients of the power series are not preserved by homeomorphisms.

view this post on Zulip Peva Blanchard (Apr 10 2024 at 11:47):

For instance:

P(2z)=112z=n02nznP(2\cdot z) = \frac{1}{1 - 2z} = \sum_{n \ge 0} 2^n \cdot z^n

view this post on Zulip Peva Blanchard (Apr 10 2024 at 11:48):

Which means that one cannot hope to recover the power series from the colimit LL, even if it exists.

view this post on Zulip John Baez (Apr 10 2024 at 13:25):

By the way, there's a huge amount to say about analytic functions and power series using sheaves: this is one of the things sheaves were developed for!

view this post on Zulip Morgan Rogers (he/him) (Apr 10 2024 at 15:10):

Peva Blanchard said:

It looks like XX would be the "maximal" domain of definition of the power series PP. But, thanks to your hint, I think this is wrong. That's because there are other morphisms in Top/CTop/\mathbb{C}, e.g., homeomorphisms. So, there could be issues like the total space XX being homeomorphic to the maximal domain of PP (???).

Great work! I was actually trying to hint at something a bit more basic than this: the fact that morphisms of bundles over XX fix the values in XX. I can't express the bundle corresponding to a power series as the colimit of the partial sums because there aren't bundle morphisms between the bundles corresponding to those partial sums in general!

view this post on Zulip David Egolf (Apr 10 2024 at 16:24):

Peva Blanchard said:

Now, it seems to me that, in maths, unless you work in computability theory, it is unusual to consider structures that can be enumerated. It makes no sense, a priori, for most mathematical structures, e.g., the real numbers. The other way, i.e., testing an element is more common, and, by varying what is meant by "testing", easier to generalize.

I was wondering if one could come up with a procedure for enumerating (listing the elements of, I assume?) a subset UXU \subseteq X of interest given a way to test if elements in XX are in UU. But I suppose if XX has infinitely many elements, this could be very impractical - this procedure may often require an infinite number of tests to be run. From that perspective, it does make more sense to focus on testing individual elements - as that is something that we can probably actually do!

view this post on Zulip Peva Blanchard (Apr 10 2024 at 17:14):

Actually, if all you have is a testing procedure for UU, via a characteristic function X{0,1}X \rightarrow \{0,1\} that consumes elements of XX, there is no generic way to build a procedure that produces elements of UU. For that you need another assumption, e.g., that you already have a procedure that produces elements of XX, which you can then "filter" using the characteristic function.

view this post on Zulip Peva Blanchard (Apr 10 2024 at 17:17):

I don't want to reveal too much about John's later posts (also because I don't have an expert knowledge in those things), but these "testing procedures", or "characteristic functions", will play a crucial role with respect to an important notion in topos theory, namely that of "subobject classifier".

view this post on Zulip John Baez (Apr 10 2024 at 22:53):

Yes, I was focused on testing procedures. My claim that inverse images are "logically simpler" than images merely meant this:

Say you have a function f:XYf: X \to Y. Then if SXS \subseteq X we have

f(S)={yYxS  f(x)=y} f(S) = \{y \in Y| \exists x \in S \; f(x) = y \}

while if SYS \subseteq Y we have

f1(S)={xX  f(x)S} f^{-1}(S) = \{ x \in X| \; f(x) \in S \}

In this sense, images are defined using an existential quantifier \exists. So:

But since inverse images are defined much more simply, without any quantifiers, they preserve unions, intersections and complements!

view this post on Zulip David Egolf (Apr 11 2024 at 17:27):

I'm feeling tired today, but I'd like to try and make at least a little progress on the current puzzle. Here it is again:

Check that with this choice of restriction maps Γp\Gamma_p is a presheaf, and in fact a sheaf.

And here's the context, again:

view this post on Zulip David Egolf (Apr 11 2024 at 17:32):

First, I want to show that Γp:O(X)opSet\Gamma_p: \mathcal{O}(X)^{\mathrm{op}} \to \mathsf{Set} is a functor, and hence a presheaf. Here's what it does on objects and morphisms:

view this post on Zulip David Egolf (Apr 11 2024 at 17:36):

To show that Γp\Gamma_p is a functor , we first need to show that restricting a section of pp actually gives us a section of pp. Let s:UYs:U \to Y be a section of pp over UU, where UU is an open subset of XX. We want to show that sV:VYs|_V: V \to Y given by sV=siVUs|_V = s \circ i_{V \to U} is a section of pp over VV. (Here VV is an open subset of XX with VUV \subseteq U).

To do this, it suffices to show that psV=1Vp \circ s|_V = 1_V. Checking this at an element vVv \in V, we find psV(v)=p(siVU)(v)=(ps)iVU(v)=1UiVU(v)=1U(v)=vp \circ s|_{V}(v) = p \circ (s \circ i_{V \to U})(v) = (p \circ s) \circ i_{V \to U}(v) = 1_U \circ i_{V \to U}(v) = 1_U(v) = v. We conclude that psV=1Vp \circ s|_V = 1_V, as desired. (Also, sVs|_V is continuous, as it is given by composing continuous functions).

view this post on Zulip David Egolf (Apr 11 2024 at 17:42):

Next, we want to show that Γp(1U)=1Γp(U)\Gamma_p(1_U) = 1_{\Gamma_p(U)} for any object (open subset of XX) UU. By definition, Γp(1U):Γp(U)Γp(U)\Gamma_p(1_U): \Gamma_p(U) \to \Gamma_p(U) is the function that takes a given section s:UYs: U \to Y and restricts its domain to UU, yielding s:UYs: U \to Y. We note that this is the identity function on Γp(U)\Gamma_p(U), so that Γp(1U)=1Γp(U)\Gamma_p(1_U) = 1_{\Gamma_p(U)}.

view this post on Zulip David Egolf (Apr 11 2024 at 17:45):

To finish showing that Γp:O(X)opSet\Gamma_p: \mathcal{O}(X)^{\mathrm{op}} \to \mathsf{Set} is a functor (and hence a presheaf), we need to show that Γp\Gamma_p respects composition. That is, if we have an equation of the form rr=rr \circ r' = r'' in O(X)op\mathcal{O}(X)^{\mathrm{op}}, then we need to show that Γp(r)Γp(r)=Γp(r)\Gamma_p(r) \circ \Gamma_p(r') = \Gamma_p(r''). This is true because restricting the domain of a section in two steps, or restricting the domain all at once yields the same result.

We conclude that Γp:O(X)opSet\Gamma_p: \mathcal{O}(X)^{\mathrm{op}} \to \mathsf{Set} is a presheaf!

view this post on Zulip David Egolf (Apr 11 2024 at 17:49):

The next order of business is to show that Γp\Gamma_p is not only a presheaf, but also a sheaf! But that's a job for another day, when I have a bit more energy.

view this post on Zulip Peva Blanchard (Apr 11 2024 at 19:41):

I can't resist to give it a try.

spoiler

view this post on Zulip John Baez (Apr 12 2024 at 10:16):

Great! Good luck on your energy levels. I think you'll find that showing that the presheaf of sections of a bundle is a sheaf is similar to the earlier problem where you showed that the presheaf of continuous real-valued functions is a sheaf. Indeed that earlier problem can be seen as a special case of this one if you take Y=X×RY = X \times \mathbb{R}.

view this post on Zulip David Egolf (Apr 14 2024 at 15:50):

I now want to show that the presheaf of sections Γp:O(X)opSet\Gamma_p: \mathcal{O}(X)^{\mathrm{op}} \to \mathsf{Set} is in fact a sheaf.

To do this, let's start out with a bunch of siΓp(Ui)s_i \in \Gamma_p(U_i) as ii varies. Let's require that (si)UiUj=(sj)UiUj(s_i)|_{U_i \cap U_j} = (s_j)|_{U_i \cap U_j} for all i,ji,j and iUi=U\cup_i U_i = U. (Here, each UiU_i is an open subset of XX). To conclude that Γp\Gamma_p is a sheaf, we need to show that there always exists a unique sΓpUs \in \Gamma_pU such that sUi=sis|_{U_i} = s_i for all ii.

Recalling that p:YXp:Y \to X, any particular si:UiYs_i:U_i \to Y is a continuous map such that psi=1Uip \circ s_i = 1_{U_i}. Intuitively, we want to "glue together" these sections to get a section sΓp(U)s \in \Gamma_p(U) of pp over UU. If ss exists, it is unique. That is because for any uUu \in U, uUiu \in U_i for some ii, so we must have s(u)=sUi(u)=si(u)s(u) = s|_{U_i}(u) = s_i(u). This produces a function :UY:U \to Y because (si)UiUj=(sj)UiUj(s_i)|_{U_i \cap U_j} = (s_j)|_{U_i \cap U_j} for all i,ji,j.

It remains to show that ss exists. To do that, we need to check that defining ss as s(u)=sUi(u)=si(u)s(u) = s|_{U_i}(u) = s_i(u) (where uUiu \in U_i) gives us a continuous function s:UYs: U \to Y such that ps=1Up \circ s = 1_U.

We start by considering continuity. By the "local criterion for continuity" discussed above, a function s:UYs:U \to Y is continuous exactly if for any point uUu \in U there is a neighborhood UuU_u of uu such that sUu:UuYs|_{U_u}: U_u \to Y is continuous. For any uUu \in U, there is some UiU_i so that uUiu \in U_i, because iUi=U\cup_i U_i = U. And by assumption we know that sUi=sis|_{U_i} = s_i is continuous. We conclude that s:UYs: U \to Y is continuous.

Next, we need to show that ps=1Up \circ s = 1_U. For any uUu \in U, there is some ii so that uiUiu_i \in U_i. Then, ps(u)=psi(u)=1Ui(u)=up \circ s(u) = p \circ s_i(u) = 1_{U_i}(u) = u. We conclude that ps=1Up \circ s = 1_U, as desired.

view this post on Zulip David Egolf (Apr 14 2024 at 16:08):

John Baez said:

Great! Good luck on your energy levels. I think you'll find that showing that the presheaf of sections of a bundle is a sheaf is similar to the earlier problem where you showed that the presheaf of continuous real-valued functions is a sheaf. Indeed that earlier problem can be seen as a special case of this one if you take Y=X×RY = X \times \mathbb{R}.

Thanks for the good luck! Sometimes hoping for higher energy levels does feel a bit like waiting for a lucky dice roll; I find it's quite difficult to predict my energy levels accurately.

I want to consider the case p:X×RXp: X \times \mathbb{R} \to X, where pp sends (x,a)(x,a) to xx for any aa. Then a section of pp over UU (where UU is an open subset of XX) is a continuous function s:UX×Rs:U \to X \times \mathbb{R} such that ps=1Up \circ s = 1_U. I want to show that a section of pp over UU gives us a real-valued continuous function :UR:U \to \mathbb{R}, and a real-valued continuous function :UR:U \to \mathbb{R} gives us a section of pp over UU.

A section UX×RU \to X \times \mathbb{R} is in particular a continuous function. Therefore, by the universal property of products, it corresponds to two continuous functions: (1) a function :UX:U \to X and (2) a function URU \to \mathbb{R}. So, given a section s:UX×Rs:U \to X \times \mathbb{R}, we get a real-valued continuous function :UR:U \to \mathbb{R}, given by πRs:UR\pi_\mathbb{R} \circ s: U \to \mathbb{R}.

Let's now start with a continuous function f:URf: U \to \mathbb{R}. We want to construct a section of pp over UU from ff. By the universal property of products, to get a continuous function s:UX×Rs: U \to X \times \mathbb{R}, we just need to specify a continuous function from UU to XX and a continuous function from UU to R\mathbb{R}. Let's take our function :UX:U \to X to be the inclusion i:UXi:U \to X (which is continuous because UU has the subspace topology).

We want to show that the induced function s:UX×Rs: U \to X \times \mathbb{R} is in fact a section. Indeed, ps(u)=p(u,f(u))=up \circ s(u) = p(u, f(u)) = u, as desired.

view this post on Zulip David Egolf (Apr 14 2024 at 16:15):

I guess what I really wanted to show is that there is a bijection between the set of sections of pp over UU and the set of real-valued continuous functions from UU. I'm running out of steam, but this seems important to note: Since ps=1Up \circ s= 1_U for any section ss, we have that s(u)s(u) is of the form (u,f(u))(u, f(u)) for some ff. That is, the function :UX:U \to X induced by a section ss must be the inclusion.

I'm hoping that one can make use of this fact to show that the procedures I described above ((1) for constructing a continuous real-valued function on UU from a section of pp over UU and (2) for constructing a section of pp over UU from a continuous real-valued function on UU) are in fact inverses of one another.

I'll stop here for now!

view this post on Zulip John Baez (Apr 14 2024 at 16:20):

David Egolf said:

I guess what I really wanted to show is that there is a bijection between the set of sections of pp over UU and the set of real-valued continuous functions from UU. I'm running out of steam, but this seems important to note: Since ps=1Up \circ s= 1_U for any section ss, we have that s(u)s(u) is of the form (u,f(u))(u, f(u)) for some ff. That is, the function from UXU \to X induced by a section ss must be the inclusion.

Yes, that's a really important observation. And there's nothing really special about R\mathbb{R} here. More generally this is how you can take any section of a bundle p:X×AXp: X \times A \to X over UXU \subseteq X and turn it into a continuous function f:UAf: U \to A. And you're right: this gives a bijection between such sections and continuous functions f:UAf: U \to A.

view this post on Zulip John Baez (Apr 14 2024 at 16:21):

So, sections of bundles are a generalization of continuous functions. I'll let you do the work, but I wanted to have the fun of stating the dramatic conclusion!

view this post on Zulip Peva Blanchard (Apr 14 2024 at 20:21):

Just to formalize the statement. Does it mean that there is a natural isomorphism between the sheaf of continuous functions on XX and the sheaf of sections of the bundle X×RXX \times \mathbb{R} \rightarrow X?

view this post on Zulip John Baez (Apr 15 2024 at 08:41):

Yes, that's right. Nice!

It's not much extra work to state (or prove) the idea more generally: for any topological spaces XX and AA, there's a natural isomorphism between the sheaf of continuous AA-valued functions on XX and the sheaf of sections of the bundle X×AXX \times A \to X.

view this post on Zulip Peva Blanchard (Apr 15 2024 at 09:24):

Cool!

It also motivates "fiber bundles". The common fiber somehow acts like the codomain of values of the "functions". The difference is that the total space is not necessarily neatly decomposed as a cartesian product X×AX \times A.

The correspondance seems to go this way:

Also, I understand why we would want to consider "étale spaces": the ultimate form of this correspondance game is the equivalence between the category of sheaves on XX and the category of étale spaces over XX.

view this post on Zulip Peva Blanchard (Apr 15 2024 at 09:33):

Mmh, I think my mental picture is wrong ... an étale space EXE \rightarrow X does not seem to generalize fiber bundle.

view this post on Zulip John Baez (Apr 15 2024 at 10:51):

Peva Blanchard said:

The correspondence seems to go this way:

Yes, those are both right. We could make the second one more precise if we wanted, either in lowbrow ways or in highbrow ways using sheaf cohomology. But now is probably not the time to do that, especially since the "course" he's going through does not introduce fiber bundles.

view this post on Zulip John Baez (Apr 15 2024 at 10:52):

Peva Blanchard said:

Mmh, I think my mental picture is wrong ... an étale space EXE \rightarrow X does not seem to generalize fiber bundle.

The course talks more about étale spaces fairly soon, so let's wait a bit and revisit this. But you're right: I would say étale spaces generalize covering spaces, which are fiber bundles with discrete fiber.

view this post on Zulip David Egolf (Apr 15 2024 at 20:13):

In the next puzzle, we work on building a functor Γ:Top/XO(X)^\Gamma: \mathsf{Top}/X \to \widehat{O(X)}. We've already seen how to make a sheaf Γp\Gamma_p on XX from a continuous function p:YXp:Y \to X. It remains to figure out how Γ\Gamma acts on morphisms in Top/X \mathsf{Top}/X, and then to check that our resulting Γ\Gamma really is a functor.

Here's the next puzzle:

Suppose we have two bundles over XX, say p:YXp: Y \rightarrow X and p:YXp': Y' \rightarrow X, and a morphism from the first to the second, say f:YYf: Y \rightarrow Y'. Suppose s:UYs: U \rightarrow Y is a section of the first bundle over the open set UXU \subset X. Show that fsf \circ s is a section of the second bundle over UU. Use this to describe what the functor Γ\Gamma does on morphisms, and check functoriality.

view this post on Zulip David Egolf (Apr 15 2024 at 20:23):

First, we recall that a morphism from a bundle p:YXp:Y \to X to a bundle p:YXp': Y' \to X is a continuous function f:YYf:Y \to Y' such that pf=pp' \circ f = p.

In picture form, this commutative diagram describes a morphism from pp to pp':
a morphism from p to p'

Notice that if yYy \in Y "sits over" xXx \in X (so that p(y)=xp(y)=x), then f(y)Yf(y) \in Y' also sits over xx (as p(f(y))=p(y)=xp'(f(y)) = p(y)=x). We might think of our continuous function f:YYf:Y \to Y' as being possible to decompose into several pieces, where the xthx_{th} piece of ff maps p1(x)p^{-1}(x) to some subset of (p)1(x)(p')^{-1}(x).

view this post on Zulip David Egolf (Apr 15 2024 at 20:37):

With that context in place, I now want to check this:

To show that fs:UYf \circ s: U \to Y' is a section of p:YXp': Y' \to X, we need to show that p(fs):UXp' \circ (f \circ s): U \to X sends each element of uu to itself. Noting that pf=pp' \circ f = p, we find p(fs)(u)=(pf)(s(u))=p(s(u))p' \circ (f \circ s)(u) = (p' \circ f)(s(u)) = p(s(u)). Since ss is a section of pp over UU, p(s(u))=up(s(u)) = u. We conclude that p(fs)(u)=up' \circ (f \circ s)(u) = u for all uUu \in U, and so fsf \circ s is indeed a section of pp' over UU.

view this post on Zulip David Egolf (Apr 15 2024 at 20:39):

The next order of business is to describe what Γ\Gamma does on morphisms. But I'll stop here for today!

view this post on Zulip Peva Blanchard (Apr 15 2024 at 21:05):

I'll just restate, in this setting, an example that we discussed earlier. Let's just look at the case where Y=R×XY = \mathbb{R} \times X and Y=[1,1]×XY' = [-1, 1] \times X. The bundles pp and pp' are just the projection on the second factor.

Then, we get a morphism from pp to pp' in Top/XTop/X with

f:YY(v,x)(arctan v,x)\begin{align*} f : Y &\rightarrow Y' \\ (v, x) &\mapsto (arctan~v, x) \end{align*}

I choose arctanarctan, but clearly we can replay this game with any function RR\mathbb{R} \rightarrow \mathbb{R}.

view this post on Zulip Peva Blanchard (Apr 15 2024 at 21:12):

But there's a funny variant if we take X=RX = \mathbb{R}

g:R×R[1,1]×R(v,x)(arctan(vx),x)\begin{align*} g : \mathbb{R} \times \mathbb{R} &\rightarrow [-1,1] \times \mathbb{R} \\ (v, x) &\mapsto (arctan(v - x), x) \end{align*}

I think this is an example of morphism in Top/RTop/\mathbb{R} which does not arise from a continuous real-valued function RR\mathbb{R} \rightarrow \mathbb{R} as before.

view this post on Zulip David Egolf (Apr 16 2024 at 16:22):

Hmmm, let me try to understand what you just said.

I'll work in Top/X\mathsf{Top}/X. Let us assume we have two bundles of this form: p:A×XXp:A \times X \to X and p:A×XXp':A' \times X \to X, where p(a,x)=xp(a,x)=x and p(a,x)=xp'(a',x)=x for all aAa \in A, aAa' \in A, and xXx \in X.

If we have a continuous function f:AAf:A \to A', then the function (f,1X):A×XA×X(f, 1_X):A \times X \to A' \times X which sends (a,x)(a,x) to (f(a),x)(f(a),x) is continuous. Is it also a morphism of bundles from pp to pp'? Let's consider p(f,1X)(a,x)p' \circ (f,1_X)(a,x) for some (a,x)A×X(a,x) \in A \times X. We get p(f,1X)(a,x)=p((f(a),x)=x=p(a,x)p' \circ (f, 1_X)(a,x) =p'((f(a),x) = x = p(a,x). We conclude that from any continuous function f:AAf:A \to A' we get an morphism of bundles from pp to pp' given by (f,1X):A×XA×X(f,1_X):A \times X \to A' \times X.

view this post on Zulip David Egolf (Apr 16 2024 at 16:23):

I think then the question is: what other morphisms exist from p:A×XXp:A \times X \to X to p:A×XXp':A' \times X \to X that can not be produced in this way?

The gg you give above is not of the form (f,1X)(f, 1_X), for example.

view this post on Zulip David Egolf (Apr 16 2024 at 16:30):

Any continuous function hh from A×XA \times X to A×XA' \times X induces a continuous function ff from A×XA \times X to AA'. Let's define fx:AAf_x: A \to A' by fx(a)=f(a,x)f_x(a) = f(a,x). In some cases, this fxf_x can vary as xx does!

I'm guessing we can't induce a morphism of bundles where this kind of thing happens when we start out with just a single continuous function from AA to AA'.

view this post on Zulip Peva Blanchard (Apr 16 2024 at 16:33):

Yes exactly! To be complete, we should prove that there is no ff such that g(v,x)=(f(v),x)g(v, x) = (f(v), x) for all v,xv, x.

spoiler

view this post on Zulip David Egolf (Apr 17 2024 at 19:09):

I think I have a good guess regarding how to finish describing Γ\Gamma. Once I get a bit more energy - hopefully soon - I will type that up here. But today I need to rest up!

view this post on Zulip Julius Hamilton (Apr 19 2024 at 14:12):

I used to have energy problems, but then I started taking meds (in case that might help you).

view this post on Zulip David Egolf (Apr 22 2024 at 16:05):

Alright, let me take a stab at describing what Γ:Top/XO(X)^\Gamma: \mathsf{Top}/X \to \widehat{\mathcal{O}(X)} does on morphisms. Let's assume we have two bundles over XX, namely p:YXp:Y \to X and p:YXp':Y' \to X. These induce presheaves (indeed sheaves) on XX, by sending each open subset of XX to an appropriate set of sections over that subset.

Let's call these sheaves Γp:O(X)Set\Gamma_p: \mathcal{O}(X) \to \mathsf{Set} and Γp:O(X)Set\Gamma_{p'}: \mathcal{O}(X) \to \mathsf{Set}. Given a morphism of bundles from pp to pp' induced by a continuous function f:YYf:Y \to Y', we want to define a natural transformation Γ(f):ΓpΓp\Gamma(f): \Gamma_p \to \Gamma_p'.

Let's set up a naturality square corresponding to the morphism r:UVr: U \to V in O(X)\mathcal{O}(X) where VV and UU are open subsets of XX and VUV \subseteq U. We recall that:

Given a section ss of pp over UU and a morphism of bundles f:YYf:Y \to Y', we can form fs:UYf \circ s: U \to Y'. We saw earlier that this is indeed a section of pp' over UU. So, post-composing by ff provides a function from sections of pp over UU to sections of pp' over UU.

view this post on Zulip David Egolf (Apr 22 2024 at 16:06):

Based on the above, we now draw a proposed naturality square corresponding to the morphism r:UVr:U \to V in O(X)\mathcal{O}(X):
square

To show we get a natural transformation from Γp\Gamma_p to Γp\Gamma_{p'} in this way, we still need to show this square commutes for an arbitrary morphism r:UVr: U \to V.

view this post on Zulip David Egolf (Apr 22 2024 at 16:17):

Let's pick an s:UYΓp(U)s:U \to Y \in \Gamma_p(U) and trace it around the diagram. Restricting its domain to VV can be accomplished by precomposing with the (continuous) inclusion map i:VUi:V \to U. Going around the top right side of the square, we get fV(s)=f(si)=f(si)f_* \circ |_V(s) = f_*(s \circ i) = f \circ (s \circ i). Going around the bottom left side of the square, we get Vf(s)=V(fs)=(fs)i|_V \circ f_*(s) = |_V \circ (f \circ s) = (f \circ s) \circ i. By associativity of composition, these two results are equal, and so the square commutes.

We conclude that post-composing with ff at each component describes a natural transformation Γ(f):ΓpΓp\Gamma(f):\Gamma_p \to \Gamma_{p'}.

view this post on Zulip David Egolf (Apr 22 2024 at 16:22):

Next, let's show that Γ:Top/XO(X)^\Gamma:\mathsf{Top}/X \to \widehat{\mathcal{O}(X)} is a functor.

First we need to show that Γ(1p)=1Γ(p)\Gamma(1_p) = 1_{\Gamma(p)} for any bundle p:YXp:Y \to X. The identity morphism 1p1_p of pp is induced by the (continuous) identity function 1Y:YY1_Y: Y \to Y. So, Γ(1p):ΓpΓp\Gamma(1_p): \Gamma_p \to \Gamma_p is the natural transformation which post-composes by 1Y1_Y at each component. This is indeed the identity natural transformation from Γ(p)=Γp\Gamma(p) = \Gamma_p to itself, as desired.

view this post on Zulip David Egolf (Apr 22 2024 at 16:28):

Finally, we need to show that Γ(ff)=Γ(f)Γ(f)\Gamma(f \circ f') = \Gamma(f) \circ \Gamma(f') for two composable bundle morphisms ff and ff'. Let's compare the components of these two natural transformations. The UthU_{th} component of Γ(ff)\Gamma(f \circ f') is a function that post composes fff \circ f' after a section ss, so it is the function s(ff)ss \mapsto (f \circ f') \circ s. The UthU_{th} component of Γ(f)Γ(f)\Gamma(f) \circ \Gamma(f') is given by composing the UthU_{th} component of Γ(f)\Gamma(f) after the UthU_{th} component of Γ(f)\Gamma(f'). That means that the UthU_{th} component of Γ(f)Γ(f)\Gamma(f) \circ \Gamma(f') corresponds to a function sf(fs)s \mapsto f \circ (f' \circ s). By associativity of composition, we conclude that the UthU_{th} component of Γ(ff)\Gamma(f \circ f') and Γ(f)Γ(f)\Gamma(f) \circ \Gamma(f') are equal. So, Γ(ff)=Γ(f)Γ(f)\Gamma(f \circ f') = \Gamma(f) \circ \Gamma(f'), as desired.

We conclude that Γ:Top/XO(X)^\Gamma: \mathsf{Top}/X \to \widehat{\mathcal{O}(X)} is indeed a functor!

view this post on Zulip David Egolf (Apr 23 2024 at 15:18):

I'm excited, because the next section of the current blog post talks about "germs"! The rough intuition I have for germs is that they can be used to describe the different possible "very local behaviours" super close to a point.

For example, "The Rising Sea" (by Vakil) defines germs at a point xx to be equivalence classes of smooth functions defined on open sets containing xx: we say that f:UYf:U \to Y is in the same equivalence class as f:UYf': U' \to Y if there is some VUUV \subseteq U \cap U' such that xVx \in V and fU=fUf|_U = f'|_{U'}. So, intuitively, two functions defined on open sets containing xx are in the same germ at xx if they restrict to the same function when we "zoom in" to some open set that is "close enough" to xx.

view this post on Zulip David Egolf (Apr 23 2024 at 15:23):

Above, we saw how to make a presheaf on XX from a bundle over XX. We now want to go in the other direction: can we make a bundle over XX from a presheaf on XX?

Presheafs on XX and bundles over XX can both be viewed as "attaching information" to parts of XX. Given a bundle f:YXf:Y \to X, the data "attached" to some point xXx \in X is f1(x)Yf^{-1}(x) \subseteq Y. Given a presheaf F:O(X)opSetF: \mathcal{O}(X)^{\mathrm{op}} \to \mathsf{Set}, the data "attached" to an open subset UU is F(U)F(U).

So, to make a bundle from a presheaf, we need to figure out how to attach data to individual points of XX given data attached to each open subset of XX.

view this post on Zulip David Egolf (Apr 23 2024 at 15:36):

Assume we have some presheaf F:O(X)opSetF: \mathcal{O}(X)^{\mathrm{op}} \to \mathsf{Set}. We can come up with a set Λ(F)x\Lambda(F)_x to "attach" to xXx \in X as follows:

view this post on Zulip David Egolf (Apr 23 2024 at 15:40):

Next time, I'd like to think about Λ(X)x\Lambda(X)_x in the particular case where FF is the presheaf (which is also a sheaf) that sends each open subset UU of XX to the set of continuous real-valued functions :UR:U \to \mathbb{R}.

view this post on Zulip John Baez (Apr 23 2024 at 15:59):

Good! That's a great example for getting a more concrete picture of germs. I recommend taking X=RX = \mathbb{R} so you can actually graph these continuous functions and visualize these germs. And in this example I also recommend comparing the sheaves of

Remember, a functions from an open set of R\mathbb{R} to R\mathbb{R} is analytic if at each point it has a Taylor series with a positive radius of convergence.

The reason I bring this up is that derivatives, Taylor series and germs are three famous ways to study how a function looks in an arbitrarily small neighborhood of a point. And there are some revealing differences in the 3 cases listed above!

view this post on Zulip Peva Blanchard (Apr 23 2024 at 16:13):

I remember a funny function f:RRf: \mathbb{R} \rightarrow \mathbb{R}:

f(x)={0if x0e1x2otherwise f(x) = \begin{cases} 0 &\text{if } x \le 0 \\ e^{-\frac{1}{x^2}} &\text{otherwise} \end{cases}

which is smooth (therefore continuous).

One can try to describe the germ of ff at x=0x = 0, when regarded as a continuous, resp. smooth, function.

It also turns out that ff is not analytic, because of what happens at x=0x = 0.

view this post on Zulip John Baez (Apr 23 2024 at 16:31):

Yes, this is a great example of how the germs of smooth functions differ from those of analytic functions. There is more to say about this but I'll let David proceed at his own desired pace so he's not "drinking from a firehose".

view this post on Zulip JR (Apr 23 2024 at 20:53):

Peva Blanchard said:

I remember a funny function f:RRf: \mathbb{R} \rightarrow \mathbb{R}:

f(x)={0if x0e1x2otherwise f(x) = \begin{cases} 0 &\text{if } x \le 0 \\ e^{-\frac{1}{x^2}} &\text{otherwise} \end{cases}

which is smooth (therefore continuous).

One can try to describe the germ of ff at x=0x = 0, when regarded as a continuous, resp. smooth, function.

It also turns out that ff is not analytic, because of what happens at x=0x = 0.

FWIW this function is often used (after integrating and introducing radial or similar coordinates) to construct (relatively) explicit partitions of unity.

view this post on Zulip David Egolf (Apr 24 2024 at 15:59):

I next want to want to understand this part of the blog post, where FF is the presheaf which sends each open subset UU of XX to the set of continuous real-valued functions F(U)=Top(U,R)F(U) = \mathsf{Top}(U, \mathbb{R}):

By the definition of colimit, for any open neighborhood UU of xx we have a map FUΛ(F)xFU \to \Lambda(F)_x.

So any continuous real-valued function defined on any open neighborhood of xx gives a ‘germ’ of a function on xx. But also by the definition of colimit, any two such functions give the same germ iff they become equal when restricted to some open neighborhood of xx.

Specifically I'd like to prove the statement "any two such functions give the same germ iff they become equal when restricted to some open neighborhood of xx".

Once I've done that, then I think it would be good to do the things that John Baez suggests above: take X=RX = \mathbb{R} and make some graphs to visualize germs, and compare the germs we get when considering sheaves of continuous, smooth, or analytic R\mathbb{R}-valued functions. (Then I think it'll be time for the next puzzle, probably!)

view this post on Zulip David Egolf (Apr 24 2024 at 16:51):

I'm not sure where to start, but I think it may be helpful to get some sense for what a cone under our diagram FI:OxSetF \circ I: O_x \to \mathsf{Set} is like.

So, let α:FIΔS\alpha: F \circ I \to \Delta_S be a cone under FIF \circ I. Note that α\alpha is a natural transformation from FIF \circ I to the functor ΔS:OxSet\Delta_S: O_x \to \mathsf{Set} that is constant at the set SS. Since α\alpha is a natural transformation, all its "naturality squares" must commute.

Let's examine the naturality square for the morphism r:UVr:U \to V in OxO_x, where UU and VV are open subsets of XX each containing xx, such that VUV \subseteq U. Here's the corresponding naturality square:
square

Since α\alpha is a cone under FIF \circ I, this diagram commutes. That means αVV=αU\alpha_V \circ |_V = \alpha_U. This will be useful to know in a moment. Intuitively, this tells us that restricting a continuous function (from an open subset containing xx to an open subset containing xx) doesn't change the germ of xx it corresponds to.

I'm interested in the case where two continuous functions f:URf:U \to \mathbb{R} and f:URf':U' \to \mathbb{R} get mapped to the same germ (same element of Λ(F)x\Lambda(F)_x). And I want to show that this happens when there is some open VUUV \subseteq U' \cap U so that xVx \in V and fV=fVf|_V = f'|_V. Let's draw part of a cone α:FIΔS\alpha: F \circ I \to \Delta_S (for some set SS) under the diagram FIF \circ I in the situation where there is some open VUUV \subseteq U \cap U' containing xx:
diagram

We have that αVV=αUU\alpha_V \circ |_V = \alpha_{U \cap U'} and αUUUUU=αU\alpha_{U \cap U'} \circ |_{U' \to U \cap U'} = \alpha_{U'}. That implies that αVVUUU=αU\alpha_V \circ |_V \circ |_{U' \to U \cap U'} = \alpha_{U'}. Similarly, αVVUUU=αU\alpha_V \circ |_V \circ |_{U \to U \cap U'} = \alpha_{U}

Let's now assume that we have continuous functions f:URf:U \to \mathbb{R} and f:URf':U' \to \mathbb{R} such that VUUU(f)=VUUU(f)|_V \circ |_{U \to U \cap U'}(f) = |_V \circ |_{U' \to U \cap U'}(f'). Thus, αVVUUU(f)=αVVUUU(f)\alpha_V \circ |_V \circ |_{U \to U \cap U'}(f) = \alpha_V \circ |_V \circ |_{U' \to U \cap U'}(f'). Therefore, αU(f)=αU(f)\alpha_{U}(f) = \alpha_{U'}(f').

So, we see that if f:URf:U \to \mathbb{R} and f:URf':U' \to \mathbb{R} restrict to the same function on some open subset of UUU \cap U' that contains xx, then they get mapped to the same element by any cone under FI:OxSetF \circ I: O_x \to \mathsf{Set}. In particular, they must correspond to the same germ of xx!

It remains to show that if two continuous functions f:URf:U \to \mathbb{R} and f:URf':U' \to \mathbb{R} correspond to the same germ of xx, then they must restrict to the same function on some open VUUV \subseteq U \cap U' containing xx. I'll leave that for next time, though.

view this post on Zulip John Baez (Apr 24 2024 at 17:38):

Good work! We'll be able to draw a lot of lessons from what you're doing now, because many of the ideas you're coming up with now (and will come up with next time :upside_down: ) apply in far more general situations than the one you're considering here. But I won't distract you with those lessons until you're done!

view this post on Zulip Jacob Zelko (Apr 24 2024 at 18:51):

I have to say a huge thank you to @David Egolf and @John Baez (and multiple others) for this wonderful discussion here on Topos Theory. I am not yet at the point of getting into these blogs like David has, but I am slowly beginning to catch hints of Topos Theory in some of the readings/investigations I have been doing. At some point I think I shall converge back to this discussion but am very thankful it is on this Zulip for future reference. At any rate, I follow along with great curiosity in silent reflection of these points!

view this post on Zulip David Egolf (Apr 25 2024 at 17:49):

Next, I want to show that if two continuous functions f:URf:U \to \mathbb{R} and f:URf':U' \to \mathbb{R} (with UU and UU' being open sets containing xx) correspond to the same germ of xx, then they must restrict to the same function on some open VUUV \subseteq U \cap U' containing xx.

To get there, I first want to think conceptually about what it means for our set of germs Λ(F)x\Lambda(F)_x to be (part of the data of) a colimit of FI:OxSetF \circ I: O_x \to \mathsf{Set}. The full data of the colimit of FIF \circ I is some natural transformation α:FIΔΛ(F)x\alpha: F \circ I \to \Delta_{\Lambda(F)_x}. By definition of a colimit, this cocone of FIF \circ I is initial in the category of cocones of FIF \circ I. That is, for every other cocone β:FIΔS\beta: F \circ I \to \Delta_S (where ΔS\Delta_S is the functor :OxSet:O_x \to \mathsf{Set} constant at some set SS), there is a unique natural transformation Δg:ΔΛ(F)xΔS\Delta_g: \Delta_{\Lambda(F)_x} \to \Delta_S so that Δgα=β\Delta_g \circ \alpha = \beta.

Here's a picture illustrating the situation:
picture

The triangle diagram lives in the category [Ox,Set][O_x, \mathsf{Set}] of functors from OxO_x to Set\mathsf{Set}, together with natural transformations between them. The arrow at the bottom g:Λ(F)xSg:\Lambda(F)_x \to S is a function; it is a morphism in Set\mathsf{Set}. Note that a natural transformation from one constant functor to another is induced by a morphism from the object the first functor is constant at to the object the second functor is at.

In this diagram, α:FIΔΛ(F)x\alpha: F \circ I \to \Delta_{\Lambda(F)_x} I think can be viewed as an "observation" of the functor FIF \circ I. I think our goal is to find the "most informative observation" of the functor FI:OxSetF \circ I: O_x \to \mathsf{Set} having a target of some constant functor :OxSet:O_x \to \mathsf{Set}. Indeed, I think that α\alpha is the "most informative" observation of FIOxF \circ I \to O_x, in the sense that any other observation of it β\beta can be computed as Δgα\Delta_g \circ \alpha for some Δg\Delta_g.

Let's think about this a bit more using components. Let αU:(FI)(U)Λ(F)x\alpha_U: (F \circ I)(U) \to \Lambda(F)_x be the UU-th component of α\alpha, where UU is some open subset of XX containing xx. The UU-th component of Δg\Delta_g is just g:Λ(F)xSg: \Lambda(F)_x \to S, and so the commutativity of our diagram implies that gαU=βUg \circ \alpha_U = \beta_U. Taking some particular f(FI)(U)f \in (F \circ I)(U), so that f:URf:U \to \mathbb{R} is a continuous function defined on the open set UU containing xx, we learn that g(αU(f))=βU(f)g(\alpha_U(f)) = \beta_U(f). So, given the germ that ff belongs to, namely αU(f)\alpha_U(f), we can compute the observation βU(f)\beta_U(f) using some gg. For this reason, I think it makes sense to say that that germ of a particular function f:URf:U \to \mathbb{R} at xx is the "most informative" observation of that function "locally about xx".

Next time, I want to make use this intuition to show that if two continuous functions f:URf:U \to \mathbb{R} and f:URf':U' \to \mathbb{R} correspond to the same germ of xx, then they must restrict to the same function on some open VUUV \subseteq U \cap U' containing xx. To do that, here's my current rough plan:

view this post on Zulip John Baez (Apr 25 2024 at 23:01):

I don't think a proof by contradiction is necessary here, but you can try it and then perhaps straighten it out to a direct proof.

view this post on Zulip David Egolf (Apr 26 2024 at 15:43):

John Baez said:

I don't think a proof by contradiction is necessary here, but you can try it and then perhaps straighten it out to a direct proof.

This makes me want to find a direct proof! But I'll start out with the (attempted) proof by contradiction, and see what happens.

Let α:FIΔΛ(F)x\alpha: F \circ I \to \Delta_{\Lambda(F)_x} be the proposed colimit of FI:OxSetF \circ I:O_x \to \mathsf{Set}. And to obtain a contradiction, assume we have two continuous functions f:URf:U \to \mathbb{R} and f:URf':U' \to \mathbb{R} (with UU and UU' open sets containing xx), such that:

We aim to construct a cocone β:FIΔS\beta: F \circ I \to \Delta_S (for some set SS) of FIF \circ I so that there is no Δg:ΔΛ(F)xΔS\Delta_g: \Delta_{\Lambda(F)_x} \to \Delta_S satisfying Δgα=β\Delta_g \circ \alpha = \beta. That would show that α\alpha can't possibly act in this way if we want it to be a colimit.

view this post on Zulip David Egolf (Apr 26 2024 at 15:51):

To construct β\beta my plan to use what I think is supposed to be the actual colimit. We define an equivalence relationship on real-valued functions defined on an open set of XX containing xx. We decree that h:URh:URh:U \to \mathbb{R} \sim h':U' \to \mathbb{R} exactly if there is some open set VUUV \subseteq U \cap U' containing xx on which hV=hVh|_V = h'_V. Then, we form the set SS by having one element per equivalence class. I'll call the element of SS corresponding to the equivalence class of h:URh:U \to \mathbb{R} by the name [h][h]. Then, we let βU(h:UR)=[h]\beta_U(h:U \to \mathbb{R}) = [h].

Notice that if there is no open VUUV \subseteq U \cap U' containing xx where f:URf:U \to \mathbb{R} and f:URf:U' \to \mathbb{R} restrict to the same function, then ff and ff' are not equivalent. That means that βU(f)βU(f)\beta_U(f) \neq \beta_U(f'). We will aim to use this in a minute to obtain a contradiction.

There's a couple things to show first, though:

(I'd love to finish this off today, but I think I'll need to rest up and come back to this hopefully tomorrow!)

view this post on Zulip Peva Blanchard (Apr 26 2024 at 16:58):

Yes, I think an explicit construction of the colimit as a quotient by an equivalence relation is the right way!

Here is a very basic example with finite sets. The bottom right corner is the colimit of the diagram consisting of the three other corners. The square brackets enclose equivalence classes.

image.png

The way I like to see it is two-steps: first we take the disjoint union (the bullets a,,ea,\dots,e), and then we glue things together by adding wires (labeled 0,10,1). The equivalence classes correspond to the connected components of the resulting graph.
image.png

view this post on Zulip David Egolf (Apr 26 2024 at 17:38):

That's a nice example! Your visualization of the "gluing" is very cool!

view this post on Zulip David Egolf (Apr 28 2024 at 17:24):

I think we're in the home stretch now. The next thing I want to do is to show that the following really defines an equivalence relationship on real-valued functions mapping from open subsets of XX that contain xXx \in X:

For any h:URh:U \to \mathbb{R}, hhh \sim h, because hU=hUh|_U = h|_U.

If h:URh:URh:U \to \mathbb{R} \sim h':U' \to \mathbb{R} and h:URh:URh':U' \to \mathbb{R} \sim h'':U'' \to \mathbb{R}, then we want to show that hhh \sim h''. Since, hhh \sim h', there is some open VUUV \subseteq U \cap U' containing xx so that hV=hVh|_V = h'|_V. And since hhh' \sim h'' there is some open VUUV' \subseteq U' \cap U'' containing xx so that hV=hVh'_{V'} = h''_{V'}. Now, VVV \cap V' is open, and is a subset of both VV and VV'. So on VVV \cap V', we have that hVV=hVVh_{V \cap V'} = h'_{V \cap V'} and hVV=hVVh'_{V \cap V'} = h''_{V \cap V'}. Hence hVV=hVVh_{V \cap V'} = h''_{V \cap V'} and thus hhh \sim h''.

If h:URh:URh:U \to \mathbb{R} \sim h':U' \to \mathbb{R}, we want to show that hhh' \sim h. Since hhh \sim h', there is some open VUUV \subseteq U \cap U' containing xx so that hV=hVh|_V = h'|_V. That implies that hV=hVh'_V = h|_V and hence hhh' \sim h.

We conclude that \sim is indeed an equivalence relation on the set of real-valued functions having some open domain of XX that contains xx.

view this post on Zulip David Egolf (Apr 28 2024 at 17:34):

Next, I want to show that β\beta is a cocone of FIF \circ I. Recall from above that βU:(FI)(U)S\beta_U: (F \circ I)(U) \to S is defined as βU(h:UR)=[h]\beta_U(h:U \to \mathbb{R}) = [h], where [h][h] is the equivalence class of hh according to the equivalence relationship \sim.

To show that β\beta is a cocone of FIF \circ I, it suffices to show that any naturality square of β:FIΔS\beta: F \circ I \to \Delta_S commutes. Given a morphism r:UVr:U \to V in OxO_x (where UU and VV are open subsets of XX containing xx, with VUV \subseteq U), here is the correspond naturality square:
naturality square

To show this square commutes, it suffices to show that βU=βVV\beta_U = \beta_V \circ |_V. At a particular element of (FI)(U)(F \circ I)(U), say f:URf:U \to \mathbb{R}, that means that βU(f)=βVV(f)\beta_U(f) = \beta_V \circ |_V(f).

To show this is true, it suffices to show that ffVf \sim f|_V. Since VV is an open subset of XX containing xx, and fV=(fV)V=fVf|_V = (f|_V)|_V = f_V, we conclude that ffVf \sim f_V. Hence βU(f)=βVV(f)\beta_U(f) = \beta_V \circ |_V(f) for any f(FI)(U)f\in (F \circ I)(U), and so βU=βVV\beta_U = \beta_V \circ |_V for any UU and VV.

We conclude that an arbitrary naturality square of β\beta commutes, so that β\beta is a natural transformation :FIΔS:F \circ I \to \Delta_S, and thus a cocone.

view this post on Zulip David Egolf (Apr 28 2024 at 17:48):

Now, we are in a good spot to demonstrate a contradiction. Recall that we assumed that:

We will now show that there is no natural transformation Δg:ΔΛ(F)xΔS\Delta_g: \Delta_{\Lambda(F)_x} \to \Delta_S such that Δgα=β\Delta_g \circ \alpha = \beta. (Which would be a contradiction, because α\alpha is supposed to be a colimit). For this equation to hold, it must hold at every component. In particular, we must have (Δg)UαU=βU(\Delta_g)_U \circ \alpha_U = \beta_U and (Δg)UαU=βU(\Delta_g)_{U'} \circ \alpha_{U'} = \beta_{U'}. Noting that every component of Δg\Delta_g is just gg, we have that gαU=βUg \circ \alpha_U = \beta_U and gαU=βUg \circ \alpha_{U'} = \beta_{U'}.

We also know that αU(f)=αU(f)\alpha_U(f) = \alpha_{U'}(f'). Using all this, we conclude that βU(f)=gαU(f)=gαU(f)=βU(f)\beta_{U'}(f) = g \circ \alpha_{U'}(f) = g \circ \alpha_{U}(f) = \beta_U(f). But this is a contradiction: by definition of ff and ff' we can't possibly have βU(f)=βU(f)\beta_{U'}(f) = \beta_U(f). (βU(f)=βU(f)\beta_{U'}(f) = \beta_U(f) would imply that fff \sim f', which would imply that there is some open set containing xx in the intersection of the domains of ff and ff' where they restrict to the same function - and we know this is false by the assumptions we have placed on ff and ff').

We conclude that if α:FIΔΛ(F)x\alpha: F \circ I \to \Delta_{\Lambda(F)_x} is to be the colimit of FIF \circ I, then two functions with the same germ at xx must have some open neighborhood in the intersection of their domains containing xx such that they restrict to the same function!

view this post on Zulip David Egolf (Apr 28 2024 at 17:53):

I'll pause here for now, and plan to focus on some examples of germs next time!

view this post on Zulip Peva Blanchard (Apr 29 2024 at 08:46):

In case you are interested, here is, I think, a more direct proof. It amounts to showing that the quotient you suggest satisfies the universal property of the colimit.

spoiler

view this post on Zulip David Egolf (Apr 29 2024 at 16:06):

That is interesting! I'm trying to understand what you just wrote...

I think there might be a typo. If I understand correctly, we have that UVU \subseteq V, but the morphism from FVFV to FUFU is called V-|V in the diagrams above. I would have expected it to be called something more like U-|U, as I think it corresponds to restricting from VV to UU.

view this post on Zulip David Egolf (Apr 29 2024 at 16:13):

So, I think you start out by describing the cocone ι:FIΔΛ(F)x\iota: F \circ I \to \Delta_{\Lambda(F)_x} (to use the notation I was using above), where the component ιU:(FI)(U)Λ(F)x\iota_U:(F \circ I)(U) \to\Lambda(F)_x sends each element of FUFU to its equivalence class under \sim.

Then, to show this cocone satisfies the universal property of the colimit, you introduce another cocone :FIΔA: F \circ I \to \Delta_A having UU-th component aU:(FI)(U)Aa_U:(F \circ I)(U) \to A.

view this post on Zulip David Egolf (Apr 29 2024 at 16:15):

Next, you define an a:S(F)xAa:S(F)_x \to A. Here, S(F)xS(F)_x is the disjoint union of the sets (FI)(U)(F \circ I)(U) as UU varies over open sets containing xx. Because the disjoint union is the coproduct in Set\mathsf{Set}, a collection of functions aU:(FI)(U)Aa_U: (F \circ I)(U) \to A induce a function a:S(F)xAa:S(F)_x \to A.

view this post on Zulip David Egolf (Apr 29 2024 at 16:23):

You then I think note that if f:URg:VRf:U \to \mathbb{R} \sim g:V \to \mathbb{R} then a(f)=a(g)a(f) = a(g). If fgf \sim g, that means there is some WUVW \subseteq U \cap V containing xx where fW=gWf|_W = g|_W. In this situation, this diagram commutes:
diagram

Since W(f)=W(g)|_W(f) = |_W(g), aWW(f)=aWW(g)a_W \circ |_W(f) = a_W \circ |_W(g). By commutativity of the diagram, this implies that aU(f)=aU(g)a_U(f) = a_U(g). Since aa is induced using the universal property of disjoint unions, this implies that indeed a(f)=a(g)a(f) = a(g).

view this post on Zulip David Egolf (Apr 29 2024 at 16:32):

Now, a:S(F)xAa:S(F)_x \to A. We want to use aa to induce a natural transformation from ΔΛ(F)x\Delta_{\Lambda(F)_x} to ΔA\Delta_A. To do this, we just need a morphism α:Λ(F)xA\alpha:\Lambda(F)_x \to A.

At this point, I think we want to use something like the "universal property of quotients" to induce our α\alpha. I don't remember how that stuff goes very well right now... But I assume the basic idea is to set α([f])=a(f)\alpha([f]) = a(f).

We have to show this is well-defined. If fgf \sim g, then α([f])=a(f)\alpha([f]) = a(f) and α([g])=a(g)\alpha([g]) = a(g), but since fg    a(f)=a(g)f \sim g \implies a(f)=a(g), we learn that α([f])=α([g])\alpha([f]) = \alpha([g]). So, α\alpha is indeed well-defined.

view this post on Zulip David Egolf (Apr 29 2024 at 16:48):

I think it just remains to show that α:Λ(F)xA\alpha: \Lambda(F)_x \to A:

view this post on Zulip David Egolf (Apr 29 2024 at 16:51):

To show that α\alpha induces a morphism of cocones, we need to show that αιU=aU\alpha \circ \iota_U = a_U for all UOxU \in O_x. For some f(FI)(U)f \in (F \circ I)(U), we have α(ιU(f))=α([f])=a(f)=aU(f)\alpha(\iota_U(f)) = \alpha([f]) = a(f) = a_U(f), as desired.

view this post on Zulip David Egolf (Apr 29 2024 at 16:53):

Finally, we want to show that α:Λ(F)xA\alpha: \Lambda(F)_x \to A is the unique morphism :Λ(F)xA:\Lambda(F)_x \to A that induces a morphism of cones from our cocone with tip Λ(F)x\Lambda(F)_x to our cocone with tip AA.

view this post on Zulip David Egolf (Apr 29 2024 at 17:25):

So, we just saw that we need αιU(f)=aU(f)=a(f)\alpha \circ \iota_U(f) = a_U(f) = a(f) for all UU. Since ιU\iota_U projects to equivalence classes, this means we need α([f])=a(f)\alpha([f]) = a(f). As UU varies, we'll obtain this condition for all equivalence classes. So, I think α([f])=a(f)\alpha([f]) = a(f) for all [f]Λ(F)x[f] \in \Lambda(F)_x is forced, if α\alpha is to be a morphism of our cocones.

I think that means we can conclude that α\alpha does indeed induce the unique morphism from our cocone with tip Λ(F)x\Lambda(F)_x to our cocone with tip AA. We conclude that our cocone with tip with tip Λ(F)x\Lambda(F)_x is indeed initial, and so it is indeed the colimit of our diagram!

view this post on Zulip David Egolf (Apr 29 2024 at 17:26):

Thanks, @Peva Blanchard , for working out the direct proof! It found it interesting and helpful to review. :smile:

view this post on Zulip David Egolf (Apr 29 2024 at 17:35):

Starting to move in the direction of examples of germs, there is a nice example in the book "An Introduction to Manifolds" (by Tu), on page 12:

The functions f(x)=1/(1x)f(x) = 1/(1-x) with domain R{1}\mathbb{R} - \{1\} and g(x)=1+x+x2+x3+g(x) = 1 + x + x^2 + x^3+\dots with domain the open interval ]1,1[]-1,1[ have the same germ at any point pp in the open interval ]1,1[]-1,1[.

view this post on Zulip Peva Blanchard (Apr 29 2024 at 17:53):

I think there might be a typo. If I understand correctly, we have that UVU \subseteq V, but the morphism from FVFV to FUFU is called V-|V in the diagrams above. I would have expected it to be called something more like U-|U, as I think it corresponds to restricting from VV to UU.

Oh you're right! Yes I made a typo in the diagrams.

view this post on Zulip David Egolf (Apr 30 2024 at 17:25):

Before moving on to the next puzzle, I'd like to try and visualize a germ for the presheaf F:O(R)opSetF: \mathcal{O}(\mathbb{R})^{\mathrm{op}} \to \mathsf{Set}, which sends each open subset UU of R\mathbb{R} to the set of continuous real-valued functions :UR:U \to \mathbb{R}.

To visualize a germ at xRx \in \mathbb{R}, (which is an element of Λ(F)x\Lambda(F)_x), I'll draw a little cartoon of a bunch of continuous functions (defined on different open sets containing xx) that correspond to the same germ. That is, they become the same function when restricted to a "small enough" open set containing xx.

germ visualization

view this post on Zulip David Egolf (Apr 30 2024 at 17:31):

I'd be happy to talk more about examples of germs (e.g. in the continuous vs smooth vs analytic cases), but I don't know really know how to go about comparing those. So I'll move on to the next puzzle. But if you have something you'd like to say regarding examples of germs, please feel welcome to share your thoughts here!

view this post on Zulip David Egolf (Apr 30 2024 at 17:37):

Here is the next puzzle, together with some context:

Show that with this topology on Λ(F)\Lambda(F) the map p:Λ(F)Xp:\Lambda(F) \to X is continuous.

Context:

I am still working to understand the proposed topology on Λ(F)\Lambda(F).

view this post on Zulip Kevin Carlson (Apr 30 2024 at 17:38):

David Egolf said:

I'd be happy to talk more about examples of germs (e.g. in the continuous vs smooth vs analytic cases), but I don't know really know how to go about comparing those. So I'll move on to the next puzzle. But if you have something you'd like to say regarding examples of germs, please feel welcome to share your thoughts here!

One very important fact about analytic germs is that you know how to name all of them! In fact you probably learned how in a calculus course.

view this post on Zulip David Egolf (Apr 30 2024 at 17:52):

Thanks, @Kevin Carlson for your comment! It's been a while since I took a calculus course, and I can't remember if we ever used the word "analytic". But let me see if I can figure out what you're hinting at.

I'll be referencing John Baez's remark above:

Remember, a functions from an open set of R\mathbb{R} to R\mathbb{R} is analytic if at each point it has a Taylor series with a positive radius of convergence.

One way to put an equivalence relationship on a set SS is to use a function f:SPf:S \to P where f(s)f(s) is some property of ss. Then we let ss    f(s)=f(s)s \sim s' \iff f(s) = f(s').

If SS is the set of real-valued analytic functions, with each element of SS defined in some open set URU \subseteq \mathbb{R} containing xRx \in \mathbb{R}, I want to try setting f(s)f(s) to be the Taylor series of ss about xx. Then I'm hoping that the equivalence relationship induced by ff is the same as the equivalence relationship "belongs to the same germ". If that works out, I am hoping that would imply that the analytic germs at xx are in bijection with the Taylor series about xx that converge in some open subset of R\mathbb{R} containing xx.

view this post on Zulip David Egolf (Apr 30 2024 at 17:59):

If f(s)=f(s)f(s) = f(s'), that implies that ss and ss' have the same Taylor series about xx. Because ss and ss' are analytic, f(s)f(s) and f(s)f(s') both have a positive radius of convergence about xx. I think that means that ss and ss' become equal when restricted to this region of convergence about xx. And this restricted function is still analytic, so I think this implies that ss and ss' belong to the same analytic germ at xx.

view this post on Zulip David Egolf (Apr 30 2024 at 18:01):

If ss and ss' belong to the same analytic germ at xx, then they are both analytic and have some common analytic restriction to some open subset about xx. That restriction, being analytic, can be expressed as a Taylor series in some region with a positive radius of convergence about xx. And so, ss and ss' have the same Taylor series about xx when we are "close enough" to xx. I am hoping that implies that ss and ss' must have the same Taylor series about xx, so that f(s)=f(s)f(s) = f(s').

view this post on Zulip David Egolf (Apr 30 2024 at 18:03):

Well, I feel rather shaky on this stuff. Any corrections or clarifications would be appreciated! :smile:

view this post on Zulip Kevin Carlson (Apr 30 2024 at 18:05):

That’s the idea! Sounds like you’re still just a little stuck on whether having the same Taylor series on a small enough neighborhood of a point means you have the same Taylor series at that point. But there’s no difference between “my Taylor series near aa” and “my Taylor series at aa”, because, recall, the Taylor series is calculated by calculating all the derivatives of ss at a.a. So if two analytic functions agree near aa, they have the same Taylor series there. And conversely, since you compute the functions by actually plugging into the Taylor series where it converges! Hopefully that wasn’t handing you anything it would’ve been more fun to figure out on your own, just trying to help remind you of some old calculus stuff.

view this post on Zulip David Egolf (Apr 30 2024 at 18:13):

Thanks for clarifying! That makes sense: since a Taylor series is computed entirely using information "extremely close" to aa (by computing s(a),s(a),s(a),s(a), s'(a), s''(a), \dots), if two analytic functions agree on some open set containing aa, they must have the same Taylor series at aa. (All the derivatives are computed using limits which only care about behaviour as we get "really close" to aa: we'll eventually get inside the open set where these two functions agree during the limiting process). In particular, if two analytic functions obtain the same Taylor series at aa when we restrict both of them to some open set about aa (which means they agree on some open set containing aa), then the two original analytic functions must have the same Taylor series at aa.

view this post on Zulip Peva Blanchard (Apr 30 2024 at 18:30):

Yes! Now we have everything to explain why this function is not analytic.

f(x)={0if x0e1x2otherwise f(x) = \begin{cases} 0 &\text{if } x \le 0 \\ e^{-\frac{1}{x^2}} &\text{otherwise} \end{cases}

spoiler

view this post on Zulip John Baez (May 01 2024 at 07:18):

David Egolf said:

Context:

Yes, the disjoint union (aka "coproduct"). You'd never want to say two germs at two different points xx are equal.

view this post on Zulip John Baez (May 01 2024 at 07:21):

If my blog post left that unclear, I should fix it.

view this post on Zulip John Baez (May 01 2024 at 07:23):

If you haven't thought much about analytic functions, it might help to know that @Peva Blanchard is giving the standard example to show how the concept is a bit subtle. This is a function that has an nn th derivative at x=0x = 0 for all n=0,1,2,n = 0, 1,2, \dots, which is still not analytic. In fact all these derivatives are zero, yet the germ of this function at x=0x = 0 is nonzero!

view this post on Zulip John Baez (May 01 2024 at 07:34):

Maybe it's good to think about something much less weird:

Puzzle. Find a function that vanishes at x=0x = 0, along with its first million derivatives:

f(0)=0,dfdx(0)=0,d2fdx2(0)=0,,d1,000,000fdx1,000,000(0)=0 f(0) = 0, \frac{df}{dx}(0) = 0, \frac{d^2 f}{dx^2}(0) = 0, \dots, \frac{d^{1,000,000} f}{dx^{1,000,000}}(0) = 0

but is nonzero for all x0x \ne 0.

view this post on Zulip John Baez (May 01 2024 at 07:38):

Peva's example is much stranger, because we don't stop at a million or any finite number - all the derivatives of this function are all well-defined for all xx, and they all vanish at x=0x = 0, but this nonzero for all x>0x > 0.

view this post on Zulip John Baez (May 01 2024 at 18:02):

The point of Peva's example is that if you have a function f ⁣:RRf \colon \mathbb{R} \to \mathbb{R} that is infinitely differentiable, its germ at x = 0 can contain more information than all its derivatives at x = 0. But for analytic functions, all the information about the germ is contained in the derivatives - since you can recover the function from its power series, at least in some neighborhood of x = 0.

view this post on Zulip David Egolf (May 01 2024 at 18:38):

Thanks to both of your for your comments! I'm taking a little break today from this thread, but I hope to return to it tomorrow. The idea that a smooth function can have more information in its germ at a point (in addition to the values of all its derivatives at that point) is interesting, and I look forward to responding in more detail to your comments soon.

view this post on Zulip David Egolf (May 02 2024 at 16:05):

John Baez said:

Maybe it's good to think about something much less weird:

Puzzle. Find a function that vanishes at x=0x = 0, along with its first million derivatives:

f(0)=0,dfdx(0)=0,d2fdx2(0)=0,,d1,000,000fdx1,000,000(0)=0 f(0) = 0, \frac{df}{dx}(0) = 0, \frac{d^2 f}{dx^2}(0) = 0, \dots, \frac{d^{1,000,000} f}{dx^{1,000,000}}(0) = 0

but is nonzero for all x0x \ne 0.

The first idea that comes to mind for me is to try f(x)=xnf(x)=x^n for nn big enough. Each derivative we take reduces the exponent of xx by 11. I think this implies that the first n1n-1 derivatives are all zero. (Eventually though, after we take nn derivatives, we get f(n)(x)=n!f^{(n)}(x) = n! which is non-zero at x=0x=0.) I think setting n=1,000,000+1n=1,000,000+1 gives us a function f(x)=x1,000,001f(x)=x^{1,000,001} that meets the requirements of the puzzle.

view this post on Zulip David Egolf (May 02 2024 at 16:09):

John Baez said:

David Egolf said:

Context:

Yes, the disjoint union (aka "coproduct"). You'd never want to say two germs at two different points xx are equal.

John Baez said:

If my blog post left that unclear, I should fix it.

I was fairly sure we don't ever want to consider two germs at different points to be equal, but I started slightly worrying about this issue because the \bigcup symbol was used instead of the \coprod symbol in the blog post:
notation

Actually, I suppose that each of Λ(F)x\Lambda(F)_x is only defined up to isomorphism if we just require each Λ(F)x\Lambda(F)_x to be (part of) a colimit of an appropriate diagram. From that perspective, it seems bad to take the union of these Λ(F)x\Lambda(F)_x as xx varies, because the union is an operation that cares about the equality of elements of the different sets we are taking a union of. (And we can change which elements in different Λ(F)x\Lambda(F)_x are equal by swapping out isomorphic copies of some Λ(F)x\Lambda(F)_x).

view this post on Zulip David Egolf (May 02 2024 at 16:14):

Peva Blanchard said:

Yes! Now we have everything to explain why this function is not analytic.

f(x)={0if x0e1x2otherwise f(x) = \begin{cases} 0 &\text{if } x \le 0 \\ e^{-\frac{1}{x^2}} &\text{otherwise} \end{cases}

spoiler


Huh! I suppose this function "takes off" from zero so slowly that all its derivative at 00 don't even notice! So we have two smooth functions (this one, and the function constant at zero) that have the same Taylor series at 00, but there is no open set containing 00 in which those two functions restrict to the same function!

In this example, we see that computing all the derivatives at a point xx of a smooth function doesn't always determine uniquely which smooth germ of xx that function belongs to.

view this post on Zulip David Egolf (May 02 2024 at 16:22):

I find myself wondering what additional information (in addition to the value of all the derivatives) is needed to determine the germ that a smooth function ff belongs to at some point xx. I suppose we'd like to find some information that determines ff on some small enough neighborhood of xx. We just saw that all the values of the derivatives of ff at xx aren't always going to be enough to do this! So we need some additional information.

But I'm unsure how we could go about discovering what that additional information is.

view this post on Zulip John Baez (May 02 2024 at 16:56):

David Egolf said:

John Baez said:

Puzzle. Find a function that vanishes at x=0x = 0, along with its first million derivatives:

f(0)=0,dfdx(0)=0,d2fdx2(0)=0,,d1,000,000fdx1,000,000(0)=0 f(0) = 0, \frac{df}{dx}(0) = 0, \frac{d^2 f}{dx^2}(0) = 0, \dots, \frac{d^{1,000,000} f}{dx^{1,000,000}}(0) = 0

but is nonzero for all x0x \ne 0.

I think setting n=1,000,000+1n=1,000,000+1 gives us a function f(x)=x1,000,001f(x)=x^{1,000,001} that meets the requirements of the puzzle.

Yes, that's the best solution of this puzzle!

view this post on Zulip John Baez (May 02 2024 at 16:59):

David Egolf said:

We just saw that all the values of the derivatives of ff at xx aren't always going to be enough to do this! So we need some additional information.

But I'm unsure how we could go about discovering what that additional information is.

In a sense the difficulty of this question is why the concept of 'germ' is so useful: the germ of a function is the tautological answer to this question!

view this post on Zulip Peva Blanchard (May 02 2024 at 17:03):

The question is interesting.

I'm wondering how we could "measure" the "complexity" of the set of germs at xx. For instance, the analytic germs at xx seem to form a vector space of countable dimension (I think).

view this post on Zulip Kevin Carlson (May 02 2024 at 17:07):

It's not exactly of countable dimension, in the usual linear algebra sense, since the space of infinite sequences has uncountable dimension (you can't get any Taylor series with infinitely many nonzero coefficients as a linear combination of $$x^n$$s!) But it's "countable-dimensional" in the functional analysis sense, which is that there's a countable "basis" when you allow for convergent infinite sums from that basis, or similarly, the linear span of that countable "basis" is dense. So one way of taking David's interesting question is, whether we can find an explicit basis for the germs of smooth functions at a point. I don't know the answer but I have an intuition that we cannot!

view this post on Zulip Peva Blanchard (May 02 2024 at 17:25):

It is tricky because this requires (at least) a topology on the set Λ(F)x\Lambda(F)_x of germs. There is the coarsest topology making the projection p:xXΛ(F)xXp: \bigsqcup_{x\in X} \Lambda(F)_x \rightarrow X continuous. But, this is not enough: the induced topology on the subset Λ(F)x\Lambda(F)_x is trivial (I think).

view this post on Zulip Peva Blanchard (May 02 2024 at 17:32):

We would need to "topologize" the sheaf of continuous/smooth/analytic functions: each F(U)F(U) is a topological space (instead of just a set) for every open subset UXU \subseteq X.

view this post on Zulip Peva Blanchard (May 02 2024 at 17:32):

Mmh ... this is going too far out of my reach, so I'll stop there.

view this post on Zulip John Baez (May 03 2024 at 07:21):

If you want a vector space of germs that's of countably infinite dimension, the nicest choice is the sheaf of polynomial functions on the real line, or the complex plane...

... or any algebraic variety, which is roughly a space described by a bunch of polynomial equations, like the space of solutions of x2=y3+yx^2 = y^3 + y. But people call polynomial functions on algebraic varieties regular functions.

Algebraic varieties are the traditional object of study of algebraic geometry, and the sheaf of regular functions on an algebraic variety became the star of algebraic geometry: people call it O\mathcal{O}.

You can define algebraic varieties over various fields, but the most traditional case uses C\mathbb{C}. For any 'smooth' nn-dimensional complex algebraic variety, the germ of its sheaf of regular functions at any point is isomorphic to the germ of the sheaf of polynomial functions on Cn.\mathbb{C}^n.

After algebraic varieties were quite well understood and Grothendieck started chafing at their limitations, he defined the concept of 'scheme', which is roughly a topological space equipped with a sheaf that acts like the sheaf of regular functions.

I'm not giving a precise definition here, but it's very notable that the concept of scheme explicitly involves the concept of sheaf! So modern algebraic geometry, which uses schemes, is heavily reliant on sheaves.

view this post on Zulip John Baez (May 03 2024 at 07:26):

If we start exploring sheaves that are like the sheaf of analytic functions, we are moving in a somewhat different direction. There's an important concept of complex manifold, which is a space covered by 'charts' that are copies of Cn\mathbb{C}^n for some nn, with transition functions that are analytic. Any such manifold has a sheaf of analytic functions on it... and the germ of this sheaf at any point is isomorphic to the germ of analytic functions at any point of Cn\mathbb{C}^n.

view this post on Zulip John Baez (May 03 2024 at 07:33):

Just as we can have algebraic varieties that aren't smooth, like the space of solutions of x2=y3x^2 = y^3 (which has a sharp 'cusp' at the origin), we can also define complex analytic varieties, which generalize complex manifolds but don't need to be smooth. I know almost nothing about these, but they're again defined using sheaves.

view this post on Zulip John Baez (May 03 2024 at 08:53):

David Egolf said:

Peva Blanchard said:

f(x)={0if x0e1x2otherwise f(x) = \begin{cases} 0 &\text{if } x \le 0 \\ e^{-\frac{1}{x^2}} &\text{otherwise} \end{cases}

Huh! I suppose this function "takes off" from zero so slowly that all its derivative at 00 don't even notice!

Right. But it's very peculiar. It's like starting your car so smoothly that at first you don't accelerate at all.

For the nth derivative to become bigger than zero, the (n+1)st derivative needs to be bigger than zero first... and here that happens for all n, yet all these derivatives start at zero.

view this post on Zulip John Baez (May 03 2024 at 08:59):

How does it work?

As you increase xx from 0 to ++\infty this function goes from 0 to 1. Its first derivative goes up to about 1/2 and then goes down. But before that, its second derivative goes up to 3... later it goes down. And before that, its third derivative goes up to about 20. And before that, its fourth derivative goes up to about 200. And so on.

view this post on Zulip John Baez (May 03 2024 at 09:01):

So while you may feel the function takes off very gently, because all its derivatives are zero at x=0x = 0, in fact there's a huge flurry of activity going on for arbitrarily small xx.

view this post on Zulip David Egolf (May 03 2024 at 17:23):

Looking at those examples of germs was interesting! And it's cool to learn that sheaves get used in all kinds of places. It's always a nice bonus when learning about one thing makes it a bit easier to learn some other things!

I want to return my attention to the next puzzle, which has to do with putting a topology on Λ(F)=xXΛ(F)x\Lambda(F) = \coprod_{x \in X} \Lambda(F)_x, the set of all our germs for our sheaf FF of continuous real-valued functions on XX. I'm still trying to understand the topology described in the blog post - but I'll write out my understanding so far.

We'd really like to have a "germ bundle" p:Λ(F)Xp: \Lambda(F) \to X that sends a particular germ pp to the point xXx \in X that it is associated with. (Each germ in Λ(F)\Lambda(F) is associated with exactly one point xXx \in X, as it belongs to exactly one of Λ(F)x\Lambda(F)_x as xx ranges over XX). If we could construct a bundle from a sheaf in this way, then we'd be able to think about sheaves from the perspective described here ("Sheaves in Geometry and Logic", page 64):

Alternatively, a sheaf FF on XX can be described as a rule which assigns to each point xx of the space a set FxF_x consisting of the "germs" at xx of the functions to be considered, as defined in neighborhoods of the point xx... Viewed in this way, the sheaf FF is a set FxF_x which "varies" (with the point xx) over the space XX.

view this post on Zulip David Egolf (May 03 2024 at 17:27):

Now, for p:Λ(F)Xp: \Lambda(F) \to X to really be a bundle, it needs to be a continuous function. To talk about its continuity, we need to put a topology on Λ(F)\Lambda(F). However, referencing pages 84-85 of "Sheaves in Geometry and Logic", this isn't the only function that we want to be continuous when we select an appropriate topology for Λ(F)\Lambda(F).

We also have some other interesting functions which we'd like to be continuous, so that they can be sections of our bundle. Given some sF(U)s \in F(U), so in our case s:URs:U \to \mathbb{R} in Top\mathsf{Top}, we define a function g(s):UΛ(F)g(s):U \to \Lambda(F) ("g" refers to "germ") defined by g(s)(x)=[s]xg(s)(x) = [s]_x, where by [s]x[s]_x I mean the germ of ss at the point xUx \in U. Note that pg(s)(x)=p([s]x)=xp \circ g(s)(x) = p([s]_x) = x, so that if g(s):UΛ(F)g(s):U \to \Lambda(F) was continuous, it would provide a section of our bundle p:Λ(F)Xp: \Lambda(F) \to X. In this way, we are hoping to associate each element of a sheaf set F(U)F(U) (which is a set of continuous real-valued functions in the case of our FF) to a corresponding section of our germ bundle p:Λ(F)Xp: \Lambda(F) \to X. To make this happen, we need to choose the topology on Λ(F)\Lambda(F) appropriately, so that g(s):UΛ(F)g(s):U \to \Lambda(F) is continuous (for each sF(U)s \in F(U) as UU varies).

view this post on Zulip David Egolf (May 03 2024 at 17:32):

I'll stop here for today. Next time, I'm planning to look at the minimum of open sets we need to put in our topology for Λ(F)\Lambda(F) so that p:Λ(F)Xp: \Lambda(F) \to X becomes continuous. Then I think I want to check that a given g(s):UΛ(F)g(s):U \to \Lambda(F) still has a hope of being continuous, even after we've declared those subsets of Λ(F)\Lambda(F) to be open.

view this post on Zulip John Baez (May 03 2024 at 20:57):

John Baez said:

David Egolf said:

We just saw that all the values of the derivatives of ff at xx aren't always going to be enough to do this! So we need some additional information.

But I'm unsure how we could go about discovering what that additional information is.

In a sense the difficulty of this question is why the concept of 'germ' is so useful: the germ of a function is the tautological answer to this question!

By the way, I'd like to know any sort of answer to this question. I was optimistic when I saw this question on Math Stack Exchange:

but the answers were completely useless (except for one answer who told the original questioner that he was asking about the germ of a smooth function: he hadn't known this concept had a name). I think there should be interesting things to say about this question even if a fully satisfying answer is not known.

view this post on Zulip David Egolf (May 03 2024 at 23:56):

One very rough idea that comes to mind: instead of taking the limit of something like (f(x)f(0))/x(f(x)-f(0))/x as xx approaches 00, maybe we could consider "taking a limit" of the truth values of a bunch of propositions like "f(x)>0f(x)>0" as xx approaches 0.

When f(x)=e1/x2f(x) = e^{-1/x^2} for x>0x>0, we get a sequence of truth values that looks like: true, true, true... as we assess the truth value of "f(x)>0f(x)>0" as xx approaches 00. By contrast, if f(x)=0f(x)=0 for all xx, then the sequence of truth values we get from "f(x)>0f(x)>0" is false, false, false.. as we assess the truth value of "f(x)>0f(x)>0" as xx approaches zero.

I'm not sure how useful this is... I was just trying to think of "measurements really close to 0" that determine that the zero function is different from our "slow takeoff" function which at x=0x=0 is zero and has all derivatives equal to zero.

view this post on Zulip David Egolf (May 04 2024 at 00:00):

John Baez said:

So while you may feel the function takes off very gently, because all its derivatives are zero at x=0x = 0, in fact there's a huge flurry of activity going on for arbitrarily small xx.

I also wonder how one could formalize this "huge flurry of activity". Maybe that could be helpful for distinguishing these functions from one another using some kind of measurement involving a limiting process which approaches x=0x=0?

view this post on Zulip Peva Blanchard (May 04 2024 at 00:04):

Here is a baby step in that direction.

Let CC_{\infty} be the sheaf of smooth functions on the unit interval X=[0,1]X = [0,1], and FF be any sub-sheaf of CC_{\infty}.

Given a smooth function ff, I want to consider its derivatives all at once. So we can consider the N\mathbb{N}-fold power of FF, namely, the sheaf nNF\prod\limits_{n\in\mathbb{N}}F. We have natural transformation η:FnNF\eta : F \rightarrow \prod\limits_{n\in\mathbb{N}}F whose component over an open subset UXU\subseteq X is given by

(U,f)(f(n))nN (U, f) \mapsto \left(f^{(n)}\right)_{n\in\mathbb{N}}

This induces a linear function on the germs at an arbitrary point xXx \in X

η:Λ(F)xnNΛ(F)x\eta : \Lambda(F)_x \rightarrow \prod\limits_{n\in\mathbb{N}} \Lambda(F)_x

We have another linear function ϵ:Λ(F)xR\epsilon : \Lambda(F)_x\rightarrow \mathbb{R} given by a evaluating a function at xx. Then we have a linear function

Λ(F)xηnNΛ(F)xϵNRN\Lambda(F)_x \xrightarrow{\eta} \prod\limits_{n\in\mathbb{N}} \Lambda(F)_x \xrightarrow{\epsilon^{\mathbb{N}}} \mathbb{R}^{\mathbb{N}}

which maps the germ of a function ff at xx to the sequence (f(n)(x))nN(f^{(n)}(x))_{n\in\mathbb{N}} of values of its derivatives at xx. Finally, we can consider the kernel K(F)xK(F)_x of this linear function.

It seems that η\eta is injective, while ϵ\epsilon is surjective (hence ϵN\epsilon^{\mathbb{N}} too).

When FF is a sub-sheaf of the sheaf of analytic functions, the kernel is trivial, K(F)x=0K(F)_x = 0. This is because the germ of an analytic function at xx is entirely determined by the values of its derivatives at the point xx.

Question: Is the converse true? I.e., if K(F)x=0K(F)_x = 0 for all xx then is FF a sub-sheaf of the sheaf of analytic functions?

We can go further and try to describe the kernel K(C)xK(C_{\infty})_x for the sheaf of smooth functions.

To build a germ in K(C)xK(C_{\infty})_x, we must first choose a sequence (Un,fn)nN(U_n, f_n)_{n\in\mathbb{N}} with UnU_n an open neighborhood of xx, and fnf_n a smooth function such that fn(x)=0f_n(x) = 0. This data already gives quite a lot of freedom. The tricky condition is to ensure that:

dfndx=fn+1 on UnUn+1\frac{d f_n}{dx} = f_{n+1} \text{ on } U_n \cap U_{n + 1}

A strategy would be to start from something that does not care about this condition, and iterate so that in the limit the tricky condition holds. (I'm being hand-wavy here because I haven't figured it out yet)

view this post on Zulip John Baez (May 04 2024 at 06:49):

I had an idea that seems related to @Peva Blanchard's. There's a sheaf CC^\infty of smooth real-valued functions on R\mathbb{R}, and its germ at 00 is some vector space Λ(C)0\Lambda(C^\infty)_0. We want to understand this space. Peva has described a map, I'll abbreviate it as

ϕ:Λ(C)0RN, \phi: \Lambda(C^\infty)_0 \to \mathbb{R}^{\mathbb{N}},

sending the germ of any smooth function f:RRf: \mathbb{R} \to \mathbb{R} to the list of derivatives

(f(0),f(0),f(0),) (f(0), f'(0), f''(0), \dots )

This is well-defined and this is the 'understandable aspect' of Λ(C)0\Lambda(C^\infty)_0 . So we really want to understand the kernel ker(ϕ) \mathrm{ker}(\phi) .

This raises the question: can we extract any real numbers from the germ of a smooth function at 00 in a linear way, other than by taking derivatives of that function at 00?

So:

Question. Can we explicitly describe any nonzero linear map :ker(ϕ)R\ell : \mathrm{ker}(\phi) \to \mathbb{R}?

Since we know ker(ϕ)\ker(\phi) is infinite-dimensional, there exist infinitely many linearly independent linear maps :ker(ϕ)R\ell : \mathrm{ker}(\phi) \to \mathbb{R}. But this does not imply that we can get our hands on any of them, because it's possible that my last sentence can only be proved using the axiom of choice (or some weaker nonconstructive principle)! There are some famous examples of this frustrating situation in analysis.

I've asked this question on MathOverflow and will see if it gets any useful answers.

view this post on Zulip John Baez (May 04 2024 at 06:53):

By the way, there's a rather surprising theorem related to all this:

Theorem. The map ϕ:Λ(C)0RN \phi: \Lambda(C^\infty)_0 \to \mathbb{R}^{\mathbb{N}} sending the germ of any smooth function f:RRf: \mathbb{R} \to \mathbb{R} to its list of derivatives (f(0),f(0),f(0),) (f(0), f'(0), f''(0), \dots ) is surjective.

view this post on Zulip John Baez (May 04 2024 at 06:55):

I think to get the idea for how prove this, it's enough to solve this

Puzzle. Find a smooth function f:RRf: \mathbb{R} \to \mathbb{R} whose nth derivative at 00 is 2n!2^{n!}.

At first you might think this is impossible, since the power series

n=02n!n!xn \displaystyle{ \sum_{n = 0}^\infty \frac{2^{n!}}{n!} x^n }

has zero radius of convergence. But such a function does exist! As a clue, I'll say that to construct it, it helps to use the fact that there exists a smooth function that's zero for x1x \ge 1 and x0x \le 0, and positive for 0<x<10 < x < 1.

view this post on Zulip John Baez (May 04 2024 at 07:00):

By the way, I know I'm digressing from the main theme of this discussion, which is sheaves. But it's hard to resist, because I've spent a lot of time teaching analysis, and the difference between the sheaf of smooth functions and the sheaf of analytic function is pretty interesting, not only as example of how different sheaves work differently, but because mathematicians and physicists spend a lot of time working with smooth and analytic functions.

view this post on Zulip Morgan Rogers (he/him) (May 04 2024 at 10:25):

John Baez said:

Question. Can we explicitly describe any nonzero linear map :ker(ϕ)R\ell : \mathrm{ker}(\phi) \to \mathbb{R}?

You could take any sequence tending to 00 and ask about the limit of a sequence derived from the values of the function of that point. For instance, you could ask about the limit of f(1/n)n!f(1/n)\cdot n!. The hard part is guaranteeing that such a functional will converge and isn't simply a function of the derivatives at 00. Or you could ask about the relative measure of points at which the function is 0 on a sequence of intervals tending to 0. That is, take the limit as a0a \to 0 of μ({a<x<af(x)=0})/2a\mu(\{-a < x < a \mid f(x) = 0\})/2a. This is bounded, at least, but there's again no guarantee of convergence (at least a priori; maybe there's some slick analytic argument proving that this converges)

view this post on Zulip John Baez (May 04 2024 at 13:23):

Morgan Rogers (he/him) said:

John Baez said:

Question. Can we explicitly describe any nonzero linear map :ker(ϕ)R\ell : \mathrm{ker}(\phi) \to \mathbb{R}?

You could take any sequence tending to 00 and ask about the limit of a sequence derived from the values of the function of that point. For instance, you could ask about the limit of f(1/n)n!f(1/n)\cdot n!. The hard part is guaranteeing that such a functional will converge and isn't simply a function of the derivatives at 00.

This raises a good issue, namely, how fast can a smooth function f grow for small x if all its derivatives vanish at x=0. Your proposed quantity will be finite if for all such f there exists C with

f(1/n)C/n!f(1/n) \le C/n!

for all large enough n.

This seems unlikely since all I know is that for all such f and all natural numbets k there exists C with

f(1/n)C/nkf(1/n) \le C/n^k

for all large enough n. This follows from the first k derivatives of f vanishing at x=0.

view this post on Zulip John Baez (May 04 2024 at 13:30):

Unfortunately there is no slowest growing function that grows faster than all polynomials! So we can probably show no candidate like what you suggested can work: it'll either be zero for all smooth f whose derivatives all vanish at 0, or infinite for some such f.

view this post on Zulip David Egolf (May 04 2024 at 15:55):

I'm not following in detail, but I just wanted to highlight a strategy that I noticed Peva Blanchard and John Baez use above. (Which I thought was really cool!) We're interested in information besides the derivatives of a function that can help us determine which germ at a point a smooth function belongs to. The strategy - to my understanding - goes like this:

I don't remember seeing this strategy before, and I like it!

view this post on Zulip Morgan Rogers (he/him) (May 04 2024 at 15:56):

Hmm so we need something that converges for all such ff (so that \ell is well-defined) but isn't forced to be 00. Well that's fun to think about. I'll let you get back to sheaves now :)

view this post on Zulip David Egolf (May 04 2024 at 16:15):

In the mathoverflow question, John Baez introduces a vector space:

There's a sheaf of smooth real-valued functions on R\mathbb{R}, and its germ at 00 is some vector space VV.

Now, we saw earlier that f(x)f(x) (which is 00 for x0x \leq 0 and e1/x2e^{-1/x^2} for x>0x > 0) and the zero function 00 are not in the same germ. That means that [f][f] and [0][0] are different elements of VV. But, they have the same derivatives, so that ϕ([f])=ϕ([0])\phi([f]) = \phi([0]) (ϕ\phi is defined in that question to be the function that takes the germ of a smooth function to the derivatives of that function). This means that [f][0][f]-[0] is in the kernel of ϕ\phi.

I'd like to define a non-zero linear real-valued map :ker(ϕ)R\ell:\ker(\phi) \to \mathbb{R} from the kernel of ϕ\phi. To define such a map, I think it suffices to specify the value of the map on each element of a set of basis vectors for ker(ϕ)\ker(\phi). I am hoping that we could find just two linearly independent vectors in ker(ϕ)\ker(\phi) and say what \ell does to those, and then just let \ell send all vectors that aren't a linear combination of those two to zero.

I think we already have one nonzero vector [f][0][f]-[0] in ker(ϕ)\ker(\phi). If we could just find another one, that is linearly independent from this one, maybe we could construct an \ell from that? So, I'm wondering if we can think of more examples of pairs of smooth real-valued functions (defined on some open set containing 00) that have the same derivatives at 00, but don't belong to the same germ at zero.

(I wonder if f2f^2 also has all derivatives equal to zero at zero, and if it belongs to a different germ from ff...)

view this post on Zulip Morgan Rogers (he/him) (May 04 2024 at 18:26):

You can multiply ff by any function which is bounded at 00 to get another potentially linearly independent function, I think.

view this post on Zulip David Egolf (May 04 2024 at 19:12):

I suppose that defining some \ell in the way I sketched above wouldn't really help us that much. That's because such an \ell would assign a real number to each germ at zero, but it wouldn't directly provide this "measurement" for smooth functions. So, although such an \ell I think could tell certain germs apart (which can't be distinguished using derivatives), it seems like we'd need something more to determine which smooth functions with the same derivative values at a point don't belong to the same germ at that point.

view this post on Zulip John Baez (May 04 2024 at 21:00):

David Egolf said:

I'd like to define a non-zero linear real-valued map :ker(ϕ)R\ell:\ker(\phi) \to \mathbb{R} from the kernel of ϕ\phi. To define such a map, I think it suffices to specify the value of the map on each element of a set of basis vectors for ker(ϕ)\ker(\phi). I am hoping that we could find just two linearly independent vectors in ker(ϕ)\ker(\phi) and say what \ell does to those, and then just let \ell send all vectors that aren't a linear combination of those two to zero.

How does this work? Think about a simpler case: trying to define a linear function  ⁣:R3R\ell \colon \mathbb{R}^3 \to \mathbb{R} that maps (1,0,0)(1,0,0) to 11, (0,1,0)(0,1,0) to 22, and all vectors that aren't a linear combination of those two to zero. What should (x,y,z)\ell(x,y,z) be?

view this post on Zulip David Egolf (May 04 2024 at 22:49):

Hmm, well we want \ell to be R\mathbb{R}-linear. So, (x,y,z)=(x,0,0)+(0,y,0)+(0,0,z)=x(1,0,0)+y(0,1,0)+z(0,0,1)=x+2y+z(0,0,1)\ell(x,y,z) = \ell(x,0,0) + \ell(0,y,0) + \ell(0,0,z) = x \ell(1,0,0) + y \ell(0,1,0) + z \ell (0,0,1) = x + 2y + z \ell(0,0,1). Since (0,0,1)(0,0,1) isn't a linear combination of (1,0,0)(1,0,0) and (0,1,0)(0,1,0), we set (0,0,1)=0\ell(0,0,1)=0. So we find (x,y,z)=x+2y\ell(x,y,z) = x + 2y.

view this post on Zulip John Baez (May 05 2024 at 06:36):

Okay, that's a linear function, but it's not doing what you said. You said all vectors that aren't a linear combination of the first two should be sent to zero. But (1,1,1)(1,1,1) is not a linear combination of (1,0,0)(1,0,0) and (0,1,0)(0,1,0), and (1,1,1)\ell(1,1,1) is not zero.

view this post on Zulip John Baez (May 05 2024 at 06:37):

What you in fact did is choose one vector that's not a linear combination of the first two, and decree that \ell of it is zero. You chose the vector (0,0,1)(0,0,1). If you'd chosen the vector (1,1,1)(1,1,1), for example, and decreed that \ell of that is zero, you'd get a different linear map \ell.

view this post on Zulip John Baez (May 05 2024 at 06:42):

Returning to the actual problem, it's this arbitrary choice that makes defining a nonzero linear function from ker(ϕ)\mathrm{ker}(\phi) to R\mathbb{R} so difficult! And ker(ϕ)\mathrm{ker}(\phi) is not just 3-dimensional, it's infinite-dimensional, so the choice requires a lot more thought - and it seems nobody knows how to do it, except by resorting to the axiom of choice.

view this post on Zulip John Baez (May 05 2024 at 06:45):

The problem is of this sort.

You have a vector space VV and you're trying to define a nonzero linear map :VR\ell : V \to \mathbb{R}. You know a couple of vectors v1,v2Vv_1, v_2 \in V (you might know more) and you say you want

(v1)=c1\ell(v_1) = c_1

(v2)=c2\ell(v_2) = c_2

for some numbers c1,c2Rc_1, c_2 \in \mathbb{R}.

You can do this if v1v_1 and v2v_2 are linearly independent. By a general theorem, which relies on the axiom of choice, we know such an \ell exists. If dim(V)>2\mathrm{dim}(V) \gt 2 many such \ell exist. But getting your hands on one is an entirely different matter!

view this post on Zulip John Baez (May 05 2024 at 06:47):

You can get your hands on one if you can find a linear subspace WVW \subset V such that

1) no vector in WW is a linear combination of v1v_1 and v2v_2 and

2) Every vector in VV is a linear combination of v1,v2v_1, v_2 and some vector in WW.

view this post on Zulip John Baez (May 05 2024 at 06:50):

Then there is a unique :VR\ell : V \to \mathbb{R} such that

(v1)=c1\ell(v_1) = c_1

(v2)=c2\ell(v_2) = c_2

and

(w)=0\ell(w) = 0

for all wWw \in W. At this point we've gotten our hands on \ell. But \ell depends on our choice of WW.

How do we know there always exists WW obeying conditions 1) and 2)? There's a theorem saying that there exists a basis of VV that starts with v1v_1 and v2v_2 and continues with some other vectors wiw_i. Then we can define WW to be the space of all linear combinations of these other vectors wiw_i.

However, to prove this theorem you need a version of the axiom of choice: in general there's no 'procedure' to choose these vectors wiw_i. You chose the vector (0,0,1)(0,0,1) because you only needed one and it was staring you in the face. But in our actual example the dimension of ker(ϕ)\mathrm{ker}(\phi) is uncountably infinite and - to the best of my knowledge - nobody knows a basis for it. That's why my MathOverflow problem seems to be hard.

view this post on Zulip John Baez (May 05 2024 at 07:00):

There might still be some other way to define a nonzero linear map :ker(ϕ)R\ell : \mathrm{ker}(\phi) \to \mathbb{R}.

view this post on Zulip John Baez (May 05 2024 at 07:26):

This discussion may seem like a huge disgression from sheaves, and in a way it is. But the issue of how relying on the axiom of choice makes it difficult to get your hands on things you want is a big deal in analysis, so it's nice that we've bumped into an example. And a good way to do math without the axiom of choice is topos theory, which is what we're supposed to be learning here!

Indeed, you'll notice that the really good answers about what version of the axiom of choice you need to prove that every vector space has a basis come from Andreas Blass. Blass is an excellent category theorist, and I think he knows topos theory quite well.

view this post on Zulip David Egolf (May 05 2024 at 15:39):

John Baez said:

What you in fact did is choose one vector that's not a linear combination of the first two, and decree that \ell of it is zero. You chose the vector (0,0,1)(0,0,1). If you'd chosen the vector (1,1,1)(1,1,1), for example, and decreed that \ell of that is zero, you'd get a different linear map \ell.

Ah! I wondered what I was missing. Thanks for pointing that out!

view this post on Zulip David Egolf (May 05 2024 at 15:55):

If I'm understanding correctly, you're saying (among other things):

But, potentially, although there's no procedure in general for completing a basis for an arbitrary infinite dimensional vector space, there could maybe be such a procedure in this particular case (?). It just might be hard to find (if it exists) I guess!

view this post on Zulip David Egolf (May 05 2024 at 16:06):

On a related note, it's a weird feeling to know that many examples of a certain kind of thing exist, but at the same time we may not be able to name any examples :astonished:!

view this post on Zulip John Baez (May 05 2024 at 17:09):

David Egolf said:

On a related note, it's a weird feeling to know that many examples of a certain kind of thing exist, but at the same time we may not be able to name any examples :astonished:!

This is actually quite common in mathematics, and there are even many situations where we know that the probability of a number having some property is 1 yet we don't know if most familiar numbers have that property (though surely they must).

view this post on Zulip John Baez (May 05 2024 at 17:14):

See for example the result about Khinchin's constant.

It's sort of like how knowing there are lots of ants doesn't mean you know any of their names: they are numerous yet anonymous.

view this post on Zulip John Baez (May 05 2024 at 21:07):

David Egolf said:

If I'm understanding correctly, you're saying (among other things):

Right - good summary.

There are other ways to define linear maps than saying what they do on each member of a basis, and often they are easier to work with, e.g. taking the derivative at x is a linear map from germs of smooth functions at x to real numbers, and we don't need to pick a basis to define it! But I don't see how to use an approach like that for this problem, either. It may be lack of cleverness, or it may be a deep issue.

But, potentially, although there's no procedure in general for completing a basis for an arbitrary infinite dimensional vector space, there could maybe be such a procedure in this particular case (?). It just might be hard to find (if it exists) I guess!

Right. I'd say we just don't know yet. And we may never know.

view this post on Zulip Peva Blanchard (May 05 2024 at 21:45):

John Baez said:

See for example the result about Khinchin's constant.

It's sort of like how knowing there are lots of ants doesn't mean you know any of their names: they are numerous yet anonymous.

There is another example that I find fascinating. The set of computable real numbers is countable. This implies that almost all real numbers are not computable: there is no (finitely described) algorithm to enumerate their digits. To put it in more colloquial terms: there is no "reasonable" way to poke inside them.

It does not mean we cannot define one though. For instance, Chaitin's constant is the probability that a random Turing machine will halt. This constant is well defined, and we know it is not computable.

view this post on Zulip John Baez (May 06 2024 at 07:23):

Another related example: we say a real number is normal in base 10 if in its decimal expansion every string of n digits appears with frequency 1/10n1/10^n, which is what you'd expect of a 'random' number. More generally we can talk about normal numbers in any base. A number that's normal in every base is called uniformly normal.

The set of numbers that are not normal in base bb has measure zero, and the countable union of sets of measure zero again has measure zero, so the set of numbers that are not uniformly normal has measure zero.
In simple rough terms: the probability that a number is uniformly normal is 1.

For this reason, and because people have actually done compute calculations to check, everyone believes π,e,2\pi, e, \sqrt{2}, and other famous irrational numbers are uniformly normal. But nobody has been able to show this for any interesting examples.

view this post on Zulip John Baez (May 06 2024 at 07:24):

There is some slight hope that people can show π\pi is normal in base 16 (and thus base 2), because there's a cool formula that makes it easy to compute individual base 16 digits of π\pi without computing all the previous digits. But people haven't succeeded yet.

view this post on Zulip John Baez (May 06 2024 at 07:25):

While we're digressing, I got this interesting email about my 'germs of smooth functions' question:

dear john baez
i hope that you don’t object to my getting in touch with you in this manner but this is not directly an answer to your query but might contain material of interest.
the appropriate functional analytic structure of the space of germs of smooth functions has been understood since the 70’s.  it is a complete, conuclear convex bornological space.  the class of convex bornological spaces (cbs’s) was introduced and investigated by the french-belgian school (waelbroeck, buchwalter, hogbe-nlend) and is in a certain sense dual to that of locally convex spaces (lcs’s)—the role of the topology is taken by the bounded sets.  this duality can be formalised in terms of category theory—the category of complete cbs’s (lcs’s) is the ind category (pro category) in the sense of grothendieck generated by that of Banach spaces.  further the dual of each lcs has a natural cbs structure and the duals of cbs’s are lcs’s.
the bounded sets of the space of germs are defined to be the sets of such germs which are represented by smooth functions on a neighbourhood of zero which are bounded there as are the sets of their (higher) derivatives.
as mentioned above, this is a respectable space (even conuclear). for example, suitable forms of the classical results (closed graph, uniform boundedness, banach-steinhaus) hold.  it has a well defined dual, which is a complete lcs.  in fact it is the space of distributions with support at the origin, in other words, linear combinations of the delta distributions and its derivatives.
there is, of course a big but.  there is no hahn-banach theorem for cbs’s.  this means that duality theory can collapse (i.e., the dual space can reduce to the zero vector).  usually (i.e., for the important function and distribution spaces), this doesn’t happen. in your case, we have something intermediate—the dual space is infinite dimensional, in a certain sense (which can be made precise), the smallest such space, but it is not large enough to separate points. in fact, the intersection of the kernels of elements of the dual is precisely the space that you describe.
i could go on but i will stop here with the hope that this helps.  i would be happy to try to answer any questions you might have.
sincerely
jim cooper

view this post on Zulip John Baez (May 06 2024 at 07:28):

In case this is too hard to understand, one thing he's saying is that we can define 'bounded' sets in the vector space I called ker(ϕ)\mathrm{ker}(\phi), so we can talk about linear functions :ker(ϕ)R\ell: \mathrm{ker}(\phi) \to \mathbb{R} that map bounded sets to bounded sets... but the only such \ell is zero.

I guess this means it'll be hard to find an explicit such \ell... though "hard to find" is a touchy-feely concept.

view this post on Zulip Kevin Carlson (May 06 2024 at 17:31):

Another closely related thing he said that might be unclear is that the dual of the whole space of germs is the space of “distributions generated by the Dirac delta and its derivatives”, which means that we weren’t missing any nice linear functions on the space of germs of smooth functions—they’re really only the differentiation operations.

view this post on Zulip Kevin Carlson (May 06 2024 at 17:31):

That’s a relief to know!

view this post on Zulip David Egolf (May 07 2024 at 16:29):

I feel like it's a good time to work a bit on the next puzzle, again. Recall that this involves thinking about the topology on Λ(F)=xXΛ(F)x\Lambda(F) = \coprod_{x \in X}\Lambda(F)_x, where Λ(F)x\Lambda(F)_x is the set of germs at xx for our sheaf FF, which sends an open set UU of XX to the set of continuous real-valued functions :UR:U \to \mathbb{R}.

There is a function p:Λ(F)Xp:\Lambda(F) \to X that sends each germ to the point it is associated with. We would like this function to be continuous. To ensure that, we need p1(U)Λ(F)p^{-1}(U) \subseteq \Lambda(F) to be open in Λ(F)\Lambda(F), for each open set UXU \subseteq X.

However, we're not done yet, as we want certain functions to Λ(F)\Lambda(F) to be continuous as well. Given some sF(U)s \in F(U) (a continuous function from UU to R\mathbb{R}), we define the function g(s):UΛ(F)g(s): U \to\Lambda(F) that acts by g(s):x[s]xg(s): x \mapsto [s]_x, where [s]x[s]_x is the germ at xx that ss belongs to. We have that pg(s)(x)=p([s]x)=xp \circ g(s)(x) = p([s]_x) = x, so that if g(s):UΛ(F)g(s):U \to \Lambda(F) was continuous, it would be a section of our bundle p:Λ(F)Xp:\Lambda(F) \to X.

view this post on Zulip David Egolf (May 07 2024 at 16:41):

How can we ensure that g(s):UΛ(F)g(s): U \to \Lambda(F) is continuous for all sF(U)s \in F(U) and all open UU? We need g(s)1(V)Ug(s)^{-1}(V) \subseteq U to be open for every open set VΛ(F)V \subseteq \Lambda(F). Earlier, we declared that certain subsets of Λ(F)\Lambda(F) need to be open: namely the preimage of the open sets in XX under our projection mapping p:Λ(F)Xp:\Lambda(F) \to X. Given some open subset UXU' \subseteq X, that means that p1(U)=xUΛ(F)xp^{-1}(U') = \coprod_{x \in U'}\Lambda(F)_x needs to be open.

So, let us consider an open set in Λ(F)\Lambda(F) of this form. That is , we let V=xUΛ(F)xV = \coprod_{x \in U'}\Lambda(F)_x for some open subset UU' of XX. What is g(s)1(V)g(s)^{-1}(V)? These are the points in UU that map to VV under g(s)g(s). Since VV consists exactly of germs associated to points in UU', the part of UU that maps to VV under g(s)g(s) is UUU \cap U'. Therefore, g(s)1(V)=g(s)1(p1(U))=UUg(s)^{-1}(V) = g(s)^{-1}(p^{-1}(U')) = U \cap U'. Since UU and UU' are both open in XX, UUU \cap U' is open too. We conclude that declaring enough subsets of Λ(F)\Lambda(F) to be open so that p:Λ(F)Xp:\Lambda(F) \to X becomes continuous is compatible with the "germ assignment" functions g(s):UΛ(F)g(s):U \to \Lambda(F) being continuous.

view this post on Zulip David Egolf (May 07 2024 at 16:48):

Now, we actually still aren't done, I believe. I think we want to declare as many subsets of Λ(F)\Lambda(F) to be open as possible, while preserving the continuity of p:Λ(F)Xp:\Lambda(F) \to X and g(s):UΛ(F)g(s):U \to \Lambda(F) (for every sF(U)s \in F(U) and for every UU). (Although I'm not sure why we'd want to do this.)

Let's consider some particular g(s):UΛ(F)g(s): U \to \Lambda(F), which sends xx to [s]x[s]_x. Without knowing anything extra about UU, we know that in the subspace topology on UU these two subsets are continuous: (1) the empty subset and (2) the subset that is all of UU. Making use of the fact that UU is open, if we declare g(s)(U)g(s)(U) to be open in Λ(F)\Lambda(F), then g(s)1(g(s)(U))=Ug(s)^{-1}(g(s)(U)) = U is open, and so the continuity of g(s)g(s) is not disrupted.

view this post on Zulip David Egolf (May 07 2024 at 16:54):

I'll stop here for now, but it still remains to show that declaring g(s)(U)g(s)(U) to be open for each sF(U)s \in F(U) (as UU varies) preserves the continuity of every "germ assigning function" g(s)g(s).

(I hope to finish up thinking about the topology on Λ(F)\Lambda(F) soon... I recognize it's probably not the easiest thing to have a conversation around!)

view this post on Zulip John Baez (May 07 2024 at 18:14):

For anyone trying to follow along again, here's the puzzle again:

Now that we have the space of germs Λ(F)x\Lambda(F)_x for each point xX,x \in X, we define

Λ(F)=xXΛ(F)x \Lambda(F) = \bigsqcup_{x \in X} \Lambda(F)_x

There is then a unique function

p ⁣:Λ(F)Xp \colon \Lambda(F) \to X

sending everybody in Λ(F)x\Lambda(F)_x to x.x. So we've almost gotten our bundle over X.X. We just need to put a topology on Λ(F).\Lambda(F).

We do this as follows. We'll give a basis for the topology, by describing a bunch of open neighborhoods of each point in Λ(F).\Lambda(F). Remember, any point in Λ(F)\Lambda(F) is a germ. More specifically, any point pΛ(F)p \in \Lambda(F) is in some set Λ(F)x,\Lambda(F)_x, so it's the germ at xx of some sFUs \in FU where UU is an open neighborhood of x.x. But this ss has lots of other germs, too, namely its germs at all points yU.y \in U. We take this collection of all these germs to be an open neighborhood of our point p.p. A general open set in Λ(F)\Lambda(F) will then be an arbitrary union of sets like this.

Puzzle. Show that with this topology on Λ(F),\Lambda(F), the map p ⁣:Λ(F)Xp \colon \Lambda(F) \to X is continuous.

view this post on Zulip John Baez (May 07 2024 at 19:27):

I don't know if this helps, but:

1) In topology I tend to think visually, so I find it hard to start solving this puzzle until I draw a picture of ΛF\Lambda F and the open neighborhoods described here. I'd probably try to take the sheaf of smooth real-valued functions on R\mathbb{R}, and try to draw one of these open sets UU. The picture might not be accurate, but it woulds somehow help me think about whether pp is continuous.

view this post on Zulip John Baez (May 07 2024 at 19:37):

2) Here's an example of how it helps: in the process of thinking about this picture, I'm instantly led to remember that continuity can be studied locally. A function ff is continuous iff it is continuous at each point aa in its domain, and this in turn is true iff f1f^{-1} of every open set UU contained in some neighborhood VV of f(a)f(a) is open. We discussed the first fact earlier here somewhere, but I forget if we discussed the second fact. It comes to mind now because we're trying to show p:Λ(F)Xp: \Lambda(F) \to X is continuous and our picture of the open sets of Λ(F)\Lambda(F) is a local one.

view this post on Zulip David Egolf (May 08 2024 at 15:42):

John Baez said:

I don't know if this helps, but:

1) In topology I tend to think visually, so I find it hard to start solving this puzzle until I draw a picture of ΛF\Lambda F and the open neighborhoods described here. I'd probably try to take the sheaf of smooth real-valued functions on R\mathbb{R}, and try to draw one of these open sets UU. The picture might not be accurate, but it woulds somehow help me think about whether pp is continuous.

Thanks for the suggestion! I felt like I was making progress with what I typed out above, but it wasn't feeling very intuitive. Drawing a picture sounds like it may help with gaining some intuition. So, I think I'll shift over to working on this, next. (I may go back to thinking about the continuity of the "germ assigning" functions g(s)g(s) later).

view this post on Zulip David Egolf (May 08 2024 at 15:47):

Alright, let me try to draw a picture of ΛF\Lambda F and its open neighborhoods. The elements of ΛF\Lambda F are germs of FF at various points. And our open neighborhoods in the topology described in the puzzle are unions of the sets g(s)(U)g(s)(U) as sFUs \in FU varies over FUFU and as UU varies over the open sets of XX.

So, let's pick some particular sFUs \in FU to be some s:URs:U \to \mathbb{R}. If I let X=RX = \mathbb{R}, then I can draw of picture of this ss. That seems like a place to start.

view this post on Zulip David Egolf (May 08 2024 at 15:50):

So then, here's a picture of some s:URs:U \to \mathbb{R}. The open set UU is indicated in red.
picture of s

view this post on Zulip David Egolf (May 08 2024 at 15:57):

Now, let's consider g(s)(U)g(s)(U). For each xUx \in U, g(s)(x)=[s]xg(s)(x) = [s]_x, the germ of ss at xx. So, g(s)(U)g(s)(U) is the set of germs of ss. Each germ at xx I think is roughly like a "local shape" that functions can have at xx. In general, a germ of a continuous function contains more information than just its derivatives at that point. But to get a picture, I'll pretend that the germ of ss at xx is determined just by the slope of ss at xx. (I'm assuming that this particular ss is differentiable, too).

I'll organize my drawing of g(s)(U)g(s)(U), which is to be an open set of ΛF\Lambda F, by thinking of ΛF\Lambda F as having a collection of "local shapes" (germs) for each point which "hover over" each point xXx \in X.

view this post on Zulip David Egolf (May 08 2024 at 16:05):

Here's my attempted visualization of g(s)(U)g(s)(U), which picks out the "local shape" (germ) of ss at each point in UU:
visualizing germs of s

This whole 2D region is part of Λ(F)\Lambda(F). So, for each point xXx \in X we have a collection of shapes hovering above (and below) the xx-axis corresponding to different germs at that point. The blue point at some xx is g(s)(x)g(s)(x), which in this simplified drawing is supposed to (partially) describe the local shape of ss at xx using its first derivative there. Notice that the first derivative really doesn't provide enough information to reconstruct our function about some point (in particular it forgets "vertical shifting"), but this is at least some of the information that describes our ss about each point.

This is not what I expected an open set of Λ(F)\Lambda(F) to look like! My picture might be too inaccurate and approximate for it to give good intuition, but maybe not! It seems interesting.

view this post on Zulip David Egolf (May 08 2024 at 16:11):

Now, let's consider our p:Λ(F)Xp: \Lambda(F) \to X in this example (which is the function we wish to show is continuous). We need p1(U)p^{-1}(U) to be open in Λ(F)\Lambda(F) for each open subset UU of XX. Let's take UU to the open subset of X=RX = \mathbb{R} indicated in red above. Then a point in Λ(F)\Lambda(F) maps to some xUx \in U if it is a germ associated to xUx \in U. In our picture, this will correspond to the points hovering above (and below) UU.

view this post on Zulip David Egolf (May 08 2024 at 16:15):

Here's a picture of p1(U)p^{-1}(U), which is a subset of Λ(F)\Lambda(F):
preimage of an open set

UU is indicated by the red line segments,and p1(U)p^{-1}(U) is indicated by the shaded light red regions. Intuitively, this preimage is the disjoint union of all the "local behaviours/shapes" possible for continuous real-valued functions (as provided by FF) at each point.

If Λ(F)\Lambda(F) is to be continuous, this p1(U)p^{-1}(U) needs to be open. With our proposed topology, that means it needs to be the union of the image of some "germ assigning" functions (one of which we visualized in blue in a drawing above). I guess that means that for any germ λ\lambda at some xUx \in U, there needs to be at least one function which belongs to that germ, so that its behaviour about xx is described by λ\lambda. If that's right, the continuity of p:Λ(F)Xp: \Lambda(F) \to X might correspond roughly to the idea that "every possible local behaviour at xx occurs for at least one element ss of a sheaf set F(U)F(U), for some UU containing xx".

view this post on Zulip David Egolf (May 08 2024 at 16:21):

John Baez said:

2) Here's an example of how it helps: in the process of thinking about this picture, I'm instantly led to remember that continuity can be studied locally. A function ff is continuous iff it is continuous at each point aa in its domain, and this in turn is true iff f1f^{-1} of every open set UU contained in some neighborhood VV of f(a)f(a) is open. We discussed the first fact earlier here somewhere, but I forget if we discussed the second fact. It comes to mind now because we're trying to show p:Λ(F)Xp: \Lambda(F) \to X is continuous and our picture of the open sets of Λ(F)\Lambda(F) is a local one.

I don't think we directly discussed the second fact, although I may just be forgetting. Next time, I'll plan to start by proving that fact! Then I'll try to connect that fact to the pictures I've drawn above.

Although, thinking it over a bit, I think I might have an idea of how to solve the puzzle already... I guess I'll see what I feel like trying out tomorrow!

view this post on Zulip John Baez (May 08 2024 at 19:38):

David Egolf said:

This is not what I expected an open set of Λ(F)\Lambda(F) to look like! My picture might be too inaccurate and approximate for it to give good intuition, but maybe not! It seems interesting.

It seems like a pretty good picture to me. It's really important to realize that for many familiar sheaves FF on R\mathbb{R}, like the sheaf of smooth functions, the corresponding space of germs Λ(F)\Lambda(F) is not very easy to draw or visualize. And I think the best way to realize this is to try to draw it. You've drawn a kind of 'approximation' to it - and by thinking about the information your drawing leaves out, you're starting to get a sense for how peculiar this space is!

One thing that's strange about this space is that Λ(F)\Lambda(F) is not 'Hausdorff'. This means you can find two different germs g,gΛ(F)g, g' \in \Lambda(F) that can't be separated by open sets: i.e., you can't find disjoint open sets U,UΛ(F)U, U' \in \Lambda(F) with gU,gUg \in U, g' \in U'. That germ at zero of the weird function @Peva Blanchard described cannot be separated by open sets from the germ at zero of the constant function 0. That's because these functions are equal at all points slightly left of zero. (For a proof of the similar fact about continuous functions see this).

Well, I'm probably getting ahead of myself here, so I should stop. But my main point is, you're doing a fine job of attempting to draw a space that's impossible to draw in a fully accurate way... and I've found such attempts very useful!

view this post on Zulip Peva Blanchard (May 08 2024 at 21:57):

This is really nice. Thanks to your detailed exposition David, I corrected a very wrong picture I had.

Indeed, I thought that the topology on Λ(F)\Lambda(F) was the coarsest topology making the projection p:Λ(F)Xp : \Lambda(F) \rightarrow X continuous. This means that any open set in Λ(F)\Lambda(F) is a union of sets of the form p1(U)p^{-1}(U) for every open subset UU in XX.

But this topology is not enough (too coarse). Because we also want to think about a section sF(U)s \in F(U) of pp as a continuous function g(s):UΛ(F)g(s) : U \rightarrow \Lambda(F).

view this post on Zulip Peva Blanchard (May 08 2024 at 21:57):

Now, maybe I can share the mental picture I have now about the required topology on Λ(F)\Lambda(F). (Hopefully, it is correct). I find it easier to deal with neighborhoods instead of open sets. Given a germ aΛ(F)xa \in \Lambda(F)_x at xx, what does it mean for another germ bΛ(F)yb \in \Lambda(F)_y at a different base point yy to be "in the neighborhood of aa"? We can answer that question by providing a witness of the fact that they are close to each other. Such a witness is a pair (U,s)(U, s) where UU is an open set containing both xx and yy, and sF(U)s \in F(U) is a section such that

[s]x=a[s]y=b \begin{align*} [s]_x &= a \\ [s]_y &= b \\ \end{align*}

I picture this witness as providing a connecting path between aa and bb. With this picture, we see that for every zUz \in U, the germ [s]z[s]_z of ss at zz is in the neighborhood of aa. In other words, a pair (U,s)(U, s) with sF(U)s \in F(U) and Ux=p(a)U \ni x = p(a) encodes a specific neighborhood of aa.

view this post on Zulip Peva Blanchard (May 08 2024 at 22:29):

To continue with this picture, we can interpret the separation of two points aa and bb in Λ(F)\Lambda(F) (the "Hausdorff" property as explained by @John Baez )

These points are separated if we can find two disjoint neighborhoods of aa and bb respectively. Informally, this means that we have a neighborhood (U,s)(U, s) of aa, and a neighborhood (V,t)(V, t) of bb, and such that ss and tt never "agree" over UVU \cap V.

For instance, let's consider the germ aa of the funny function e1x2e^{-\frac{1}{x^2}} at 00, and the germ bb of the constant zero function at 00. In that case,

view this post on Zulip Peva Blanchard (May 08 2024 at 22:32):

By the way, does it mean that the topology of Λ(F)\Lambda(F) is Hausdorff when FF is the sheaf of analytic functions? (I'll think about it, no need to answer right away)

view this post on Zulip David Egolf (May 09 2024 at 17:05):

Thanks to both of you for your interesting comments! Thinking about whether Λ(F)\Lambda(F) is Hausdorff is interesting. (Side note: somehow the open sets on Λ(F)\Lambda(F) remind me of the closed sets in the Zariski topology...which I seem to recall is not (usually?) Hausdorff either.)

I'm going to take a break from this thread today, to rest up, but I hope to get back to it tomorrow!

view this post on Zulip Peva Blanchard (May 10 2024 at 09:09):

Peva Blanchard said:

By the way, does it mean that the topology of Λ(F)\Lambda(F) is Hausdorff when FF is the sheaf of analytic functions? (I'll think about it, no need to answer right away)

I think the answer is yes. I wasn't sure if it would digress too much, so I opened another topic.

view this post on Zulip Peva Blanchard (May 10 2024 at 09:48):

By the way, something clicked for me about "evaluating a function at some point".

Because of my SetSet-based math education, I am used to thinking about a function f:XYf : X \rightarrow Y as being a graph, i.e., the set of pairs (x,y)X×Y(x, y) \in X \times Y with y=f(x)y = f(x). In that case, the evaluation of ff at xx is just picking out the second component of this pair, namely, the value f(x)f(x).

But, with our previous discussion, it turns out this evaluation procedure is actually very narrow. When we deal with continuous map ff, another evaluation procedure is given by "taking the germ [f]x[f]_x of ff at xx". The mental picture I have in mind, is a sequence of open neighborhoods UnU_n of xx that converges towards xx, and over which we take the restrictions of ff. This is like distilling to get the most concentrated information about ff at xx.

This reminds me of the way we define a distribution as a the dual of a space S\mathcal{S} of test functions. Formally, a distribution TT is a linear map SR\mathcal{S} \rightarrow \mathbb{R}. I picture a test function ϕ\phi as some kind of smooth bump around a point somewhere, so that the value T(ϕ)T(\phi) sums up the "behavior of TT around that point". In a way, test functions play the same role as the open subsets of XX in the previous paragraph, the map ϕT(ϕ)\phi \mapsto T(\phi) is analog to the restriction map UfUU \mapsto f_{|U}. We can evaluate a distribution at a point xx by considering a sequence ϕn\phi_n of test functions that "converge towards xx", and taking the limit of the T(ϕn)T(\phi_n)'s.

view this post on Zulip David Egolf (May 10 2024 at 16:29):

Wow, there is a lot interesting stuff to catch up on here :sweat_smile:! Today, I'll try to understand what you both are saying regarding the fact that Λ(F)\Lambda(F) is not Hausdorff, for FF our sheaf of continuous real-valued functions on open subsets of R\mathbb{R}.

To show that Λ(F)\Lambda(F) is not Hausdorff, we need to find two points (germs) f,fΛ(F)f,f' \in \Lambda(F) so that there are no open sets UU and UU' with fUf \in U, fUf' \in U' and UU=U \cap U' = \emptyset. In other words, for any open set UU containing ff and any open set UU' containing ff', UUU \cap U' is always non-empty.

view this post on Zulip John Baez (May 10 2024 at 16:33):

Right! And you can find an example of this! It's a lot easier to find one for the sheaf of continuous functions than with smooth functions, where a sneaky example Peva described comes to our aid.

view this post on Zulip David Egolf (May 10 2024 at 17:00):

This is feeling tricky for me today. But, referencing this page, I think we want to consider this situation:

We have this situation with U=RU = \mathbb{R}, x=0x=0, ss the zero function, and ss' the function that is zero for x<0x <0 and e1/x2e^{-1/x^2} for x0x \geq 0. ss and ss' have different germs at zero, but any open set VV that contains 00 also contains some negative numbers with some "breathing space" around them. So, we can pick some negative number xx' in VV: then ss and ss' must have the same germ at xx'. (That is because they both restrict to the zero function for sufficiently small open intervals about a negative number xx').

view this post on Zulip David Egolf (May 10 2024 at 17:09):

So, we can form two sequences of open sets in Λ(F)\Lambda(F), by taking g(s)(Vi)g(s)(V_i) and g(s)(Vi)g(s')(V_i) as ViV_i becomes a smaller and smaller open neighborhood containing 00. We can form a sequence xix'_i such that xix'_i is some negative number present in both ViV_i and ViV_i'. Applying g(s)g(s) and g(s)g(s') to this sequence gives us two sequences [s]xi[s]_{x'_i} and [s]xi[s']_{x'_i}. But these two sequences are actually equal, because ss and ss' have the same germs at any negative point xix'_i.

Now, intuitively, the sequence [s]xi[s]_{x'_i} should converge to [s]x[s]_x and the sequence [s]xi[s']_{x'_i} should converge to [s]x[s']_x. We just noted that both of these sequences are equal... but our proposed limits of them are different (as [s]x[s]x[s]_x \neq [s']_x)! So it seems like we might have a situation where limits aren't unique, which I think would relate to Λ(F)\Lambda(F) being non-Hausdorff, referencing this page.

There's probably a simpler way to do this, explained here. I'll look at that next.

view this post on Zulip David Egolf (May 10 2024 at 17:37):

Following the proof here, let us assume that we have this situation again:

We will aim to show that [s]x[s]_x and [s]x[s']_x are points of Λ(F)\Lambda(F) that can't be separated by open sets. That is, there are no open subsets λs\lambda_s and λs\lambda_{s'} of Λ(F)\Lambda(F) with [s]xλs[s]_x \in \lambda_s and [s]xλs[s']_x \in \lambda_{s'} with λsλs=\lambda_s \cap \lambda_{s'}= \emptyset.

To obtain a contradiction, let us assume that Λ(F)\Lambda(F) is Hausdorff, so that there are such disjoint open sets λs\lambda_s and λs\lambda_{s'}. By definition of the topology on Λ(F)\Lambda(F), λs=ig(si)(Ui)\lambda_s = \cup_i g(s_i)(U_i) for some sis_i and UiU_i and similarly λs=jg(sj)(Uj)\lambda_{s'} = \cup_j g(s'_j)(U_j') for some sis_i' and UiU_i'.

Since [s]xλs[s]_x \in \lambda_s, [s]xg(si)(Ui)[s]_x \in g(s_i)(U_i) for some particular ii, where xUix \in U_i. Since germs can only be equal if they are associated to the same point, this implies that [s]x=[si]x[s]_x = [s_i]_x. Similarly, [s]xg(sj)(Uj)[s']_x \in g(s'_j)(U'_j) for some particular jj, where xUjx \in U_j, so that [s]x=[sj]x[s']_x = [s'_j]_x.

Since λs\lambda_s and λs\lambda_{s'} are assumed disjoint, that means that g(si)(Ui)g(s_i)(U_i) and g(sj)(Uj)g(s'_j)(U'_j) are also disjoint. Thus, for any xUiUjx' \in U_i \cap U'_j, [si]x[sj]x[s_i]_{x'} \neq [s'_j]_{x'}.

view this post on Zulip David Egolf (May 10 2024 at 17:43):

Since sis_i and ss have the same germ at xx, there is some open subset containing xx where these two functions restrict to the same function. Similarly, there is some open subset containing xx where sjs_j' and ss' restrict to the same function. Taking the intersection of these two open sets, we get an open set WW containing xx where for each point xWx' \in W we have [si]x=[s]x[s_i]_{x'} = [s]_{x'} and [sj]x=[s]x[s_j']_{x'}=[s']_{x'}. Now, we know that [s]x[sj]x[s]_{x'} \neq [s_j']_{x'} for any xWx' \in W. Therefore, [s]x[s]x[s]_{x'} \neq [s']_{x'} for any xWx' \in W.

However, we know by assumption that there is always some point in any open subset containing xx where ss and ss' have the same germ. Thus, we have obtained a contradiction. We got this contradiction by assuming that Λ(F)\Lambda(F) was Hausdorff. We conclude that Λ(F)\Lambda(F) must not be Hausdorff!

Whew! Hopefully I did that correctly. There is still a lot more of catching up for me to do in this thread, but I'll stop here for today.

view this post on Zulip Peva Blanchard (May 11 2024 at 22:17):

I think the proof is correct. The proposition can be used to present concrete examples of continuous functions s,ss, s', simpler than 00 and e1x2e^{-\frac{1}{x^2}}, that cannot be separated by open sets in Λ(F)\Lambda(F) (the sheaf of continuous functions).

spoiler

By the way, @John Baez gave a very neat puzzle on the other thread. (spoiler alert, I gave a proof there).

Here it is.

Suppose FF is sheaf on a topological space XX. Then Λ(F)\Lambda(F) is Hausdorff if and only if for every open UXU \subseteq X and every s1,s2Λ(U)s_1, s_2 \in \Lambda(U), the set of points xUx \in U for which the germ of s1s_1 equals the germ of s2s_2 is closed in UU.

view this post on Zulip David Egolf (May 13 2024 at 17:44):

The next thing I'm hoping to do in this thread is to prove this:
John Baez said:

A function ff is continuous iff it is continuous at each point aa in its domain, and this in turn is true iff f1f^{-1} of every open set UU contained in some neighborhood VV of f(a)f(a) is open.

Once I've done that, I'm hoping to try and solve the current puzzle!

Unfortunately, I don't have the energy in the tank to work on this today. Once I have energy, I hope to return to this thread and work on what I just described.

view this post on Zulip David Egolf (May 14 2024 at 16:48):

Before I start on this topology exercise, I wanted to mention that I rather like @Peva Blanchard's mental picture regarding the topology on Λ(F)\Lambda(F). I think the basic idea is this: two germs a,ba,b are in the same open set g(s)(U)g(s)(U) if they are germs of the function sF(U)s \in F(U) for some points x,xUx,x' \in U. So, in a way, this particular continuous function s:URF(U)s:U \to \mathbb{R} \in F(U) provides a "bridge" that lets us "connect" two germs, in the sense that its set of germs is an open set containing both aa and bb.

view this post on Zulip David Egolf (May 14 2024 at 16:57):

This gets me wondering if we can define a category CC using this intuition. Let the objects of CC be the germs of FF, the elements of Λ(F)\Lambda(F). And let us put a morphism s:URF(U)s:U \to \mathbb{R} \in F(U) from aa to bb if aa and bb are both germs of ss at some points in UU. We'll also want to put a morphism s:URs:U \to \mathbb{R} from bb to aa in this case, because the condition we are checking is symmetric in aa and bb.

To make a category from this, we'd need to define composition. I'm not immediately sure if there's a nice way to do this... and I don't want to get too sidetracked, so I'll stop here.

view this post on Zulip David Egolf (May 14 2024 at 17:00):

Alright, on to this topology exercise:
John Baez said:

A function ff is continuous iff it is continuous at each point aa in its domain, and this in turn is true iff f1f^{-1} of every open set UU contained in some neighborhood VV of f(a)f(a) is open.

We've already seen above that a "function ff is continuous iff it is continuous at each point aa in its domain". We want to show that these conditions are equivalent to the condition that f1f^{-1} of every open set UU contained in some neighborhood VV of f(a)f(a) is open.

These kinds of statements still intimidate me a bit, so I'll try to draw a picture to illustrate what we're trying to prove.

view this post on Zulip David Egolf (May 14 2024 at 17:13):

Here's my picture:
picture

Here, VV is an open set containing f(a)f(a), and UU is an open set with UVU \subseteq V. I could have alternatively drawn UU so that it includes f(a)f(a), but since that isn't required I chose not to.

EDIT: I need to update the picture... the result to be shown is slightly different than what I listed above.

view this post on Zulip John Baez (May 14 2024 at 17:14):

Sorry, I left out a condition!!! I meant to require aUa \in U.

view this post on Zulip John Baez (May 14 2024 at 17:16):

So, the result to be shown is "f is continuous at aa if for some neighborhood VV of f(a)f(a), the inverse image of every open subset UVU \subseteq V containing f(a)f(a) is an open set containing aa".

view this post on Zulip John Baez (May 14 2024 at 17:18):

Compare this to the definition of "continuous at aa": ff is continuous at aa iff the inverse image of every open set UU containing f(a)f(a) contains an open set containing of aa.

view this post on Zulip John Baez (May 14 2024 at 17:19):

So the difference is saying it's enough to look at open sets UU containing aa that "aren't too big".

view this post on Zulip John Baez (May 14 2024 at 17:21):

Intuitively this makes sense, since we're talking continuity "at aa". This should only depend on what's going on near aa, and near f(a)f(a).

view this post on Zulip David Egolf (May 14 2024 at 17:35):

John Baez said:

So the difference is saying it's enough to look at open sets UU containing aa that "aren't too big".

Oh, I like that! That does help make it more intuitive. I'll draw a new picture now, and I'm hopeful that this intuition will be reflected in that picture as well.

view this post on Zulip David Egolf (May 14 2024 at 17:42):

Here's a picture illustrating the condition "for some neighborhood VV of f(a)f(a), the inverse image of every open subset UVU \subseteq V containing f(a)f(a) is an open set containing aa":
picture

Here, UU and VV are open sets, as is f1(U)f^{-1}(U).

view this post on Zulip David Egolf (May 14 2024 at 17:51):

We'd like to show that if ff satisfies this condition in the picture, then ff is continuous at aa. That is, we'd like to show there is some open set NN containing aa such that fNf|_N is continuous. My first guess was to try and set N=f1(V)N= f^{-1}(V). The problem with this is that f1(V)f^{-1}(V) isn't necessarily open.

view this post on Zulip David Egolf (May 14 2024 at 17:51):

Oh, wait, yes f1(V)f^{-1}(V) does have to be open! That's because VVV \subseteq V is an open set containing f(a)f(a), and so f1(V)f^{-1}(V) is an open set containing aa!

view this post on Zulip David Egolf (May 14 2024 at 17:55):

Alright, so let's set N=f1(V)N = f^{-1}(V) and try to show that fNf|_N is continuous. We have that fN:NVf|_N:N \to V, where NN and VV both have the subspace topology. Let's consider some open subset UU of VV. We'd like to show that fN1(U)f_N^{-1}(U) is open. Now, if f(a)Uf(a) \in U, we know that f1(U)f^{-1}(U) is open and hence f1(U)N=f1(U)f^{-1}(U) \cap N = f^{-1}(U) is open in NN.

It remains to consider the case where UVU \subseteq V is an open subset of VV that doesn't contain f(a)f(a). I don't immediately see how to show that fN1(U)f|_{N}^{-1}(U) is still an open subset of NN.

view this post on Zulip David Egolf (May 14 2024 at 18:03):

Well, I think I'm stuck here for the moment, but at least some progress was made. I'll stop here for today!

view this post on Zulip John Baez (May 14 2024 at 18:12):

David Egolf said:

It remains to consider the case where UVU \subseteq V is an open subset of VV that doesn't contain aa. I don't immediately see how to show that fN1(U)f|_{N}^{-1}(U) is still an open subset of NN.

You mean "doesn't contain f(a)f(a)", not "doesn't contain aa". But more importantly....

view this post on Zulip John Baez (May 14 2024 at 18:13):

I don't think this case matters. Only stuff around aa can possibly matter. Today I accidentally wrote down a bogus definition of "continuous at aa", but then I fixed it. Here's the fixed version:

view this post on Zulip John Baez (May 14 2024 at 18:14):

John Baez said:

the definition of "continuous at aa": ff is continuous at aa iff the inverse image of every open set UU containing f(a)f(a) contains an open set containing of aa.

view this post on Zulip John Baez (May 14 2024 at 18:19):

So note, we're not demanding that f1(U)f^{-1}(U) is open, which would be too much since parts of UU might be very far from aa. We're just demanding that f1(U)f^{-1}(U) contain an open neighborhood of aa.

view this post on Zulip David Egolf (May 14 2024 at 20:38):

I was working from this definition of "continuous at aa": f:XYf:X \to Y is continuous at aa exactly if there is some open set NXN \subseteq X containing aa such that fN:NYf|_N:N \to Y is continuous.

Maybe next time I'll try to show that the definition I was using is equivalent to the definition which you provided:
John Baez said:

the definition of "continuous at aa": ff is continuous at aa iff the inverse image of every open set UU containing f(a)f(a) contains an open set containing of aa.

view this post on Zulip John Baez (May 14 2024 at 20:48):

David Egolf said:

I was working from this definition of "continuous at aa": f:XYf:X \to Y is continuous at aa exactly if there is some open set NXN \subseteq X containing aa such that fN:NYf|_N:N \to Y is continuous.

Okay, that's a fine definition.

view this post on Zulip John Baez (May 14 2024 at 20:50):

It should be equivalent to the one I gave, but I don't mean to be overwhelming you with the task of showing lots of definitions are equivalent!

view this post on Zulip Graham Manuell (May 15 2024 at 03:54):

I don't think these two conditions are equivalent. David's is stronger. It means ff is continuous in a neighbourhood of aa.

view this post on Zulip David Egolf (May 15 2024 at 04:36):

I wondered if Schechter's "Handbook of Analysis and Its Foundations" talked about this. On page 417, it defines a function f:XYf:X \to Y to be continuous at the point x0x_0 if this condition is satisfied: the inverse image of each neighborhood of f(x0)f(x_0) is a neighborhood of x0x_0. This reminds me of the definition that @John Baez gave above. It should be noted that Schechter uses the term "neighborhood" in a way he defines on page 110: SS is a neighborhood of a point zz if zGSz \in G \subseteq S for some open set GG.

Schechter also touches on a condition similar to one I described above, saying on page 418 that a mapping f:XYf:X \to Y is continuous iff ff is "locally continuous" in the sense that each point in XX has a neighborhood NN such that fN:NYf|_N:N \to Y is continuous. He doesn't use the phrase "continuous at a point" in this context.

view this post on Zulip David Egolf (May 15 2024 at 04:41):

Schechter also says (on page 417) that the following two conditions are equivalent for a function f:XYf:X \to Y between two topological spaces:

  1. Inverse images of open sets are open
  2. ff is continuous at each point x0x_0 in XX. [So, for each x0x_0, the inverse image of each neighborhood of f(x0)f(x_0) is a neighborhood of x0x_0.]

view this post on Zulip David Egolf (May 15 2024 at 04:42):

Although this is all somewhat tangential to sheaves, I am pleased that - I think - I am slowly starting to get some of this topology stuff straight! :sweat_smile:

At this point, I might just assume that everything Schechter says here is true, to better focus on the main topic of this thread. Namely, by assuming the things I just listed above are true, I'd like to see if I can then prove that p:Λ(F)Xp:\Lambda(F) \to X is continuous.

view this post on Zulip John Baez (May 15 2024 at 07:35):

Sure! Schechter is organizing these things better than I am, by the way. I hadn't realize how many subtly different ways there are to say "continuous at a point", all of which are equivalent. Apparently I just make one up each time I need this concept.

view this post on Zulip David Egolf (May 15 2024 at 16:24):

Alright, let's again consider our projection function p:Λ(F)Xp: \Lambda(F) \to X which sends each germ to the point it is associated with. To show pp is continuous, we have a few different equivalent conditions available to us now. If we can prove any of these conditions are true for pp, pp is continuous:

  1. the inverse image p1(U)p^{-1}(U) of any open set UXU \subseteq X is open
  2. pp is continuous at each point [s]xΛ(F)[s]_x \in \Lambda(F), so that the inverse image of any neighborhood of xx is a neighborhood of [s]x[s]_x (where [s]x[s]_x is some germ associated to the point xx)
  3. pp is "locally continuous" in the sense that for each [s]xΛ(F)[s]_x \in \Lambda(F), there is some neighborhood NN of [s]x[s]_x so that pN:NXp|_N:N \to X is continuous

Schechter also provides several more equivalent conditions for the continuity of a function, but hopefully one of the conditions I've listed will be helpful for solving this puzzle.

view this post on Zulip David Egolf (May 15 2024 at 16:34):

I'm going to try using condition (2), because it's least familiar to me and I'm curious about it. :laughing:
So, let's consider some point [s]xΛ(F)[s]_x \in \Lambda(F). This is a germ associated to the point xXx \in X, consisting of an equivalence class of real-valued continuous functions which are each defined on some open set containing xx.(Recall that two such functions are equivalent exactly if they agree on some open set containing xx). In particular, we're considering the equivalence class of some continuous function s:URs:U \to \mathbb{R} with xUx \in U.

Now, let us introduce a neighbourhood NN of p([s]x)=xp([s]_x) = x. This is a subset of XX containing an open set NN' so that xNx \in N'. We wish to show that p1(N)p^{-1}(N) is a neighborhood of [s]x[s]_x.

view this post on Zulip David Egolf (May 15 2024 at 16:38):

By definition, p1(N)={λΛ(F)p(λ)N}p^{-1}(N) = \{\lambda \in \Lambda(F) | p(\lambda) \in N\}. That is, this preimage consists exactly of all the germs associated to points in NN. Since p([s]x)=xNp([s]_x) =x \in N, we do have xp1(N)x \in p^{-1}(N). It remains to show that we can find some open subset of p1(N)p^{-1}(N) which contains [s]x[s]_x.

view this post on Zulip David Egolf (May 15 2024 at 16:42):

We've already got [s]xp1(N)[s]_x \in p^{-1}(N), and we're looking to build up an open set in Λ(F)\Lambda(F) about [s]x[s]_x consisting only of germs associated to points in NN. To build this open set, we need to find some points in Λ(F)\Lambda(F) that are "near" to [s]x[s]_x. By definition of the topology of Λ(F)\Lambda(F), we know that g(s)(U)g(s)(U) is an open subset of Λ(F)\Lambda(F). I think we can use this to get some germs "nearby" [s]x[s]_x that also sit in p1(N)p^{-1}(N).

view this post on Zulip David Egolf (May 15 2024 at 16:47):

To do this, let's restrict s:URs:U \to \mathbb{R} (with xUx \in U). We know that NNN' \subseteq N is open and contains xx. Hence UNUU \cap N' \subseteq U is an open set containing xx. Then, sNU:NURs|_{N' \cap U}: {N' \cap U} \to \mathbb{R} and g(sNU)(NU)g(s|_{N' \cap U})(N' \cap U) is an open set of Λ(F)\Lambda(F). Since NUN' \cap U is a subset of NNN' \subseteq N, g(s)(NU)g(s)({N' \cap U}) is an open subset of p1(N)p^{-1}(N) containing [s]x[s]_x.

I think we have found an open set containing [s]x[s]_x that is a subset of p1(N)p^{-1}(N)! That is, I think we've shown that p1(N)p^{-1}(N) is a neighbourhood of [s]x[s]_x if NN is a neighbourhood of x=p([s]x)x = p([s]_x). Thus, pp is continuous at any [s]xΛ(F)[s]_x \in \Lambda(F), and hence it is continuous!

view this post on Zulip John Baez (May 15 2024 at 22:14):

I'm a bit confused because I thought you were solving this puzzle, which is not about R\mathbb{R}-valued functions, but rather an arbitrary sheaf FF on a topological space XX:

Now that we have the space of germs Λ(F)x\Lambda(F)_x for each point xX,x \in X, we define

Λ(F)=xXΛ(F)x \Lambda(F) = \bigsqcup_{x \in X} \Lambda(F)_x

There is then a unique function

p ⁣:Λ(F)Xp \colon \Lambda(F) \to X

sending everybody in Λ(F)x\Lambda(F)_x to x.x. So we've almost gotten our bundle over X.X. We just need to put a topology on Λ(F).\Lambda(F).

We do this as follows. We'll give a basis for the topology, by describing a bunch of open neighborhoods of each point in Λ(F).\Lambda(F). Remember, any point in Λ(F)\Lambda(F) is a germ. More specifically, any point pΛ(F)p \in \Lambda(F) is in some set Λ(F)x,\Lambda(F)_x, so it's the germ at xx of some sFUs \in FU where UU is an open neighborhood of x.x. But this ss has lots of other germs, too, namely its germs at all points yU.y \in U. We take this collection of all these germs to be an open neighborhood of our point p.p. A general open set in Λ(F)\Lambda(F) will then be an arbitrary union of sets like this.

Puzzle. Show that with this topology on Λ(F),\Lambda(F), the map p ⁣:Λ(F)Xp \colon \Lambda(F) \to X is continuous.

view this post on Zulip John Baez (May 15 2024 at 22:15):

Are you doing the special case where FF is the sheaf of continuous R\mathbb{R}-valued functions on a topological space XX?

view this post on Zulip David Egolf (May 15 2024 at 22:35):

John Baez said:

Are you doing the special case where FF is the sheaf of continuous R\mathbb{R}-valued functions on a topological space XX?

Yes, I was doing that special case. But I think I'll plan to next give this a try for an arbitrary sheaf FF on a topological space XX! I am hoping that the pattern of the argument will be similar.

view this post on Zulip John Baez (May 16 2024 at 05:31):

I think it should be almost identical! Working with a sheaf of continuous functions makes things easier to visualize, so it's a good test case.

view this post on Zulip David Egolf (May 16 2024 at 16:59):

That's encouraging to hear!

Let FF be a sheaf on a topological space XX. Then we wish to show that our map p:Λ(F)Xp: \Lambda(F) \to X is continuous. (Recall that pp sends each germ in Λ(F)x\Lambda(F)_x to xx). Following the argument above - which was carried out for a special case - let's consider some point [s]xΛ(F)[s]_x \in \Lambda(F), which is a germ associated to the point xXx \in X. This is the germ in Λ(F)x\Lambda(F)_x that some sheaf element sF(U)s \in F(U) belongs to, where xUx \in U.

Now, let us introduce a neighbourhood NN of p([s]x)=xp([s]_x)=x. This is a subset of XX containing an open set NN' so that xNx \in N'. We wish to show that p1(N)p^{-1}(N) is a neighbourhood of [s]x[s]_x.

view this post on Zulip David Egolf (May 16 2024 at 17:04):

By definition p1(N)p^{-1}(N) consists exactly of all the germs associated to points in NN. Since p([s]x)=xNp([s]_x)=x \in N, we do have xp1(N)x \in p^{-1}(N). It remains to show that we can find some open (in Λ(F)\Lambda(F)) subset of p1(N)p^{-1}(N) which contains [s]x[s]_x.

We've already got [s]xp1(N)[s]_x \in p^{-1}(N), and we're looking to build up an open set in Λ(F)\Lambda(F) about [s]x[s]_x consisting only of germs associated to points in NN. To build this open set, we need to find some points in Λ(F)\Lambda(F) that are "near" to [s]x[s]_x.

view this post on Zulip David Egolf (May 16 2024 at 17:08):

For our sF(U)s \in F(U), let g(s)(U)g(s)(U) denote the set of all germs of ss over the various points of UU. By definition of the topology of Λ(F)\Lambda(F), this is an open set. And we know that g(s)(U)g(s)(U) contains [s]x[s]_x, as xUx \in U.

Now, from this, we wish to construct an open set of Λ(F)\Lambda(F) that contains xx and is a subset of p1(N)p^{-1}(N).

view this post on Zulip David Egolf (May 16 2024 at 17:13):

To do this, we will "restrict" ss to the open set UNNU \cap N' \subseteq N which contains xx. Since we are working in the general case, this restriction is more abstract than just restricting the domain of a function. However, since FF is a presheaf, we have a restriction function rU(UN):F(U)F(UN)r|_{U \to (U \cap N')}: F(U) \to F(U \cap N') available to us, so our restriction of sF(U)s \in F(U) is simply rU(UN)(s)r|_{U \to (U \cap N')}(s). By definition of the topology of Λ(F)\Lambda(F), g(rU(UN)(s))(UN)g(r|_{U \to (U \cap N')}(s))(U \cap N') is an open set of Λ(F)\Lambda(F).

view this post on Zulip David Egolf (May 16 2024 at 17:20):

It remains to show that g(rU(UN)(s))(UN)g(r|_{U \to (U \cap N')}(s))(U \cap N') (1) is a subset of p1(N)p^{-1}(N) and (2) contains [s]x[s]_x. To show (1), note that this set consists only of germs associated to rU(UN)(s)r|_{U \to (U \cap N')}(s) over the points of UNU \cap N'. Since UNNU \cap N' \subseteq N, all of these germs belong to points in NN, and so g(rU(UN)(s))(UN)g(r|_{U \to (U \cap N')}(s))(U \cap N') is a subset of p1(N)p^{-1}(N).

To show (2), we note that restricting a presheaf element does not change its germ at a point. This is because each germ set Λ(F)x\Lambda(F)_x is the tip of a cocone for the diagram consisting of the various F(V)F(V) with VV varying over the open sets of XX containing xx, together with the restriction functions between them. So, [sF(U)]x=[rU(UN)(s)F(UN)]x[s \in F(U)]_x =[r|_{U \to (U \cap N')}(s) \in F(U \cap N')]_x. Hence [s]xg(rU(UN)(s))(UN)[s]_x \in g(r|_{U \to (U \cap N')}(s))(U \cap N').

view this post on Zulip David Egolf (May 16 2024 at 17:25):

We conclude that g(rU(UN)(s))(UN)g(r|_{U \to (U \cap N')}(s))(U \cap N') is an open set of Λ(F)\Lambda(F) containing xx, and that it is also a subset of p1(N)p^{-1}(N). Thus, if NN is a neighbourhood of p([s]x)=xp([s]_x)=x, then p1(N)p^{-1}(N) is a neighborhood of xx.

So, pp is continuous at any point [s]xΛ(F)[s]_x \in \Lambda(F). Hence, p:Λ(F)Xp:\Lambda(F) \to X is continuous!

view this post on Zulip David Egolf (May 16 2024 at 17:31):

I don't think I used the fact that FF was a sheaf anywhere, although I did make use of the fact that FF was a presheaf. So, I think the same result should hold for FF an arbitrary presheaf over some topological space XX.

view this post on Zulip David Egolf (May 16 2024 at 17:34):

Assuming the above is correct, we have now shown that we can make a bundle p:Λ(F)Xp:\Lambda(F) \to X from a presheaf FF on XX! The next puzzle asks us to upgrade this process to get a functor Λ:O(X)^Top/X\Lambda:\widehat{\mathcal{O}(X)} \to \mathsf{Top}/X. Here O(X)^\widehat{\mathcal{O}(X)} is the category of presheaves on XX and Top/X\mathsf{Top}/X is the category of bundles over XX.

To define our functor Λ\Lambda, as a first step we'll need to show how to get a morphism of a bundles from a morphism of presheaves. (I'll stop here for today!)

view this post on Zulip John Baez (May 16 2024 at 17:47):

Great! All this looks good, and I especially like how you "psychoanalyzed" your proof and noticed that it works for presheaves. I probably should have posed the puzzle for presheaves.

While I forget exactly what I did in the course notes, I imagine soon we'll do something like this:

1) get a functor from presheaves on XX to bundles over XX, sending each presheaf to its bundle of germs
2) get a functor from bundles on XX to sheaves over XX, sending each bundle to its sheaf of sections
3) compose these functors to get a functor from presheaves to sheaves, called sheafification
4) show that sheafification is left adjoint to the obvious forgetful functor from sheaves on XX to presheaves on XX.

view this post on Zulip Peva Blanchard (May 17 2024 at 05:13):

What a nice thread. I really like how the calm pace of this discussion leads to upbeat non-trivial concepts like sheafification.

view this post on Zulip David Egolf (May 17 2024 at 17:32):

"Sheafification" is such a fun word... it reminds me of another fun word I learned recently: "rectangulation"! Peeking ahead in the blog post, I suppose we're probably going to have an "ètalification" functor too, given by composing our functors in the opposite order (so we get a functor that converts each bundle to an étale bundle).

view this post on Zulip David Egolf (May 17 2024 at 17:39):

Anyways, to get there, we first need to show we really do have a functor G:O(X)^Top/XG: \widehat{\mathcal{O}(X)} \to \mathsf{Top}/X which converts presheaves and presheaf morphisms to bundles and bundle morphisms. (This functor is called Λ\Lambda in the blog post, but I'll call it GG for the moment, to avoid confusion due to the fact that Λ(F)\Lambda(F) means the space of all the germs of FF).

We just saw that we can get a bundle G(F)G(F) from a presheaf FF on a topological space XX by forming the bundle of germs G(F):Λ(F)XG(F):\Lambda(F) \to X, which sends each germ to the point it belongs to. Now, let's assume we have a morphism of a presheafs on XX, namely α:FF\alpha: F \to F'. We wish to construct a morphism of bundles from G(F):Λ(F)XG(F):\Lambda(F) \to X to G(F):Λ(F)XG(F'):\Lambda(F') \to X. That means we're looking for a continuous map G(α):Λ(F)Λ(F)G(\alpha): \Lambda(F) \to \Lambda(F') so that G(F)G(α)=G(F)G(F') \circ G(\alpha) = G(F). Strictly speaking, G(α)G(\alpha) has source of G(F)G(F) and target of G(F)G(F'), but I'll use the same symbol to refer to its underlying continuous map from Λ(F)\Lambda(F) to Λ(F)\Lambda(F'). Hopefully this won't be too confusing!

view this post on Zulip David Egolf (May 17 2024 at 17:52):

Here's the situation in picture form:
induced morphism of induced bundles

We wish to find some G(α)G(\alpha) so that this diagram commutes.

view this post on Zulip David Egolf (May 17 2024 at 17:55):

For this diagram to commute, we must have that G(α)G(\alpha) maps germs of FF associated to xXx \in X to germs of FF' associated to xx. So, we can consider the function G(α)G(\alpha) as being formed from multiple functions, one for each xXx \in X. I'll call xx-th function G(α)x:Λ(F)xΛ(F)xG(\alpha)_x:\Lambda(F)_x \to \Lambda(F')_x, where Λ(F)x\Lambda(F)_x is the set of germs of FF associated to xx.

I'm not sure how to define G(α)xG(\alpha)_x. But maybe we can start by considering αU:F(U)F(U)\alpha_U:F(U) \to F'(U) as UXU \subseteq X becomes a smaller and smaller open set that contains xx. Intuitively, I'd like to set G(α)xG(\alpha)_x to be some kind of "limit" of αU\alpha_U as UU approaches xx.

view this post on Zulip David Egolf (May 17 2024 at 18:14):

I'm wondering if there is some way to define G(α)xG(\alpha)_x as some colimit, analogous to how Λ(F)x\Lambda(F)_x is (part of) a colimit. This is the picture I've been starting at:
picture

Maybe we could try to define G(α)xG(\alpha)_x as the (hopefully unique) function that makes this diagram commute? I've only drawn part of the full diagram I have in mind; we should have F(U)F(U) and F(U)F'(U) present in the full diagram as UU varies over all open sets containing xx.

view this post on Zulip David Egolf (May 17 2024 at 18:47):

Trying to draw the full picture, I thought of a diagram involving functors and natural transformations:
picture 2

In this picture, the functors map to Set\mathsf{Set} from the full subcategory of O(X)op\mathcal{O}(X)^{\mathrm{op}} given by taking only the open sets containing xx. II is the inclusion functor from this full subcategory. The natural transformations pointing down the page correspond to our colimit co-cones. Finally, ΔΛ(F)x\Delta_{\Lambda(F)_x} is the functor constant at the set Λ(F)x\Lambda(F)_x, and ΔΛ(F)x\Delta_{\Lambda(F')_x} is defined similarly.

The idea is that G(α)xG(\alpha)_x could (hopefully) be defined in terms of the (hopefully) unique natural transformation making this diagram commute.

I'm not sure if this is a good direction to explore... I'll stop here for today. Any hints or thoughts relating to G(α)G(\alpha) or G(α)xG(\alpha)_x would be most welcome!

view this post on Zulip Peva Blanchard (May 17 2024 at 21:13):

Trying to define G(α)xG(\alpha)_x as the "colimit of the αU\alpha_U's" reveals a good mental picture, but maybe too involved for a formal proof.

Instead, I suggest to look at how G(α)G(\alpha) acts on a specific germ [s]x[s]_x at xx, e.g., choosing a representative sFUs \in FU for some open neighborhood UU of xx. How would you define the germ G(α)([s]x)G(\alpha)([s]_x)?

view this post on Zulip Peva Blanchard (May 17 2024 at 22:48):

David Egolf said:

"Sheafification" is such a fun word... it reminds me of another fun word I learned recently: "rectangulation"! Peeking ahead in the blog post, I suppose we're probably going to have an "ètalification" functor too, given by composing our functors in the opposite order (so we get a functor that converts each bundle to an étale bundle).

I got interested into that. I think I found a proof that we have an adjunction ΛΓ\Lambda \dashv \Gamma. If true, this implies that sheafification is a monad, while étalification is a comonad.

view this post on Zulip Peva Blanchard (May 18 2024 at 09:30):

(@Eric M Downes It took me a few seconds to understand the emoji "Grothenwoke" :D)

view this post on Zulip Eric M Downes (May 18 2024 at 09:52):

His eyes shoot stalks!

view this post on Zulip David Egolf (May 18 2024 at 20:05):

Peva Blanchard said:

Trying to define G(α)xG(\alpha)_x as the "colimit of the αU\alpha_U's" reveals a good mental picture, but maybe too involved for a formal proof.

Instead, I suggest to look at how G(α)G(\alpha) acts on a specific germ [s]x[s]_x at xx, e.g., choosing a representative sFUs \in FU for some open neighborhood UU of xx. How would you define the germ G(α)([s]x)G(\alpha)([s]_x)?

I just realized that where I left off above and your hint here are (I think) quite related. If the diagram I drew above is to commute, then it must commute in particular at each component of the natural transformations involved. Requiring commutativity at the UU-th component, we then want this diagram to commute:
diagram at U

If this is to commute, then it must in particular commute at each element. So, pick some s(FI)(U)s \in (F \circ I)(U). (Note that xUx \in U automatically, by definition of the subcategory II is mapping from). Then we need [αU(s)]x=G(α)x([s]x)[\alpha_U(s)]_x = G(\alpha)_x([s]_x). There is still some work left to define G(α)G(\alpha) from this, but this feels like progress.

(In general, I wonder if this kind of thing can provide an interesting strategy for trying to induce a map between two colimits of different diagrams).

view this post on Zulip Peva Blanchard (May 18 2024 at 21:21):

Yes that's right. I think you can already define G(α):Λ(F)Λ(F)G(\alpha) : \Lambda(F) \rightarrow \Lambda(F') point-wise.

You can use the formula you inferred from the naturality condition: for any germ of the form [s]x[s]_x, with sFUs \in FU and UU an open neighborhood of xx,

G(α)([s]x)=def[αU(s)]xG(\alpha)([s]_x) \underset{\text{def}}{=} [\alpha_U(s)]_x

But, first, you need to prove that this is well-defined, i.e., that this definition is invariant when we choose another representative [s]x=[t]x[s]_x = [t]_x for some other tFVt \in FV over another neighborhood VV of xx.

view this post on Zulip John Baez (May 19 2024 at 06:12):

Yes, I would be inclined to define the map between etale spaces over a space XX coming from a map between presheaves on XX by saying what it does to each germ. I'd do that by treating a germ as an equivalence class of sections, then doing the standard trick of choosing a representative of that equivalence class, writing down some formula that parses, and then checking that the answer doesn't depend on the representative.

I consider all of this "follow your nose" mathematics: writing down the only guess you can easily think of given the data available, then checking it works. I never considered David's more thoughtful approach of working explicitly with colimit diagrams. Probably it's because I consider that more "bulky", and harder to do calculations with. So while I applaud David's approach in spirit I would unthinkingly have taken Peva's approach, and I think in practice that's the easier one.