\documentclass[a4paper,handout]{beamer} \beamertemplatenavigationsymbolsempty %% \usecolortheme[named=seagull]{structure} \input{packages.tex} \input{macros.tex} \title[Univalent Categories]{Univalent Categories\\ \footnotesize A formalization of category theory in Cubical Agda} \newcommand{\myname}{Frederik Hangh{\o}j Iversen} \author[\myname]{ \myname\\ \footnotesize Supervisors: Thierry Coquand, Andrea Vezzosi\\ Examiner: Andreas Abel } \institute{Chalmers University of Technology} \begin{document} \frame{\titlepage} \begin{frame} \frametitle{Motivating example} \framesubtitle{Functional extensionality} Consider the functions \begin{align*} \var{zeroLeft} & \defeq \lambda (n \tp \bN) \mto (0 + n \tp \bN) \\ \var{zeroRight} & \defeq \lambda (n \tp \bN) \mto (n + 0 \tp \bN) \end{align*} \pause We have % $$ \prod_{n \tp \bN} \var{zeroLeft}\ n \equiv \var{zeroRight}\ n $$ % \pause But not % $$ \var{zeroLeft} \equiv \var{zeroRight} $$ % \pause We need % $$ \funExt \tp \prod_{a \tp A} f\ a \equiv g\ a \to f \equiv g $$ \end{frame} \begin{frame} \frametitle{Motivating example} \framesubtitle{Univalence} Consider the set $\{x \mid \phi\ x \land \psi\ x\}$ \pause If we show $\forall x . \psi\ x \equiv \top$ then we want to conclude $\{x \mid \phi\ x \land \psi\ x\} \equiv \{x \mid \phi\ x\}$ \pause We need univalence: $$(A \simeq B) \simeq (A \equiv B)$$ \pause % We will return to $\simeq$, but for now think of it as an isomorphism, so it induces maps: \begin{align*} \var{toPath} & \tp (A \simeq B) \to (A \equiv B) \\ \var{toEquiv} & \tp (A \equiv B) \to (A \simeq B) \end{align*} \end{frame} \begin{frame} \frametitle{Paths} \framesubtitle{Definition} Heterogeneous paths \begin{equation*} \Path \tp (P \tp I → \MCU) → P\ 0 → P\ 1 → \MCU \end{equation*} \pause For $P \tp I \to \MCU$, $A \tp \MCU$ and $a_0, a_1 \tp A$ inhabitants of $\Path\ P\ a_0\ a_1$ are like functions % $$ p \tp \prod_{i \tp I} P\ i $$ % Which satisfy $p\ 0 & = a_0$ and $p\ 1 & = a_1$ \pause Homogenous paths $$ a_0 \equiv a_1 \defeq \Path\ (\var{const}\ A)\ a_0\ a_1 $$ \end{frame} \begin{frame} \frametitle{Paths} \framesubtitle{Functional extenstionality} $$ \funExt & \tp \prod_{a \tp A} f\ a \equiv g\ a \to f \equiv g $$ \pause $$ \funExt\ p \defeq λ i\ a → p\ a\ i $$ \pause $$ \funExt\ (\var{const}\ \refl) \tp \var{zeroLeft} \equiv \var{zeroRight} $$ \end{frame} \begin{frame} \frametitle{Paths} \framesubtitle{Homotopy levels} \begin{align*} & \isContr && \tp \MCU \to \MCU \\ & \isContr\ A && \defeq \sum_{c \tp A} \prod_{a \tp A} a \equiv c \end{align*} \pause \begin{align*} & \isProp && \tp \MCU \to \MCU \\ & \isProp\ A && \defeq \prod_{a_0, a_1 \tp A} a_0 \equiv a_1 \end{align*} \pause \begin{align*} & \isSet && \tp \MCU \to \MCU \\ & \isSet\ A && \defeq \prod_{a_0, a_1 \tp A} \isProp\ (a_0 \equiv a_1) \end{align*} \begin{align*} & \isGroupoid && \tp \MCU \to \MCU \\ & \isGroupoid\ A && \defeq \prod_{a_0, a_1 \tp A} \isSet\ (a_0 \equiv a_1) \end{align*} \end{frame} \begin{frame} \frametitle{Paths} \framesubtitle{A few lemmas} Let $D$ be a type-family: $$ D \tp \prod_{b \tp A} \prod_{p \tp a ≡ b} \MCU $$ % \pause And $d$ and in inhabitant of $D$ at $\refl$: % $$ d \tp D\ a\ \refl $$ % \pause We then have the function: % $$ \pathJ\ D\ d \tp \prod_{b \tp A} \prod_{p \tp a ≡ b} D\ b\ p $$ \end{frame} \begin{frame} \frametitle{Paths} \framesubtitle{A few lemmas} Given \begin{align*} A & \tp \MCU \\ P & \tp A \to \MCU \\ \var{propP} & \tp \prod_{x \tp A} \isProp\ (P\ x) \\ p & \tp a_0 \equiv a_1 \\ p_0 & \tp P\ a_0 \\ p_1 & \tp P\ a_1 \end{align*} % We have $$ \lemPropF\ \var{propP}\ p \tp \Path\ (\lambda\; i \mto P\ (p\ i))\ p_0\ p_1 $$ % \end{frame} \begin{frame} \frametitle{Paths} \framesubtitle{A few lemmas} $\prod$ preserves $\isProp$: $$ \mathit{propPi} \tp \left(\prod_{a \tp A} \isProp\ (P\ a)\right) \to \isProp\ \left(\prod_{a \tp A} P\ a\right) $$ \pause $\sum$ preserves $\isProp$: $$ \mathit{propSig} \tp \isProp\ A \to \left(\prod_{a \tp A} \isProp\ (P\ a)\right) \to \isProp\ \left(\sum_{a \tp A} P\ a\right) $$ \end{frame} \begin{frame} \frametitle{Pre categories} \framesubtitle{Definition} Data: \begin{align*} \Object & \tp \Type \\ \Arrow & \tp \Object \to \Object \to \Type \\ \identity & \tp \Arrow\ A\ A \\ \lll & \tp \Arrow\ B\ C \to \Arrow\ A\ B \to \Arrow\ A\ C \end{align*} % \pause Laws: % $$ h \lll (g \lll f) ≡ (h \lll g) \lll f $$ $$ (\identity \lll f ≡ f) \x (f \lll \identity ≡ f) $$ \pause 1-categories: $$ \isSet\ (\Arrow\ A\ B) $$ \end{frame} \begin{frame} \frametitle{Pre categories} \framesubtitle{Propositionality} $$ \isProp\ \left( (\identity \comp f \equiv f) \x (f \comp \identity \equiv f) \right) $$ \pause \begin{align*} \isProp\ \IsPreCategory \end{align*} \pause \begin{align*} \var{isAssociative} & \tp \var{IsAssociative}\\ \isIdentity & \tp \var{IsIdentity}\\ \var{arrowsAreSets} & \tp \var{ArrowsAreSets} \end{align*} \pause \begin{align*} & \var{propIsAssociative} && a.\var{isAssociative}\ && b.\var{isAssociative} && i \\ & \propIsIdentity && a.\isIdentity\ && b.\isIdentity && i \\ & \var{propArrowsAreSets} && a.\var{arrowsAreSets}\ && b.\var{arrowsAreSets} && i \end{align*} \end{frame} \begin{frame} \frametitle{Categories} \framesubtitle{Univalence} \begin{align*} \var{IsIdentity} & \defeq \prod_{A\ B \tp \Object} \prod_{f \tp \Arrow\ A\ B} \phi\ f %% \\ %% & \mathrel{\ } \identity \lll f \equiv f \x f \lll \identity \equiv f \end{align*} where $$ \phi\ f \defeq \identity \lll f \equiv f \x f \lll \identity \equiv f $$ \pause Let $\approxeq$ denote ismorphism of objects. We can then construct the identity isomorphism in any category: $$ \identity , \identity , \var{isIdentity} \tp A \approxeq A $$ \pause Likewise since paths are substitutive we can promote a path to an isomorphism: $$ \idToIso \tp A ≡ B → A ≊ B $$ \pause For a category to be univalent we require this to be an equivalence: % $$ \isEquiv\ (A \equiv B)\ (A \approxeq B)\ \idToIso $$ % \end{frame} \begin{frame} \frametitle{Categories} \framesubtitle{Univalence, cont'd} $$\isEquiv\ (A \equiv B)\ (A \approxeq B)\ \idToIso$$ \pause% $$(A \equiv B) \simeq (A \approxeq B)$$ \pause% $$(A \equiv B) \cong (A \approxeq B)$$ \pause% Name the above maps: $$\idToIso \tp A ≡ B → A ≊ B$$ % $$\isoToId \tp (A \approxeq B) \to (A \equiv B)$$ \end{frame} \begin{frame} \frametitle{Categories} \framesubtitle{Propositionality} $$ \isProp\ \IsCategory = \prod_{a, b \tp \IsCategory} a \equiv b $$ \pause So, for $$ a\ b \tp \IsCategory $$ the proof obligation is the pair: % \begin{align*} p & \tp a.\isPreCategory \equiv b.\isPreCategory \\ & \mathrel{\ } \Path\ (\lambda\; i \to (p\ i).Univalent)\ a.\isPreCategory\ b.\isPreCategory \end{align*} \end{frame} \begin{frame} \frametitle{Categories} \framesubtitle{Propositionality, cont'd} First path given by: $$ p \defeq \var{propIsPreCategory}\ a\ b \tp a.\isPreCategory \equiv b.\isPreCategory $$ \pause Use $\lemPropF$ for the latter. \pause % Univalence is indexed by an identity proof. So $A \defeq IsIdentity\ identity$ and $B \defeq \var{Univalent}$. \pause % $$ \lemPropF\ \var{propUnivalent}\ p $$ \end{frame} \begin{frame} \frametitle{Categories} \framesubtitle{A theorem} % Let the isomorphism $(ι, \inv{ι}) \tp A \approxeq B$. % \pause % The isomorphism induces the path % $$ p \defeq \idToIso\ (\iota, \inv{\iota}) \tp A \equiv B $$ % \pause and consequently an arrow: % $$ p_{\var{dom}} \defeq \congruence\ (λ x → \Arrow\ x\ X)\ p \tp \Arrow\ A\ X \equiv \Arrow\ B\ X $$ % \pause The proposition is: % \begin{align} \label{eq:coeDom} \tag{$\var{coeDom}$} \prod_{f \tp A \to X} \var{coe}\ p_{\var{dom}}\ f \equiv f \lll \inv{\iota} \end{align} \end{frame} \begin{frame} \frametitle{Categories} \framesubtitle{A theorem, proof} \begin{align*} \var{coe}\ p_{\var{dom}}\ f & \equiv f \lll \inv{(\idToIso\ p)} && \text{By path-induction} \\ & \equiv f \lll \inv{\iota} && \text{$\idToIso$ and $\isoToId$ are inverses}\\ \end{align*} \pause % Induction will be based at $A$. Let $\widetilde{B}$ and $\widetilde{p} \tp A \equiv \widetilde{B}$ be given. % \pause % Define the family: % $$ D\ \widetilde{B}\ \widetilde{p} \defeq \var{coe}\ \widetilde{p}_{\var{dom}}\ f \equiv f \lll \inv{(\idToIso\ \widetilde{p})} $$ \pause % The base-case becomes: $$ d \tp D\ A\ \refl = \var{coe}\ \refl_{\var{dom}}\ f \equiv f \lll \inv{(\idToIso\ \refl)} $$ \end{frame} \begin{frame} \frametitle{Categories} \framesubtitle{A theorem, proof, cont'd} $$ d \tp \var{coe}\ \refl_{\var{dom}}\ f \equiv f \lll \inv{(\idToIso\ \refl)} $$ \pause \begin{align*} \var{coe}\ \refl^*\ f & \equiv f && \text{$\refl$ is a neutral element for $\var{coe}$}\\ & \equiv f \lll \identity \\ & \equiv f \lll \var{subst}\ \refl\ \identity && \text{$\refl$ is a neutral element for $\var{subst}$}\\ & \equiv f \lll \inv{(\idToIso\ \refl)} && \text{By definition of $\idToIso$}\\ \end{align*} \pause In conclusion, the theorem is inhabited by: $$ \label{eq:pathJ-example} \pathJ\ D\ d\ B\ p $$ \end{frame} \begin{frame} \frametitle{Span category} \framesubtitle{Definition} Given a base category $\bC$ and two objects in this category $\pairA$ and $\pairB$ we can construct the \nomenindex{span category}: % \pause Objects: $$ \sum_{X \tp Object} \Arrow\ X\ \pairA × \Arrow\ X\ \pairB $$ \pause % Arrows between objects $A ,\ a_{\pairA} ,\ a_{\pairB}$ and $B ,\ b_{\pairA} ,\ b_{\pairB}$: % $$ \sum_{f \tp \Arrow\ A\ B} b_{\pairA} \lll f \equiv a_{\pairA} \x b_{\pairB} \lll f \equiv a_{\pairB} $$ \end{frame} \begin{frame} \frametitle{Span category} \framesubtitle{Univalence} \begin{align*} \label{eq:univ-0} (X , x_{\mathcal{A}} , x_{\mathcal{B}}) ≡ (Y , y_{\mathcal{A}} , y_{\mathcal{B}}) \end{align*} \begin{align*} \label{eq:univ-1} \begin{split} p \tp & X \equiv Y \\ & \Path\ (λ i → \Arrow\ (p\ i)\ \mathcal{A})\ x_{\mathcal{A}}\ y_{\mathcal{A}} \\ & \Path\ (λ i → \Arrow\ (p\ i)\ \mathcal{B})\ x_{\mathcal{B}}\ y_{\mathcal{B}} \end{split} \end{align*} \begin{align*} \begin{split} \var{iso} \tp & X \approxeq Y \\ & \Path\ (λ i → \Arrow\ (\widetilde{p}\ i)\ \mathcal{A})\ x_{\mathcal{A}}\ y_{\mathcal{A}} \\ & \Path\ (λ i → \Arrow\ (\widetilde{p}\ i)\ \mathcal{B})\ x_{\mathcal{B}}\ y_{\mathcal{B}} \end{split} \end{align*} \begin{align*} (X , x_{\mathcal{A}} , x_{\mathcal{B}}) ≊ (Y , y_{\mathcal{A}} , y_{\mathcal{B}}) \end{align*} \end{frame} \begin{frame} \frametitle{Span category} \framesubtitle{Univalence, proof} % \begin{align*} %% (f, \inv{f}, \var{inv}_f, \var{inv}_{\inv{f}}) %% \tp (X, x_{\mathcal{A}}, x_{\mathcal{B}}) \approxeq (Y, y_{\mathcal{A}}, y_{\mathcal{B}}) \to \begin{split} \var{iso} \tp & X \approxeq Y \\ & \Path\ (λ i → \Arrow\ (\widetilde{p}\ i)\ \mathcal{A})\ x_{\mathcal{A}}\ y_{\mathcal{A}} \\ & \Path\ (λ i → \Arrow\ (\widetilde{p}\ i)\ \mathcal{B})\ x_{\mathcal{B}}\ y_{\mathcal{B}} \end{split} \end{align*} \pause % Let $(f, \inv{f}, \var{inv}_f, \var{inv}_{\inv{f}})$ be an inhabitant of the antecedent.\pause Projecting out the first component gives us the isomorphism % $$ (\fst\ f, \fst\ \inv{f} , \congruence\ \fst\ \var{inv}_f , \congruence\ \fst\ \var{inv}_{\inv{f}} ) \tp X \approxeq Y $$ \pause % This gives rise to the following paths: % \begin{align*} \begin{split} \widetilde{p} & \tp X \equiv Y \\ \widetilde{p}_{\mathcal{A}} & \tp \Arrow\ X\ \mathcal{A} \equiv \Arrow\ Y\ \mathcal{A} \\ \end{split} \end{align*} % \end{frame} \begin{frame} \frametitle{Span category} \framesubtitle{Univalence, proof, cont'd} It remains to construct: % \begin{align*} \begin{split} \label{eq:product-paths} & \Path\ (λ i → \widetilde{p}_{\mathcal{A}}\ i)\ x_{\mathcal{A}}\ y_{\mathcal{A}} \end{split} \end{align*} \pause % This is achieved with the following lemma: % \begin{align*} \prod_{q \tp A \equiv B} \var{coe}\ q\ x_{\mathcal{A}} ≡ y_{\mathcal{A}} → \Path\ (λ i → q\ i)\ x_{\mathcal{A}}\ y_{\mathcal{A}} \end{align*} % Which is used without proof.\pause So the construction reduces to: % \begin{align*} \var{coe}\ \widetilde{p}_{\mathcal{A}}\ x_{\mathcal{A}} ≡ y_{\mathcal{A}} \end{align*}% \pause% This is proven with: % \begin{align*} \var{coe}\ \widetilde{p}_{\mathcal{A}}\ x_{\mathcal{A}} & ≡ x_{\mathcal{A}} \lll \fst\ \inv{f} && \text{\ref{eq:coeDom}} \\ & ≡ y_{\mathcal{A}} && \text{Property of span category} \end{align*} \end{frame} \begin{frame} \frametitle{Propositionality of products} We have % $$ \isProp\ \var{Terminal} $$\pause % We can show: \begin{align*} \var{Terminal} ≃ \var{Product}\ ℂ\ \mathcal{A}\ \mathcal{B} \end{align*} \pause And since equivalences preserve homotopy levels we get: % $$ \isProp\ \left(\var{Product}\ \bC\ \mathcal{A}\ \mathcal{B}\right) $$ \end{frame} \begin{frame} \frametitle{Monads} \framesubtitle{Monoidal form} % \begin{align*} \EndoR & \tp \Endo ℂ \\ \pureNT & \tp \NT{\EndoR^0}{\EndoR} \\ \joinNT & \tp \NT{\EndoR^2}{\EndoR} \end{align*} \pause % Let $\fmap$ be the map on arrows of $\EndoR$. Likewise $\pure$ and $\join$ are the maps of the natural transformations $\pureNT$ and $\joinNT$ respectively. % \begin{align*} \join \lll \fmap\ \join & ≡ \join \lll \join \\ \join \lll \pure\ & ≡ \identity \\ \join \lll \fmap\ \pure & ≡ \identity \end{align*} \end{frame} \begin{frame} \frametitle{Monads} \framesubtitle{Kleisli form} % \begin{align*} \omapR & \tp \Object → \Object \\ \pure & \tp % \prod_{X \tp Object} \Arrow\ X\ (\omapR\ X) \\ \bind & \tp \Arrow\ X\ (\omapR\ Y) \to \Arrow\ (\omapR\ X)\ (\omapR\ Y) \end{align*}\pause % \begin{align*} \fish & \tp \Arrow\ A\ (\omapR\ B) → \Arrow\ B\ (\omapR\ C) → \Arrow\ A\ (\omapR\ C) \\ f \fish g & \defeq f \rrr (\bind\ g) \end{align*} \pause % \begin{align*} \label{eq:monad-kleisli-laws-0} \bind\ \pure & ≡ \identity_{\omapR\ X} \\ \label{eq:monad-kleisli-laws-1} \pure \fish f & ≡ f \\ \label{eq:monad-kleisli-laws-2} (\bind\ f) \rrr (\bind\ g) & ≡ \bind\ (f \fish g) \end{align*} \end{frame} \begin{frame} \frametitle{Monads} \framesubtitle{Equivalence} In the monoidal formulation we can define $\bind$: % $$ \bind\ f \defeq \join \lll \fmap\ f $$ \pause % And likewise in the Kleisli formulation we can define $\join$: % $$ \join \defeq \bind\ \identity $$ \pause The laws are logically equivalent. So we get: % $$ \var{Monoidal} \simeq \var{Kleisli} $$ % \end{frame} \end{document}