\documentclass{article} \usepackage[utf8]{inputenc} \usepackage{natbib} \usepackage[hidelinks]{hyperref} \usepackage{graphicx} \usepackage{color,soul} \usepackage[colorinlistoftodos]{todonotes} \usepackage{parskip} \usepackage{multicol} \usepackage{amsmath,amssymb} % \setlength{\parskip}{10pt} % \usepackage{tikz} % \usetikzlibrary{arrows, decorations.markings} % \usepackage{chngcntr} % \counterwithout{figure}{section} \usepackage{chalmerstitle} \input{macros.tex} % \newcommand{\sectiondescription}[1]{\todo[inline,color=green!40]{#1}} \newcommand{\sectiondescription}[1]{\iffalse #1\fi} \newcommand{\mycomment}[1]{\hl{#1}} \title{Category Theory and Cubical Type Theory} \author{Frederik Hanghøj Iversen} \authoremail{hanghj@student.chalmers.se} \supervisor{Thierry Coquand} \supervisoremail{coquand@chalmers.se} \cosupervisor{Andrea Vezzosi} \cosupervisoremail{vezzosi@chalmers.se} \institution{Chalmers University of Technology} \begin{document} \maketitle % \sectiondescription{Text marked like this describe what should go in the section.} % \section{Introduction} % \sectiondescription{% Briefly describe and motivate the project, and convince the reader of the importance of the proposed thesis work. A good introduction will answer these questions: Why is addressing these challenges significant for gaining new knowledge in the studied domain? How and where can this new knowledge be applied? } % Functional extensionality and univalence is not expressible in \nomen{Intensional Martin Löf Type Theory} (ITT). This poses a severe limitation on both 1) what is \emph{provable} and 2) the \emph{reusability} of proofs. Recent developments have, however, resulted in \nomen{Cubical Type Theory} (CTT) which permits a constructive proof of these two important notions. Furthermore an extension has been implemented for the proof assistant Agda (\cite{agda}) that allows us to work in such a ``cubical setting''. This project will be concerned with exploring the usefulness of this extension. As a case-study I will consider \nomen{category theory}. This will serve a dual purpose: First off category theory is a field where the notion of functional extensionality and univalence wil be particularly useful. Secondly, Category Theory gives rise to a \nomen{model} for CTT. The project will consist of two parts: The first part will be concerned with formalizing concepts from category theory. The focus will be on formalizing parts that will be useful in the second part of the project: Showing that \nomen{Cubical Sets} give rise to a model of CTT. % \section{Problem} % \sectiondescription{% This section is optional. It may be used if there is a need to describe the problem that you want to solve in more technical detail and if this problem description is too extensive to fit in the introduction. } % In the following two subsections I present two examples that illustrate the limitaiton inherent in ITT and by extension to the expressiveness of Agda. % \subsection{Functional extensionality} Consider the functions: % \begin{multicols}{2} $f \defeq (n : \bN) \mapsto (0 + n : \bN)$ $g \defeq (n : \bN) \mapsto (n + 0 : \bN)$ \end{multicols} % $n + 0$ is definitionally equal to $n$. We call this \nomen{defnitional equality} and write $n + 0 = n$ to assert this fact. We call it definitional equality because the \emph{equality} arises from the \emph{definition} of $+$ which is: % \newcommand{\suc}[1]{\mathit{suc}\ #1} \begin{align*} + & : \bN \to \bN \\ n + 0 & \defeq n \\ n + (\suc{m}) & \defeq \suc{(n + m)} \end{align*} % Note that $0 + n$ is \emph{not} definitionally equal to $n$. $0 + n$ is in normal form. I.e.; there is no rule for $+$ whose left-hand-side matches this expression. We \emph{do}, however, have that they are \nomen{propositionally} equal. We write $n + 0 \equiv n$ to assert this fact. Propositional equality means that there is a proof that exhibits this relation. Since equality is a transitive relation we have that $n + 0 \equiv 0 + n$. Unfortunately we don't have $f \equiv g$.\footnote{Actually showing this is outside the scope of this text. Essentially it would involve giving a model for our type theory that validates all our axioms but where $f \equiv g$ is not true.} There is no way to construct a proof asserting the obvious equivalence of $f$ and $g$ -- even though we can prove them equal for all points. This is exactly the notion of equality of functions that we are interested in; that they are equal for all inputs. We call this \nomen{pointwise equality}. Where the \emph{points} of a function refers to it's arguments. % \iffalse I also want to talk about: \begin{itemize} \item Foundational systems \item Theory vs. metatheory \item Internal type theory \end{itemize} \fi \subsection{Equality of isomorphic types} % Let $\top$ denote the unit type -- a type with a single constructor. In the propositions-as-types interpretation of type theory $\top$ is the proposition that is always true. The type $A \x \top$ and $A$ has an element for each $a : A$. So in a sense they are the same. The second element of the pair does not add any ``interesting information''. It can be useful to identify such types. In fact, it is quite commonplace in mathematics. Say we look at a set $\{x \mid \phi\ x \land \psi\ x\}$ and somehow conclude that $\psi\ x \equiv \top$ for all $x$. A mathematician would immediately conclude $\{x \mid \phi\ x \land \psi\ x\} \equiv \{x \mid \phi\ x\}$ without thinking twice. Unfortunately such an identification can not be performed in ITT. More specifically; what we are interested in is a way of identifying types that are in a one-to-one correspondence. We say that such types are \nomen{isomorphic} and write $A \cong B$ to assert this. To prove two types isomorphic is to give an \nomen{isomorphism} between them. That is, a function $f : A \to B$ with an inverse $f^{-1} : B \to A$, i.e.: $f^{-1} \comp f \equiv id_A$. If such a function exist we say that $A$ and $B$ are isomorphic and write $A \cong B$. Furthermore we want to \emph{identify} such isomorphic types. This, we get from the principle of univalence:\footnote{It's often referred to as the univalence axiom, but since it is not an axiom in this setting but rather a theorem I refer to this just as a `principle'.} % $$(A \cong B) \cong (A \equiv B)$$ % \subsection{Formalizing Category Theory} % The above examples serves to illustrate the limitation of Agda. One case where these limitations are particularly prohibitive is in the study of Category Theory. At a glance category theory can be described as ``the mathematical study of (abstract) algebras of functions'' (\cite{awodey-2006}). So by that token functional extensionality is particularly useful for formulating Category Theory. In Category theory it is also common to identify isomorphic structures and this is exactly what we get from univalence. \subsection{Cubical model for Cubical Type Theory} % A model is a way of giving meaning to a formal system in a \emph{meta-theory}. A typical example of a model is that of sets as models for predicate logic. Thus set-theory becomes the meta-theory of the formal language of predicate logic. In the context of a given type theory and restricting ourselves to \emph{categorical} models a model will consists of mapping `things' from the type-theory (types, terms, contexts, context morphisms) to `things' in the meta-theory (objects, morphisms) in such a way that the axioms of the type-theory (typing-rules) are validated in the meta-theory. In \cite{dybjer-1995} the author describes a way of constructing such models for dependent type theory called \emph{Categories with Families} (CwFs). In \cite{bezem-2014} the authors device a CwF for Cubical Type Theory. This project will study and formalize this model. Note that I will \emph{not} aim to formalize CTT itself and therefore also not give the formal translation between the type theory and the meta-theory. In stead the translation will be accounted for informally. % \section{Context} % \sectiondescription{% Use one or two relevant and high quality references for providing evidence from the literature that the proposed study indeed includes scientific and engineering challenges, or is related to existing ones. Convince the reader that the problem addressed in this thesis has not been solved prior to this project. } % In \cite{bezem-2014} a categorical model for cubical type theory is presented. In \cite{cohen-2016} a type-theory where univalence is expressible is presented. The categorical model in the previous reference serve as a model of this type theory. So these two ideas are closely related. Cubical type theory arose out of \nomen{Homotopy Type Theory} (\cite{hott-2013}) and is also of interest as a foundation of mathematics (\cite{voevodsky-2011}). An implementation of cubical type theory can be found as an extension to Agda. This is due to \citeauthor{cubical-agda}. This, of course, will be central to this thesis. The idea of formalizing Category Theory in proof assistants is not a new idea\footnote{There are a multitude of these available online. Just as first reference see this question on Math Overflow: \cite{so-formalizations}}. The contribution of this thesis is to explore how working in a cubical setting will make it possible to prove more things and to reuse proofs. There are alternative approaches to working in a cubical setting where one can still have univalence and functional extensionality. One option is to postulate these as axioms. This approach, however, has other shortcomings, e.g.; you lose \nomen{canonicity} (\cite{huber-2016}). Canonicity means that any well-type term will (under evaluation) reduce to a \emph{canonical} form. For example for an integer $e : \bN$ it will be the case that $e$ is definitionally equal to $n$ application of $\mathit{suc}$ to $0$ for some $n$; $e = \mathit{suc}^n\ 0$. Without canonicity terms in the language can get ``stuck'' when they are evaluated. Another approach is to use the \emph{setoid interpretation} of type theory (\cite{hofmann-1995,huber-2016}). Types should additionally `carry around' an equivalence relation that should serve as propositional equality. This approach has other drawbacks; it does not satisfy all judgemental equalites of type theory and is cumbersome to work with in practice (\cite[p. 4]{huber-2016}). % \section{Goals and Challenges} % \sectiondescription{% Describe your contribution with respect to concepts, theory and technical goals. Ensure that the scientific and engineering challenges stand out so that the reader can easily recognize that you are planning to solve an advanced problem. } % In summary, the aim of the project is to: % \begin{itemize} \item Formalize Category Theory in Cubical Agda \item Formalize Cubical Sets in Agda % \item % Formalize Cubical Type Theory in Agda \item Show that Cubical Sets are a model for Cubical Type Theory \end{itemize} % The formalization of category theory will focus on extracting the elements from Category Theory that we need in the latter part of the project. In doing so I'll be gaining experience with working with Cubical Agda. Equality proofs using cubical Agda can be tricky, so working with that will be a challenge in itself. Most of the proofs in the context of cubical models I will formalize are based on previous work. Those proofs, however, are not formalized in a proof assistant. One particular challenge in this context is that in a cubical setting there can be multiple distinct terms that inhabit a given equality proof.\footnote{This is in contrast with ITT that enjoys \nomen{Uniqueness of identity proofs} (\cite[p. 4]{huber-2016}).} This means that the choice for a given equality proof can influence later proofs that refer back to said proof. This is new and relatively unexplored territory. Another challenge is that Category Theory is something that I only know the basics of. So learning the necessary concepts from Category Theory will also be a goal and a challenge in itself. After this has been implemented it would also be possible to formalize Cubical Type Theory and formally show that Cubical Sets are a model of this. This is not a goal for this thesis but rather a natural extension of it. The thesis shall conclude with a discussion about the benefits of Cubical Agda. % \iffalse \section{Approach} % \sectiondescription{% Various scientific approaches are appropriate for different challenges and project goals. Outline and justify the ones that you have selected. For example, when your project considers systematic data collection, you need to explain how you will analyze the data, in order to address your challenges and project goals. One scientific approach is to use formal models and rigorous mathematical argumentation to address aspects like correctness and efficiency. If this is relevant, describe the related algorithmic subjects, and how you plan to address the studied problem. For example, if your plan is to study the problem from a computability aspect, address the relevant issues, such as algorithm and data structure design, complexity analysis, etc. If you plan to develop and evaluate a prototype, briefly describe your plans to design, implement, and evaluate your prototype by reviewing at most two relevant issues, such as key functionalities and their evaluation criteria. The design and implementation should specify prototype properties, such as functionalities and performance goals, e.g., scalability, memory, energy. Motivate key design selection, with respect to state of the art and existing platforms, libraries, etc. When discussing evaluation criteria, describe the testing environment, e.g., test-bed experiments, simulation, and user studies, which you plan to use when assessing your prototype. Specify key tools, and preliminary test-case scenarios. Explain how and why you plan to use the evaluation criteria in order to demonstrate the functionalities and design goals. Explain how you plan to compare your prototype to the state of the art using the proposed test-case evaluation scenarios and benchmarks. } % \mycomment{I don't know what more I can say here than has already been explained. Perhaps this section is not needed for me?} % \fi \section{References} % \bibliographystyle{plainnat} \nocite{cubical-demo} \nocite{coquand-2013} \bibliography{refs} \end{document}