2018-05-07 22:25:34 +00:00
|
|
|
\chapter{Conclusion}
|
2018-05-10 10:19:44 +00:00
|
|
|
This thesis highlighted some of issues with the standard inductive definition of
|
|
|
|
propositional equality used in Agda. Functional extensionality and univalence
|
|
|
|
are two examples not admissible in Intensional Type Theory (ITT). This issue is
|
|
|
|
overcome with an extension to Agda's type system called Cubical Agda. With
|
|
|
|
Cubical Agda both functional extensionality and univalence are admissible.
|
|
|
|
Cubical Agda is more expressive, but there are certain issues that arise that
|
|
|
|
are not present in standard Agda. For one thing ITT and standard Agda enjoys
|
|
|
|
Uniqueness of Identity Proofs (UIP). This is not the case in Cubical Agda. In
|
|
|
|
stead there exists a hierarchy of types with increasing \nomen{homotopical
|
|
|
|
structure}. It turns out to be useful to built the formalization with this in
|
|
|
|
mind as it can simplify proofs considerably. Another issue one must overcome in
|
|
|
|
Cubical Agda is when a type has a field whose type depends on a previous field.
|
|
|
|
In this case paths between such types will be heterogeneous paths which in
|
|
|
|
practice turns out to be considerably more difficult to work with than
|
|
|
|
homogeneous paths. The thesis also demonstrated how to use appropriate
|
|
|
|
abstraction techniques for dealing with this, such as based path-induction.
|
2018-05-07 22:25:34 +00:00
|
|
|
|
2018-05-10 10:19:44 +00:00
|
|
|
This thesis formalized some of the core concepts from category theory including;
|
|
|
|
categories, functors, products, exponentials, Cartesian closed categories,
|
|
|
|
natural transformations, the yoneda embedding and monads. Category theory is an
|
|
|
|
interesting case-study for the application of Cubical Agda for two reasons in
|
|
|
|
particular: Because category theory is the study of abstract algebra of
|
|
|
|
functions, meaning that functional extensionality is particularly relevant.
|
|
|
|
Another reason is that in category theory it is commonplace to identity
|
|
|
|
isomorphic structures and univalence allows us to make this notion precise. The
|
|
|
|
thesis also demonstrated another technique that is common in category theory;
|
|
|
|
namely to define categories to prove properties of other structures.
|
|
|
|
Specifically a category was defined to demonstrate that any two product objects
|
|
|
|
in a category are isomorphic. Furthermore the thesis showed two formulations of
|
|
|
|
monads and proved that they indeed are equivalent: Namely monoidal- and Kleisli-
|
|
|
|
monads. The monoidal formulation is more typical to category theoretic
|
|
|
|
formulations and the Kleisli formulation will be more familiar to functional
|
|
|
|
programmers. In the formulation we also saw how paths can be used to extract
|
|
|
|
functions. A path between two types induce an isomorphism between the two types.
|
|
|
|
This e.g. permits developers to write a monad instance for a given type using
|
|
|
|
the Kleisli formulation. By transporting this formulation to become a monoidal
|
|
|
|
monad one can reuse all results about monoidal monads on the Kleisli
|
|
|
|
formulation.
|
|
|
|
%%
|
|
|
|
%% problem with inductive type
|
|
|
|
%% overcome with cubical
|
|
|
|
%% the path type
|
|
|
|
%% homotopy levels
|
|
|
|
%% depdendent paths
|
|
|
|
%%
|
|
|
|
%% category theory
|
|
|
|
%% algebra of functions ~ funExt
|
|
|
|
%% identify isomorphic types ~ univalence
|
|
|
|
%% using categories to prove properties
|
|
|
|
%% computational properties
|
|
|
|
%% reusability, compositional
|