Fix spacing after 'e.g.' and 'i.e.'
This commit is contained in:
parent
d33c814e78
commit
be88602d24
|
@ -61,7 +61,7 @@ $I$. I will sometimes refer to $P$ as the \nomenindex{path space} of some path $
|
||||||
\Path\ P\ a\ b$. By this token $P\ 0$ then corresponds to the type at the
|
\Path\ P\ a\ b$. By this token $P\ 0$ then corresponds to the type at the
|
||||||
left-endpoint and $P\ 1$ as the type at the right-endpoint. The type is called
|
left-endpoint and $P\ 1$ as the type at the right-endpoint. The type is called
|
||||||
$\Path$ because it is connected with paths in homotopy theory. The intuition
|
$\Path$ because it is connected with paths in homotopy theory. The intuition
|
||||||
behind this is that $\Path$ describes paths in $\MCU$ -- i.e. between types. For
|
behind this is that $\Path$ describes paths in $\MCU$ -- i.e.\ between types. For
|
||||||
a path $p$ for the point $p\ i$ the index $i$ describes how far along the path
|
a path $p$ for the point $p\ i$ the index $i$ describes how far along the path
|
||||||
one has moved. An inhabitant of $\Path\ P\ a_0\ a_1$ is a (dependent-) function,
|
one has moved. An inhabitant of $\Path\ P\ a_0\ a_1$ is a (dependent-) function,
|
||||||
$p$, from the index-space to the path space:
|
$p$, from the index-space to the path space:
|
||||||
|
@ -104,7 +104,7 @@ With this definition we can also recover reflexivity. That is, for any $A \tp
|
||||||
Here the path space is $P \defeq \lambda i \to A$ and it satsifies $P\ i = A$
|
Here the path space is $P \defeq \lambda i \to A$ and it satsifies $P\ i = A$
|
||||||
definitionally. So to inhabit it, is to give a path $I \to A$ which is
|
definitionally. So to inhabit it, is to give a path $I \to A$ which is
|
||||||
judgmentally $a$ at either endpoint. This is satisfied by the constant path;
|
judgmentally $a$ at either endpoint. This is satisfied by the constant path;
|
||||||
i.e. the path that stays at $a$ at any index $i$.
|
i.e.\ the path that stays at $a$ at any index $i$.
|
||||||
|
|
||||||
It is also surpisingly easy to show functional extensionality with which we can
|
It is also surpisingly easy to show functional extensionality with which we can
|
||||||
construct a path between $f$ and $g$ -- the functions defined in the
|
construct a path between $f$ and $g$ -- the functions defined in the
|
||||||
|
@ -207,7 +207,7 @@ Then comes the set of homotopical sets:
|
||||||
\end{equation}
|
\end{equation}
|
||||||
%
|
%
|
||||||
I will not give an example of a set at this point. It turns out that proving
|
I will not give an example of a set at this point. It turns out that proving
|
||||||
e.g. $\isProp\ \bN$ is not so straight-forward (see \cite[\S3.1.4]{hott-2013}).
|
e.g.\ $\isProp\ \bN$ is not so straight-forward (see \cite[\S3.1.4]{hott-2013}).
|
||||||
There will be examples of sets later in this report. At this point it should be
|
There will be examples of sets later in this report. At this point it should be
|
||||||
noted that the term ``set'' is somewhat conflated; there is the notion of sets
|
noted that the term ``set'' is somewhat conflated; there is the notion of sets
|
||||||
from set-theory, in Agda types are denoted \texttt{Set}. I will use it
|
from set-theory, in Agda types are denoted \texttt{Set}. I will use it
|
||||||
|
|
|
@ -15,7 +15,7 @@ formalized this common result about monads:
|
||||||
|
|
||||||
By transporting this to the Kleisli formulation we get a result that we can use
|
By transporting this to the Kleisli formulation we get a result that we can use
|
||||||
to compute with. This is particularly useful because the Kleisli formulation
|
to compute with. This is particularly useful because the Kleisli formulation
|
||||||
will be more familiar to programmers e.g. those coming from a background in
|
will be more familiar to programmers e.g.\ those coming from a background in
|
||||||
Haskell. Whereas the theory usually talks about monoidal monads.
|
Haskell. Whereas the theory usually talks about monoidal monads.
|
||||||
|
|
||||||
\TODO{Mention that with postulates we cannot do this}
|
\TODO{Mention that with postulates we cannot do this}
|
||||||
|
|
|
@ -3,7 +3,7 @@ I've written this as an appendix because 1) the aim of the thesis changed
|
||||||
drastically from the planning report/proposal 2) partly I'm not sure how to
|
drastically from the planning report/proposal 2) partly I'm not sure how to
|
||||||
structure my thesis.
|
structure my thesis.
|
||||||
|
|
||||||
My work so far has very much focused on the formalization, i.e. coding. It's
|
My work so far has very much focused on the formalization, i.e.\ coding. It's
|
||||||
unclear to me at this point what I should have in the final report. Here I will
|
unclear to me at this point what I should have in the final report. Here I will
|
||||||
describe what I have managed to formalize so far and what outstanding challenges
|
describe what I have managed to formalize so far and what outstanding challenges
|
||||||
I'm facing.
|
I'm facing.
|
||||||
|
|
|
@ -202,7 +202,7 @@ set.
|
||||||
This example illustrates nicely how we can use these combinators to reason about
|
This example illustrates nicely how we can use these combinators to reason about
|
||||||
`canonical' types like $\sum$ and $\prod$. Similar combinators can be defined at
|
`canonical' types like $\sum$ and $\prod$. Similar combinators can be defined at
|
||||||
the other homotopic levels. These combinators are however not applicable in
|
the other homotopic levels. These combinators are however not applicable in
|
||||||
situations where we want to reason about other types - e.g. types we have
|
situations where we want to reason about other types - e.g.\ types we have
|
||||||
defined ourselves. For instance, after we have proven that all the projections
|
defined ourselves. For instance, after we have proven that all the projections
|
||||||
of pre categories are propositions, then we would like to bundle this up to show
|
of pre categories are propositions, then we would like to bundle this up to show
|
||||||
that the type of pre categories is also a proposition. Formally:
|
that the type of pre categories is also a proposition. Formally:
|
||||||
|
@ -247,7 +247,7 @@ $$
|
||||||
So to give the continuous function $I \to \IsPreCategory$, which is our goal, we
|
So to give the continuous function $I \to \IsPreCategory$, which is our goal, we
|
||||||
introduce $i \tp I$ and proceed by constructing an element of $\IsPreCategory$
|
introduce $i \tp I$ and proceed by constructing an element of $\IsPreCategory$
|
||||||
by using the fact that all the projections are propositions to generate paths
|
by using the fact that all the projections are propositions to generate paths
|
||||||
between all projections. Once we have such a path e.g. $p \tp a.\isIdentity
|
between all projections. Once we have such a path e.g.\ $p \tp a.\isIdentity
|
||||||
\equiv b.\isIdentity$ we can eliminate it with $i$ and thus obtain $p\ i \tp
|
\equiv b.\isIdentity$ we can eliminate it with $i$ and thus obtain $p\ i \tp
|
||||||
(p\ i).\isIdentity$. This element satisfies exactly that it corresponds to the
|
(p\ i).\isIdentity$. This element satisfies exactly that it corresponds to the
|
||||||
corresponding projections at either endpoint. Thus the element we construct at
|
corresponding projections at either endpoint. Thus the element we construct at
|
||||||
|
@ -436,7 +436,7 @@ That is, we must demonstrate that there is an isomorphism (on types) between
|
||||||
equalities and isomorphisms (on arrows). It is worthwhile to dwell on this for a
|
equalities and isomorphisms (on arrows). It is worthwhile to dwell on this for a
|
||||||
few seconds. This type looks very similar to univalence for types and is
|
few seconds. This type looks very similar to univalence for types and is
|
||||||
therefore perhaps a bit more intuitive to grasp the implications of. Of course
|
therefore perhaps a bit more intuitive to grasp the implications of. Of course
|
||||||
univalence for types (which is a proposition -- i.e. provable) does not imply
|
univalence for types (which is a proposition -- i.e.\ provable) does not imply
|
||||||
univalence of all pre category since morphisms in a category are not regular
|
univalence of all pre category since morphisms in a category are not regular
|
||||||
functions -- in stead they can be thought of as a generalization hereof. The univalence criterion therefore is simply a way of restricting arrows
|
functions -- in stead they can be thought of as a generalization hereof. The univalence criterion therefore is simply a way of restricting arrows
|
||||||
to behave similarly to maps.
|
to behave similarly to maps.
|
||||||
|
@ -551,7 +551,7 @@ same as the one in the underlying category (they have the same type). Function
|
||||||
composition will be reverse function composition from the underlying category.
|
composition will be reverse function composition from the underlying category.
|
||||||
|
|
||||||
I will refer to things in terms of the underlying category, unless they have an
|
I will refer to things in terms of the underlying category, unless they have an
|
||||||
over-bar. So e.g. $\idToIso$ is a function in the underlying category and the
|
over-bar. So e.g.\ $\idToIso$ is a function in the underlying category and the
|
||||||
corresponding thing is denoted $\wideoverbar{\idToIso}$ in the opposite
|
corresponding thing is denoted $\wideoverbar{\idToIso}$ in the opposite
|
||||||
category.
|
category.
|
||||||
|
|
||||||
|
@ -1333,7 +1333,7 @@ f \rrr (\bind\ g)$ . (\TODO{Better way to typeset $\fish$?})
|
||||||
\subsection{Equivalence of formulations}
|
\subsection{Equivalence of formulations}
|
||||||
%
|
%
|
||||||
The notation I have chosen here in the report
|
The notation I have chosen here in the report
|
||||||
overloads e.g. $\pure$ to both refer to a natural transformation and an arrow.
|
overloads e.g.\ $\pure$ to both refer to a natural transformation and an arrow.
|
||||||
This is of course not a coincidence as the arrow in the Kleisli formulation
|
This is of course not a coincidence as the arrow in the Kleisli formulation
|
||||||
shall correspond exactly to the map on arrows from the natural transformation
|
shall correspond exactly to the map on arrows from the natural transformation
|
||||||
called $\pure$.
|
called $\pure$.
|
||||||
|
|
|
@ -185,16 +185,16 @@ will make it possible to prove more things and to reuse proofs and to try and
|
||||||
compare some aspects of this formalization with the existing ones.\TODO{How can
|
compare some aspects of this formalization with the existing ones.\TODO{How can
|
||||||
I live up to this?}
|
I live up to this?}
|
||||||
|
|
||||||
There are alternative approaches to working in a cubical setting where one can
|
There are alternative approaches to working in a cubical setting where
|
||||||
still have univalence and functional extensionality. One option is to postulate
|
one can still have univalence and functional extensionality. One
|
||||||
these as axioms. This approach, however, has other shortcomings, e.g.; you lose
|
option is to postulate these as axioms. This approach, however, has
|
||||||
|
other shortcomings, e.g. you lose \nomenindex{canonicity}
|
||||||
\nomenindex{canonicity} (\TODO{Pageno!} \cite{huber-2016}). Canonicity means that any
|
(\TODO{Pageno!} \cite{huber-2016}). Canonicity means that any well
|
||||||
well typed term evaluates to a \emph{canonical} form. For example for a closed
|
typed term evaluates to a \emph{canonical} form. For example for a
|
||||||
term $e \tp \bN$ it will be the case that $e$ reduces to $n$ applications of
|
closed term $e \tp \bN$ it will be the case that $e$ reduces to $n$
|
||||||
$\mathit{suc}$ to $0$ for some $n$; $e = \mathit{suc}^n\ 0$. Without canonicity
|
applications of $\mathit{suc}$ to $0$ for some $n$; $e =
|
||||||
terms in the language can get ``stuck'' -- meaning that they do not reduce to a
|
\mathit{suc}^n\ 0$. Without canonicity terms in the language can get
|
||||||
canonical form.
|
``stuck'' -- meaning that they do not reduce to a canonical form.
|
||||||
|
|
||||||
Another approach is to use the \emph{setoid interpretation} of type
|
Another approach is to use the \emph{setoid interpretation} of type
|
||||||
theory (\cite{hofmann-1995,huber-2016}). With this approach one works
|
theory (\cite{hofmann-1995,huber-2016}). With this approach one works
|
||||||
|
|
236
doc/presentation.tex
Normal file
236
doc/presentation.tex
Normal file
|
@ -0,0 +1,236 @@
|
||||||
|
\documentclass[a4paper,handout]{beamer}
|
||||||
|
\input{packages.tex}
|
||||||
|
\input{macros.tex}
|
||||||
|
\title{Univalent Categories}
|
||||||
|
\author{Frederik Hangh{\o}j Iversen}
|
||||||
|
\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 (n \tp \bN) \mto (0 + n \tp \bN) \\
|
||||||
|
\var{zeroRight} & \defeq (n \tp \bN) \mto (n + 0 \tp \bN)
|
||||||
|
\end{align*}
|
||||||
|
\pause
|
||||||
|
We have
|
||||||
|
%
|
||||||
|
$$
|
||||||
|
\prod_{n \tp \bN} n + 0 \equiv 0 + 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 not, 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*}
|
||||||
|
\pause
|
||||||
|
\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:
|
||||||
|
%
|
||||||
|
\begin{equation}
|
||||||
|
\pathJ\ D\ d \tp \prod_{b \tp A} \prod_{p \tp a ≡ b} D\ a\ p
|
||||||
|
\end{equation}
|
||||||
|
\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{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*}
|
||||||
|
%
|
||||||
|
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)
|
||||||
|
$$
|
||||||
|
\pause
|
||||||
|
Univalent categories:
|
||||||
|
$$
|
||||||
|
\isEquiv\ (A \equiv B)\ (A \approxeq B)\ \idToIso
|
||||||
|
$$
|
||||||
|
\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
|
||||||
|
$$
|
||||||
|
Let $\approxeq$ denote ismorphism of objects. We can then construct
|
||||||
|
the identity isomorphism in any category:
|
||||||
|
$$
|
||||||
|
\identity , \identity , \var{isIdentity} \tp A \approxeq A
|
||||||
|
$$
|
||||||
|
Likewise since paths are substitutive we can promote a path to an isomorphism:
|
||||||
|
$$
|
||||||
|
\idToIso \tp A ≡ B → A ≊ B
|
||||||
|
$$
|
||||||
|
For a category to be univalent we require this to be an equivalence:
|
||||||
|
\end{frame}
|
||||||
|
\end{document}
|
95
doc/title.tex
Normal file
95
doc/title.tex
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
%% FRONTMATTER
|
||||||
|
\frontmatter
|
||||||
|
%% \newgeometry{top=3cm, bottom=3cm,left=2.25 cm, right=2.25cm}
|
||||||
|
\begingroup
|
||||||
|
\thispagestyle{empty}
|
||||||
|
{\Huge\thetitle}\\[.5cm]
|
||||||
|
{\Large A formalization of category theory in Cubical Agda}\\[6cm]
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=\linewidth,keepaspectratio]{isomorphism.png}
|
||||||
|
\end{center}
|
||||||
|
% Cover text
|
||||||
|
\vfill
|
||||||
|
%% \renewcommand{\familydefault}{\sfdefault} \normalfont % Set cover page font
|
||||||
|
{\Large\theauthor}\\[.5cm]
|
||||||
|
Master's thesis in Computer Science
|
||||||
|
\endgroup
|
||||||
|
%% \end{titlepage}
|
||||||
|
|
||||||
|
|
||||||
|
% BACK OF COVER PAGE (BLANK PAGE)
|
||||||
|
\newpage
|
||||||
|
%% \newgeometry{a4paper} % Temporarily change margins
|
||||||
|
%% \restoregeometry
|
||||||
|
\thispagestyle{empty}
|
||||||
|
\null
|
||||||
|
|
||||||
|
%% \begin{titlepage}
|
||||||
|
|
||||||
|
% TITLE PAGE
|
||||||
|
\newpage
|
||||||
|
\thispagestyle{empty}
|
||||||
|
\begin{center}
|
||||||
|
\textsc{\LARGE Master's thesis \the\year}\\[4cm] % Report number is currently not in use
|
||||||
|
\textbf{\LARGE \thetitle} \\[1cm]
|
||||||
|
{\large \subtitle}\\[1cm]
|
||||||
|
{\large \theauthor}
|
||||||
|
|
||||||
|
\vfill
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=0.2\pdfpagewidth]{logo_eng.pdf}
|
||||||
|
\vspace{5mm}
|
||||||
|
|
||||||
|
\textsc{Department of Computer Science and Engineering}\\
|
||||||
|
\textsc{{\researchgroup}}\\
|
||||||
|
%Name of research group (if applicable)\\
|
||||||
|
\textsc{\institution} \\
|
||||||
|
\textsc{Gothenburg, Sweden \the\year}\\
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
|
||||||
|
% IMPRINT PAGE (BACK OF TITLE PAGE)
|
||||||
|
\newpage
|
||||||
|
\thispagestyle{plain}
|
||||||
|
\textit{\thetitle}\\
|
||||||
|
\subtitle\\
|
||||||
|
\copyright\ \the\year ~ \textsc{\theauthor}
|
||||||
|
\vspace{4.5cm}
|
||||||
|
|
||||||
|
\setlength{\parskip}{0.5cm}
|
||||||
|
\textbf{Author:}\\
|
||||||
|
\theauthor\\
|
||||||
|
\href{mailto:\authoremail>}{\texttt{<\authoremail>}}
|
||||||
|
|
||||||
|
\textbf{Supervisor:}\\
|
||||||
|
\supervisor\\
|
||||||
|
\href{mailto:\supervisoremail>}{\texttt{<\supervisoremail>}}\\
|
||||||
|
\supervisordepartment
|
||||||
|
|
||||||
|
\textbf{Co-supervisor:}\\
|
||||||
|
\cosupervisor\\
|
||||||
|
\href{mailto:\cosupervisoremail>}{\texttt{<\cosupervisoremail>}}\\
|
||||||
|
\cosupervisordepartment
|
||||||
|
|
||||||
|
\textbf{Examiner:}\\
|
||||||
|
\examiner\\
|
||||||
|
\href{mailto:\examineremail>}{\texttt{<\examineremail>}}\\
|
||||||
|
\examinerdepartment
|
||||||
|
|
||||||
|
\vfill
|
||||||
|
Master's Thesis \the\year\\ % Report number currently not in use
|
||||||
|
\department\\
|
||||||
|
%Division of Division name\\
|
||||||
|
%Name of research group (if applicable)\\
|
||||||
|
\institution\\
|
||||||
|
SE-412 96 Gothenburg\\
|
||||||
|
Telephone +46 31 772 1000 \setlength{\parskip}{0.5cm}\\
|
||||||
|
% Caption for cover page figure if used, possibly with reference to further information in the report
|
||||||
|
%% Cover: Wind visualization constructed in Matlab showing a surface of constant wind speed along with streamlines of the flow. \setlength{\parskip}{0.5cm}
|
||||||
|
%Printed by [Name of printing company]\\
|
||||||
|
Gothenburg, Sweden \the\year
|
||||||
|
|
||||||
|
%% \restoregeometry
|
||||||
|
%% \end{titlepage}
|
||||||
|
|
||||||
|
\tableofcontents
|
Loading…
Reference in a new issue