Final presentation

This commit is contained in:
Frederik Hanghøj Iversen 2018-06-07 15:20:14 +02:00
parent 5a748c57f0
commit 6f275247dd
2 changed files with 94 additions and 252 deletions

View file

@ -7,6 +7,15 @@ Remember crowd-control.
Leave out: Leave out:
lemPropF lemPropF
Outline
-------
Introduction
A formalization of Category Theory in cubical Agda.
Cubical Agda: A constructive interpretation of functional
extensionality and univalence
Talk about structure of library: Talk about structure of library:
=== ===

View file

@ -1,6 +1,4 @@
\documentclass[a4paper,handout]{beamer} \documentclass[a4paper]{beamer}
\usetheme{metropolis}
\beamertemplatenavigationsymbolsempty
%% \usecolortheme[named=seagull]{structure} %% \usecolortheme[named=seagull]{structure}
\input{packages.tex} \input{packages.tex}
@ -19,60 +17,39 @@
\institute{Chalmers University of Technology} \institute{Chalmers University of Technology}
\begin{document} \begin{document}
\frame{\titlepage} \frame{\titlepage}
\begin{frame} \begin{frame}
\frametitle{Motivating example} \frametitle{Introduction}
\framesubtitle{Functional extensionality} Category Theory: The study of abstract functions. Slogan: ``It's the
Consider the functions arrows that matter''\pause
\begin{align*}
\var{zeroLeft} &\lambda (n \tp \bN) \mto (0 + n \tp \bN) \\ Objects are equal ``up to isomorphism''. Univalence makes this notion
\var{zeroRight} &\lambda (n \tp \bN) \mto (n + 0 \tp \bN) precise.\pause
\end{align*}
\pause Agda does not permit proofs of univalence. Cubical Agda admits
We have this.\pause
%
$$ Goal: Construct a category whose terminal objects are (equivalent to)
_{n \tp \bN} \var{zeroLeft}\ n ≡ \var{zeroRight}\ n products. Use this to conclude that products are propositions, not a
$$ structure on a category.
%
\pause
But not
%
$$
\var{zeroLeft}\var{zeroRight}
$$
%
\pause
We need
%
$$
\funExt \tp_{a \tp A} f\ a ≡ g\ a → f ≡ g
$$
\end{frame} \end{frame}
\begin{frame} \begin{frame}
\frametitle{Motivating example} \frametitle{Outline}
\framesubtitle{Univalence} The path type
Consider the set
$\{x \mid \phi\ x \land \psi\ x\}$
\pause
If we show $∀ x . \psi\ x ≡ \top$ Definition of a (pre-) category
then we want to conclude
$\{x \mid \phi\ x \land \psi\ x\}\{x \mid \phi\ x\}$
\pause
We need univalence: 1-categories
$$(A ≃ B)(A ≡ B)$$
\pause Univalent (proper) categories
%
We will return to $$, but for now think of it as an The category of spans
isomorphism, so it induces maps:
\begin{align*}
\var{toPath} & \tp (A ≃ B) → (A ≡ B) \\
\var{toEquiv} & \tp (A ≡ B) → (A ≃ B)
\end{align*}
\end{frame} \end{frame}
\section{Paths}
\begin{frame} \begin{frame}
\frametitle{Paths} \frametitle{Paths}
\framesubtitle{Definition} \framesubtitle{Definition}
@ -81,7 +58,7 @@
\Path \tp (P \tp \I\MCU) → P\ 0 → P\ 1 → \MCU \Path \tp (P \tp \I\MCU) → P\ 0 → P\ 1 → \MCU
\end{equation*} \end{equation*}
\pause \pause
For $P \tp \I\MCU$, $A \tp \MCU$ and $a_0, a_1 \tp A$ For $P \tp \I\MCU$ and $a_0 \tp P\ 0$, $a_1 \tp P\ 1$
inhabitants of $\Path\ P\ a_0\ a_1$ are like functions inhabitants of $\Path\ P\ a_0\ a_1$ are like functions
% %
$$ $$
@ -96,104 +73,7 @@
a_0 ≡ a_1 ≜ \Path\ (\var{const}\ A)\ a_0\ a_1 a_0 ≡ a_1 ≜ \Path\ (\var{const}\ A)\ a_0\ a_1
$$ $$
\end{frame} \end{frame}
\begin{frame}
\frametitle{Paths}
\framesubtitle{Functional extenstionality}
$$
\funExt & \tp_{a \tp A} f\ a ≡ g\ a → f ≡ g
$$
\pause
$$
\funExt\ p ≜ λ i\ a → p\ a\ i
$$
\pause
$$
\funExt\ (\var{const}\ \refl)
\tp
\var{zeroLeft}\var{zeroRight}
$$
\end{frame}
\begin{frame}
\frametitle{Paths}
\framesubtitle{Homotopy levels}
\begin{align*}
& \isContr && \tp \MCU\MCU \\
& \isContr\ A && ≜ ∑_{c \tp A}_{a \tp A} a ≡ c
\end{align*}
\pause
\begin{align*}
& \isProp && \tp \MCU\MCU \\
& \isProp\ A && ≜ ∏_{a_0, a_1 \tp A} a_0 ≡ a_1
\end{align*}
\pause
\begin{align*}
& \isSet && \tp \MCU\MCU \\
& \isSet\ A && ≜ ∏_{a_0, a_1 \tp A} \isProp\ (a_0 ≡ a_1)
\end{align*}
\begin{align*}
& \isGroupoid && \tp \MCU\MCU \\
& \isGroupoid\ A && ≜ ∏_{a_0, a_1 \tp A} \isSet\ (a_0 ≡ a_1)
\end{align*}
\end{frame}
\begin{frame}
\frametitle{Paths}
\framesubtitle{A few lemmas}
Let $D$ be a type-family:
$$
D \tp_{b \tp A}_{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_{b \tp A}_{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 → \MCU \\
\var{propP} & \tp_{x \tp A} \isProp\ (P\ x) \\
p & \tp a_0 ≡ 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}
$$ preserves $\isProp$:
$$
\mathit{propPi}
\tp
\left(∏_{a \tp A} \isProp\ (P\ a)\right)
\isProp\ \left(∏_{a \tp A} P\ a\right)
$$
\pause
$$ preserves $\isProp$:
$$
\mathit{propSig} \tp \isProp\ A → \left(∏_{a \tp A} \isProp\ (P\ a)\right) → \isProp\ \left(∑_{a \tp A} P\ a\right)
$$
\end{frame}
\begin{frame} \begin{frame}
\frametitle{Pre categories} \frametitle{Pre categories}
\framesubtitle{Definition} \framesubtitle{Definition}
@ -216,59 +96,46 @@
× ×
(f \lll \identity ≡ f) (f \lll \identity ≡ f)
$$ $$
\end{frame}
\begin{frame}
\frametitle{Pre categories}
\framesubtitle{1-categories}
Cubical Agda does not admit \emph{Uniqueness of Identity Proofs}
(UIP). Rather there is a hierarchy of \emph{Homotopy Types}:
Contractible types, mere propositions, sets, groupoids, \dots
\pause \pause
1-categories: 1-categories:
$$ $$
\isSet\ (\Arrow\ A\ B) \isSet\ (\Arrow\ A\ B)
$$ $$
\pause
\begin{align*}
\isSet & \tp \MCU\MCU \\
\isSet\ A & ≜ ∏_{a_0, a_1 \tp A} \isProp\ (a_0 ≡ a_1)
\end{align*}
\end{frame} \end{frame}
\begin{frame} \begin{frame}
\frametitle{Pre categories} \frametitle{Outline}
\framesubtitle{Propositionality} The path type \ensuremath{\checkmark}
$$
\isProp\ \left( (\identity \comp f ≡ f) × (f \comp \identity ≡ f) \right) Definition of a (pre-) category \ensuremath{\checkmark}
$$
\pause 1-categories \ensuremath{\checkmark}
\begin{align*}
\isProp\ \IsPreCategory Univalent (proper) categories
\end{align*}
\pause The category of spans
\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} \end{frame}
\begin{frame} \begin{frame}
\frametitle{Categories} \frametitle{Categories}
\framesubtitle{Univalence} \framesubtitle{Univalence}
\begin{align*}
\var{IsIdentity} &
_{A\ B \tp \Object}_{f \tp \Arrow\ A\ B} \phi\ f
%% \\
%% & \mathrel{\ } \identity \lll f ≡ f × f \lll \identity ≡ f
\end{align*}
where
$$
\phi\ f ≜
( \identity \lll f ≡ f )
×
( f \lll \identity ≡ f)
$$
\pause
Let $\approxeq$ denote isomorphism of objects. We can then construct Let $\approxeq$ denote isomorphism of objects. We can then construct
the identity isomorphism in any category: the identity isomorphism in any category:
$$ $$
\identity , \identity , \var{isIdentity} \tp A \approxeq A (\identity , \identity , \var{isIdentity}) \tp A \approxeq A
$$ $$
\pause \pause
Likewise since paths are substitutive we can promote a path to an isomorphism: Likewise since paths are substitutive we can promote a path to an isomorphism:
@ -292,50 +159,22 @@
\pause% \pause%
$$(A ≡ B)(A \approxeq B)$$ $$(A ≡ B)(A \approxeq B)$$
\pause% \pause%
Name the above maps: Name the inverse of $\idToIso$:
$$\idToIso \tp A ≡ B → A ≊ B$$
%
$$\isoToId \tp (A \approxeq B)(A ≡ B)$$ $$\isoToId \tp (A \approxeq B)(A ≡ B)$$
\end{frame} \end{frame}
\begin{frame} \begin{frame}
\frametitle{Categories} \frametitle{Propositionality of products}
\framesubtitle{Propositionality} Construct a category for which it is the case that the terminal
$$ objects are equivalent to products:
\isProp\ \IsCategory = ∏_{a, b \tp \IsCategory} a ≡ b
$$
\pause
So, for
$$
a\ b \tp \IsCategory
$$
the proof obligation is the pair:
%
\begin{align*} \begin{align*}
p & \tp a.\isPreCategory ≡ b.\isPreCategory \\ \var{Terminal}\var{Product}\ \ 𝒜\
& \mathrel{\ } \Path\ (\lambda\; i → (p\ i).Univalent)\ a.\isPreCategory\ b.\isPreCategory
\end{align*} \end{align*}
\end{frame}
\begin{frame}
\frametitle{Categories}
\framesubtitle{Propositionality, cont'd}
First path given by:
$$
p
\var{propIsPreCategory}\ a\ b
\tp
a.\isPreCategory ≡ b.\isPreCategory
$$
\pause
Use $\lemPropF$ for the latter.
\pause
%
Univalence is indexed by an identity proof. So $A ≜
IsIdentity\ identity$ and $B ≜ \var{Univalent}$.
\pause \pause
And since equivalences preserve homotopy levels we get:
% %
$$ $$
\lemPropF\ \var{propUnivalent}\ p \isProp\ \left(\var{Product}\ \bC\ 𝒜\ \right)
$$ $$
\end{frame} \end{frame}
@ -343,18 +182,18 @@
\frametitle{Categories} \frametitle{Categories}
\framesubtitle{A theorem} \framesubtitle{A theorem}
% %
Let the isomorphism $(ι, \inv{ι}) \tp A \approxeq B$. Let the isomorphism $(ι, \inv{ι}, \var{inv}) \tp A \approxeq B$.
% %
\pause \pause
% %
The isomorphism induces the path The isomorphism induces the path
% %
$$ $$
p ≜ \idToIso\ (\iota, \inv{\iota}) \tp A ≡ B p ≜ \isoToId\ (\iota, \inv{\iota}, \var{inv}) \tp A ≡ B
$$ $$
% %
\pause \pause
and consequently an arrow: and consequently a path on arrows:
% %
$$ $$
p_{\var{dom}}\congruence\ (λ x → \Arrow\ x\ X)\ p p_{\var{dom}}\congruence\ (λ x → \Arrow\ x\ X)\ p
@ -377,7 +216,7 @@
\framesubtitle{A theorem, proof} \framesubtitle{A theorem, proof}
\begin{align*} \begin{align*}
\var{coe}\ p_{\var{dom}}\ f \var{coe}\ p_{\var{dom}}\ f
& ≡ f \lll \inv{(\idToIso\ p)} && \text{By path-induction} \\ & ≡ f \lll (\idToIso\ p)_1 && \text{By path-induction} \\
& ≡ f \lll \inv{\iota} & ≡ f \lll \inv{\iota}
&& \text{$\idToIso$ and $\isoToId$ are inverses}\\ && \text{$\idToIso$ and $\isoToId$ are inverses}\\
\end{align*} \end{align*}
@ -401,7 +240,7 @@
The base-case becomes: The base-case becomes:
$$ $$
d \tp D\ A\ \refl = d \tp D\ A\ \refl =
\var{coe}\ \refl_{\var{dom}}\ f ≡ f \lll \inv{(\idToIso\ \refl)} \left(\var{coe}\ \refl_{\var{dom}}\ f ≡ f \lll \inv{(\idToIso\ \refl)}\right)
$$ $$
\end{frame} \end{frame}
\begin{frame} \begin{frame}
@ -413,20 +252,21 @@
$$ $$
\pause \pause
\begin{align*} \begin{align*}
\var{coe}\ \refl^*\ f \var{coe}\ \refl_{\var{dom}}\ f
& =
\var{coe}\ \refl\ f \\
& ≡ f & ≡ f
&& \text{$\refl$ is a neutral element for $\var{coe}$}\\ && \text{neutral element for $\var{coe}$}\\
& ≡ f \lll \identity \\ & ≡ f \lll \identity \\
& ≡ f \lll \var{subst}\ \refl\ \identity & ≡ f \lll \var{subst}\ \refl\ \identity
&& \text{$\refl$ is a neutral element for $\var{subst}$}\\ && \text{neutral element for $\var{subst}$}\\
& ≡ f \lll \inv{(\idToIso\ \refl)} & ≡ f \lll \inv{(\idToIso\ \refl)}
&& \text{By definition of $\idToIso$}\\ && \text{By definition of $\idToIso$}\\
\end{align*} \end{align*}
\pause \pause
In conclusion, the theorem is inhabited by: In conclusion, the theorem is inhabited by:
$$ $$
\label{eq:pathJ-example} \var{pathInd}\ D\ d\ B\ p
\pathJ\ D\ d\ B\ p
$$ $$
\end{frame} \end{frame}
\begin{frame} \begin{frame}
@ -437,28 +277,26 @@
\pause \pause
Objects: Objects:
$$ $$
_{X \tp Object} \Arrow\ X\ \pairA × \Arrow\ X\ \pairB _{X \tp Object} (\Arrow\ X\ \pairA) × (\Arrow\ X\ \pairB)
$$ $$
\pause \pause
% %
Arrows between objects $A ,\ a_{\pairA} ,\ a_{\pairB}$ and Arrows between objects $(A , a_{\pairA} , a_{\pairB})$ and
$B ,\ b_{\pairA} ,\ b_{\pairB}$: $(B , b_{\pairA} , b_{\pairB})$:
% %
$$ $$
_{f \tp \Arrow\ A\ B} _{f \tp \Arrow\ A\ B}
b_{\pairA} \lll f ≡ a_{\pairA} × (b_{\pairA} \lll f ≡ a_{\pairA}) ×
b_{\pairB} \lll f ≡ a_{\pairB} (b_{\pairB} \lll f ≡ a_{\pairB})
$$ $$
\end{frame} \end{frame}
\begin{frame} \begin{frame}
\frametitle{Span category} \frametitle{Span category}
\framesubtitle{Univalence} \framesubtitle{Univalence}
\begin{align*} \begin{align*}
\label{eq:univ-0}
(X , x_{𝒜} , x_{}) ≡ (Y , y_{𝒜} , y_{}) (X , x_{𝒜} , x_{}) ≡ (Y , y_{𝒜} , y_{})
\end{align*} \end{align*}
\begin{align*} \begin{align*}
\label{eq:univ-1}
\begin{split} \begin{split}
p \tp & X ≡ Y \\ p \tp & X ≡ Y \\
& \Path\ (λ i → \Arrow\ (p\ i)\ 𝒜)\ x_{𝒜}\ y_{𝒜} \\ & \Path\ (λ i → \Arrow\ (p\ i)\ 𝒜)\ x_{𝒜}\ y_{𝒜} \\
@ -524,7 +362,6 @@
% %
\begin{align*} \begin{align*}
\begin{split} \begin{split}
\label{eq:product-paths}
& \Path\ (λ i → \widetilde{p}_{𝒜}\ i)\ x_{𝒜}\ y_{𝒜} & \Path\ (λ i → \widetilde{p}_{𝒜}\ i)\ x_{𝒜}\ y_{𝒜}
\end{split} \end{split}
\end{align*} \end{align*}
@ -578,17 +415,15 @@
\framesubtitle{Monoidal form} \framesubtitle{Monoidal form}
% %
\begin{align*} \begin{align*}
\EndoR & \tp \Endo \\ \EndoR & \tp \Functor\ \ \\
\pureNT \pureNT
& \tp \NT{\EndoR^0}{\EndoR} \\ & \tp \NT{\widehat{\identity}}{\EndoR} \\
\joinNT \joinNT
& \tp \NT{\EndoR^2}{\EndoR} & \tp \NT{(\EndoR \oplus \EndoR)}{\EndoR}
\end{align*} \end{align*}
\pause \pause
% %
Let $\fmap$ be the map on arrows of $\EndoR$. Likewise Let $\fmap$ be the map on arrows of $\EndoR$.
$\pure$ and $\join$ are the maps of the natural transformations
$\pureNT$ and $\joinNT$ respectively.
% %
\begin{align*} \begin{align*}
\join \lll \fmap\ \join \join \lll \fmap\ \join
@ -623,11 +458,8 @@
\pause \pause
% %
\begin{align*} \begin{align*}
\label{eq:monad-kleisli-laws-0}
\bind\ \pure &\identity_{\omapR\ X} \\ \bind\ \pure &\identity_{\omapR\ X} \\
\label{eq:monad-kleisli-laws-1}
\pure \fish f & ≡ f \\ \pure \fish f & ≡ f \\
\label{eq:monad-kleisli-laws-2}
(\bind\ f) \rrr (\bind\ g) &\bind\ (f \fish g) (\bind\ f) \rrr (\bind\ g) &\bind\ (f \fish g)
\end{align*} \end{align*}
\end{frame} \end{frame}
@ -647,7 +479,8 @@
\join\bind\ \identity \join\bind\ \identity
$$ $$
\pause \pause
The laws are logically equivalent. So we get: The laws are logically equivalent. Since logical equivalence is
enough for as an equivalence of types for propositions we get:
% %
$$ $$
\var{Monoidal}\var{Kleisli} \var{Monoidal}\var{Kleisli}