From 021a8074e37f7f17a49e646cff8cd5913142fa6a Mon Sep 17 00:00:00 2001
From: loutr <loutr@crans.org>
Date: Mon, 10 Oct 2022 08:28:00 +0200
Subject: [PATCH] =?UTF-8?q?Resolve=20"specification"=20=E2=9C=A8=EF=B8=8F?=
 =?UTF-8?q?=20Closes=20#6=20=F0=9F=90=94=EF=B8=8F=F0=9F=91=8D=EF=B8=8F=20A?=
 =?UTF-8?q?pproved-by:=20aalbert=20<augustin.albert@bleu-azure.fr>=20Appro?=
 =?UTF-8?q?ved-by:=20belazy=20<aarthuur01@gmail.com>=20Approved-by:=20v-la?=
 =?UTF-8?q?feychine=20<vincent.lafeychine@proton.me>?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

🦀️🍰🦀️🍰🦀️🍰

* docs: add specifications PDF

* docs: finish first version of the specifications

* docs: finish early description of specifications

* docs: add document template for specifiations

* feat(git): add LFS settings and TeX-specific .gitignore
---
 .gitattributes  |   4 +
 docs/.gitignore |  42 +++++++++
 docs/specs.pdf  | Bin 0 -> 48305 bytes
 docs/specs.tex  | 222 ++++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 268 insertions(+)
 create mode 100644 .gitattributes
 create mode 100644 docs/.gitignore
 create mode 100644 docs/specs.pdf
 create mode 100644 docs/specs.tex

diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 00000000..65803513
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,4 @@
+*.pdf filter=lfs diff=lfs merge=lfs -text
+*.png filter=lfs diff=lfs merge=lfs -text
+*.jpg filter=lfs diff=lfs merge=lfs -text
+*.jpeg filter=lfs diff=lfs merge=lfs -text
diff --git a/docs/.gitignore b/docs/.gitignore
new file mode 100644
index 00000000..55fd3083
--- /dev/null
+++ b/docs/.gitignore
@@ -0,0 +1,42 @@
+# Core latex/pdflatex auxiliary files:
+*.aux
+*.lof
+*.log
+*.lot
+*.fls
+*.out
+*.toc
+*.fmt
+*.fot
+*.cb
+*.cb2
+.*.lb
+
+## Generated if empty string is given at "Please type another file name for output:"
+.pdf
+
+## Bibliography auxiliary files (bibtex/biblatex/biber):
+*.bbl
+*.bcf
+*.blg
+*-blx.aux
+*-blx.bib
+*.run.xml
+
+## Build tool auxiliary files:
+*.fdb_latexmk
+*.synctex
+*.synctex(busy)
+*.synctex.gz
+*.synctex.gz(busy)
+*.pdfsync
+
+## Build tool directories for auxiliary files
+# latexrun
+latex.out/
+
+# beamer
+*.nav
+*.pre
+*.snm
+*.vrb
diff --git a/docs/specs.pdf b/docs/specs.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..080a909b6ffcad4337fce84987ce7943f1b1961d
GIT binary patch
literal 48305
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

literal 0
HcmV?d00001

diff --git a/docs/specs.tex b/docs/specs.tex
new file mode 100644
index 00000000..2e7f9f4b
--- /dev/null
+++ b/docs/specs.tex
@@ -0,0 +1,222 @@
+\documentclass[twocolumn]{article}
+\usepackage[british]{babel}
+\usepackage{textcase}% provides \MakeTextUppercase (does not impact math mode)
+\usepackage{amssymb, amsmath, amsthm, mathrsfs}
+\usepackage{fancyhdr}
+\usepackage{listings}
+\usepackage{bussproofs} % proof tree
+\usepackage{xcolor} % may not be loaded here, is already loaded by Beamer
+\RequirePackage[a4paper, left=2cm, right=2cm, bottom=3cm, headsep=100pt]{geometry}
+\RequirePackage[small]{titlesec} % Taille des sections réduite
+\RequirePackage[pdfborderstyle={/S/U/W 0}]{hyperref} % Le paramètre retire les bordures autour des hyperliens
+
+\author{
+  Arthur \textsc{Adjedj}\\
+  Vincent \textsc{Lafeychine} \and
+  Augustin \textsc{Albert} \\
+  Lucas \textsc{Tabary-Maujean}
+}
+
+\title{\textbf{Proost: specifications}\\
+  \large A small proof assistant written in Rust
+  \\[1\baselineskip]\normalsize ENS Paris-Saclay
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\definecolor{gray}{rgb}{0.5,0.5,0.5}
+\definecolor{paleblue}{rgb}{0.7,0.7,1}
+\definecolor{darkgray}{rgb}{0.1,0.1,0.1}
+\definecolor{dark}{rgb}{0,0,0}
+\definecolor{forestgreen}{rgb}{0,0.3,0}
+\definecolor{darkred}{rgb}{0.5,0,0}
+
+\lstdefinestyle{default}{
+    frame=tb,
+    basicstyle=\ttfamily,
+    numbers=left,
+    numbersep=5pt,
+    leftmargin=1.5em,
+    numberstyle=\footnotesize\ttfamily\color{paleblue},
+    morestring=[d]{"},
+    morestring=[d]{'},
+    stringstyle={\color{red!50!brown}},
+    keywordstyle={\bfseries\itshape\color{dark}},
+    commentstyle=\color{gray},
+    texcl, % Back to TeX styling within *inline* comments
+    escapechar=`, % escape character for block comments
+    %escapebegin=\lst@commentstyle,
+    breaklines=true,
+    breakatwhitespace=true
+}
+\lstdefinestyle{proost}{
+    style=default,
+    numberstyle=\scriptsize\ttfamily\color{paleblue},
+    comment=[l]{#},
+    alsoletter={.,:,=},
+    keywords={fun, if},
+    keywordstyle=\color{forestgreen},
+    keywords={P, T, U},
+    keywordstyle=\color{darkred},
+    keywords=[3]{define, check, type, :=, .},
+    keywordstyle=[3]\color{darkred},
+}
+\lstnewenvironment{proost}[1][]{\lstset{style=proost, #1}}{}
+
+\lstset{style=proost}
+\lstMakeShortInline[columns=flexible]¤
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% headings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pagestyle{fancy}
+\renewcommand{\headrulewidth}{0pt}
+\renewcommand{\footrulewidth}{0pt}
+
+\fancyhead{}
+\fancyfoot[L]{\small{\reflectbox{\copyright} \the\year{}}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% bussproofs settings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% documentation at https://mirror.ibcp.fr/pub/CTAN/macros/latex/contrib/bussproofs/BussGuide2.pdf
+\EnableBpAbbreviations
+% Overriding default label style
+\def\RL#1{\RightLabel{\footnotesize\bfseries{#1}}}
+\def\LL#1{\LeftLabel{\footnotesize\bfseries{#1}}}
+
+% boxed proofs, used to align multiple proofs on a single line
+\newenvironment{bprooftree}
+  {\leavevmode\hbox\bgroup}
+  {\DisplayProof\egroup}
+
+\newcommand{\textr}[1]{{\footnotesize\textbf{\MakeTextUppercase{#1}}}}
+% Fixes alignment issues but not without some consistency issues
+\def\RL#1{\RightLabel{\makebox[0pt][l]{\textr{#1}}}}
+\def\LL#1{\LeftLabel{\makebox[0pt][r]{\textr{#1}}}}
+% consistent label (with width)
+\def\cRL#1{\RightLabel{\textr{#1}}}
+\def\cLL#1{\LeftLabel{\textr{#1}}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Divers %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\setlength{\columnsep}{20pt} % 10 pt par défaut
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\begin{document}
+\thispagestyle{fancy}
+\maketitle
+
+\emph{
+  This project is under development, and its specifications themselves are
+  subject to changes, should time be an issue or a general consensus be reached
+  to change the purposes of the tool. An example of that is the syntax of
+  the language, which is still largely unstable.
+}
+
+\section{General purpose and functions}
+This project aims at providing a small tool for typechecking expressions written in
+the language of the Calculus of Construction (CoC). This tool shall be
+terminal-based and provide both compiler- and toplevel-like capacities and
+options.
+
+\subsection{Toplevel}
+The \texttt{proost} command, when provided with no argument, is expected to behave like
+a toplevel, akin to \texttt{ocaml} or \texttt{coqtop}. There, user is greeted with a
+prompt and may enter commands of different kinds, for instance:
+\begin{itemize}
+  \item ¤define a := t¤ defines an alias ¤a¤ that can be used in any following
+    command;
+  \item ¤check u : t¤ verifies ¤a¤ has type ¤t¤;
+  \item ¤type u¤ provides the type of ¤u¤.
+\end{itemize}
+
+Where terms are the ones permitted by the kernel expressivity.
+More shorthands may be provided later for user convenience.
+
+\subsection{Checker}
+When provided with existing file paths, ¤proost¤ intends to typecheck them in
+order, that is, reading them as successive inputs in the toplevel. Further
+features for this \emph{might} include a more extended notion of ``modules'', where files
+may refer to one another and provide scopes.
+
+The file extension is \texttt{.mdln}, which is short for \emph{madelaine}.
+Madelaine also denotes the language manipulated by users in these files.
+
+\section{Project structure}
+Each category of the project is assigned some or all members of the group,
+meaning the designated members will \emph{mainly} make progress in the associated categories
+and review the corresponding advancements. Any member may regardless contribute to any part
+of the development of the tool.
+
+Some specific categories and items will be added a star (\(*\)) or two (\(**\)) to
+indicate whether they are respectively late requirements (for the last release
+due in December)
+or extra requirements that will be considered only if there is enough time.
+
+
+\subsection{Kernel  \hfill\scriptsize all members}
+The kernel manipulates \(\lambda\)-terms in the Calculus of Construction and is
+expected to store and manage them with a relative level of efficiency.
+The type theory used to build the terms will be successively extended with:
+\begin{itemize}
+  \item abstractions, \(\Pi\)-types, predicative universes with \(\mathsf{Prop}\);
+  \item \(*\) \(\Sigma\)-types, equality types, natural numbers;
+  \item \(**\) extraction;
+  \item \(**\) lists, records, accessibility predicate.
+\end{itemize}
+
+\subsubsection{Optimisation \hfill\scriptsize VL LTM}
+Extra care must be put into designing an efficient memory management model for
+the kernel, along with satisfactory typing and reduction algorithms.
+
+
+\subsection{Unification \hfill\scriptsize ArA LTM}
+Early versions of the tool may require the user to explicit every type at play.
+Successive versions may gradually include unification tools (meta-variables)
+of better quality to assist the user and alleviate some of their typing-annotation
+burden.
+
+
+\subsection{Parsing \hfill\scriptsize AuA VL}
+The parsing approach is straightforward and relies on external libraries. The
+parser is expected to keep adapting to changes made in the term definitions and
+unification capability.
+
+
+\subsection{Language design \hfill\scriptsize all members}
+The \texttt{proost} tool is a simple proof assistant and does not provide any
+tactics. As new features arrive from extensions of the kernel type theory, the
+\emph{madelaine} language must provide convenient shorthands and notations. See
+the following examples:
+
+Without any unification and only elementary type theory:
+\begin{proost}
+# Construction of natural numbers
+define Nat := \/ A: U ->
+  \/ _: (\/ _: A -> A) -> \/ _: A -> A
+
+define z := /\ A: U ->
+  /\ f: (\/ _: A -> A) -> /\ x: A -> x
+check z: Nat
+
+define succ := /\ n: Nat -> /\ A: U ->
+  /\ f: (\/ _: A -> A) -> /\ x: A ->
+  f (n f x)
+check succ: \/ _: Nat -> Nat
+\end{proost}
+
+Further changes, with equality types, natural numbers and adequate axioms may
+look like:
+\begin{proost}
+# with unification
+define comm := \/ x -> \/ y -> x + y = y + x
+
+# Existential types
+define t := E n, n * n - n + 4 = 0
+\end{proost}
+
+
+\subsection{\(*\) LSP \hfill\scriptsize VL}
+The tool may provide an implementation of the Language Server Protocol in
+order to provide linting and feedback during an editing session.
+
+% TODO elaborate, maybe
+\end{document}
-- 
GitLab