Want to take part in these discussions? Sign in if you have an account, or apply for one below
Vanilla 1.1.10 is a product of Lussumo. More Information: Documentation, Community Support.
I am working on an entry cohesive homotopy type theory.
This started out as material split off from cohesive (infinity,1)-topos, but is expanding now.
Somehow from here I got to the adjective entry cohesive.
Hm, thanks. I had entirely forgotten about that entry. But it is useful to have! :-)
Todd Trimble had kindly sent me a bunch of useful comments, by email, on the entry cohesive homotopy type theory. I have meanwhile replied by email, but I hope we will eventually move that discussion to here.
Before we do so, maybe I should emphasize two points, so that you won’t be wondering:
The entry is labeled “under construction” for good reason. It’s a quick hack that I once wrote, somewhat hastily, for the sole purpose of having a way to point from various online discussions to a place where some ideas and in particular where the references listed there are collected.
A more recent writeup of the same kind of ideas which is much better as far as readability and completeness go is what I wrote with Mike Shulman at Quantum gauge field theory in Cohesive homotopy type theory (schreiber). That is still a rather brief account (necessarily so, because we wrote it subject to tight size restrictions) but probably anyone who feels like working on improving the nLab entry should look at that first.
While I am excited about having Todd join forces on working out and writing out these matters, unfortunately right these days I won’t be able to offer any substantial editing myself. For the next two months I’ll be teaching a master course twice a week, will need to follow some invitations to some conferences, and will be advising a master student, all of which requires its preparation time. I will already be struggling with coping with these mandatory tasks. But after two months from right now, I should again be able to, and indeed be more than happy to, join forces on cohesive homotopy type theory again!
Thanks, Urs. For anyone reading, I wrote Urs privately after reading the interview between him and David Corfield. A terrific interview, by the way, since it gave Urs an opportunity to give rather more personal feelings about his research, and I could just hear the excitement in his voice, and that excitement began to rub off. It got me wanting to look a little more closely into what he and Mike have been up to, and since the interview pointed me to cohesive homotopy type theory, I started there, and immediately had questions which I fired off to Urs, who answered very nicely. Some of his answers should appear shortly. He recommended to me particularly section 2 of his paper with Mike as something that might be helpful to me.
I view my own role in this as something of “guinea pig” – if I can understand this material, then so can a lot of people. Any active input from me would mostly come from selfish interest in trying to make things clear to myself, and leaving a record of any success I have. Anyone who would like to help (e.g., help me understand, help improve articles, etc.) is of course very welcome, although of course I understand that people are busy.
I read the interview and was also inspired to read some nLab pages and it became clear I’m not qualified to understand it. I still haven’t mastered adjoint functors (!).
Does that completely disqualify me from ever being able to understand cohesion? Could it be described for finite sets using even lower tech?
It would fun to run an online seminar when people have time, with different levels of expertise.
Eric, working through a 4-term chain of adjoints provides a good way to understand adjoint functors. If $U: Top \to Set$ is the forgetful functor from locally connected topological spaces to sets, there is a chain
$(\pi_0, Dis, U, CoDis),$where $\pi_0$ sends a space to its set of components, $Dis$ sends a set to the space with those points and the discrete topology, and likewise $CoDis$ for the codiscrete topology.
So starting along the chain, there is an equivalence between
set functions from (set of components of space $X$) to (set $A$)
and
continuous functions from (space $X$) to (space $Dis A$).
Putting it crudely, because $Dis A$ is so broken up, it’s hard to find continuous maps to it. In fact you have to use maps which are locally constant, all points in the same component of $X$ are sent to a single element of $A$.
[ after posting I see that the following reply overlaps with David’s reply above ]
One does need to be familiar with adjoint functors and related concepts in order to get an accurate idea of the notion of cohesion, yes.
But of course intuitive approximations to basic ideas can be given in words. That will give an idea of the motivations and make plausible the nature of the applications, at least.
There is a bit of such a intuitive discussion in the Idea-section at cohesive topos. But maybe we should break that further down to make it useful for laymen.
I can add more to that Idea-section. Let me know if the following kind of text is helpful:
A notion of cohesion on a collection $\mathbf{H}$ of spaces is supposed to be a means to specify how points in any space $X \in \mathbf{H}$ “hang together” or “cohere”, analogous to how water molecuses in a droplet of whater are held together by cohesion. A basic example arises for topological spaces or manifolds: here the “droplet of water” is an open ball of points. Indeed, one of the central examples of cohesive spaces is that of smooth spaces and these are spaces that can be probed by smooth open balls, such that these smooth open balls are the elementary “cohesive droplets” out of which any smooth space is built.
That intuition should be evident enough. The question is which formal axioms capture this droplet-intuition accurately and efficiently. The crucial insight of Bill Lawvere is that a rather minmalistic set of axioms already does the job:
there has to be an assignment $\Pi : \mathbf{H} \to Set$ that sends every cohesive space $X$ to its set of cohesively connected components. For instance a single open ball as above, an elementary droplet, is sent to the set $\{*\}$ with a single element.
We should be entitled to regard every set $S \in Set$ trivially as a cohesive space in two ways:
either we regard every element in $S$ as an atomic cohesive droplet itself, cohesively disconnected to any other point. Call the resulting cohesive space $Disc(X)$. For smooth cohection $Disc(X)$ is simply the discrete manifold being the disjoint union of one point per element in $S$.
or, at the opposite extreme, we regard all the elements in $S$ as being cohesively connected, hence regard all of $S$ itself as one single big cohesive droplet. We write $coDisc(X)$ for $S$ regarded as a cohesive space this way, because in the context of topological cohesion this is the codiscrete space on the given set.
The collection of discrete and codiscrete cohesive spaces should sit nicely inside the collection of all cohesive spaces, essentially in just the obvious way that one intuitivey expects. For instance cohesive maps between two discretely cohesive spaces should be simply maps between the underlying sets, and so on.
And the notion of “discrete” exhibited by the collection of discrete objects has indeed to be compatible with the notion of “cohesive” as seen by that map $\Pi$ above. This is just the evident consistency condition which you are probably assuming anyway: for instance if $Disc(S)$ is a set regarded as a discrete cohesive space, then $\Pi(Disc(S))$, which is supposed to be its set of cohesively connected points, should be just $S$ itself, since no point in $Disc(S)$ is supposed to be cohesively connected to any other.
In particular $\Pi(Disc(*))$ should be the point again.
That’s essentially it, already. It sounds very simple (hopefully) and indeed it is very simple. Once you know the notion of an adjoint functor it is pretty straightforward to formalize the above text in terms of that notion.
The interesting observation is that simple as this idea is, it has very powerful consequences … once it is formalized not just with adjoint functors but with adjoint (infinity,1)-functors.
Could this be material for one of your ’motivation’ pages? I think they’re a great idea, especially the motivation for sheaves….
Okay, good idea. I did so and created motivation for cohesive toposes. Let’s move any further chat about this non-technical discussion to the corresponding thread.
Is the following roughly right:
Since cohesion is axiomatized in terms of the two monads $\sharp : \mathbf{H} \to \mathbf{H}$ and $\flat : \mathbf{H} \to \mathbf{H}$…
Question: once written in Coq, this is the same kind of monad construction that the Haskell community is all excited about. Right?
The notoriously advertized monads in Haskell are just monoids in endomorphisms on the ambient type universe, right?
To Bob Harper’s Of course ML has monads! we can add Of Course Coq has $\infty$-monads!, and it’s the same sense of “programming language has monads”-statement, right?
I mean, I am guessing the answer is: Yes of course. I just want a sanity check, because I have trouble reading the online texts on the Haskell monads. I am a reader in the blind spot: these texts typically spend two pages telling the reader that he will find the notion of monad hard to understand, only to then plunge into Haskell code without any explanation of what that means. For me it would have to be the other way around :-)
Well, I am getting there. But any helpful comment would be appreciated anyway.
Yes, the reflections $\sharp$ and $\Pi$ are, in particular, monads on the type universe. They’re fancier than Haskell monads, of course, since the type system of Coq has dependent types — which was what caused all the issues with reflective subfibrations etc. But when you restrict them down to the non-dependent world, they look like Haskell monads (albeit of a very special kind, namely idempotent monads).
There’s an important contrast in that most Haskell monads are defined in terms of the preexisting type theory, rather than axiomatized as $\sharp$ is. That isn’t universally true, though, for instance the Haskell monad IO
is basically a part of the type system put in axiomatically. (I’ve also speculated that it might be useful for a programming-language-like type theory to have a $\sharp$-like monad playing the role of the codiscrete objects in the effective topos, as an alternative way to deal with the computability issues that people often recourse to setoids for, but I’ve never gotten around to figuring out to what extent that might be true.)
Additionally, a big part of the power of monads in Haskell is the language support for them. Any strongly typed language “has monads” in the sense that its type system admits some functors that are monads, like Haskell’s Reader and Writer and State. If it has parametric polymorphism, then you can define each of those monads as a parametrized type family. The additional thing that languages like Haskell, ML, and Coq add is an ability to abstract out the structure of a monad (the multiplication and unit maps, and in Coq’s case the axioms they satisfy) and describe it as part of the type. Haskell does it with type classes, ML with modules, while Coq has both type classes and modules (producing vast amounts of confusion for someone like me trying to figure out which one to use!). Haskell also has some special syntactic sugar for monads, which (with all due respect to Bob Harper) I personally think is kind of nice. And Coq’s very flexible mixfix-notation-definition facility can more or less mimic what Haskell has built in.
Thanks! Great.
One last question for tonight (local time):
Any strongly typed language “has monads”
Hm, so in Coq, the way you coded it at least, the crucial bit is the Type classifier, the internal incarnation of the type universe, which allows to explicitly give the endomorphism of the monad
$\sharp : Type \to Type \,.$Not all these languages will have such a type of types, right?
Yes, the existence of $Type$, or more particularly its consequence that we can talk about “functions from types to types”, is what I referred to above as “parametric polymorphism”. Haskell doesn’t have a “type classifier” like Coq does, but we can still define a “function from types to types” by defining a “type that depends on a type variable” — this is how you do a monad. What I meant by “any strongly typed language has monads” was that even without such polymorphism, there still “exist” monads on the category of types, such as those one constructs in Haskell — it’s just that you won’t be able to define the monad as a single entity within the language syntax.
Yes, the existence of Type, or more particularly its consequence that we can talk about “functions from types to types”, is what I referred to above as “parametric polymorphism”.
Ah, thanks, I never knew what that term meant. So “parametric” for “may vary/depend over the base/context” and “polymorphism” since there is more than one type? Is that just what it means?
Maybe we can put a note into parametric polymorphism.
Done.
Ah, I see. Thanks.
I have updated the links to Mike’s code at cohesive homotopy type theory, alerted by this discussion
1 to 18 of 18