thread time https://twitter.com/ZariskiBusiness/status/1281003062954467328
so, let's say we have a category C (it should probably be small if we want things to work well and we're being pedantic)

a good case to keep in mind for intuition is, say, the lawvere theory of rings (i.e., objects R^n for n ∈ N, Hom(R^n, R^m) = Z[x_1, ..., x_n]^m)
consider PSh(C) = [C^op, Set], the category of presheaves on C

and CoPSh(C) = [C, Set]^op, the category of copresheaves on C

(ofc, [C, Set] would also be a reasonable interpretation of "category of copresheaves"—but [C, Set]^op admits a covariant Yoneda embedding C → CoPSh(C))
so we have embeddings y_l : C → CoPSh and y_r : C → PSh—not standard names afaik but i'll use em here b/c y_l(A) = Hom(A, -) "puts A on the left" whereas y_r(A) = Hom(-, A) "puts A on the right"

yoneda says Hom(y_r(A), F) ≅ F(A); w/ slight tweaks, Hom(F, y_l(A)) ≅ F(A)
CoPSh(C) is "the category of things that we can map into objects of C from"; PSh(C) is "the category of things that we can map into from objects of C"

y_l witnesses the fact that objects of C are among the things that we can map into objects of C from; y_r, dually.
furthermore:

CoPSh(C) is the free completion of C: each object of it is canonically presented as a limit of C objects

PSh(C) is the free cocompletion of C: each object of it is canonically presented as a colimit of C objects, glued together from them
now:

let's say you have an object F characterized by how you can map from it into objects of C—a copresheaf on C.

the thing is, we actually already *do* know what it means to map *into* it from an object of C, too!

because any object of C already lives in the same category!
...as long as you're wearing your yoneda goggles.
if we identify A with both y_l(A) and y_r(A), then every object of C sits in both CoPSh(C) and PSh(C), so really, we can map *into* copresheaves and *out* of presheaves, too!

we just need to consider Hom_{CoPSh(C)}(y_l(A), F), or Hom_{PSh(C)}(F, y_r(A)).
this lets us define functors Spec : CoPSh(C) → PSh(C) and O : PSh(C) → CoPSh(C).

i'll just consider Spec since O is entirely dual.

say we have a copresheaf F, something that we can map out of. we want to define a presheaf F'. to do so, we need to characterize the maps in.
F'(A) should be the maps into F' from A, which should be determined by the maps into F from A—so that should, as mentioned, be Hom_{CoPSh(C)}(y_l(A), F).

so we have Spec(F) = A ↦ Hom_{CoPSh(C)}(y_l(A), F).
this does extend to a functor, and if we define O entirely dually, we find that in fact O ⊣ Spec!
so we have categories of "things that sit to the left of C", "things that sit to the right of C", and an adjunction between them mediated by homming into C itself, which is canonically to the left *and* right of itself
however, things get substantially more interesting once you consider what kinds of objects tend to live in each of these categories and once you restrict the adjunctions to subcategories of them!
in particular.

let's return to the example C i began by suggesting: the lawvere theory of [commutative, unital] rings.

the full subcat of CoPSh(C) on *product-preserving* functors is AffSch.

b/c [C, Set]_ProdPres is the cat of models of the lawvere thy of rings—& we ^op'd.
we could mb see this as meaning that we have a category of basically algebraic objects, & we've formally made them geometric by ^op? i haven't thought this thru enough... but anyway:

we can see the objects of C as being algebraic, so limits of them are building bigger algebras.
on the other hand.

if we view the objects of C as abstract "affine algebraic spaces" or sth—R⁰ the point, R¹ the line, R² the plane, etc

then PSh(C) is the category of objects built by gluing these together into bigger spaces
hence the names O ⊣ Spec

if we have a spatial object in PSh(C), we can take its algebra of maps out, akin to the structure sheaf

and if we have algebraic object in CoPSh(C), we can take its spectrum to get a spatial object
(do note that im getting shakier and shakier and bullshitting more and more as this thread continues, so. take any and all of this with a grain of salt 🙃)
perhaps this sounds a bit funny, given that i just established that a subcategory of the domain of Spec is AffSch

i guess maybe the idea is that the domain of Spec is "formally made geometric", like i suggested, by the ^op, whereas its codomain is "intrinsically geometric"?
but i don't really know what i'm talking about on that one, so.
anyway, one fun thing you can do with these ideas is form the *isbell envelope* of a category.

since O ⊣ Spec, we have an equivalence O ↓ id_{CoPSh(C)} ≅ id_{PSh(C)} ↓ Spec

either of these categories is equivalently the "isbell envelope" of C

or in components:
so an object of the isbell envelope consists of a presheaf P (some way of mapping in from C), a copresheaf F (some way of mapping out to C), and an arrow linking the two, so that you can map A → P → F → B and compose these all to get A → B
an object of the isbell envelope is sort of like something that tells you not just how it behaves as a domain or as a codomain for morphisms to/from C, but actually fully how it should behave as an object of C
but then you can ask: well, is this "self-consistent"? are P and F really two halves of a whole, or am i artificially bolting together two disparate things and covering a gap?

what you'd like to know is whether O and Spec map F and P to each other.
this thread is already getting long, so i'll spare the details on that (not that i know all that many beyond this point anyway...) but one thing you can do is form the category of fixed points of the O ⊣ Spec adjunction
you can also generalize this construction to be parameterized by a profunctor in bunch of places where we've used Hom here, and this category-of-fixed-points is the *nucleus of the profunctor*, but you'll have to ask dusko pavlovic about that.
but in any case, if you specialize this stuff to posets, then the category of fixed points of O ⊣ Spec is in fact the *dedekind-macneille completion* of C—

if you do it to Q, you get the extended real numbers!
...

okay, end of thread.
You can follow @sarah_zrf.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled: