We will now recall the definition of an equivalence as a map having contractible fibers and then derive an operation for contractible and Kan types. To enhance readability we define the following types using variable names:
$$\begin{aligned} {{\mathrm{\mathsf {isContr}}}}A&= \varSigma (x : A)\, \varPi (y : A) \, \mathsf {Path}_{A}\,x\,y\\ \mathsf {fib}\,t\,v&= \varSigma (x : A) \, \mathsf {Path}_{B}\,(t \, x)\,v\\ {{\mathrm{\mathsf {isEquiv}}}}t&= \varPi (y : B) \, {{\mathrm{\mathsf {isContr}}}}(\mathsf {fib}\,t\,y)\\ \mathsf {Equiv}\,A\,B&= \varSigma (t : A \rightarrow B) \, {{\mathrm{\mathsf {isEquiv}}}}t \end{aligned}$$
where A and B are types, \(t : A \rightarrow B\), and v : B (all in an ambient context \(\varGamma \)). This can of course also be formally written name-free: for example, the first type can be written as \(\varSigma A \varPi A\mathsf {p}\, (\mathsf {Path}_{A\mathsf {p}\mathsf {p}} \mathsf {q}\mathsf {p}~\mathsf {q}) \in {{\mathrm{Ty}}}(\varGamma )\) and the second one as \(\varSigma A\mathsf {p}\, (\mathsf {Path}_{B\mathsf {p}\mathsf {p}} \,\mathsf {app}(t\mathsf {p}\mathsf {p},\mathsf {q})\,\mathsf {q}\mathsf {p}) \in {{\mathrm{Ty}}}(\varGamma .B)\).
Definition 2
A (uniform) acyclic-fibration structure on a type \(A \in {{\mathrm{Ty}}}(\varGamma )\) is given by an operation \(\mathsf {ext}\) uniformly filling any tube, that is, given \(\rho \in \varGamma (I)\), \(J \subseteq I\), a J-tube \(\mathbf {u}\) in \(A \rho \), we have
$$\begin{aligned} \mathsf {ext}\,\rho \,[J\mapsto {\mathbf {u}}] \in A \rho \end{aligned}$$
extending \(\mathbf {u}\) (so \((\mathsf {ext}\,\rho \,[J\mapsto \mathbf {u}]) (i / a) = u_{ia}\) for \((i,a) \in J \times \{0,1\}\)) and for \(f {:}K \rightarrow I\) defined on J we have
$$\begin{aligned} (\mathsf {ext}\,\rho \,[J\mapsto {\mathbf {u}}]) f = \mathsf {ext}\,(\rho f)\,[J f \mapsto \mathbf {u}f]. \end{aligned}$$
We denote the set of acyclic-fibration structures on \(A \in {{\mathrm{Ty}}}(\varGamma )\) by \({{\mathrm{Contr}}}(\varGamma ,A)\).
Note that given \(\mathsf {ext}\in {{\mathrm{Contr}}}(\varGamma ,A)\) and \(\sigma {:}\varDelta \rightarrow \varGamma \) we obtain \(\mathsf {ext}\, \sigma \in {{\mathrm{Contr}}}(\varDelta , A\sigma )\) via \((\mathsf {ext}\,\sigma )\, \rho = \mathsf {ext}\, (\sigma \rho )\).
Lemma 1
Given a type A in \({{\mathrm{Ty}}}(\varGamma )\) we have maps
with \(\varphi \, {\langle \psi _0,\psi _1 \rangle } = \mathrm {id}\). Moreover, these maps are natural: if \(\sigma {:}\varDelta \rightarrow \varGamma \), then \((\varphi \,\kappa \,p) \sigma = \varphi \,(\kappa \sigma )\,(p \sigma )\), \((\psi _0\,\mathsf {ext}) \sigma = \psi _0\,(\mathsf {ext}\,\sigma )\), and \((\psi _1\,\mathsf {ext}) \sigma = \psi _1\,(\mathsf {ext}\,\sigma )\).
Proof
Let \(\kappa \in {{\mathrm{Fill}}}(\varGamma ,A)\) and \(p \in {{\mathrm{Ter}}}(\varGamma , {{\mathrm{\mathsf {isContr}}}}A)\). To define \(\varphi \,\kappa \,p \in {{\mathrm{Contr}}}(\varGamma ,A)\), let \(\rho \in \varGamma (I)\) and \(\mathbf {u}\) a J-tube in A over \(\rho \). We take a fresh dimension i and form an open box with the center of contraction \(p\rho .1\) at the closed end and \(\mathbf {u}\) at the open end, connected by \(p\rho .2\); filling this gives us an extension of \(\mathbf {u}\). Formally:
$$\begin{aligned} \varphi \,\kappa \,p\,\rho \,[J\mapsto {\mathbf {u}}] = \bar{\kappa }\,(\rho s_i)\,[J \mapsto (p \rho .2 \, \mathbf {u}) \mathop {\varvec{@}}i; (i,0) \mapsto p\rho .1] \end{aligned}$$
where \((p\rho .2 \, \mathbf {u}) \mathop {\varvec{@}}i\) is the J-tube given by \((p(\rho (j / c)).2\, u_{jc}) \mathop {\varvec{@}}i\) at side \((j,c) \in J \times \{0,1\}\).
Conversely, let \(\mathsf {ext}\in {{\mathrm{Contr}}}(\varGamma ,A)\). To get a Kan structure we first fill the missing lid and then the interior, that is, we set
$$\begin{aligned}&\psi _0\,\mathsf {ext}\,\rho \,[J \mapsto \mathbf {u}; (i,0) \mapsto u_{i0}] \\&\quad =\mathsf {ext}\,\rho \,[J\mapsto \mathbf {u}, (i,0) \mapsto u_{i0}, (i,1) \mapsto \mathsf {ext}\,\rho (i / 1)\,[J\mapsto \mathbf {u}(i / 1)]], \end{aligned}$$
and likewise for the other filling. To define \(\psi _1\,\mathsf {ext}\,\rho \) we choose \(\mathsf {ext}\,\rho \,[]\) as center of contraction, which is connected to any \(a \in A \rho \) by the path
$$\begin{aligned} \langle i \rangle \, \mathsf {ext}\,(\rho s_i)\,[(i,0) \mapsto \mathsf {ext}\,\rho \,[], (i,1) \mapsto a]. \end{aligned}$$
One can show uniformity, naturality, and that \(\langle \psi _0,\psi _1 \rangle \) is a section of \(\varphi \). \(\square \)
Next we will define an operation \({{\mathrm{\mathsf {G}}}}\) which allows us to transform an equivalence into a “path”.Footnote 1 This operation was introduced in [4] and motivated the “glueing” operation of [3]. We will define it in such a way that the associated transport of this path is given by underlying map of the equivalence.
A useful analogy is provided by the notion of pathover, a heterogeneous path lying over another path. We shortly review this notion from type theory with inductive equality. Given a type family \(P{:}T \rightarrow \mathsf {U}\) and a path \(p{:}x=_T y\) with its transport function \(p_*{:}Px\rightarrow Py\). If Px and Py are different types, there is no ordinary path connecting \(u {:}Px\) and \(v {:}Py\). Therefore the pathovers connecting u and v are taken to be the paths of type \(p_* u =_{Py} v\) (in the fiber Py).
We apply the same idea to \({{\mathrm{\mathsf {G}}}}t\), which should be a path from A to B in \(\mathsf {U}\) such that transport along this path is \(t {:}A\rightarrow B\). For the type family P we take \(\mathrm {id}_{\mathsf {U}}\) such that A and B indeed are fibers of P. Intuitively, a path from A to B is a set of heterogeneous paths between elements a of A and b of B. We want t to be the transport function along the path from A to B. By analogy we would take \({{\mathrm{\mathsf {G}}}}t\) to be the set of pathovers connecting \(a{:}A\) and \(b{:}B\) defined as the set of paths in B connecting t a and b. However, since we must be able to recover the startpoint a, we define \({{\mathrm{\mathsf {G}}}}t\) to be the set of pairs consisting of \(a{:}A\) and a path connecting t a and b. (Unlike a, the endpoint b can be recovered from the pathover and need not be remembered.)
With the above informal explanation in mind, we define the operation \({{\mathrm{\mathsf {G}}}}\) first on cubical sets and then explain how it lifts to Kan structures. It satisfies the rules:
The latter rule expresses stability under substitutions. Here and below \({{\mathrm{\mathsf {G}}}}\) (and \(\mathsf {ug}\) below) have A and B as implicit arguments.
Definition 3
Assume the premiss of (1) and define for every \(\rho \in \varGamma (I)\):
$$\begin{aligned} {\begin{matrix} ({{\mathrm{\mathsf {G}}}}t) (\rho , 0) &{}= A \rho , \text { with restrictions as in { A},}\\ ({{\mathrm{\mathsf {G}}}}t) (\rho , 1) &{}= B \rho , \text { with restrictions as in { B}, and }\\ ({{\mathrm{\mathsf {G}}}}t) (\rho , i) &{}= \{ (u,v) \mid u \in A (\rho -i) \wedge v \in B \rho \wedge v (i / 0) = t (\rho -i)\, u\}. \end{matrix}} \end{aligned}$$
(3)
In the last case \(\rho \mathrel {\#}i\), so \(\rho = (\rho - i) s_i\). The restrictions in the latter case are a little involved. We need \((u,v)f \in ({{\mathrm{\mathsf {G}}}}t) (\rho f, f(i))\) for \(f {:}J \rightarrow I\). If \(f(i)=0\), we take \((u,v)f = u s_i f\), indeed in \(A\rho f\). If \(f(i)=1\), we take \((u,v)f = vf\), indeed in \(B\rho f\). Finally, if f is defined on i, we have \(f - i {:}J - {f (i)} \rightarrow I-i\) and we define \((u,v) f = (u (f-i), v f)\), which is indeed correct as \((\rho -i)(f-i) = \rho f -f(i)\) under the given assumptions. It can then be checked that the restrictions satisfy the presheaf requirements. This concludes the definition of \({{\mathrm{\mathsf {G}}}}t\).
We have a map \(\mathsf {ug}\in {{\mathrm{Ter}}}(\varGamma * \mathbb {I}.{{\mathrm{\mathsf {G}}}}t, B \mathsf {p})\) given by:
The fact that a map \(t \in {{\mathrm{Ter}}}(\varGamma ,A \rightarrow B)\) is an equivalence can be represented as an element of \({{\mathrm{Contr}}}(\varGamma .B, \mathsf {fib}\,t)\). By Lemma 1 this is the case whenever A and B have Kan structures and the fibers of t are contractible.
Theorem 1
The operation \({{\mathrm{\mathsf {G}}}}\) can be lifted to Kan structures provided t is an equivalence, i.e., there is an operation \({{\mathrm{\underline{{{\mathrm{\mathsf {G}}}}}}}}\) which given the premiss of (1) and \(\kappa _A \in {{\mathrm{Fill}}}(\varGamma ,A)\), \(\kappa _B \in {{\mathrm{Fill}}}(\varGamma ,B)\), and \(\mathsf {ext}\in {{\mathrm{Contr}}}(\varGamma .B, \mathsf {fib}\,t)\) returns \({{\mathrm{\underline{{{\mathrm{\mathsf {G}}}}}}}}\,\kappa _A\,\kappa _B\,\mathsf {ext}\in {{\mathrm{Fill}}}(\varGamma *\mathbb {I},{{\mathrm{\mathsf {G}}}}t)\). This operation satisfies
$$\begin{aligned} ({{\mathrm{\underline{{{\mathrm{\mathsf {G}}}}}}}}\,\kappa _A\,\kappa _B\,\mathsf {ext}) [0]&= \kappa _A\\ ({{\mathrm{\underline{{{\mathrm{\mathsf {G}}}}}}}}\,\kappa _A\,\kappa _B\,\mathsf {ext}) [1]&= \kappa _B\\ ({{\mathrm{\underline{{{\mathrm{\mathsf {G}}}}}}}}\,\kappa _A\,\kappa _B\,\mathsf {ext}) (\sigma * \mathrm {id})&= {{\mathrm{\underline{{{\mathrm{\mathsf {G}}}}}}}}\,(\kappa _A \sigma )\,(\kappa _B \sigma )\,(\mathsf {ext}\,(\sigma \mathsf {p},\mathsf {q})) \end{aligned}$$
where \(\sigma {:}\varDelta \rightarrow \varGamma \).
Proof
To define \(({{\mathrm{\underline{{{\mathrm{\mathsf {G}}}}}}}}\,\kappa _A\,\kappa _B\,\mathsf {ext}) (\rho ,r)\) for \((\rho , r) \in (\varGamma * \mathbb {I}) (I)\) we argue by cases. For \(r = 0,1\) we take:
$$\begin{aligned} ({{\mathrm{\underline{{{\mathrm{\mathsf {G}}}}}}}}\,\kappa _A\,\kappa _B\,\mathsf {ext}) (\rho ,0)&= \kappa _A \, \rho \\ ({{\mathrm{\underline{{{\mathrm{\mathsf {G}}}}}}}}\,\kappa _A\,\kappa _B\,\mathsf {ext}) (\rho ,1)&= \kappa _B \, \rho \end{aligned}$$
Let us now consider the main case where \(r = i \in I\) is a name and thus \(\rho \mathrel {\#}i\), \(\rho = (\rho - i) s_i\). We are given j (the name along which we fill), \(\mathbf {w}\) a J-tube in \(({{\mathrm{\mathsf {G}}}}t)\) over \((\rho ,i)\) (with \(J \subseteq I - j\)), and \(w_{ja} \in ({{\mathrm{\mathsf {G}}}}t) (\rho ,i) (j / a)\) for \(a = 0\) or 1, which fits \(\mathbf {w}\). We want to define
$$\begin{aligned} w := ({{\mathrm{\underline{{{\mathrm{\mathsf {G}}}}}}}}\,\kappa _A\,\kappa _B\,\mathsf {ext})\, (\rho ,i)\,[ J \mapsto \mathbf {w}; (j,a) \mapsto w_{ja}] \end{aligned}$$
in \(({{\mathrm{\mathsf {G}}}}t) (\rho ,i)\). For this we have to construct \(w = (u,v)\) with \(u \in A (\rho -i)\) and \(v \in B\rho \) such that \(v (i / 0) = t (\rho - i)\, u\).
We can map \(w_{ja},\mathbf {w}\) using \(\mathsf {ug}\) and obtain an open box \(v_{ja},\mathbf {v}\) in B over \(\rho \) given by
$$\begin{aligned} v_{kb} := \mathsf {ug}((\rho , i) (k / b), w_{kb}) \in B \rho (k / b). \end{aligned}$$
There are four cases to consider depending on how the open box relates to the direction i. Each case will be illustrated afterwards with simplified J. Note that in all these pictures the part in A is mapped by t to the left face of the part in B. Here are the four cases:
Case\(i \ne j\) and \(i \notin J\). We extend the J-tube \(\mathbf {w}\) to J, i-tube by constructing \(w_{i0}\) and \(w_{i1}\) and then proceed as in the next case with the tube \(\mathbf {w}, w_{i0}, w_{i1}\). Note that we want
$$\begin{aligned} w_{i0}&\in ({{\mathrm{\mathsf {G}}}}t) (\rho ,i) (i / 0) = A (\rho - i), \text{ and }\\ w_{i1}&\in ({{\mathrm{\mathsf {G}}}}t) (\rho ,i) (i / 1) = B (\rho - i), \end{aligned}$$
so we can take
$$\begin{aligned} w_{i0}&= \kappa _A\,(\rho -i)\,[J \mapsto \mathbf {w}(i / 0); (j,a) \mapsto w_{ja} (i / 0) ], \text { and}\end{aligned}$$
(4)
$$\begin{aligned} w_{i1}&= \kappa _B\,(\rho -i)\,[J \mapsto \mathbf {w}(i / 1); (j,a) \mapsto w_{ja} (i / 1) ]. \end{aligned}$$
(5)
The resulting open box is compatible by construction. Note that this (together with the cases for \(r=0\) and \(r=1\)) also ensures that the Kan structure satisfies the equations in (1).
We illustrate this case in the picture below. Here and below the left part is in A and on the right we have the open box \(\mathbf {v}\) in B. For simplicity we also omit \(\rho \). We construct \(w_{i0}\) and \(w_{i1}\) by filling the open boxes indicated by thicker lines on the left and on the right, respectively.
Case\(i \ne j\) and \(i \in J\). In this case \(v_{i0} = \mathsf {ug}((\rho {(i / 0)},0),w_{i0}) = t \rho {(i / 0)} \, w_{i0} = t (\rho -i) \,w_{i0}\) since \(\rho \mathrel {\#}i\). We can therefore take \(w = (w_{i0}, v) \in ({{\mathrm{\mathsf {G}}}}t) (\rho ,i)\) where \(v = \kappa _B\,(\rho -i)\,[J \mapsto \mathbf {v}; (j,a) \mapsto v_{ja}]\). This can be illustrated by:
Case\(j = i\) and \(a = 0\). Like in the previous case we can take \(w = (w_{i0}, v) \in ({{\mathrm{\mathsf {G}}}}w) (\rho ,i)\) where \(v = \kappa _B\,(\rho -i)\,[J \mapsto \mathbf {v}; (j,a) \mapsto v_{ja} ]\). This case is illustrated as follows:
Cases \(j = i\) and \(a = 1\). In this case the direction of the filling is opposite to t, and therefore we have to use \(\mathsf {ext}\) which expresses that \(\mathsf {fib}\,t\) is contractible. The family \(\mathbf {m}\) defined by
$$\begin{aligned} m_{kb} := (w_{kb}, \langle i \rangle \, v_{kb}) \in (\mathsf {fib}\,t) ((\rho -i) (k / b), w_{i1} (k / b)) \end{aligned}$$
for \((k,b) \in J \times \{0,1\}\) constitutes a J-tube over \((\rho -i,w_{i1})\) in the contractible type \(\mathsf {fib}\,t \in {{\mathrm{Ty}}}(\varGamma .B)\).
So we can extend this tube to obtain
$$\begin{aligned} (u,\omega ) = \mathsf {ext}\,(\rho -i,w_{i1})\,[J\mapsto \mathbf {m}] \in (\mathsf {fib}\,t)(\rho -i,w_{i1}) \end{aligned}$$
and we can take \(w := (u,\omega \mathop {\varvec{@}}i) \in ({{\mathrm{\mathsf {G}}}}t) (\rho ,i)\).
Let us illustrate this case: we are given the two dots on the left and the solid lines on the right in the picture below, and we want to construct the dashed line and a square on the right such that the dashed line is mapped to the dotted line via t, that is, we basically want to construct an element in the fiber of \(w_{i1}\) under t.
This concludes the definition of the filling operations of \({{\mathrm{\mathsf {G}}}}t\).
To see that this filling operation is uniform, note that for an \(f {:}K \rightarrow I\) defined on j, J and on i the case which defines the filling of \([ J \mapsto \mathbf {w}; (j,a) \mapsto w_{ja}] f\) coincides with the case used to defined \([ J \mapsto \mathbf {w}; (j,a) \mapsto w_{ja}]\) by the injectivity requirement on f—uniformity then follows for each case separately since we only used operations that suitably commute with f in the definition of the filling. If f is only defined on j, J but not on i, the first case has to apply—to simplify notation assume f is \((i / c)\)—then by construction (Eqs. 4, 5)
$$\begin{aligned}&\bigl (({{\mathrm{\underline{{{\mathrm{\mathsf {G}}}}}}}}\,\kappa _A\,\kappa _B\,\mathsf {ext})\, (\rho ,i)\,[ J \mapsto \mathbf {w}; (j,a) \mapsto w_{ja}] \bigr ) (i / c)\\&\quad =({{\mathrm{\underline{{{\mathrm{\mathsf {G}}}}}}}}\,\kappa _A\,\kappa _B\,\mathsf {ext})\, (\rho -i,c)\,[ J \mapsto \mathbf {w}(i / c); (j,a) \mapsto (w_{ja} (i / c))], \end{aligned}$$
concluding the proof. \(\square \)
Theorem 2
We can refine the Kan structure \({{\mathrm{\underline{{{\mathrm{\mathsf {G}}}}}}}}\,\kappa _A\,\kappa _B\,\mathsf {ext}\) given in Theorem 1 such that it satisfies
$$\begin{aligned} (\overline{{{\mathrm{\underline{{{\mathrm{\mathsf {G}}}}}}}}\,\kappa _A\,\kappa _B\,\mathsf {ext}}) \, (\rho ,i) \,[(i,0) \mapsto u] = t \rho \, u. \end{aligned}$$
Proof
We modify the Kan structure given in the proof of Theorem 1 to obtain the above equations. The last two cases in the proof above where \(i=j\) are modified by an additional case distinction on whether J is empty or not. If J is not empty or \(a = 1\), proceed as before. In case J is empty and \(a = 0\), then we are given \(u_{i0} \in A (\rho -i)\) and an empty tube and can define \(({{\mathrm{\underline{{{\mathrm{\mathsf {G}}}}}}}}\,\kappa _A\,\kappa _B\,\mathsf {ext})\,{(\rho ,i)}\,[(i,0) \mapsto u_{i0}] = (u_{i0}, t \rho \,u_{i0})\). That this definition remains uniform is proved as in Theorem 1 using the observation that \(|J |= |J f |\) for f defined on J. In addition we retain stability under substitution. \(\square \)
Remark 1
It is also possible to change the Kan structure such that it satisfies
$$\begin{aligned} (\overline{{{\mathrm{\underline{{{\mathrm{\mathsf {G}}}}}}}}\,\kappa _A\,\kappa _B\,\mathsf {ext}}) \, (\rho ,i) \,[(i,1) \mapsto u] = t^{-1} \rho \, u, \end{aligned}$$
where \(t^{-1}\) is the inverse of t which can be constructed from \(\mathsf {ext}\). For this one also has to modify the case where J is empty and \(a = 1\) from the definition of \({{\mathrm{\underline{{{\mathrm{\mathsf {G}}}}}}}}\) using \(t^{-1}\) and that \(t^{-1}\) is a (point-wise) right inverse of t (in the sense of path types). The latter is also definable using \(\mathsf {ext}\).
Let us recall the definition of a universe \(\mathsf {U}\) of small Kan types (assuming a Grothendieck universe of small sets in the ambient set theory). A type \(A \in {{\mathrm{Ty}}}(\varGamma )\) is small if all the sets \(A \rho \) for \(\rho \in \varGamma (I)\) are so. A Kan type \((A,\kappa ) \in {{\mathrm{KTy}}}(\varGamma )\) is small if \(A \in {{\mathrm{Ty}}}(\varGamma )\) is small. We denote the set of all such small types and Kan types by \({{\mathrm{Ty}}}_0(\varGamma )\) and \({{\mathrm{KTy}}}_0(\varGamma )\), respectively. Substitution makes both \({{\mathrm{Ty}}}_0\) and \({{\mathrm{KTy}}}_0\) into presheaves on the category of cubical sets. The universe \(\mathsf {U}\) is now given as \(U = {{\mathrm{KTy}}}_0 \circ {{\mathrm{\mathbf {y}}}}\) where \({{\mathrm{\mathbf {y}}}}\) denotes the Yoneda embedding. For an I-cube \((A,\kappa ) \in \mathsf {U}(I) = {{\mathrm{KTy}}}_0({{\mathrm{\mathbf {y}}}}I)\) we have that A is a presheaf on the category of elements of \({{\mathrm{\mathbf {y}}}}I\), and A(J, f) is a small set for every element \((J,f{:}J \rightarrow I)\). Moreover, \(\kappa (J,f)\) is a filler function for open boxes in A over (J, f). Of particular interest are the small set \(A(I,\mathrm {id}_I)\) and filler function \(\kappa (I,\mathrm {id}_I)\).
Given \(a \in {{\mathrm{Ter}}}(\varGamma ,\mathsf {U})\) we can associate a small type \({{\mathrm{\mathsf {El}}}}a\) in \({{\mathrm{Ty}}}_0 (\varGamma )\) by \(({{\mathrm{\mathsf {El}}}}a) \rho = A(I,\mathrm {id}_I)\) where \(a \rho = (A,\kappa )\). We equip \({{\mathrm{\mathsf {El}}}}a\) with the Kan structure \({{\mathrm{\underline{\mathsf {El}}}}}\,a\) defined by \(({{\mathrm{\underline{\mathsf {El}}}}}\,a)\rho = \kappa (I,\mathrm {id}_I)\). This results in an isomorphism which is natural in \(\varGamma \):
where \(\ulcorner X \urcorner \rho = X \hat{\rho }\in \mathsf {U}(I)\) for \(X \in {{\mathrm{KTy}}}_0 (\varGamma )\). Here \(\hat{\rho }{:}{{\mathrm{\mathbf {y}}}}I \rightarrow \varGamma \) is the associated substitution of \(\rho \in \varGamma (I)\), that is, \(\hat{\rho }f = \rho f \in \varGamma (J)\) for any \(f {:}J \rightarrow I\). Since moreover \({{\mathrm{Hom}}}(\varGamma ,\mathsf {U}) \cong {{\mathrm{Ter}}}(\varGamma ,\mathsf {U})\), we get that \({{\mathrm{KTy}}}_0\) is representable.
Theorem 3
\(\mathsf {U}\) has a Kan structure.
Proof
[6, Theorem 4.2]. \(\square \)
We are now ready for the first main result of this paper.
Theorem 4
(Univalence) The type
$$\begin{aligned} \varPi (a : \mathsf {U})\, {{\mathrm{\mathsf {isContr}}}}\bigl (\varSigma (b : \mathsf {U}) \, \mathsf {Equiv}\,({{\mathrm{\mathsf {El}}}}a)\,({{\mathrm{\mathsf {El}}}}b) \bigr ) \end{aligned}$$
in \({{\mathrm{Ty}}}(1)\) has a section, where \(1\) denotes the empty context.
Proof
Because our operation \({{\mathrm{\mathsf {G}}}}\) preserves smallness we obtain an operation turning an equivalence between small Kan types into a path in \(\mathsf {U}\): given \(a \in {{\mathrm{Ter}}}(\varGamma , \mathsf {U})\) and \(b \in {{\mathrm{Ter}}}(\varGamma , \mathsf {U})\) with \(t \in {{\mathrm{Ter}}}(\varGamma , \mathsf {Equiv}\,({{\mathrm{\mathsf {El}}}}a)\,({{\mathrm{\mathsf {El}}}}\,b))\) we get a small type \({{\mathrm{\mathsf {G}}}}(t.1) \in {{\mathrm{Ty}}}_0 (\varGamma * \mathbb {I})\) which has the Kan structure \(\kappa = {{\mathrm{\underline{{{\mathrm{\mathsf {G}}}}}}}}\,({{\mathrm{\underline{\mathsf {El}}}}}a)\,({{\mathrm{\underline{\mathsf {El}}}}}b)\,\mathsf {ext}\) by Theorem 1 where \(\mathsf {ext}\) is constructed from \({{\mathrm{\underline{\mathsf {El}}}}}a\), \({{\mathrm{\underline{\mathsf {El}}}}}b\), and t using Lemma 1. Hence \(\ulcorner ({{\mathrm{\mathsf {G}}}}(t.1), \kappa ) \urcorner \in {{\mathrm{Ter}}}(\varGamma *\mathbb {I}, \mathsf {U})\) with
$$\begin{aligned} \ulcorner ({{\mathrm{\mathsf {G}}}}(t.1),\kappa ) \urcorner [0] = \ulcorner ({{\mathrm{\mathsf {G}}}}(t.1) [0], \kappa [0]) \urcorner = \ulcorner ({{\mathrm{\mathsf {El}}}}a,{{\mathrm{\underline{\mathsf {El}}}}}a) \urcorner = a \end{aligned}$$
and likewise \(\ulcorner ({{\mathrm{\mathsf {G}}}}(t.1),\kappa ) \urcorner [1]\!=\!b\). Finally, we get a path \(\langle \rangle \ulcorner ({{\mathrm{\mathsf {G}}}}(t.1), \kappa ) \urcorner \!\in \!{{\mathrm{Ter}}}(\varGamma , \mathsf {Path}_{\mathsf {U}}\,a\,b)\).
Choosing \(a : \mathsf {U}, b : \mathsf {U}, t : \mathsf {Equiv}\,({{\mathrm{\mathsf {El}}}}a)\,({{\mathrm{\mathsf {El}}}}b)\) as the context \(\varGamma \) above we get using currying
$$\begin{aligned} \mathsf {ua}\in {{\mathrm{Ter}}}\bigl (1,\varPi (a\,b : \mathsf {U}) (\mathsf {Equiv}\,({{\mathrm{\mathsf {El}}}}a)\,({{\mathrm{\mathsf {El}}}}b) \rightarrow \mathsf {Path}_{\mathsf {U}}\,a\,b)\bigr ). \end{aligned}$$
Observe that we didn’t use that \({{\mathrm{\mathsf {G}}}}\) and its Kan structure commute with substitutions to derive \(\mathsf {ua}\).
In addition to \(\mathsf {ua}\) we obtain a section \(\mathsf {ua}_\beta \) of
$$\begin{aligned} \varPi (a\,b : \mathsf {U}) \,\varPi (t : \mathsf {Equiv}\,({{\mathrm{\mathsf {El}}}}a)\,({{\mathrm{\mathsf {El}}}}b)) ~ \mathsf {Path}_{{{\mathrm{\mathsf {El}}}}a \rightarrow {{\mathrm{\mathsf {El}}}}b}\,(\mathsf {T_{{{\mathrm{\mathsf {El}}}}}}\,(\mathsf {ua}\,t))\,(t.1) \end{aligned}$$
where \(\mathsf {T_{{{\mathrm{\mathsf {El}}}}}}: \mathsf {Path}_{\mathsf {U}}\,a\,b \rightarrow {{\mathrm{\mathsf {El}}}}a \rightarrow {{\mathrm{\mathsf {El}}}}b\) is the transport operation for paths for \(({{\mathrm{\mathsf {El}}}}\mathsf {q},{{\mathrm{\underline{\mathsf {El}}}}}\mathsf {q})\) in \({{\mathrm{KTy}}}_0 (\mathsf {U})\) (see the operation \(\mathsf {T}\) in [2, Section 8.2]). Indeed, the path to justify \(\mathsf {ua}_\beta \) is given by reflexivity using our refined Kan structure from Theorem 2 plus that \(\mathsf {T_{{{\mathrm{\mathsf {El}}}}}}\) is given in terms of composition with an empty tube.
The transport operation \(\mathsf {T_{{{\mathrm{\mathsf {El}}}}}}\) can easily be extended to an operation
$$\begin{aligned} \mathsf {T^{\mathsf {Equiv}}_{{{\mathrm{\mathsf {El}}}}}}: \mathsf {Path}_{\mathsf {U}}\,a\,b \rightarrow \mathsf {Equiv}\,({{\mathrm{\mathsf {El}}}}a)\,({{\mathrm{\mathsf {El}}}}b) \end{aligned}$$
which goes in the opposite direction as \(\mathsf {ua}\). Actually, \(\mathsf {ua}\) and \(\mathsf {T^{\mathsf {Equiv}}_{{{\mathrm{\mathsf {El}}}}}}\) constitute a section-retraction pair because of \(\mathsf {ua}_\beta \) and the fact that \({{\mathrm{\mathsf {isEquiv}}}}t.1\) is a proposition, that is, all its inhabitants are path-equal. Hence \(\varSigma (b : \mathsf {U}) \, \mathsf {Equiv}\,({{\mathrm{\mathsf {El}}}}a)\,({{\mathrm{\mathsf {El}}}}b)\) is a retract of \(\varSigma (b : \mathsf {U}) \, \mathsf {Path}_{\mathsf {U}}\,a\,b\). Since \(\mathsf {U}\) has a Kan structure by Theorem 3, the latter type is contractible (see [2, Section 8.2]) and thus so is the former, concluding the proof. \(\square \)