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.
I'm interested in understanding how "tensor-hom" adjunctions arise, and when such an adjunction is in fact a geometric morphism. I'm specifically interested in understanding how tensor-hom adjunctions can arise from profunctors, and I'd like to try this out with a few examples. It could also be interesting to note some common patterns that can be used to construct profunctors. Along the way, I want to learn how to compose profunctors - and to use this as a chance to learn a little bit about coends.
I'm hoping to structure this thread around specific questions and specific exercises. I'm not sure quite yet which specific question or exercise I'd like to start with, but I wanted to get this thread started! Going forward, I'm currently planning to reference discussion and exercises from "Sheaves in Geometry and Logic" (by Mac Lane and Moerdijk) and/or "Coend calculus" (by Fosco Loregian).
If anyone has any initial thoughts or suggestions at the start of this thread, please feel free to share those! Otherwise, I will plan to create a second post in this thread once I have a specific first exercise or discussion topic in mind.
This paper https://arxiv.org/abs/2404.01406 talks about how different notions of pro functor presentation lead to failure or success of composition of presentations. If you need to compose specific finitely presented pro functors, the algorithms in that paper are implemented at http://categoricaldata.net
Thanks for your comment @Ryan Wisnesky. I hadn't heard about "presentations" of profunctors before. I'll keep that paper in mind in case I want to learn more about that, at some point.
Here's the first specific question I'd like to explore in this thread: What are some examples of profunctors?
The nLab informs me that if is a symmetric closed monoidal category (such as the category of sets), and and are categories enriched over , then a profunctor from to is a -functor .
I don't know what this is doing, yet - I guess there is some notion of tensor product between -enriched categories. However, in the case that , I do know that a profunctor from a category to a category is just a functor .
Puzzle. Guess what the tensor product of -enriched categories and might be. For starters figure out the set of objects of , and then for any pair of objects in their hom-object, which is an object in .
Hint: copy the product of ordinary categories, replacing the cartesian product of sets by the tensor product of objects in whenever called for (and not otherwise).
A lot of basic enriched category theory is straightforward generalization of ordinary category theory, so it's good to get used to doing those generalizations without breaking a sweat. This lets you focus on the really novel aspects, like how limits and colimits get replaced by [[weighted limits]] and [[weighted colimits]]. These are connected to ends and coends, so they may become important when composing [[enriched profunctors]].
David Egolf said:
Here's the first specific question I'd like to explore in this thread: What are some examples of profunctors?
The most important profunctor is If you have functors then there’s the restricted hom If or picks out a single object then this restricted hom is a representable presheaf or copresheaf in the familiar sense! So one things profunctors do immediately is generalize representability to a concept that can vary in both variables at once.
A very different feel of example comes from drawing any category you like over the partial order The inverse image of becomes the domain of a profunctor and the inverse image of , the codomain, while the arrows over the nontrivial arrow in becomes the values. You might like to try to flesh out this sketch to show these things really do give profunctors, but it could also be useful just to draw some tiny examples in this way.
Thanks to both of you! Both of your responses will be interesting to work through.
To begin with, I think the puzzle @John Baez provided would be a great place to start. So let me see if I can guess what the tensor product of two -enriched categories and might be.
If we assume that and are small, they each have a set of objects. So it seems reasonable to try setting the objects of to be the cartesian product of the set of objects of with the set of objects of .
(I suppose that if or were categories internal to some category, then they might not have a set of objects, and we might want to do something fancier to form our new "object of objects".)
Next, we'd like to find the hom-object for any ordered pair of objects in . So, let's try to figure out the hom-object from to .
I expect this to be something in the spirit of the "product" of the morphisms in with the morphisms in . So, maybe we can try setting this hom object to be .
Great! There is really nothing else you could have done.
Of course you're not done yet, but you are following the tao of mathematics, like swimming downstream in a fast current.
I'm alluding to Chapter 19 of the Chuang-Tzu:
Confucius was looking at the cataract near the gorge of Lü, which fell a height of 240 cubits, and the spray of which floated a distance of forty lî, (producing a turbulence) in which no tortoise, gavial, fish, or turtle could play. He saw, however, an old man swimming about in it, as if he had sustained some great calamity, and wished to end his life.
Confucius made his disciples hasten along the stream to rescue the man; and by the time they had gone several hundred paces, he was walking along singing, with his hair dishevelled, and enjoying himself at the foot of the embankment. Confucius followed and asked him, saying, 'I thought you were a sprite; but, when I look closely at you, I see that you are a man. Let me ask if you have any particular way of treading the water.'
The man said, 'No, I have no particular way. I began (to learn the art) at the very earliest time; as I grew up, it became my nature to practise it; and my success in it is now as sure as fate. I enter and go down with the water in the very centre of its whirl, and come up again with it when it whirls the other way. I follow the way of the water, and do nothing contrary to it of myself;—this is how I tread it.
David Egolf said:
I expect this to be something in the spirit of the "product" of the morphisms in with the morphisms in . So, maybe we can try setting this hom object to be .
Note that symmetry is needed to define composition: the only possible definition is
Wow, so generically categories enriched in a non-symmetric monoidal category don't even have a tensor product? I guess you can get one though if you enrich in the colax product of a [[duoidal category]] -- then the other (lax) product induces a tensor product on -enriched categories.
Yes, this is Proposition 18 of Garner and López Franco's Commutativity. (See also section 13 of Lucyshyn-Wright's V-graded categories and V-W-bigraded categories.)
You can define:
Note that in the last step it "stabilizes".
I believe all this should generalize to higher columns in the periodic table, e.g. for 2-categories (by which I really mean bicategories, sorry) you should be able to define
I assume this means you should be able to define a 2-category (3-category) of these things. What happens if you want a (symmetric/sylleptic/braided) monoidal 2-category of the things, or for that matter if you're content with just a 2-graph of them?
That's a great question, but maybe you can guess the pattern as well as I can - I haven't thought about this question recently. I think the method of working out a few simple cases and then wildly extrapolating to pose some general conjectures is good here.
You can also do a [[horizontal categorification]] and define categories enriched in a bicategory, or even a (virtual) double category. In this case, it's straightforward to see that you get a tensor product of enriched categories if you enrich in a monoidal double category, using the tensor product on the double category to tensor hom-objects together (in contrast to how the composition of the double category is used when defining composition in enriched categories).
This "explains" why you need braiding in the case of enrichment over a monoidal category, since a one-object monoidal double category is essentially a category with two interchanging monoidal structures, which by the Eckmann-Hilton argument (the [[delooping hypothesis]]) is the same as a braided monoidal category.
Let me see if I can figure out how composition works. For any three objects in , we want a "composition" morphism:
We saw just above that , and we can use this to rewrite the above expression. Upon doing so, we get:
If is a braided monoidal category, then we intuitively have the ability to re-order the left side. There is then a morphism corresponding to our composition morphism of following type:
There is a morphism of this type that stands out to me. Because and are -enriched, we have composition morphisms:
Both of these morphisms are morphisms of , and so we can tensor them together to get a morphism presumably corresponding to our composition morphism.
It's not immediately clear to me that needs to be a symmetric monoidal category. (I think I only ended up using a braiding.) Is that needed so that this composition becomes associative, maybe?
It's not needed.
It's just that symmetric monoidal categories are so much more common than merely-braided ones that a lot of people don't bother being careful to check in what cases a braiding suffices.
Is all that story here supposed to generalize further to something like: the (n+1)-cat of V-enriched n-cats for V (k+1)-tuply monoidal is k-tuply monoidal?
It must. Proving this would be a very nice challenge for higher category theorists: each person with their own approach to higher categories gets to prove their own version!
John Baez said:
It must. Proving this would be a very nice challenge for higher category theorists: each person with their own approach to higher categories gets to prove their own version!
My bad. I've edited my wondering question. But you probably already got what I meant before that.
Anyways, if that's true, it should be somewhere in Lurie's HA for (n,1).
It remains to work out what the identity elements are in . For any object we want an identity element, which is a certain morphism . Here is the tensor unit object of our enriching monoidal category . Since , we are looking for a morphism .
Since and are -categories, we have already identity elements and . Then we can form . Finally, using a unitor isomorphism , we can get our identity element for .
I think that concludes the exercise of guessing what might be! Going forward, I think knowing how to form will be helpful for finding examples of profunctors.
Next, I'll plan to explore this comment:
Kevin Carlson said:
David Egolf said:
Here's the first specific question I'd like to explore in this thread: What are some examples of profunctors?
The most important profunctor is If you have functors then there’s the restricted hom If or picks out a single object then this restricted hom is a representable presheaf or copresheaf in the familiar sense! So one things profunctors do immediately is generalize representability to a concept that can vary in both variables at once.
I've been thinking about this Hom profunctor! One thing I like about this example is that it gives a profunctor for every -category, where is a symmetric closed monoidal category. So we get a large source of examples of profunctors.
Another thing I like about the Hom profunctor is that it suggests this intuition: a profunctor assigns to a pair of objects a thing that is "between" them. In this case, we have between and the -object . The action of the profunctor on morphisms intuitively I think has to do with "extending" what's between objects, via generalized pre/post composition. I'm hopeful that this intuition will be helpful for learning about composition of profunctors.
I am curious as to why we have this profunctor . I think this relates to how functors can induce profunctors, and I want to get to that shortly.
Before doing that, I first want to consider the case where we have functors and . Can we somehow use these to create a new "restricted hom" profunctor ?
If we can form some then we might be in business, as we could maybe form some -functor by "tensoring" somehow. Then, precomposing this -functor before our hom functor I think presumably would give our restricted hom functor.
I don't actually know, though, if we can:
It looks like page 12 of "Basic Concepts of Enriched Category Theory" (by Kelly) is relevant to both of these questions!
In short, it sounds like we can do both of these things, and so we can presumably form the restricted hom functor as I outlined above. (It would probably be a good exercise to check (1) and (2) work out in the "obvious" way, but I'm not sure I want to do that right now.)
You're absolutely right about all of that! And in fact, these restricted hom-profunctors are extremely important. If you want a hint as to one reason why, you could try asking yourself what they might have to do with -adjunctions.
You could also focus on the idea of restricting hom in the non-enriched setting; learning about profunctors and learning about enriched category theory are substantially orthogonal goals, although profunctors serve certain more important roles in the enriched theory that don't tend to fully show up in the unenriched case.
As for why Hom exists, it's kind of like asking why identity morphisms exist. Hom is fundamental as a profunctor, not derived from anywhere else.
I don't think it's quite the same as why identity morphisms exist. I would say it's more analogous to why representable functors exist, or why the action of a group on itself exists. Those facts all depend in particular on associativity: a magma (even a unital magma) doesn't act on itself, at least not in the obvious way.
Thanks to both of your for your comments!
It probably does make sense to focus on the non-enriched setting, at least to start out with. I wanted to think about the enriched setting at least a little bit though, just to have access to more examples. But maybe now I'll switch focus to the non-enriched setting.
Mike Shulman said:
You're absolutely right about all of that! And in fact, these restricted hom-profunctors are extremely important. If you want a hint as to one reason why, you could try asking yourself what they might have to do with -adjunctions.
I do want to understand how profunctors relate to tensor-hom adjunctions, and maybe this is in that spirit. I'm not quite sure where to start with this line of thought, though.
What sort of relationship between profunctors and tensor-hom adjunctions do you have in mind?
I mean, did you see someone say that they are related in a particular way and you want to understand that?
Mike Shulman said:
What sort of relationship between profunctors and tensor-hom adjunctions do you have in mind?
So, I'm thinking of a profunctor as like a bimodule: something that describes two compatible "actions" on something. That's the kind of thing we need to define a tensor product, I believe. For example, we can tensor a set with two compatible monoid actions against a set with an appropriate monoid action. Or we can tensor a commutative group with two compatible ring actions (a bimodule) against a commutative group with an appropriate ring action (a module).
"Sheaves in Geometry and Logic" also introduces a "tensor product" of set-valued functors on p. 353.
Ah, so you mean tensor products of profunctors.
I am hoping that all this tensoring is secretly tensoring of profunctors.
So maybe what I want to understand next is how to tensor profunctors, and maybe to see how this gives the appropriate thing in some special cases.
Your examples sounded to me like examples of what I'd call composing profunctors.
It's the same thing.
(I mean, there are also other kinds of tensor products of profunctors, but I think it's reasonable to also call the "composition" of profunctors a "tensor product".)
Okay. I will call it composition of profunctors, but for some reason I will also call it tensoring of bimodules. I guess it's just a cultural thing.
When David talked about tensoring profunctors, I imagine taking profunctors and and tensoring them to get . But anyway, he's not talking about that.
I'm just trying to figure out what he's interested in, and I think maybe I know by now, from his examples.
For example if I have a set with compatible left and right actions of monoids and , that's the same as a profunctor from the 1-object category to the 1-object category .
And then if I have a set with compatible left and right actions of and , I can "tensor" and and get a set with compatible left and right actions of and . And that's an example of composing profunctors.
(David was looking at an example where one of these actions was trivial so it looked like you had a set with just one monoid acting on it.)
For some reason I don't know a super-standard name for a set with compatible left and right actions of two monoids; it should be called something like a "biaction". But there's a super-standard name for the same thing in the Ab-enriched world, namely an abelian group with compatible left and right actions of two rings. Everyone calls this is a "bimodule".
So, sometimes the word "bimodule" gets extended to mean "enriched profunctor".
Yes, this is all exactly the kind of thing I'm interested in. I'm also keeping in mind the example (hopefully I'm not misremembering and it is actually an example!) of composition of relations. I think this is also a tensoring of profunctors.
I would like to build on all this intuition to understand the general definition of compositon/tensoring of profunctors. (And then I'm curious if we can understand how to build a tensor-hom adjunction from a given profunctor. But one step at a time!)
John Baez said:
For some reason I don't know a super-standard name for a set with compatible left and right actions of two monoids; it should be called something like a "biaction".
I feel like I may have seen this called a "G-H-biset", analogous to "G-set" for a set with a single action.
David Egolf said:
Yes, this is all exactly the kind of thing I'm interested in. I'm also keeping in mind the example (hopefully I'm not misremembering and it is actually an example!) of composition of relations. I think this is also a tensoring of profunctors.
A relation is an example of a Bool-enriched profunctor, since for each pair of elements in your two sets it's giving you a boolean. (A plain old profunctor gives you, for each pair of objects in your two categories, a set.)
Composing relations can then be seen as composing Bool-enriched profunctors.
One thing relations have that general profunctors don't is the converse, because sets are all groupoids. There's a notion of "ordered relation" of posets that doesn't have the converse!
Bool is like a "baby" or "decategorified" version of Set, so compared to ordinary Set-enriched things, Bool-enriched things tend to be simpler, and the word "enriched" is a bit misleading: I actually feel like saying "impoverished" in this particular case!
Thanks everyone! I'll stop here for today as I'm getting tired, but next time I think I'll start to move towards understanding the composition/tensoring of profunctors. This involves a "coend", so this may be a great chance for me to learn a bit about coends!
Indeed, coends and profunctors go hand in hand!
Each time you've been saying you want to learn about profunctors and hom-tensor adjunctions, I've been scratching my head thinking you should either be saying "I want to learn about profunctors and coends" or "I want to learn about hom-tensor adjunctions and closed categories".
John Baez said:
Each time you've been saying you want to learn about profunctors and hom-tensor adjunctions, I've been scratching my head thinking you should either be saying "I want to learn about profunctors and coends" or "I want to learn about hom-tensor adjunctions and closed categories".
At first I had thought I might really be wanting to learn about closed categories. However, in a closed category the "tensor against a fixed object" functor is an endofunctor. By contrast, tensoring against a bimodule/"biaction" takes in a thing of one kind and produces a thing of a different kind.
So - how to compose/tensor profunctors? A profunctor from to is a functor . I will sometimes view this as a morphism in a category from to , and sometimes view this as a functor from to .
If we have a profunctor and another , the book "Coend calculus" states that we can define their composite as follows:
...where the right side is apparently a "coend". So it will take some learning to unravel what exactly this definition means.
When reading that formula, I hope your heart sings out "matrix multiplication".
Oh! Thanks for pointing that out! It is indeed a lot like the matrix multiplication formula, although I hadn't noticed that yet.
The intuition I had so far was more from composing relations: a way in which and are related, together with a way in which and are related - that gives us a way in which and are related.
I found a set of slides from a talk you gave in 2007, which maybe visualizes the matrix multiplication intuition:
Yes, there I was showing how composing spans is a special case of matrix multiplication.
We can work with matrices valued in any [[rig]], since we just need to know how to add and multiply matrix entries in a way that obeys the usual laws. Composing relations is matrix multiplication where the matrices take values in the boolean rig .
Composing spans is a bit more sophisticated because the matrix entries are sets, which are objects in a kind of '2-rig'.
Composing profunctors is like that, but we also need to replace addition by a colimit, as hinted by that integral sign you wrote down.
So, it's good to think of all these things - relations, matrices, spans and profunctors - as different examples of the same idea. This will allow you to save a lot of work relearning things over and over. Even if you don't know the formal abstraction that captures all these examples, you can still mentally put them all on the same shelf in your mind. It's all "linear algebra", as far as I'm concerned.
I think it's very cool when so many ideas can be grouped together helpfully like that! One thing I like about that is this: if you recognize that two ideas are secretly in the same spirit, then intuition or concepts about one have hope to be transferred to intuition or concepts for another. This might not always work out, but probably can lead to surprising and fun questions like "Do we have a notion of an eigenvector for a relation?". This can also probably help one understand new concepts more quickly by analogy.
For the profunctor case, I'm wondering if this intuition will be helpful: is like a set of paths from to .
Exploring this idea a little bit - if we have a morphism in , then lets us create a path from to given a path from to , using . That seems intuitively reasonable.
Yes, that's a good point of view. As you may have seen (maybe in those slides of mine), Heisenberg thought of as the amplitude to get from to , which is a number. Feynman later computed these amplitudes as an integral over the set of all paths from to .
So Feynman was doing a kind of decategorification of the idea you are talking about now, where you are imagining as the set of paths from to . It's decategorification because he was taking a set (an object in a category) and turning it into a number (an element of a set).
(It wasn't just a bare set, of course: to integrate you need a set with a measure on it, and maybe also a function on it. But I'm trying to talk in a broad-brush way here.)
In short, yes: relations, matrices, spans and profunctors are all about how you can get from to , or whether you can get from to , or with what probability or amplitude can you get from to .
But you're focusing in on profunctors, and pointing out that if and are objects of categories, then we can combine any way to go from to with a morphism in and/or to get a way to go from to .
This extra twist doesn't show up for the simplest sort of relations, matrices or spans - it's characteristic of profunctors, simply because profunctors go between categories. It also shows why you want an 'op' in the definition of profunctor.
Just to spell that out a bit more: if we have a morphism in , then we intuitively want a way to convert paths to paths using . So we need an "op" to make this a functor.
So if I were to naively guess as to how to compose two profunctors and , my first guess would be as follows. To find all the paths from to , we first form the product for each . Each such set contains as elements the information needed to describe a path from to . Then I'd want to take the disjoint union of all these sets.
Right! Very good. But "disjoint union" is obviously a bit wrong when your category has a bunch of isomorphic objects, or even a bunch of "morphic" objects. So you gotta be a bit more sophisticated.
And this will lead you to invent coends....
Hmm I see! If and are isomorphic, then maybe we don't want to count paths from to that pass through either or as really different, for example. So some thought will be needed to properly come up with all the distinct paths.
And yes! I'm hoping that thinking in this direction will help the definition of coend make some intuitive sense. :sweat_smile:
You'll just automatically reinvent it by trying to straighten out this "redundancy" problem.
Even if and are just "morphic", i.e. there's a morphism , you don't want to count paths from to that pass through either or as completely different.
This is the redundancy problem.
Oh! That's surprising to me. I guess I don't fully understand which paths we want to count then.
Or maybe this speaks to some limitation of the "paths" intuition.
I'll think about this for a while. :slight_smile:
You just need to sharpen up your intuition. If you start with categories that are groupoids, you don't have to worry about certain nuances, and you can focus on trying to eliminate redundancies due to isomorphisms. But in a general category, you're not going to want to treat isomorphisms in a completely different way from other morphisms - that's too ugly, you never want to do a "case by case" definition in category theory. So you need a nice thing to do with morphisms that does what you want when they're isomorphisms.
I think I was able to visualize the situation:
path redundancy
There's a single "path" here, from to to to . However we can build it up in two ways:
To do this, we made use our ability to travel from to , which presumably corresponds to a morphism in from to . So we see that having even just "morphically" related objects can result in multiple ways to build up the same path.
(I say "path" but it's more like a "travel route". We're not keeping track of the "speed" at which are traversing from one object to another, and we aren't associating each part of an "interval" to parts of our traversal.)
Yes, this is a key idea left in the notion of coend! Maybe you’re ready to start thinking mathematically about what this picture means you ought to do with that disjoint union of products you’d mentioned earlier?
I would like to do that! There are some elements of that correspond to the same routes, as visualized in the image above. So, I am guessing there is a diagram involving the (as varies) such that taking the colimit give us all the distinct routes. I'm not quite sure how to dream up this diagram yet, though.
Drawing inspiration from the drawing above, I'm currently thinking of a route from to as involving three parts:
And the thing "between the categories" needs to be compatible with the morphisms in (1) and (3).
I suppose in the case of a route from to that passes through , the thing "between the categories" and includes a few pieces:
I don't know if trying to express the routes in the picture above using a decomposition like this will be helpful for figuring out an appropriate colimit.
Oh, I remembered the term "heteromorphism" - maybe that's relevant when thinking about things "between" objects in different categories.
Intuitively, maybe what I'm trying to understand relates to the idea that some "composition" of heteromorphisms should be associative.
Following the principle that it's good to draw everything you've got in a diagram, it might be useful to see what maps you have between sets of the form
given the fact that and are functors, and try to draw these maps in a diagram, and let that guide your thoughts a bit.
Thanks for the hint! I am planning to give your hint some thought.
I'm also realizing that we can write a route in two pieces, say . Here is a route that starts in and ends in , while is a route that starts in and ends in . Then we can consider the case where one of these two pieces is given by "extending" some smaller piece, so we have something like or . Then extending the first piece "at the end" should give the same route as extending the second piece "at the start".
So I think that and should give the same route. Keeping something like this in mind might be helpful as I search for a colimit diagram.
[If we use instead of , then we're wanting to view as the same as . And if I write to mean , we want to view as the same as . This starts to reminds me of the tensor product of modules!]
David Egolf said:
So I think that and should give the same route. Keeping something like this in mind might be helpful as I search for a colimit diagram.
Yes, this sounds like a crucial observation. You could have gotten it by following my suggestion to just draw all the maps between sets of the form
But you got it in a more thoughtful way. My approach is nice for when you're feeling clueless: you just draw all the maps and see when two might be equal and what it would mean for them to be equal.
I think I can encode part of what I want in a pushout diagram. If we have an "almost" route that is just missing a middle piece, here are two ways to fill in that missing piece: we can extend the first part of the incomplete route, or we can extend the second part. If we use the same "route segment" to do this, these two approaches should intuitively yield the same route.
(Here, I think of as in the spirit of "precomposing a route with ".)
So if we have a route from to and a route from to , we can make a route from to given a morphism in two ways:
I think the pushout will end up being the disjoint union of and , except that we identify two routes if they can both be formed from the same incomplete route in using .
However, this is not yet what I want! There may be additional elements that I would like to identify between and . In particular, if there is another morphism from to , then I will want to identify additional elements.
Beyond this, I also want to do a similar "gluing"/quotienting process as and vary. So there is a lot of "quotienting" that I want to somehow organize tidily!
I guess I'm hoping to get a nice clean colimit diagram that gives in terms of and as varies. But maybe that's hoping for too much?
I may take a look at some references and see how they organize this information. In particular, this might be a good time to look at the definition of a coend - hopefully it relates to the intuition developed in this thread!
It would be fantastic if the notion of "coend" cleanly organizes all the quotienting I want to do in the context of composition of profunctors.
You almost stated the definition of coend just now! The diagram you drew is the key part in the definition of coend, or at least one popular definition. What you wrote will look more like the usual coend if you abstract from the situation at hand, and write
hiding the role of and , which are fixed in the process you are focused on, and highlighting the role of and . Note that is covariant in and contravariant in - or maybe the other way around if I'm confused, but the main point is that they have opposite variances.
So a coend is a thing you can construct whenever you have a thing like this , and you've pretty much explained how to construct it.
Thanks for explaining that! I think this is making sense to me.
In this context, let me now write out the definition of a coend (from "Coend Calculus"). I anticipate this will be interesting to compare with the discussion above.
Referencing Definition 1.1.6 in Coend Calculus, I think a coend for a functor is an "initial cowedge" for .
A "cowedge" for is a dinatural transformation , where is a functor constant at some .
By the way, I'm right now at a retreat for math grad students at a country house in Scotland, and they loved the 'plane trips and taxi rides' story about composing profunctors, and used it to come up with the definition of coend (with a little nudging from me), and then polished it up into a colimit over a twisted arrow category, and also came up with another approach using the [[collage]] of a profunctor.
Nice! I've noted the phrase "twisted arrow category" as well as "collage" for possible future exploration. :slight_smile:
I notice that "extranatural transformations" can also be used to define profunctors, instead of "dinatural transformations". But, for the purpose of starting somewhere, I'll stick with dinatural transformations for the moment.
So for the definition above to be useful, we need to know what a dinatural transformation is.
Even those are a bit too fancy for me to have incorporated them into my ways of defining coends, but that's probably just my own fault. I just know how to construct coends, not describe their universal property as an 'initial cowedge'.
I see! Well, I'm curious to try and understand this definition from "Coend calculus". If it ends up being a bit too fancy for me to intuitively understand at this point, then that's fine as well. But I'll give it a try!
So, here is the notion of "dinatural transformation".
Let be functors. A dinatural transformation is first of all a family of morphisms (in ) indexed by the objects of . We also require that for any in the following diagram to commute:
diagram
I wonder if we can understand this intuitively in the spirit of the discussion above. Maybe we can think of as in the spirit of a set of "routes" that travel to , are interrupted, and then pick up again at (with some fixed but unstated overall starting and ending points).
If we can understand in a similar way (as providing potentially "partial" routes), then perhaps we can try to understand a dinatural transformation as describing a way to relate the partial routes of to the partial routes of .
I guess my current question that I'd like to explore is this: How can we intuitively (possibly through examples) understand the notion of "dinatural transformation"?
Actually, I think I specifically want to focus on the case where is a constant functor. (This relates closely to cowedges!) Next time, I may start by redrawing the diagram above for that case.
Here's what part of a cowedge under looks like (so is a constant functor):
cowedge
This looks very much like the pushout diagram I drew above! However, in this case, we don't require the square to be a pushout diagram.
I was thinking that the constant (set) output of needs to be a pushout for all such squares simultaneously. But that doesn't make sense: each such square only requires us to identify certain routes. So if we identify too many, we won't get a pushout square.
Instead, our set (which is the same for all ) needs to just make each square commute and then be initial with respect to that property. Each individual square requires that we "glue together" certain routes, and making each such square commute means that all of the desired routes are glued together.
If we think of as specifying "partial routes" with a fixed start point and end point, then I suspect an initial cowedge under gives us exactly the unique "completed" routes from that starting point to that end point. Requiring the cowedge to be initial I think means that we avoid identifying too many routes, and avoid introducing new unwanted elements.
If this is on the right track, I think I can then begin to see how using a coend makes sense for composition of profunctors!
[Perhaps one thing I can take away from this: If one has many diagrams one wants to make commute, sometimes this situation can be organized by using something in the spirit of a natural transformation.]
I feel pretty happy with the above! Next, I think I would like to work out a special case of profunctor composition.
Specifically, I would like to work out the composition of a profunctor with a profunctor . And to start with, I'll consider the case where and both have a single object.
(By I mean a terminal category, having a single object and a single morphism.)
A profunctor is a functor . When has a single object, I think this amounts to a right action of a monoid. A profunctor is a functor . When and have a single object, I think such a profunctor amounts to a set together with a left action of some monoid on it, compatible with the right action of some monoid on it. Upon composing these profunctors, we'll get a profunctor , which is a right action of the monoid on some set.
But how exactly does this work? I'd like to use the discussion above regarding profunctor composition to work this out in some detail.
So let us imagine we have profunctors and , where and are monoids (thought of as categories with a single object). Then . This corresponds to a functor . If we call the single object of by the name , and the single object of by the name , then there is a set . What is this set?
I expect to be something like a set of "tensors". Let's see what we get!
Here's a picture to visualize the situation: [EDIT: I ended up creating a second version of this picture and accompanying discussion below, which I think improves on this one]
forming "routes"
We can start with a partial route, which consists of: the identity morphism in , together with some morphism in . This is missing just some to complete the route.
We get two complete routes that we want to consider the same:
We might write these two routes as follows: and .
I'm getting tired, so I'll stop here for today. Next time, to avoid getting confused, I'm hoping to draw the diagram that describes what a cowedge is in this setting.
One thing you almost but didn't quite do in your previous round of exploring profunctor composition, is to explicitly describe the set , or more generally the sets for any composite of profunctors (they work exactly like the example you're doing now). So I'm eager to see the explicit description you get out of this cowedge stuff.
Before stopping for today, I want to adjust the discussion I provided above relating to this picture:
I've labelled the black lines this time, which I'm now thinking as being elements of the profunctors involved. So is a "route" from to , and is an element of . Similarly, is an element of .
I've also removed from the drawing, as I don't think we need it right now.
Then we have two things we can do with : (1) we can use to act on using to create a new route or (2) we can use to act on to create a new route .
We might intuitively write this as . Or perhaps .
Next time, I'll try to describe this using a diagram involving cowedges! And hopefully that is then helpful for explicitly describing .
is there an underlying mathematical or philosophical reason why work on profunctors seems to be dominated by considering them as A*B^op->Set rather than A->Set^B^op?
David wrote:
We might intuitively write this as . Or perhaps .
Okay, now you've come EXTREMELY close to explicitly describing . Let me finish the job, because I can't stand the torture any more. :wink:
Here's the explicit description:
First you're taking the coproduct over all objects of the product of homsets
Then you're taking a quotient of this by the equivalence relation generated by .
So, you're first doing a coproduct and then a coequalizer! Since both these are colimits, you're doing a colimit.
There are more elegant ways to write this colimit, but this is perfectly serviceable.
More generally, any coend is a colimit rather similar to this one.
I feel I'm not saying anything you don't know. I'm just making your thoughts more explicit by writing them out as a formula for the composite profunctor .
Ryan Wisnesky said:
is there an underlying mathematical or philosophical reason why work on profunctors seems to be dominated by considering them as A*B^op->Set rather than A->Set^B^op?
I don't know, but your comment reminded me of "Distributors at Work". In that paper Bénabou defines the composition of distributors as follows:
For distributors and their composition is given by where is the left Kan extension of along the Yoneda functor .
So here we are making use of the fact that a profunctor corresponds to a functor , where is the category of set-valued presheaves on . That is, we are making the switch in perspective from a functor to a functor .
I could imagine that we might want to work with "internal profunctors" (if that's the right term) inside categories that aren't cartesian closed. So perhaps that could explain some of the tendency towards the focus on functors rather than functors .
John Baez said:
David wrote:
We might intuitively write this as . Or perhaps .
Okay, now you've come EXTREMELY close to explicitly describing . Let me finish the job, because I can't stand the torture any more. :wink:
Here's the explicit description:
Haha, well I don't want to drag things out painfully, so I appreciate your description here!
A couple questions/clarifications:
The first of these functions sends to while the second sends it to
I bet you can now write down a similar formula for the composite of two profunctors
.
(I like using something like to indicate a profunctor, so we can save for functors.)
The idea is that for any objects we express by first forming the set
and then modding out by some equivalence relation.
John Baez said:
I called this modding out process "a coequalizer" because I think when we're doing it we're coequalizing two functions
The first of these functions sends to while the second sends it to
Oh, I see! I had been struggling to set up the coequalizer properly. But it makes sense that we work with functions mapping from . I had been trying to think of functions from . But including allows us to "glue together" many things all at once! Perhaps this points out a general principle: the "larger" the source of the two parallel morphisms in a coequalizer, the more opportunities we have for "induced gluing".
I'm still learning how to use coequalizers effectively, and this seems like a good thing to have noticed in that context! :slight_smile:
Right!
By the way, I find it disturbing that my outlined formula for involves writing first and then , but I think we're boxed in by other choices, like wanting to write followed by followed by from left to right to indicate the three way-stations in our route, but writing following the usual convention, where the last thing we do is on the left.
Yes, that makes sense to me. I suppose if we rewrote as (meaning , then ) then it might look a bit nicer. But what you wrote looks correct to me.
The challenge then is to figure out the proper equivalence relationship to mod out by. Probably it's possible to do this intuitively, and end up with a coequalizer expressing this. (And then maybe it would be interesting to see how this is forced when looking for a universal cowedge?)
I suspect this will work very similarly to what we've described above, and hopefully should just take a bit of thought to write down.
Imagine we hav
John Baez said:
I bet you can now write down a similar formula for the composite of two profunctors
.
(I like using something like to indicate a profunctor, so we can save for functors.)
I see, that's an interesting notational choice. I do enjoy using for arrows in any category, and it feels a bit weird to use something else like instead. But I can understand wanting to avoid confusion between functors and profunctors.
Ok, let me see if I can work out for and . Intuitively these should be "routes" from to that pass through some point in .
So indeed we start out by considering the set . We can think of the elements of this sets as describing routes in "two pieces". However, some of the routes described area really the same: when you put the two pieces together you get the same result, even though the two pieces are different.
Thus, we wish to "glue together" certain elements of that set. Hence we wish to set up a coequalizer involving functions to .
Intuitively, given a morphism in , I want to "extend" routes to ones (in the spirit of post-composing with ). But is contravariant in ! So we should really have a function in this case.
I thought the variance was making sense earlier, but maybe I was always confused on this point.
Perhaps it is more correct to think of as a route from to , instead of as a route from to . Then intuitively can be "precomposed" with such a route to give us a route from to . So then we expect some function in this spirit induced by .
And can then be "added on at the end" to a route from to . So we'd expect a function .
Using that intuition, is then to be a set of routes from to . It still makes sense to start with , and to aim to "glue together" some of the elements of this set using a coequalizer.
So which functions do we want in our coequalizer?
We should take in:
But I'm getting a bit stuck here, as the second bullet point varies depending on what we chose from at first bullet point. So it seems like things are not as simple as forming a product anymore. (Above, our coequalizer functions mapped from .)
Maybe (for the source of the parallel morphisms in our coequalizer diagram) we want something like a coproduct over sets like these as and vary.
So the source of our parallel coequalizer functions should maybe be .
I'll stop here for now, but it feels like I might be on the right track!
David Egolf said:
I suspect this will work very similarly to what we've described above, and hopefully should just take a bit of thought to write down.
Yes, it should be a slight variant of what I wrote down, and you'll see why I mistakenly wrote a (that is a coproduct ) in my first answer.
David Egolf said:
John Baez said:
(I like using something like to indicate a profunctor, so we can save for functors.)
I see, that's an interesting notational choice. I do enjoy using for arrows in any category, and it feels a bit weird to use something else like instead. But I can understand wanting to avoid confusion between functors and profunctors.
It's a pretty standard notation, though I'm having trouble here making the slash on the arrow as small as usual.
The issue is this: we're starting to work with as a [[double category]], with functors as 'tight arrows' and profunctors as 'loose arrows'. So we need notation to reflect these two kinds of arrows.
David Egolf said:
So the source of our parallel coequalizer functions should maybe be .
Yes! You'll notice this looks a lot like multiplying three matrices:
Now you just need to do some sort of coequalizer to deal with the morphisms in .
John Baez said:
The issue is this: we're starting to work with as a [[double category]], with functors as 'tight arrows' and profunctors as 'loose arrows'. So we need notation to reflect these two kinds of arrows.
That makes good sense, then!
The nLab article [[double category]] doesn't seem to use the terms "tight arrows" or "loose arrows". But I guess "tight arrow" is a synonym for "vertical arrow", and "loose arrow" is a synonym for "horizontal arrow".
Oh, maybe I'm wrong about that. I see "tight arrow" and "loose arrow" discussed here: [[virtual double category]].
"Tight arrow" and "loose arrow" were picked because people couldn't globally decide on a convention for pseudo double categories whether the pseudo direction was horizontal or vertical. (Pare' and his collaborators went with vertical, while most people who also worked with virtual double categories went with horizontal.)
David Egolf said:
But I guess "tight arrow" is a synonym for "vertical arrow", and "loose arrow" is a synonym for "horizontal arrow".
Yes, that's how I use those words. As James just explained, some people who draw diagrams differently use the word "vertical arrow" to mean "horizontal arrow" and vice versa. Thus, @Mike Shulman invented the terms "tight arrow" and "loose arrow", which are more descriptive. (A profunctor is more sloppy, more loose, than a functor, since it can send one object to many objects.)
I'm surprised this new preferred terminology isn't used on the nLab! I guess Mike has other things to do besides spending all day updating the nLab.
To be precise, Steve Lack and I invented those terms together.
Oh, cool.
We can't get rid of the "vertical/horizontal" terminology completely, though, because there are also double categories in which neither direction is "tighter" than the other. For instance, squares in a 2-category (where the two classes of arrows are the same), or lax and colax morphisms. Of course, such double categories have to be either strict in both directions or weak in both directions.
In all my papers I say "vertical" and "horizontal", and having written a bunch of papers using that convention I'm going to keep on doing it until I die, so people can read my papers as a body with minimal internal inconsistency of notation. But when I told David that that functors and profunctors form a double category just now, I felt like saying "tight" and "loose".
John Baez said:
I'm surprised this new preferred terminology isn't used on the nLab! I guess Mike has other things to do besides spending all day updating the nLab.
It's used in some places on the nLab, but at the moment the entry [[double category]] refers both to strict double categories (in which the terminology "horizontal/vertical" is unavoidable, as Mike points out) and pseudo double categories (in which "tight/loose" is clearer). It may make more sense to split it into two entries.
Interesting side note: in a paper I'm writing right now with @Aaron David Fairbanks , we realized that there is an interesting substantive difference in conventions regarding double categories and 2-categories. When we take the two underlying 2-categories of a (strict, for simplicity) double categories, we have to decide whether to orient the globular 2-cells in the horizontal 2-category "up" or "down", and similarly whether to orient the globular 2-cells in the vertical 2-category "left" or "right", making for four choices. There's a certain natural attraction to choosing "down" and "right", since then these 2-cells will always point in the same direction as the other kind of 1-cell. But those two choices together are inconsistent with the example of squares in a 2-category, whose underlying 2-categories will both be the original 2-category (as we naturally expect) only if we choose "down" and "left", or else "up" and "right" (depending on which direction we take the squares to point -- but there are only two choices for this).
If I understand correctly, this is the same ambiguity that arises in whether one considers distributors to be covariant in their domain or codomain: since certainly one would want the underlying 2-category of the double category Dist to be exactly Cat, and so this dictates which direction the 2-cells should face.
It's certainly related! I think if you choose a profunctor to be a functor , then in the double category Prof (with profunctors horizontal) you want the underlying 2-categories to be "down" and "left", whereas if you choose it to be a functor , you want the underlying 2-categories to be "down" and "right"?
(So as to get Cat as the vertical 2-category in both cases.)
I had been following the convention in [[profunctor]], where a profunctor from to is a functor . However, I see that in "Yoneda Theory for Double Categories" (by Paré), a profunctor from to is defined as a functor .
I think I like the second convention better, at the moment. Because then, if I have things straight, a profunctor is such that can be interpreted as a set of routes from to .
Indeed, in that case gives a function which I'm thinking of in the spirit of "precomposing with ".
Yes, both conventions have advantages. If you're going to use your convention, where means the set of routes from to , it's good to let to mean "first do , then do ". Then everything goes from left to right.
Alternatively you could take an approach where everything goes from right to left.
David Egolf said:
I think I like the second convention better, at the moment. Because then, if I have things straight, a profunctor is such that can be interpreted as a set of routes from to .
With the other convention, a profunctor is such that can be thought of as a set of routes from to .
John Baez said:
Yes, both conventions have advantages. If you're going to use your convention, where means the set of routes from to , it's good to let to mean "first do , then do ". Then everything goes from left to right.
However, then composition in the hom-profunctor is a map , which isn't the way most of us write composition in categories.
One advantage of the nLab convention is that then a profunctor from to is the same as a functor from to the presheaf category of .
Also it gives you a covariant pseudofunctor , which is nice if you want to talk about it as a free cocompletion. Unless I confused myself again, Paré's convention gives you a functor .
Mike Shulman said:
One advantage of the nLab convention is that then a profunctor from to is the same as a functor from to the presheaf category of .
Yes, this is a massive advantage.
For example, this means that a presheaf on is the same as a profunctor , just as an object of is the same as a functor . Since functors are a special case of profunctors, this encourages us to think of objects of as a special case of presheaves on
This should remind you of the Yoneda lemma, which says that any object of gives a special sort of presheaf on , called a 'representable presheaf'. And indeed, if you work out the details of how an object gives a functor which gives a profunctor which gives a presheaf on , you'll see the presheaf we get is precisely the representable presheaf !
(When I say "functors are a special case of profunctors", what I mean is that any functor gives a profunctor called its companion. In the nLab convention, I guess this profunctor is the functor sending to .)
(It's also true that every functor gives a functor called its conjoint, but we don't need to think about that now.)
And saying "functors are a special case of profunctors" also makes the most sense if you have a fully covariant inclusion , which requires this convention.
By the way, I just remembered that we can use \rightsquigarrow to create a wiggly arrow like this:
This is another possible notation for profunctors, or loose arrows, or any sort of arrows other than the 'usual' arrows one happens to be using.
I prefer the notation for profunctors. It's a bit more work to type here, but looks to me like "there is no functor from to ".
Oh, I definitely prefer that, I just couldn't figure out how to draw it! I was complaining earlier about the huge slash in . It looks like drawing requires unicode:
$$C \mathrel{⇸} D$$
$$C \mathrel{\char"21f8} D$$
works too.
$$C \mathrel{{\to}\mathllap{\shortmid\ \ }} D$$
also does something in that genre.
These give
and
respectively.
We need macros here. :smirk:
(Macros are a requested feature for Zulip, but aren't yet supported.)
I can see plenty of difficulties, hence my smirk.
The least hacky way I can find to get the spacing, which is unfortunately long, is $$C \mathrel{\mathrlap{\to}{\overset{\displaystyle{\hphantom{\to}}}{\shortmid}}} D$$
, which looks like ... I wish one of the "lap" macros was smarter about spacing to begin with.
I think the unicode version looks the best of the options available on Zulip.
Yes, it's unfortunate that it's the hardest to type, or if you're using the \char
version, to remember.
Thanks @Mike Shulman and @John Baez for elaborating on the advantages of the nLab convention!
Let me try out this "companion" business in a special case. If we start with a functor constant at (which amounts to an object of ), this apparently gives us a "companion" profunctor (using the nLab convention). This profunctor should send to . (Here is the single object of some terminal category ). We have , and the corresponding functor is .
So if we go: object profunctor presheaf, we end up sending an object to the presheaf it represents.
Mike Shulman said:
And saying "functors are a special case of profunctors" also makes the most sense if you have a fully covariant inclusion , which requires this convention.
This seems like a very nice thing to have!
Well, I'm convinced that the nLab definition of profunctor has some serious advantages. I suppose that I can use that definition, and still retain certain intuition by working in the opposite category to work out composition (if I feel like it!).
And thinking of for a profunctor as a set of routes from to isn't so bad, either. It just a feels a bit "backwards".
Now, let me see if I can (finally) write down a coequalizer describing how two profunctors compose.
We start with and . We want to form . Intuitively, should be a set of routes from to that pass through . We can build up such a route using a route from to , a morphism from to , and finally a route from to . (Here and are objects of , and they can vary).
So our set of "route building blocks" is, as discussed above, . We want two functions from this set to the set , describing the two ways to assemble a "two-part route" from two routes and a "connecting piece" between them.
Given , will gives us a function .
So we can build a function which acts by .
By composing with the appropriate coproduct inclusion function, we end up with a function .
Doing this for each defines by the universal property of coproducts a function .
I think that's one of the two functions we're looking for!
We can get the other function by doing a similar thing, except this time we combine the "connecting piece" using instead of .
Given , gives us a function . This lets us build a function , which acts by .
Composing with the appropriate coproduct inclusion function, and then repeating this entire process for each will give us a second function .
Finally, we can take a coequalizer of these two functions to presumably get !
I notice that the above only defines on objects, so there's more work to do still. But I'll stop here for today!
David Egolf said:
Thanks Mike Shulman and John Baez for elaborating on the advantages of the nLab convention!
Let me try out this "companion" business in a special case. If we start with a functor constant at (which amounts to an object of ), this apparently gives us a "companion" profunctor (using the nLab convention). This profunctor should send to . (Here is the single object of some terminal category ). We have , and the corresponding functor is .
So if we go: object profunctor presheaf, we end up sending an object to the presheaf it represents.
Great! You've verified this:
John Baez said:
And indeed, if you work out the details of how an object gives a functor which gives a profunctor which gives a presheaf on , you'll see the presheaf we get is precisely the representable presheaf !
David Egolf said:
Finally, we can take a coequalizer of these two functions to presumably get !
Great! Looks good.
I think I next want to understand a left Kan extension closely related to profunctor composition.
Referencing "Distributors at Work", apparently we can define profunctor composition like this:
We can help organize the situation using a diagram:
diagram
A few questions I'd like to answer:
Notice that if is a terminal category, then and the left Kan extension takes in presheaves on and returns sets. I am hopeful that this left Kan extension can be thought of as "tensoring with ". (See "Sheaves in Geometry and Logic" p. 417).
David Egolf said:
A few questions I'd like to answer:
- How exactly do we "transpose" a functor to get a functor ?
If a category is [[cartesian closed]], there's a natural bijection between morphisms
and morphisms
The category is cartesian closed so there's a bijection between functors
and functors
This may or may not make sense, but it means you need to understand "cartesian closedness" and why is cartesian closed.
Yes, that makes sense!
Reviewing the definition of being cartesian closed: A category with binary products is cartesian closed exactly if for every object the functor has a right adjoint .
As a result, for every , we have a bijection , which is natural in and .
(It's also apparently natural in , which is surprising to me!)
However, it's one thing to know that this bijection exists and another to be able to calculate how it works!
I suspect that I could probably guess how this bijection works in the case of interest. However, I'm now wondering if there is a general procedure one can follow to compute natural bijections for an arbitrary adjunction, given that one knows how each of the functors involved in the adjunction work.
Understanding a procedure like that sounds like it could be quite helpful in general, when wishing to study an adjunction!
I suppose I'm assuming here that if is left adjoint to (for some functors and ) then can only be left adjoint to in "one way". I'm not 100% sure that's true!
The nLab says that is left adjoint to if there exists a natural isomorphism . I'm wondering if this natural isomorphism is necessarily unique.
David Egolf said:
I suppose I'm assuming here that if is left adjoint to (for some functors and ) then can only be left adjoint to in "one way". I'm not 100% sure that's true!
It's not. If you have one adjunction , you can compose it with any automorphism of (or ) to get a different adjunction .
David Egolf said:
The nLab says that is left adjoint to if there exists a natural isomorphism .
So really it should say "...if it is equipped with a natural isomorphism...".
Since being adjoint is structure, not a property.
Oh, wow! That's not the answer I expected. Thanks for explaining that!
I suppose a followup question then is this: Is it possible for a category to be cartesian closed in multiple ways? That is, can potentially be left adjoint to in multiple ways?
(This potentially relates to the question: Does the functor have any non-identity automorphisms?)
It would probably also be a good exercise for me to see how automorphisms of can let us produce new adjunctions from old ones...
Any automorphism of the object will induce an automorphism of the functor . Therefore, if you fix a particular functor , then it can indeed be right adjoint to in more than one way.
However, this isn't what "being cartesian closed in more than one way" would mean. Being cartesian closed includes the datum of the functor , and so an isomorphism between two "cartesian closednesses" would allow a nonidentity isomorphism between these functors, . And while two fixed functors can be adjoint in more than one way, one fixed functor can only "have an adjoint" in one way: any two of its adjoints are isomorphic by a unique isomorphism respecting the two adjunctions.
Thanks for clarifying that! Let me see if I can unconfuse myself based on what you just said.
Apparently it is possible for two fixed functors to be adjoint in more than one way. However, a fixed functor can only "have an adjoint" (a left adjoint, for example) in essentially one way: any two functors that are (left) adjoint to it are isomorphic.
And when talking about a category being cartesian closed, we just ask for to have a right adjoint for each . There is only one way really to do this, because right adjoints are (essentially) unique.
Correct!
And, if I'm understanding correctly, a choice of a specific adjunction between and isn't required when declaring a category to be cartesian closed.
Well, technically there are two options. You could require a choice of a specific functor and a specific adjunction, or merely assert that there exists some such functor and an adjunction.
But you wouldn't want to require a choice of a specific functor but only assert that there exists some adjunction.
I see! I'll plan to think that over for a while.
Mike Shulman said what I wanted to say so I'll delete my response except for this:
Puzzle. What's a pair of functors that are adjoint in more than one way?
(This is a puzzle for myself, or anyone else who wants to help out.)
John Baez said:
Puzzle. What's a pair of functors that are adjoint in more than one way?
(This is a puzzle for myself, or anyone else who wants to help out.)
A category with a [[zero object]] or a category with [[biproducts]].
I see how the latter makes the biproduct be both left and right adjoint to the diagonal , and how the former makes the zero object be both left and right adjoint to the unique functor .
But I was asking about something else: I want to find functors and such that is left adjoint to in two different ways, i.e. with two different choices of natural isomorphism
I'd prefer a 'mathematically natural' solution but I'll take anything.
Without further conditions? Given that that would give rise to an object with two different monoid structures in [C,C], I'd guess it's most interesting when these are compatible in some way, no? There is duoid, for example
Without further conditions. I want to make the widest possible audience realize that when you say " is left adjoint to ", a reasonable question is "how", because there can be multiple different ways. This will work best if we can find two fairly familiar functors that are adjoint to each other in more than one fairly interesting way.
I already gave a hint of one solution to this puzzle in my previous comments.
Oh, sorry:
Mike Shulman said:
If you have one adjunction , you can compose it with any automorphism of (or ) to get a different adjunction .
And
Mike Shulman said:
Any automorphism of the object will induce an automorphism of the functor .
Right. That class of examples is easy to understand: I know a lot of nontrivial automorphisms of objects in cartesian closed categories. So thanks, you've solved my puzzle.
But I'm not instantly thinking of any automorphisms of functors like "the free group on a set" or "the free vector space on a set". Is that because those particular functors only have the identity automorphism, or is it just a failure of imagination on my part?
John Baez said:
That class of examples is easy to understand: I know a lot of nontrivial automorphisms of objects in cartesian closed categories.
Before we leave that class of examples, I want to mention a slight modification of them that I find even more compelling in terms of realizing that 'when you say " is left adjoint to ", a reasonable question is "how"'. In the case of and , there may be lots of adjunctions, but there is obviously a "canonical" one corresponding to the identity automorphism (which also happens to be the one that is a component of the family of such adjunctions that vary naturally in ).
However, suppose we pick two objects and of a cartesian closed category that happen to be isomorphic, but with no obvious or canonical isomorphism (e.g. and ). Then any isomorphism yields an adjunction between the functors and , but now there is no way to single out any one of those adjunctions as the obvious, canonical, or natural one.
John Baez said:
But I'm not instantly thinking of any automorphisms of functors like "the free group on a set" or "the free vector space on a set".
So, one first observation is that if we fix a particular adjunction , then there is an induced bijection between automorphisms of and automorphisms of ([[conjugate transformation of adjoints]]). So this question is equivalent to asking for automorphisms of the forgetful functors from groups or vector spaces to sets. In other words, is there a way to define, for every group , a bijection from the underlying set of to itself, which varies naturally with respect to group homomorphisms?
So then the map should work, right?
And when you put it this way, I bet this is the only one except for the identity.
Yes, I agree. And for vector spaces there should be multiplication by every nonzero scalar.
So what are these "twisted forms" of the famous adjunctions between and , or and , actually like? That's a vague question, but I don't feel I know what would happen if you used one of these twisted forms in a place where most people would use the usual one.
Well, I suppose it depends on the place. But we can describe them a bit more explicitly. E.g. if is a group and a set and we have a function , the corresponding group homomorphism under the twisted adjunction is the unique one that sends each generator to .
(This is fun, I've never really thought about these sorts of twisted adjunctions concretely before.)
That's very helpful. Now I'm wondering how it would affect more complicated constructions. For starters, the monad for groups has an evil twin based on this alternative adjunction. What are the algebras of that like?
Or maybe I should say "what's the Eilenberg-Moore category of that like?"
Or maybe it's just the forgetful functor from the Eilenberg-Moore category to that gets changed???
Well, the underlying functor of the twisted monad will be the same, but the unit and multiplication will be different. So whether or not a given function is an algebra will be a different condition, so the Eilenberg-Moore categories won't be identical.
However, I think the two monads should be isomorphic: the same automorphism we used for the twisting should induce an automorphism of the functor that is an isomorphism of monads from the ordinary one to the twisted one. And therefore, the two Eilenberg-Moore categories should be equivalent (even isomorphic).
Explicitly in the case of groups, is the set of reduced words in elements of and their formal inverses. The usual unit sends to the singleton word , while the twisted one would presumably send it to , and similarly for the multiplication. The automorphism presumably toggles the invertedness of letters in the words, e.g. sending to .
This is all interesting stuff!
In the context of trying to better understand what it means for a category to be cartesian closed, I would like to see how this works:
Mike Shulman said:
It's not. If you have one adjunction , you can compose it with any automorphism of (or ) to get a different adjunction .
To do this, the first strategy that comes to mind is as follows.
I read in "Elementary Categories, Elementary Toposes" (by McLarty) that
Adjunctions correspond exactly to isomorphisms of comma categories that commute with base functors.
To elaborate, if we have an adjunction involving functors and , then there is a unique functor isomorphism that commutes with the "base functors". Given such an isomorphism, we can then construct an adjunction. These two processes are inverse to one another.
So, given an automorphism of , perhaps we can try to construct an isomorphism of categories which commutes with base functors.
This is a fairly roundabout way to figure out what it means for a category to be cartesian closed! But it's a good way to build up familiarity with adjunctions.
The reason is that:
So a common exercise people do right around now is that one: define what it means for two right adjoints of a functor to be isomorphic, and check they're all (uniquely) isomorphic.
But it's much more rare to talk about what Mike and I were just talking about. (That's why we were talking about it.) We were talking about taking a fixed adjunction and 'twiddling' it to get other nonisomorphic adjunctions with the same underlying pair of functors.
John Baez said:
Right. That class of examples is easy to understand: I know a lot of nontrivial automorphisms of objects in cartesian closed categories. So thanks, you've solved my puzzle.
But I'm not instantly thinking of any automorphisms of functors like "the free group on a set" or "the free vector space on a set". Is that because those particular functors only have the identity automorphism, or is it just a failure of imagination on my part?
I see. Given the subsequent discussion with Mike and others, would it be fair to rephrase what you're looking for as non-trivial automorphisms of algebraic theories? If so, I can see that certain syntactic presentations of an algebraic theory might provide ways to do so.
Here I'm seeing an algebraic theory as an identity-on-objects, finite-product-preserving functor and an automorphism of it as a natural isomorphism. Such a natural isomorphism is the data of a syntactic context isomorphism , along with a proof of its naturality (using the syntactic presentation of the theory).
Another bunch of these examples should come from automorphisms of polynomial endofunctors (which induce automorphisms of their free monads) on Set, or on a slice Set/S.
I look forward to continuing in this thread! I'm currently planning to do so around the middle of next week.
In terms of figuring out what it means for a category to be cartesian-closed, I found personally that this made the most sense through the lens of representability?
In set theory, say, the universal property of is that functions can be “uncurried” to functions , and there’s also an inverse “currying” operation. This becomes an isomorphism between and , natural in .
But now this definition makes sense in any* category! So you can define an exponential object as one that satisfies being naturally isomorphic to . Of course, if this exists for _every_ , this defines a right adjoint to .
You can also get the “natural” maps by applying the yoneda lemma, I.e. following where the identities go. So the identity transposes to the evaluation map , which is the counit of the adjunction. The unit is the transpose of the identity , which is , defined by . Note that the latter may be familiar as the state monad present in Haskell!
*that’s locally small (I.e. modulo size issues).
Alright, I'm excited to be back and focusing on this for a bit! This feels like a good chance to become more comfortable with adjunctions.
I think I want to start with the "common exercise" mentioned above:
John Baez said:
So a common exercise people do right around now is that one: define what it means for two right adjoints of a functor to be isomorphic, and check they're all (uniquely) isomorphic.
I think the usual thing to do is this: check that any two right adjoints of a functor are naturally isomorphic to one another.
However, I am now wondering if people ever relax the notion of adjoint functors a bit, in a way that would potentially come with a corresponding relaxed notion of isomorphism between right adjoint functors.
Given functors and , we have that iff there is a functor isomorphism that commutes with base functors (which map down to ).
Inspired by this, one might try to define a generalized notion of adjunction:
Here, the unlabelled functors are the base functors.
This more relaxed notion would allow us to consider potential multiple right adjoints to some functor that aren't parallel to one another. Then we might want to say that two such right adjoints and are isomorphic if the below square commutes up to some natural isomorphism :
square 2
Anyways, the productive thing to do here is probably to focus on the standard exercise with the usual notion of adjunction. The above is mostly just for fun!
That being said, it does feel a little bit weird to insist that a right adjoint for a functor must go from to . It feels like there could potentially be many functors that are "basically" right adjoints, but just happen to map from to where and but or .
Next time, I'm planning to focus on the standard exercise!
David Egolf said:
I think the usual thing to do is this: check that any two right adjoints of a functor L are naturally isomorphic to one another.
It's not just any old natural isomorphism of functors: it's an isomorphism of right adjoints: i.e. a natural isomorphism that preserves the structure of being right adjoint to L. Even better, the isomorphism is unique. That's important, because it means there's no 'floppiness' here.
However, it's fine to start by showing what you wanted to show. The proof will inevitably lead you to these stronger statements.
Reading through this thread really helped me appreciate the merits of profunctors