summaryrefslogtreecommitdiffstats
path: root/transp-inf110-02-typage.tex
diff options
context:
space:
mode:
authorDavid A. Madore <david+git@madore.org>2023-12-03 19:24:01 +0100
committerDavid A. Madore <david+git@madore.org>2023-12-03 19:24:01 +0100
commit604e52d8021c7d4f60ea0649841e251d1e3a60d4 (patch)
tree6f3a74cf6fbc50eabfd4ab711fc9262122321912 /transp-inf110-02-typage.tex
parent492bf7b8f78863ef3405f3a43fbe2fe2b479ce9e (diff)
downloadinf110-lfi-604e52d8021c7d4f60ea0649841e251d1e3a60d4.tar.gz
inf110-lfi-604e52d8021c7d4f60ea0649841e251d1e3a60d4.tar.bz2
inf110-lfi-604e52d8021c7d4f60ea0649841e251d1e3a60d4.zip
An example of Curry-Howard with conjunction.
Diffstat (limited to 'transp-inf110-02-typage.tex')
-rw-r--r--transp-inf110-02-typage.tex78
1 files changed, 74 insertions, 4 deletions
diff --git a/transp-inf110-02-typage.tex b/transp-inf110-02-typage.tex
index bcca8a9..95c0dae 100644
--- a/transp-inf110-02-typage.tex
+++ b/transp-inf110-02-typage.tex
@@ -31,6 +31,7 @@
\renewcommand{\thefootnote}{\textdagger}
\newcommand{\dbllangle}{\mathopen{\langle\!\langle}}
\newcommand{\dblrangle}{\mathclose{\rangle\!\rangle}}
+\mathchardef\emdash="07C\relax
\setlength{\derivskip}{4pt}
%
%
@@ -1340,7 +1341,7 @@ hypothèses $P_1,\ldots,P_r$, on a $Q$ ».
\end{frame}
%
\begin{frame}
-\frametitle{Le calcul propositionnel intuitionniste : survol des règles}
+\frametitle{Le calcul propositionnel intuitionniste : règles}
Axiomes : si $Q \in \{P_1,\ldots,P_r\}$ alors $P_1,\ldots,P_r \vdash Q$.
@@ -1382,7 +1383,8 @@ $\bot$
\end{frame}
%
\begin{frame}
-\frametitle{Exemples de démonstration}
+\label{example-propositional-proofs}
+\frametitle{Exemples de démonstrations}
{\footnotesize
\[
@@ -1886,7 +1888,7 @@ A. Troelstra et d'autres :
\end{frame}
%
\begin{frame}
-\frametitle{Correspondance de Curry-Howard (implication seule)}
+\frametitle{Correspondance de Curry-Howard : implication seule}
\begin{tabular}{c|c}
Typage du $\lambda$-calcul simplement typé
@@ -1928,10 +1930,78 @@ intuitionniste restreint au seul connecteur $\Rightarrow$.
\end{frame}
%
+\begin{frame}
+\frametitle{Correspondance de Curry-Howard : conjonction}
+
+On veut \alert{étendre} le $\lambda$CST avec un \textbf{type produit}
+pour refléter les règles de la conjonction logique :
+
+\medskip
+
+\begin{tabular}{c|c}
+Typage du $\lambda$-calcul
+&Calcul propositionnel intuitionniste\\[1ex]\hline\\
+$\inferrule*[left=Proj$_1$]{\Gamma \vdash t:\tau_1\times\tau_2}{\Gamma \vdash \pi_1 t:\tau_1}$
+&$\inferrule*[left={$\land$Élim$_1$}]{\Gamma\vdash Q_1\land Q_2}{\Gamma\vdash Q_1}$
+\\[2ex]
+$\inferrule*[left=Proj$_2$]{\Gamma \vdash t:\tau_1\times\tau_2}{\Gamma \vdash \pi_2 t:\tau_2}$
+&$\inferrule*[left={$\land$Élim$_2$}]{\Gamma\vdash Q_1\land Q_2}{\Gamma\vdash Q_2}$
+\\[2ex]
+$\inferrule*[left=Pair]{\Gamma \vdash t_1:\tau_1\\\Gamma \vdash t_2:\tau_2}{\Gamma \vdash \langle t_1,t_2\rangle : \tau_1\times\tau_2}$
+&$\inferrule*[left={$\land$Int}]{\Gamma\vdash Q_1\\\Gamma\vdash Q_2}{\Gamma\vdash Q_1\land Q_2}$
+\end{tabular}
+
+\medskip
+
+\itempoint Ici, $\langle\emdash,\emdash\rangle$ sert à construire des
+couples, et $\pi_1,\pi_2$ à les déconstruire.
+
+\smallskip
+
+{\footnotesize
+
+\itempoint Nouvelle règle de réduction : $\pi_i\langle t_1,t_2\rangle$
+se réduit en $t_i$ (pour $i\in\{1,2\}$).
+
+\par}
+
+\end{frame}
+%
+\begin{frame}
+\frametitle{Correspondance de Curry-Howard : exemple avec conjonction}
+
+\itempoint Transformons en programme la démonstration qu'on a donnée
+de $A\land B \Rightarrow B\land A$
+(transp. \ref{example-propositional-proofs} et suivants) :
+
+{\footnotesize
+\[
+\inferrule*[left={Abs},right=\hphantom{Abs}]{
+\inferrule*[left=\llap{Pair}]{
+\inferrule*[left=\llap{Proj$_2$}]{
+\inferrule*[left=\llap{Var}]{ }{u:\alpha\times \beta \vdash u:\alpha\times \beta}
+}{u:\alpha\times \beta \vdash \pi_2 u:\beta}
+\\
+\inferrule*[right=\rlap{Proj$_1$}]{
+\inferrule*[right=\rlap{Var}]{ }{u:\alpha\times \beta \vdash u:\alpha\times \beta}
+}{u:\alpha\times \beta \vdash \pi_1 u:\alpha}
+}{u:\alpha\times \beta \vdash \langle \pi_2 u, \pi_1 u\rangle:\beta\times \alpha}
+}{\vdash \lambda(u:\alpha\times\beta).\,\langle \pi_2 u, \pi_1 u\rangle : \alpha\times \beta \rightarrow \beta\times \alpha}
+\]
+\par}
+
+\bigskip
+
+\itempoint Il s'agit de la fonction
+$\lambda(u:\alpha\times\beta).\,\langle \pi_2 u, \pi_1 u\rangle$
+(polymorphe de type $\alpha\times\beta \to \beta\times\alpha$) qui
+échange les deux termes d'un couple.
+
+\end{frame}
+%
% TODO:
% - substitution des variables propositionnelles par des formules
% - substitution d'équivalences
-% - Curry-Howard
% - Kriple
%
\end{document}