Recovering an equivalence from univalence in cubical type theory

Skip to first unread message

Michael Shulman

Sep 18, 2019, 11:42:50 AM9/18/19
Let Equiv(A,B) denote the type of half-adjoint equivalences, so that
an e:Equiv(A,B) consists of five data: a function A -> B, a function B
-> A, two homotopies, and a coherence 2-path. Using univalence, we
can make e into an identification ua(e) : A=B, and then back into an
equivalence coe(ua(e)) : Equiv(A,B), which is typally equal to e.

Now we might wonder whether coe(ua(e)) might be in fact *judgmentally*
equal to e; or at least whether this might be true of some, if not
all, of its five components. In Book HoTT this is clearly not the
case, since univalence is posited as an axiom about which we know
nothing else. But what about cubical type theories? Can any of the
components of an equivalence e be recovered, up to judgmental
equality, from coe(ua(e))? (My guess would be that at least the
function A -> B, and probably also the function B -> A, can be
recovered, but perhaps not more.)

Licata, Dan

Sep 18, 2019, 12:15:23 PM9/18/19
to Michael Shulman,
In ABCFHL, even the function fst(coe(ua(e))) : A -> B is only path-equal to fst(e) : A -> B. If I recall correctly, the issue is that composition in the Glue type that you use to implement ua doesn’t judgementally give you f; instead there is some morally-the-identity-composition (that would cancel with regularity) that gets stuck in. This is because the general algorithm for composition in the glue type has to coerce in the “base” of the glue type (B in Glue [alpha -> T] B), which in the case of ua(e) = Glue [x = 0 -> (A,e), x=1 -> (B,id)] B is degenerate in x, but in general might not be.

I don’t recall any cubical type theories solving this, but I don’t remember the details of all of the other variations that have been explored well enough to say for sure.
> --
> You received this message because you are subscribed to the Google Groups "Homotopy Type Theory" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to
> To view this discussion on the web visit

Michael Shulman

Sep 18, 2019, 3:23:32 PM9/18/19
to Licata, Dan,
Thanks, that's very interesting!

The reason I ask is that I was wondering to what extent the type "A=B"
can be regarded as "a coherent definition of equivalence" alongside
half-adjoint equivalences, maps with contractible fibers, etc. Of
course in some sense it is (even in Book HoTT), since it's equivalent
to Equiv(A,B); but the question is how practical it is -- for
instance, is it reasonable when doing synthetic homotopy theory to
state all equivalences as equalities?

In practice, the way we often construct equivalences is to make them
out of a quasi-inverse pair, and all the standard definitions of
equivalence have the nice property that they remember the two
functions in the quasi-inverse pair judgmentally. My experience with
the HoTT/Coq library is that this property is very useful, which is
one reason we state equivalences as equivalences rather than making
use of univalence to state them as equalities (another reason is that
it avoids "univalence-redexes" all over the theory). Half-adjoint
equivalences have the additional nice property that they remember one
of the homotopies judgmentally, and if you're willing to prove the
coherence 2-path by hand then they can be made to remember both of the
homotopies; this seems to be much less useful than I thought it would
be when we made the choice to use half-adjoint equivalences in the
HoTT/Coq library, but it has proven useful at least once.

So I was wondering to what extent equality of types in cubical type
theory has properties like this. It sounds from what you say like the
answer is "not much". This makes the lack of regularity seem like a
rather more serious problem than I had previously thought.
> To view this discussion on the web visit

Evan Cavallo

Sep 18, 2019, 4:36:07 PM9/18/19
to Michael Shulman, Licata, Dan,
The definition of univalence for BCH cubical sets in does satisfy the property that fst(coe(ua(e))) = fst(e) : A -> B exactly. They note (Remark 7) that the definition can also be adjusted so that transporting backwards along the equivalence gives the inverse function one can extract from e.

Roughly, the problem Dan describes in ABCFHL---that the B in Glue [alpha -> T] B can also depend on the direction of coercion x---can be avoided in the BCH analogue of Glue by simply demanding that B is degenerate in x. The restricted operation is still sufficient to prove univalence. We can't make sense of this in a structural cubical set model because the property of being degenerate in a given variable isn't stable under diagonal substitution.


2019年9月18日(水) 15:23 Michael Shulman <>:

Anders Mortberg

Sep 19, 2019, 4:21:10 AM9/19/19
to Evan Cavallo, Michael Shulman, Licata, Dan,
All variations of CCHM that I know suffer from the same issue as
ABCFHL for the reasons explained by Dan and Evan. Just as in the
cartesian setting fst(coe(ua(e))) reduces to fst(e) composed with some
"morally-the-identity-compositions" that don't disappear
automatically. For example, in Cubical Agda fst(coe(ua(e))) reduces to
fst(e) composed with a coe in a constant family that we have to take
care of manually (we write transport for coe):

In my experience this is rarely a problem in practice though. It's a
bit annoying to insert these corrections manually in proofs, but it
happens quite rarely and when doing concrete computations with closed
types they disappear automatically. One difference I've noticed when
doing synthetic homotopy theory in cubical type theory compared to
HoTT is that we use equalities and univalence a lot more. The fact
that we sometimes need to insert these correction terms is largely
compensated by all of the useful primitives of cubical type theory
that we have for working with equalities that are not available for
equivalences (path abstraction/application, composition...).

> To view this discussion on the web visit
Reply all
Reply to author
0 new messages