% !TeX spellcheck = en_US
\documentclass[10pt,a4paper]{article}

\include{./header.tex}

\title{Completeness Proof for different logical frameworks
	\\[1ex] \large Notes on my 3 month internship at Faculty of Informatics (ELTE, Budapest)}
\hypersetup{pdftitle={Completeness Proof for different kinds of logical frameworks}}
\author{Samy Avrillon, supervised by
	\\[1ex] Ambrus Kaposi (ELTE, Budapest)
	\\[1ex] and Thorsten Altenkirsch (University of Notthingham, United Kingdom)}

\begin{document}
	
	\doparttoc
	\maketitle
	
	\hsep
	
	\tableofcontents
	
	\newpage
	
	
	\section{Introduction}
	
		In the first place, i was supposed to do this internship in Nottingham (UK) with Thorsten Altenkirsh. But, because of administrative issues, i was not able to go there, and Thorsten Altenkirsh contacted Ambrus Kaposi in Budapest, whose university agreed to accept me. Therefore, i went to Budapest and i did the internship under the physical supervision of Ambrus Kaposi, and the remote supervision of Thorsten Altenkirsch.
		
		The original subject of the internship was \enquote{Developping a simplified account of normalization by evaluation using the theory of categories with families}. But there was a lot to do, starting with learning how to use Agda.
		
		\subsection{Introduction to the problem}
			What i do call a \enquote{logic} is a set of definitions containing formulæ and a notion of provability of those formulæ, plus a set of operators/equalities to construct or reduce these rules. I have studied the most common logical frameworks, that is, Propositional Logic, First-order logic with infinitary predicates, and Predicate Logic. For each of those logics, one can define a notion of \emph{model}. A model of a certain kind of logic is something that implements all of the logic's definitions, operators and equalities. From all of those models, one can extract the \emph{initial model}, also called \emph{syntax}. It is the smallest of all models, which means that from any model of that logic, we have a morphism from the syntax to that model.
			
			Then, our goal is for each logic to prove the completeness of a specific class of models. Completeness can be stated as such: \enquote{For any formula that is \emph{true} in all models of the specified class, then the formula has a proof in the syntax}. By being true in the model, one can understand that the formula has a proof from the model.
		\subsection{Motivation}
		\subsection{Structure of this report}
	\section{A first account of Completeness and Normalization}
		\subsection{Normalization for ZOL}
		\subsection{Normalization for IFOL}
		\subsection{Merging the two proofs}
	\section{Predicate Logic}
		\subsection{SOGAT Presentation of FFOL}
		
		\begin{tcolorbox}
			\[
			\begin{array}{lcl}
				\Tm & : & \Set^+ \\
				\\
				\For & : & \Set \\
				- \implies - & : & \For \rightarrow \For \rightarrow \For\\
				\forall & : & (\Tm \rightarrow \For) \rightarrow \For \\
				\R & : & \Tm \rightarrow \Tm \rightarrow \For\\
				\\
				\Pf & : & \For \rightarrow \Prop^+ \\
				\lam & : & (\Pf A \rightarrow \Pf B) \rightarrow \Pf (A \implies B)\\
				\app & : & \Pf (A \implies B) \rightarrow (\Pf A \rightarrow \Pf B)\\
				\foralli & : & (t : \Tm \rightarrow^+ A\;t) \rightarrow \Pf (\forall A)\\
				\foralle & : & \Pf (\forall A) \rightarrow (t : \Tm) \rightarrow \Pf (A\;t)\\
			\end{array}
			\]
		\end{tcolorbox}
	
		\subsection{Turning a SOGAT Presentation into a GAT}
			\begin{tcolorbox}
				\agda{agda/Con.tex}
			\end{tcolorbox}
	
			\begin{tcolorbox}
				\agda{agda/Tm.tex}
			\end{tcolorbox}
	
			\begin{tcolorbox}
				\agda{agda/Tm+.tex}
			\end{tcolorbox}
	
			\begin{tcolorbox}
				\agda{agda/For.tex}
			\end{tcolorbox}
	
			\begin{tcolorbox}
				\agda{agda/Pf.tex}
			\end{tcolorbox}
	
			\begin{tcolorbox}
				\agda{agda/Pf+.tex}
			\end{tcolorbox}
	
			\begin{tcolorbox}
				\agda{agda/R.tex}
			\end{tcolorbox}
	
			\begin{tcolorbox}
				\agda{agda/Imp.tex}
			\end{tcolorbox}
	
			\begin{tcolorbox}
				\agda{agda/Forall.tex}
			\end{tcolorbox}
	
			\begin{tcolorbox}
				\agda{agda/LamApp.tex}
			\end{tcolorbox}
	
			\begin{tcolorbox}
				\agda{agda/ForallR.tex}
			\end{tcolorbox}
			
	\section{Implementing the Syntax}
		\subsection{Separated Contexts}
		
			\begin{tcolorbox}
				\agda{agda/ICont.tex}
			\end{tcolorbox}
		
			\begin{tcolorbox}
				\agda{agda/IFor.tex}
			\end{tcolorbox}
		
			\begin{tcolorbox}
				\agda{agda/ISubt.tex}
			\end{tcolorbox}
		
			\begin{tcolorbox}
				\agda{agda/ITm.tex}
			\end{tcolorbox}
		
			\begin{tcolorbox}
				\agda{agda/ISubtT.tex}
			\end{tcolorbox}
		
			\begin{tcolorbox}
				\agda{agda/ISubTF.tex}
			\end{tcolorbox}
		
			\begin{tcolorbox}
				\agda{agda/IIdCompT.tex}
			\end{tcolorbox}
		
			\begin{tcolorbox}
				\agda{agda/IConp.tex}
			\end{tcolorbox}
		
			\begin{tcolorbox}
				\agda{agda/ISubtC.tex}
			\end{tcolorbox}
		
			\begin{tcolorbox}
				\agda{agda/IConpTp.tex}
			\end{tcolorbox}
		
			\begin{tcolorbox}
				\agda{agda/IPf.tex}
			\end{tcolorbox}
		
			\begin{tcolorbox}
				\agda{agda/IRen.tex}
			\end{tcolorbox}
		
			\begin{tcolorbox}
				\agda{agda/ISubp.tex}
			\end{tcolorbox}
		
			\begin{tcolorbox}
				\agda{agda/ISubtP.tex}
			\end{tcolorbox}
		
			\begin{tcolorbox}
				\agda{agda/ISubtS.tex}
			\end{tcolorbox}
		
			\begin{tcolorbox}
				\agda{agda/ISubpP.tex}
			\end{tcolorbox}
		
			\begin{tcolorbox}
				\agda{agda/IIdCompP.tex}
			\end{tcolorbox}
			\begin{tcolorbox}
				\agda{agda/ICon.tex}
			\end{tcolorbox}
		
			\begin{tcolorbox}
				\agda{agda/ISub.tex}
			\end{tcolorbox}
		
			\begin{tcolorbox}
				\agda{agda/IIdComp.tex}
			\end{tcolorbox}
		
			\begin{tcolorbox}
				\agda{agda/ICExt.tex}
			\end{tcolorbox}
		
		\subsection{Transport Hell}
	
	\section{Summary}
	
	
	\section{Bibliography}
	\begingroup
	\renewcommand{\section}[2]{}%
	\printbibliography
	\endgroup
	
	\newpage
	\addappheadtotoc
	\appendix
	\addtocontents{toc}{\protect\setcounter{tocdepth}{-1}}
	\appendixpage
	
	\section{Agda Code}
	
\end{document} 
