Word count: 1620
What’s isoToEquiv?
It’s a standard fact in (higher) category theory and homotopy theory that any equivalence of categories (homotopy equivalence) can be improved to an adjoint equivalence of categories (strong homotopy equivalence). Adjoint equivalences (and strong homotopy equivalences) are “more structured” notions in the sense that the data of an adjoint equivalence is contractible if inhabited.
In Homotopy Type Theory, the notion of (half) adjoint equivalence lets us split the type into structure and property: the structure is a function , and the property is “being an equivalence”. This is in contrast to the type of isomorphisms , which are the structure of maps and together with homotopies and . Notably, the type of “isomorphism data” for a particular function is not always a proposition, whereas being an equivalence is.
Recently, I’ve been working on the 1Lab, an open-source, formalised
and explorable resource for univalent mathematics. This means that,
among other things, I had to write an explanation for the proof that
isomorphisms can be made into equivalences, i.e., the map
isoToEquiv
. Our proof comes essentially from the Cubical Agda
library, where it is presented with a single comment:
-- Any iso is an equivalence
That’s helpful. So where does it come from?
Where it comes from
Since I know where I got it from, I knew where to start looking. On
the Git log of the Cubical Agda library, we find that the Cubical Agda
version of isoToEquiv
was added in October 31, 2018 by Anders
Mörtberg, with the same handy comment and no attribution.
It’s reasonable to assume, then, that Mörtberg proved it himself right then and there. However, the HoTT book, published in 2013, already has a proof that any isomorphism data can be “strengthened” into equivalence data, so it seems unreasonable to assume that the first time this was formalised was 2018. Fortunately, we’re not dead in the water.
The Cubical Agda implementation of isoToEquiv
comes from cubicaltt,
an older, prototype implementation of cubical type theory. Looking at
that Git history, we find that it was added by.. Mörtberg again! This
time on January 4, 2016, over two years prior. Again, there is no
attribution, and this is the oldest implementation of cubical type
theory, so it’s reasonable to assume that this is where the proof
originates, right? Wrong.
The name “gradLemma”
If you look at the commit that originally introduced a proof that isIso f → isEquiv f
to cubicaltt, you’ll see that the map wasn’t named
isoToEquiv
, it was named gradLemma
. This name is especially
unhelpful, quoting Mike Shulman:
Generally there are two ways that theorems and lemmas are named in mathematics: descriptively (giving some information about what the theorem says, e.g. “the intermediate value theorem”) and attributively (giving credit to whoever proved it, e.g. “Cauchy’s theorem”). Whatever your feelings about the relative merits of the two, the name “grad lemma” achieves neither: it conveys no information about what the lemma says, nor does it give any credit to the people it refers to, instead depersonalizing them as “some nameless graduate students”. Moreover it is even factually incorrect, since some of the people in question were actually postdocs at the time.
Shulman is right! The name is depersonalizing, and it does not credit the people who originally came up with the proof. So who are they? Where does this proof come from? Well, reading the rest of those GitHub issues, we learn two things:
Mörtberg did not come up with the proof out of thin air, though as far as I can tell he was the first to adapt it to a direct cubical argument;
The name “gradLemma” comes from UniMath.
UniMath
UniMath (univalent mathematics) is the second oldest library for
Homotopy Type Theory in a proof assistant, and the oldest actively
maintained. It was, in fact, originally written by Voevodsky himself!
Thus, it comes with its own proof of isoToEquiv
, which we find in the
massive file Foundations/PartA.v
:
(** This is kept to preserve compatibility with publications that use the
name "gradth" for the "grad theorem". *)
Definition gradth {X Y : UU} (f : X -> Y) (g : Y -> X)
(egf: ∏ x : X, g (f x) = x)
(efg: ∏ y : Y, f (g y) = y) : isweq f := isweq_iso f g egf efg.
Good to know that at least the theorem isn’t called “grad theorem”
anymore, but there are still many references to gradth
in the
codebase. By the way, the name isweq_iso
? Changed by Mörtberg! It’s
him we have to thank for introducing the useful name isweq_iso
, and
the corresponding isoToEquiv
. Thank goodness we don’t call it “grad
theorem” anymore.
But wait, the name “grad theorem” refers to graduate students.. And graduate students are people.. So who are these people? Let’s keep digging. The README to UniMath mentions that it is based on a previous library, Foundations:
The UniMath project was started in 2014 by merging the repository Foundations, by Vladimir Voevodsky (written in 2010), […]
I’ll cut to the chase: The history of gradth
ends with foundations;
It’s been there since the initial commit. This means that the trail
has run cold. Voevodsky certainly wasn’t a grad student in 2010, he was
a fields medalist! Mörtberg didn’t name the theorem either. And so, I
kept digging. I started looking for sources other than code: talks,
papers, theses, etc.
An unlikely source
I found a handful of papers (here are some) which refer to this result as “the graduate theorem”, but none of them mentioned who the graduate students are. However, I did find a source, however unlikely.
In 2011, Mike Shulman wrote a series of posts introducing the -category café to the ideas of homotopy type theory. In this post, Shulman mentions the notion of equivalence following Voevodsky, but he also mentions the notion of half-adjoint equivalence, and mentions where it comes from:
This other way to define should be attributed to a handful of people who came up with it a year ago at an informal gathering at CMU, but I don’t know the full list of names; maybe someone else can supply it.
Now, as Shulman says, he does not know the full list of names. However, Steve Awodey does, as is stated in a comment:
Let’s see: Mike Shulman, Peter Lumdaine, Michael Warren, Dan Licata – right? I think it’s called “gradlemma” in VV’s coq files (although only 2 of the 4 were actually still grad students at the time).
However, note the use of “right?” - this comment isn’t a primary source (Awodey wasn’t involved in coming up with the graduate lemma), and it’s not even certain on top of that. However, you know what would be a primary source?
Someone who was there.
And you know who follows me on twitter?
The Complete History of isoToEquiv
With this, we have a full picture of the history of isoToEquiv, albeit with a handful of details still fuzzy. Here’s a timeline:
(2010-??-??) Mike Shulman, Peter Lumsdaine, Michael Warren and Dan Licata come up the notion of half-adjoint equivalence in homotopy type theory, and adapt a standard result from category theory to show that any isomorphism improves to a half-adjoint equivalence. This is the origin of
isoToEquiv
; The “grad” in “grad theorem” refers to Licata and Lumsdaine, who were graduate students at the time.(2010-10-04) Vladimir Voevodsky makes the first commit of Foundations, where
isoToEquiv
is present - under the namegradth
. Nowhere in the repository, its entire history, or anywhere in Voevodsky’s works are the grads from the th mentioned. There are no git logs that can trace the history ofisoToEquiv
before this point.(2014-03-21) Foundations becomes UniMath, and the name
gradth
is kept. This is the first “leap” in the history ofisoToEquiv
, the first non-trivial historical path.(2016-01-04) Mörtberg adapts the proof of
gradth
from UniMath to his experimental implementation of Cubbical Type Theory, which at the time was brand new. There, the result is calledgradLemma
.As far as I can tell, this is the origin of the code for
isoToEquiv
that can still be found, alive and kicking, in the Cubical library (and the 1lab) to this day. I’ve emailed Mörtberg to set the record straight, but I’m writing this at 11:00pm on a Friday, so I still haven’t heard back. I’ll update the post when (and if) he replies.(2017-08-11) Mike Shulman files an issue in the cubicaltt repository complaining about the name
gradLemma
. Mörtberg addresses the issue by renaming it toisoToEquiv
.(2018-10-30) Mörtberg ports
isoToEquiv
from cubicaltt to Cubical Agda, which is where I stole it from.
I am in no position to speculate as to why Voevodsky did not credit
Licata, Lumsdaine, Shulman and Warren with gradth
, or why he chose a
name that mentions the existence of graduate students without naming the
students. It feels like a great misstep in the history of our community
that such a fundamental result was never properly accredited. While the
Wikipedia page for Homotopy Type Theory has mentioned Licata, Lumsdaine,
Shulman and Warren as the authors of the proof since 2014, none of
the primary sources I consulted - the Foundations repo, the UniMath
repo, the cubicaltt repo, the Cubical Agda repo, or any of the
associated papers - do.
I’m glad the name gradth
is no longer in widespread usage (outside of
UniMath, which has neglected to remove the deprecated name). If we were
to name it after people, it should be called the
Licata-Lumsdaine-Shulman-Warren Theorem, and that’s unwieldy. Let’s
stick with isoToEquiv
, but acknowledge where it comes from.
I know this post isn’t what I usually write - I’m not a historian, after all - so thanks for reading it. I wanted to chronicle how I spent the afternoon and evening of a Friday in December 2021: Chasing the ghost of proper attribution. I’m probably not going to write any technical content on this blog for a while yet; I might write a short announcement of the 1lab, which otherwise takes up all of my spoons.