From 0e6c860b06681b7898c43ba522f5b75f3aec56c5 Mon Sep 17 00:00:00 2001
From: "David A. Madore" <david+git@madore.org>
Date: Wed, 22 Nov 2023 11:58:18 +0100
Subject: Give some examples of terms and types in the STLC before formalizing.

---
 transp-inf110-02-typage.tex | 48 +++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 44 insertions(+), 4 deletions(-)

(limited to 'transp-inf110-02-typage.tex')

diff --git a/transp-inf110-02-typage.tex b/transp-inf110-02-typage.tex
index 9040312..c33784d 100644
--- a/transp-inf110-02-typage.tex
+++ b/transp-inf110-02-typage.tex
@@ -730,8 +730,9 @@ n'a aucune des trois, CoC a les trois) :
 \frametitle{Le $\lambda$-calcul simplement typé : description sommaire}
 
 \itempoint Le $\lambda$-calcul simplement typé (=: $\lambda$CST ou
-$\lambda_\rightarrow$) est une variante typée du $\lambda$-calcul,
-assurant la propriété de terminaison (normalisation forte).
+$\lambda_\rightarrow$) est une \alert{variante typée} du
+$\lambda$-calcul, assurant la propriété de terminaison (normalisation
+forte).
 
 \medskip
 
@@ -747,12 +748,18 @@ typage :
 \item si $P$ a pour type $\sigma\to\tau$ et $Q$ a type $\sigma$ alors $PQ$
   a pour type $\tau$,
 \item si $E$ a pour type $\tau$ en faisant intervenir une variable $v$
-  libre de type $\sigma$ alors $\lambda(v:\sigma).E$ a pour type
-  $\sigma\to\tau$.
+  libre de type $\sigma$ alors $\lambda(v:\sigma).E$ {\footnotesize
+    (« fonction prenant $v$ de type $\sigma$ et renvoyant $E$ »)} a
+  pour type $\sigma\to\tau$.
 \end{itemize}
 
 \medskip
 
+\itempoint Typage \textbf{annoté} (=« à la Church ») : on écrit
+$\lambda(v:\sigma).E$ pas juste $\lambda v.E$.
+
+\medskip
+
 \itempoint On notera « $x_1:\sigma_1,\ldots,x_k:\sigma_k \vdash
 E:\tau$ » pour dire « $E$ est bien typé avec pour type $\tau$ lorsque
 $x_1,\ldots,x_k$ sont des variables libres de types
@@ -763,6 +770,39 @@ $\sigma_1,\ldots,\sigma_k$ :
 \item $\Gamma \vdash E:\tau$ s'appelle un \textbf{jugement} de typage.
 \end{itemize}
 
+\end{frame}
+%
+\begin{frame}
+\frametitle{Exemples de termes et de typages}
+
+{\footnotesize On donnera les règles précises plus tard, commençons
+  par quelques exemples.\par}
+
+\begin{itemize}
+\item $f:\alpha\to\beta,\; x:\alpha \;\vdash\; fx:\beta$\\ Lire : « dans le
+  contexte où $f$ est une variable de type $\alpha\to\beta$ et $x$ une
+  variable de type $\alpha$, alors $fx$ est de type $\beta$ ».
+\item $f:\beta\to\alpha\to\gamma,\; x:\alpha,\; y:\beta \;\vdash\; fyx
+  : \gamma$\\ {\footnotesize (Parenthéser $\beta\to\alpha\to\gamma$
+  comme $\beta\to(\alpha\to\gamma)$ et $fyx$ comme $(fy)x$.)}
+\item $f:\beta\to\alpha\to\gamma,\; x:\alpha \;\vdash\;
+  \lambda(y:\beta).fyx \;:\; \beta\to\gamma$\\ {\footnotesize
+    Comprendre $\lambda(y:\beta).fyx$ comme « fonction prenant $y$ de
+    type $\beta$ et renvoyant $fyx$ ».}
+\item $x:\alpha \;\vdash\;
+  \lambda(f:\alpha\to\beta).fx\;:\;(\alpha\to\beta)\to\beta$\\ « Si
+  $x$ est de type $\alpha$ alors le terme
+  $\lambda(f:\alpha\to\beta).fx$ est de type
+  $(\alpha\to\beta)\to\beta$. »
+\item $\vdash\; \lambda(x:\alpha).
+  \lambda(f:\alpha\to\beta).fx\;:\;\alpha\to(\alpha\to\beta)\to\beta$\\ « Le
+  terme $\lambda(x:\alpha).\lambda(f:\alpha\to\beta).fx$ a type
+  $\alpha\to(\alpha\to\beta)\to\beta$ dans le contexte
+  vide. »\\ {\footnotesize (Parenthéser
+    $\alpha\to(\alpha\to\beta)\to\beta$ comme
+    $\alpha\to((\alpha\to\beta)\to\beta)$.)}
+\end{itemize}
+
 \end{frame}
 %
 \begin{frame}
-- 
cgit v1.2.3

