summaryrefslogtreecommitdiffstats
path: root/transp-inf110-02-typage.tex
diff options
context:
space:
mode:
authorDavid A. Madore <david+git@madore.org>2023-12-04 13:06:16 +0100
committerDavid A. Madore <david+git@madore.org>2023-12-04 13:06:16 +0100
commite792e2a0ff1c0431ec214fdaf72c365765afe3f5 (patch)
treea500e821d5fb55060565368b80e198cfa0b24565 /transp-inf110-02-typage.tex
parent9709577b7abd152965aef9f17a7aa0cc27661a6d (diff)
downloadinf110-lfi-e792e2a0ff1c0431ec214fdaf72c365765afe3f5.tar.gz
inf110-lfi-e792e2a0ff1c0431ec214fdaf72c365765afe3f5.tar.bz2
inf110-lfi-e792e2a0ff1c0431ec214fdaf72c365765afe3f5.zip
A start of polymorphism, and substitution for type/prop variables.
Diffstat (limited to 'transp-inf110-02-typage.tex')
-rw-r--r--transp-inf110-02-typage.tex37
1 files changed, 35 insertions, 2 deletions
diff --git a/transp-inf110-02-typage.tex b/transp-inf110-02-typage.tex
index 8cc025c..131e3f2 100644
--- a/transp-inf110-02-typage.tex
+++ b/transp-inf110-02-typage.tex
@@ -2457,9 +2457,42 @@ triviale : c'est une « pure preuve » de vacuité de $\sigma$ :
\end{frame}
%
+\begin{frame}
+\frametitle{Un embryon de polymorphisme}
+
+\itempoint Les types du $\lambda$CST sont écrits avec des
+\alert{variables de types} $\alpha,\beta,\gamma$… En principe ce sont
+des \alert{types opaques}. En pratique, une fonction comme
+$\lambda(x:\alpha).\lambda(y:\beta).x$ de type
+$\alpha\to\beta\to\alpha$ se comporte \alert{comme polymorphe} : on
+peut imaginer un $\forall\alpha,\beta$ (\alert{implicite}) devant :
+
+\medskip
+
+\itempoint En effet, substituer n'importe quel type $\sigma$ à une
+variable de type $\alpha$ dans un terme du $\lambda$CST (enrichi)
+donne encore un terme correct (la dérivation de typage est la même,
+après substitution).
+
+\medskip
+
+\itempoint Conséquence côté logique : substituer des propositions
+quelconques aux \alert{variables propositionnelles} d'une tautologie
+donne encore une tautologie.
+
+\medskip
+
+P.ex. : $(A\land B\Rightarrow C) \Rightarrow (A\Rightarrow
+B\Rightarrow C)$ est une tautologie, donc
+\[
+((D\Rightarrow E)\land (E\Rightarrow D) \Rightarrow D) \Rightarrow ((D\Rightarrow E)\Rightarrow (E\Rightarrow D)\Rightarrow D)
+\]
+en est une (par substitution de $D\Rightarrow E$ pour $A$, de
+$E\Rightarrow D$ pour $B$, et de $D$ pour $C$).
+
+\end{frame}
+%
% TODO:
-% - discussion de la négation et double négation
-% - substitution des variables propositionnelles par des formules
% - substitution d'équivalences
% - présentation en calcul des séquents
% - élimination des coupures