summaryrefslogtreecommitdiffstats
path: root/transp-inf110-02-typage.tex
diff options
context:
space:
mode:
authorDavid A. Madore <david+git@madore.org>2023-12-12 16:38:42 +0100
committerDavid A. Madore <david+git@madore.org>2023-12-12 16:38:42 +0100
commit780b9727734736cef1d86393511f3978ab1ae46c (patch)
tree2ce0d65bf95f4f57cf5fff43cbb057ba656917be /transp-inf110-02-typage.tex
parent66c7935fab7982a8a18fa63a53dc349fe65eed0e (diff)
downloadinf110-lfi-780b9727734736cef1d86393511f3978ab1ae46c.tar.gz
inf110-lfi-780b9727734736cef1d86393511f3978ab1ae46c.tar.bz2
inf110-lfi-780b9727734736cef1d86393511f3978ab1ae46c.zip
A brief word about the S,K,I combinators.
Diffstat (limited to 'transp-inf110-02-typage.tex')
-rw-r--r--transp-inf110-02-typage.tex44
1 files changed, 44 insertions, 0 deletions
diff --git a/transp-inf110-02-typage.tex b/transp-inf110-02-typage.tex
index 980d0b5..5ccb6f6 100644
--- a/transp-inf110-02-typage.tex
+++ b/transp-inf110-02-typage.tex
@@ -3176,10 +3176,54 @@ $\inferrule*{
(à gauche le $\lambda$-calcul, à droite le
$\overline{\lambda}$-calcul ; remarquez l'inversion des arguments)
+
+($y$ est une \emph{variable} ici, pas une application ni une abstraction)
\end{center}
\end{frame}
%
+\begin{frame}
+\frametitle{Combinateurs $\mathsf{S},\mathsf{K},\mathsf{I}$}
+
+\itempoint\textbf{Axiomes de Hilbert :} le calcul
+prop\textsuperscript{nel} intuitionniste peut être défini par la
+\alert{seule} règle du modus ponens (« si $P\Rightarrow Q$ et $P$
+alors $Q$ ») à partir des schémas d'axiomes suivants, où
+$A,B,C,\ldots$ sont \alert{remplacés par des formules qcqes} :
+{\footnotesize
+\begin{itemize}
+\item $(\mathsf{I}): A\Rightarrow A$
+\item $(\mathsf{K}): A\Rightarrow B\Rightarrow A$
+\item $(\mathsf{S}): (A\Rightarrow B\Rightarrow C) \Rightarrow
+ (A\Rightarrow B) \Rightarrow (A \Rightarrow C)$
+\item $A\land B \Rightarrow A$
+\quad \itempoint $A\land B \Rightarrow B$
+\quad \itempoint $A\Rightarrow B \Rightarrow A\land B$
+\item $A \Rightarrow A \lor B$
+\quad \itempoint $B \Rightarrow A \lor B$
+\quad \itempoint $(A\Rightarrow C)\Rightarrow(B\Rightarrow C)\Rightarrow (A\lor B\Rightarrow C)$
+\item $\top$ \quad\itempoint $\bot \Rightarrow C$
+\end{itemize}
+\par}
+
+\medskip
+
+\itempoint Via Curry-Howard, ceci correspond au fait qu'on peut
+définir un $\lambda$-terme quelconque (à $\beta$-réduction près) par
+application des trois combinateurs $\mathsf{I} := \lambda x.x$,
+$\mathsf{K} := \lambda x.\lambda y.x$ et $\mathsf{S} := \lambda
+x. \lambda y. \lambda z. xz(yz)$. Ceci vaut pour le $\lambda$-calcul
+non typé comme simplement typé. {\footnotesize (On n'a même pas besoin de
+ $\mathsf{I}$ qui peut s'écrire $\mathsf{SKK}$.)}
+
+\medskip
+
+\itempoint Idée de la conversion : remplacer $\lambda x.uv$ par
+$\mathsf{S}(\lambda x.u)(\lambda x.v)$ et $\lambda x.y$ par
+$\mathsf{K}y$.
+
+\end{frame}
+%
% TODO:
% - Kripke
% - fragment négatif