univalencelib/univalence.ktt
The univalence axiom: the type of types equivalent to A is contractible.
3-- Univalence, in the form: the type of types equivalent to A is contractible.
4-- The proof glues A along the given equivalence; unglue is an equivalence.
17 \b ->
21 (glue [i = 0 -> c0.1, i = 1 -> c1.1] (hcomp j A [i = 0 -> c0.2 (~j), i = 1 -> c1.2 (~j)] b),
22 \j -> hfill k A [i = 0 -> c0.2 (~k), i = 1 -> c1.2 (~k)] b (~j)) in
23 (ctr, \v l ->
24 (glue [i = 0 -> (equivCtrPath (idEquiv A) b v l).1, i = 1 -> (equivCtrPath w.2 b v l).1]
25 (hcomp j A [i = 0 -> (equivCtrPath (idEquiv A) b v l).2 (~j),
26 i = 1 -> (equivCtrPath w.2 b v l).2 (~j),
27 l = 0 -> hfill k A [i = 0 -> c0.2 (~k), i = 1 -> c1.2 (~k)] b j,
28 l = 1 -> v.2 (~j)] b),
29 \j -> hfill k A [i = 0 -> (equivCtrPath (idEquiv A) b v l).2 (~k),
30 i = 1 -> (equivCtrPath w.2 b v l).2 (~k),
31 l = 0 -> hfill m A [i = 0 -> c0.2 (~m), i = 1 -> c1.2 (~m)] b k,
32 l = 1 -> v.2 (~k)] b (~j)))
35 ((A, idEquiv A), \w i -> (GlueI w i, (unglueI w i, unglueIsEquivI w i)))