%% Time-stamp: <modifié par Pierre Lescanne le  1 Oct 2002 à 19h59>
%% /MIM-1/LOGIQUE/00-01/COURS+TRANSP/HILBERT/transp.tex
\documentclass[%
  slidesonly,%  Pour sortir les transparents seuls
  semrot,%      Permettre des rotations eventuelles
  semhelv%    Helvetica
%  a4%           A4 paper
  ]{seminar}

%\renewenvironment{slide}[1]{#1} 
%\def\printlandscape{}  % pour sortir en portrait
%\slidesmag{1} 
%\usepackage{fullpage}

\def\printlandscape{\special{landscape}}     % pour sortir en landscape
\slidesmag{5}


\usepackage{fancybox}
\usepackage[francais]{babel}
\usepackage[latin1]{inputenc}
\usepackage{color}
\usepackage{prooftree}


%% Time-stamping  
%% compute the time in hours and minutes; 
 \newcount\timehh\newcount\timemm \timehh=\time 
 \divide\timehh by 60 \timemm=\time
 \count255=\timehh\multiply\count255 by -60 \advance\timemm by \count255
 \newcommand{\timestamp}
 { {\protect\small\sl\today\ -- 
 \ifnum\timehh<10 0\fi\number\timehh\,h\,
   \ifnum\timemm<10 0\fi\number\timemm}}
                                          % avec dvips


\articlemag{1}

\rotateheaderstrue       % si tu combines slide et slide*

\title{\color{red}{\textit{Approche à la Hilbert}}}

\author{}

\date{}

\pagestyle{}

\slidestyle{empty}

\slideframe{}   

%--- couleurs ----
\definecolor{mauve}{rgb}{1,0,1}
\definecolor{cyanp}{rgb}{0,1,1}
\newcommand{\rouge}[1]{{\color{red}#1}}
\newcommand{\VERT}[1]{{\color{green}#1}}
\newcommand{\bleu}[1]{\textcolor{blue}{$#1$}}
\newcommand{\bl}[1]{\textcolor{blue}{#1}}

\newcommand{\ali}{\newline\hspace*{20pt}}
\newcommand{\Ra}{\ensuremath{\Rightarrow}}
\newcommand{\et}{\mathop{\&}}
\newcommand{\sh}{\mathop{|}}
\newcommand{\perluette}{&}

\newcommand{\inferTwo}[3]{\bl{
 \begin{array}{c}
   #1 \hspace{2em} #2\\
   \hline \noalign{\vskip 1pt}#3
  \end{array}}}

\newcommand{\inferTwoLabel}[4]{\bl{
 {#1} \quad 
 \begin{array}{c}
   #2 \hspace{2em} #3\\
   \hline \noalign{\vskip 1pt}#4
  \end{array}}}

\newcommand{\leafLabel}[2]{\bl{
 {#1} \quad
  \begin{array}{c}
  #2
  \end{array} }}

\newcommand{\inferLabel}[3]{\bl{
    {#1} \quad 
    \begin{array}{c}
      #2\\
      \hline \noalign{\vskip 1pt}#3
    \end{array}
  }}

\newcommand{\heading}[1]{%
{\color{cyanp}\bf\large #1}{\color{yellow}\\\rule{\textwidth}{2pt}}
}
   
%\newcommand{\heading}[1]{%      % ca c'est des commandes a moi
%  \begin{center}                % mais ca peut t'interesser
%    \large\bf
%    \color{cyan}{\shadowbox{#1}}%
%  \end{center}
%  \markright{#1}
%  \vspace{1ex minus 1ex}}

\newcommand{\subheading}[1]{%
  \begin{center}
    \color{green}{\bf\Ovalbox{#1}}
  \end{center}}

\begin{document}
%------------------------------------------------------
\begin{slide}
    \maketitle
    \addtocounter{slide}{-1}
    \slidepagestyle{empty}

\vfill 

\hfill\textit{\footnotesize version du \timestamp}
\end{slide}
%------------------------------------------------------
\begin{slide}
  \begin{center}
    {\Large \bf \color{red}{\textit{La logique propositionnelle}}}
          
    {\Large \bf \color{red}{\textit{(approche à la Hilbert)}}}
\end{center}
\end{slide}
%------------------------------------------------------
\begin{slide}
  \heading{Les jugements (1/2)} 
Le concept de base de la théorie de la démonstration est le
\rouge{jugement}.

Un jugement s'écrit \bleu{\Gamma\vdash\Delta} et est constitué de
regroupement de propositions.
\begin{itemize}
\item Si \bleu{\Gamma} est vide et \bleu{\Delta} ne contient qu'une
  proposition, c'est l'\rouge{approche à la Hilbert}.
\item Quand \bleu{\Gamma} est un multiensemble (une structure de
  données où l'ordre ne compte pas, mais où les éléments peuvent être
  répétés) et \bleu{\Delta} ne contient qu'une proposition, on a
  affaire à la \rouge{déduction naturelle}.
\end{itemize}
\vfill
\end{slide}
%------------------------------------------------------
\begin{slide}
  \heading{Les jugements (2/2)} 

\begin{itemize}
\item Quand  \bleu{\Gamma} et  \bleu{\Delta} sont des multiensembles de
  propositions, on parle de \rouge{calcul des séquents}.
\item Si \bleu{\Gamma} et \bleu{\Delta} sont des multi-ensembles, mais
  si l'on contrôle très strictement l'emploi des duplications dans les
  preuves, -- une proposition ne sert qu'une fois dans chaque preuve
  -- on parle de \rouge{logique linéaire}.
\item Si les propositions déclarent le type d'un élément, on parle de
  \rouge{jugements de typage}.
\end{itemize}

\vfill
\end{slide}
%------------------------------------------------------
\begin{slide}
  \begin{center}
    {\large \bf \color{green}{\textit{La logique propositionnelle minimale}}}
\end{center}
\end{slide}
%------------------------------------------------------
\begin{slide}
\heading{La syntaxe 1/2}
Il n'y a qu'un \rouge{connecteur} \bleu{\Ra} \\
\hspace*{30pt}et des \rouge{variables propositionnelles} \bleu{p},
\bleu{q}, ..., \bleu{p_1}, \bleu{p_2}, ...

Par exemple, les propositions sont 
\begin{itemize}
\item \bleu{p}, 
\item \bleu{p\Ra q}, 
\item \bleu{(p\Ra q) \Ra p}.
\end{itemize}
\vfill
\end{slide}
%------------------------------------------------------
\begin{slide}
\heading{La syntaxe 2/2}
On adopte la convention d'\rouge{associativité à droite} à savoir que
\bl{\[p_1 \Ra (p_2 \Ra ... \Ra(p_{n-1} \Ra p_n)...))\]}
s'écrit
\bl{\[p_1 \Ra p_2 \Ra ... \Ra p_{n-1} \Ra p_n\]}
\vfill
\end{slide}
%------------------------------------------------------
\begin{slide}
  \heading{Les jugements de logique à la Hilbert}
Les jugements sont de la forme \bleu{\vdash\varphi} où \bleu{\varphi} est
une proposition.

Ainsi on \VERT{distingue} certaines propositions des autres.

 \vfill
\end{slide}
%------------------------------------------------------
\begin{slide}
  \heading{Les jugements de logique à la Hilbert} 
Les jugements sont de la forme \bleu{\vdash\varphi} où \bleu{\varphi} est
une proposition.

Ainsi on \VERT{distingue} certaines propositions des autres.

\vfill \VERT{Question :} Quelles sont en logique les propositions que
l'on veut distinguer des autres?
\end{slide}
%------------------------------------------------------
\begin{slide}
  \heading{Les constituents de la logique propositionnelle à la
    Hilbert} 
C'est une logique de presque rien:

\begin{itemize}
\item des jugements rudimentaires,
\item une règle,
\item deux axiomes.
\end{itemize}

Du coup, elle est difficile d'emploi, il va falloir s'aider d'un
logiciel pour la manipuler.  

\vfill
\end{slide}
%------------------------------------------------------
\begin{slide}
  \heading{La méta-théorie} 
  Je choisis comme une méta-théorie, un système logique très
  puissant~: le \rouge{Calcul des Constructions Inductifs}, mécanisé
  dans l'\VERT{assistant de preuve} \rouge{COQ}\footnote{Ces notes de
    cours vont de paire avec un script en COQ.}.
  
  A la fin du cours, on aura une meilleure idée de ce qu'est le Calcul
  des Constructions Inductifs

\vfill
\end{slide}
%------------------------------------------------------
\begin{slide}
  \heading{Un peu de ``méta syntaxe''} 
\bleu{(p,q :proposition)} signifie ``pour tout \bleu{p} et tout
\bleu{q} qui sont des \rouge{propositions}''

\bleu{Inductive} signifie que l'on définit un concept : 
\VERT{proposition}, \VERT{theorem} par induction.

\vfill
\end{slide}
%------------------------------------------------------
\begin{slide}
  \heading{Le jugement \emph{\color{mauve} theorem}}   
  En COQ, le \rouge{jugement} \bleu{theorem} appliqué à \bleu{p} se note
  \ali \bleu{(theorem ~p)}.

Nous le noterons \bleu{\vdash p} qui signifie que ``\bleu{p} est un
théorème''.

% On omet \bleu{\vdash} dans les règles.
\vfill
\end{slide}
%------------------------------------------------------
\begin{slide}
  \heading{Une règle} 
En logique propositionnelle minimale, il n'y a qu'une règle :\\ 
  \hspace*{30pt}le \rouge{Modus Ponens}~:

\bl{\[\prooftree{\vdash p\Ra q}\qquad {\vdash p} \justifies {\vdash q} \using
\rouge{\emph{MP}} \endprooftree\]}
\vfill
\end{slide}
%------------------------------------------------------
\begin{slide}
\heading{Le Modus Ponens}
En COQ, MP est une fonction 
\[\bl{(theorem~p\Ra q) \rightarrow (theorem~p) \rightarrow
  (theorem~q)}\] qui prend un objet du type \bleu{theorem~p\Ra q} où
\bleu{p\Ra q} est une proposition
et un objet du type \bleu{theorem~p} où \bleu{p} est une proposition
et fournit un objet du type \bleu{theorem~q}.

Plus précisément, c'est une fonction qui prend quelque chose du type
\bleu{p\Ra q} et rend une fonction qui à quelque chose de type
\bleu{p} associe quelque chose de type \bleu{q}.  \vfill

\VERT{Mais c'est à peu près la même chose, à une curryfication prés!}

\vfill
\end{slide}
%------------------------------------------------------
\begin{slide}
\heading{Deux axiomes}
Il y a deux axiomes appelés \bleu{K} et \bleu{S}:

\rouge{\hrulefill}\\
$\leafLabel{\VERT{K}:}{\vdash p \Ra q \Ra p}$\\
\rouge{\hrulefill}

et

\rouge{\hrulefill}\\
$\leafLabel{\VERT{S}:}{\vdash (p \Ra q \Ra r) \Ra (p \Ra q) \Ra p \Ra r}$\\
\rouge{\hrulefill}

\VERT{Ne me demandez pas pour l'instant pourquoi ils s'appellent
  \bleu{K} et \bleu{S}~!}

\vfill
\end{slide}
%------------------------------------------------------
\begin{slide}
\heading{Exercice}

\vspace{20pt}

Prouver  le lemme \bleu{B: (p \Ra q) \Ra (r \Ra p) \Ra r \Ra q)}.

\vfill
\end{slide}
%------------------------------------------------------
\begin{slide}
\heading{Preuve de KS}
\begin{scriptsize}
\bl{\[%
\newcommand{\IO}%
{\inferTwo%
{\mathcal{\VERT{D'}}}%
{\vdash p \Ra  p \Ra p}%
{\vdash p \Ra p}}
%
\newcommand{\KI}
{\inferTwo%
{\vdash (p \Ra p) \Ra q\Ra p \Ra p}
{\IO}%
{\vdash q\Ra p \Ra p}}
%
\raisebox{-6pt}{\mbox{$\mathcal{\rouge{D}} =~$}} \KI
\]}
\end{scriptsize}
où $\mathcal{\VERT{D'}}$ est 
\begin{scriptsize}
\bl{\[%
\newcommand{\SK}%
{\inferTwo%
{\vdash (p \Ra  (p \Ra  p) \Ra p) \Ra (p \Ra  p \Ra p) \Ra p \Ra p}
{\vdash p \Ra  (p \Ra  p) \Ra p}
{\vdash (p \Ra  p \Ra p) \Ra p \Ra p}}
%
\SK
\]}
\end{scriptsize}
\vfill
\end{slide}
%------------------------------------------------------
\begin{slide}
\heading{Preuve de KS}
\begin{scriptsize}
\bl{\[%
\newcommand{\IO}%
{\inferTwo%
{\mathcal{\VERT{D'}}}%
{\vdash p \Ra  p \Ra p}%
{\vdash p \Ra p}}
%
\newcommand{\KI}
{\inferTwo%
{\vdash (p \Ra p) \Ra q\Ra p \Ra p}
{\IO}%
{\vdash q\Ra p \Ra p}}
%
\raisebox{-6pt}{\mbox{$\mathcal{\rouge{D}} =~$}} \KI
\]}
\end{scriptsize}
où $\mathcal{\VERT{D'}}$ est 
\begin{scriptsize}
\bl{\[%
\newcommand{\SK}%
{\inferTwo%
{\vdash (p \Ra  (p \Ra  p) \Ra p) \Ra (p \Ra  p \Ra p) \Ra p \Ra p}
{\vdash p \Ra  (p \Ra  p) \Ra p}
{\vdash (p \Ra  p \Ra p) \Ra p \Ra p}}
%
\SK
\]}
\end{scriptsize}
\vfill
$\mathcal{\rouge{D}}$ et $\mathcal{\VERT{D'}}$  sont des \rouge{arbres de
preuve.}

$\mathcal{\rouge{D}}$ est l'\rouge{arbre de preuve} ou la
\rouge{preuve} de \bleu{q\Ra p \Ra p}.
\end{slide}
%------------------------------------------------------
\begin{slide}
\heading{Une règle dérivée : la règle C}
Notre but est de prouver une nouvelle règle applicable qui va nous
simplifier la vie: 

\bl{\[\prooftree{\vdash p \Ra q \Ra r}\justifies{\vdash q \Ra p \Ra
    r}\using \rouge{\emph{rule\_{C}}}\endprooftree\]}


\vfill
\end{slide}
%------------------------------------------------------
\begin{slide}
\heading{Exercice}

\vspace{20pt}

Prouver,  en utilisant le lemme \bleu{B}, le lemme (la règle dérivée)

\[\bl{L: (theorem~q \Ra r) \rightarrow (theorem~p \Ra q) \rightarrow (theorem~p \Ra r)}.\]

\vfill
\end{slide}
%------------------------------------------------------
\begin{slide}
\heading{La règle Cut}
La règle \rouge{Cut} ou \rouge{règle de coupure} permet d'utiliser des
théorèmes intermédiaires (des lemmes!) ici \bleu{q}.

\bl{\[\prooftree{\vdash q \Ra r}{\vdash p \Ra q }\justifies{\vdash p\Ra
  r}\using \rouge{\emph{rule\_{Cut}}}\endprooftree\] }

\vfill

\vfill
\end{slide}
%------------------------------------------------------
\begin{slide}
\heading{Le modèle \{0, 1\}}

Une formule est \rouge{valide classiquement} si elle prend la valeur
\bleu{1} pour l'interprétation de \bleu{\Ra} suivante :
\bl{
\begin{center}
\begin{math}
\begin{array}{c || c | c}
\Ra \perluette 0 \perluette 1\\
\hline\hline
0 \perluette 1 \perluette 1\\
\hline
1 \perluette 0 \perluette 1 
\end{array}
\end{math}
\end{center}
}
et quelles que soient les valeurs prises par les variables
propositionnelles.

\vfill
\end{slide}
%------------------------------------------------------
\begin{slide}
\heading{Exercice}

\begin{enumerate}
\item Montrer que les axiomes $Hilbert_K$ et $Hilbert_S$ sont valides
  classiquement.
  
\item Montrer que la règle MP ``préserve'' les propositions valides
  classiquement. 
  
  En déduire que tous les théorèmes sont valides classiquement.
\item Montrer que la \rouge{formule de Pierce} \bleu{((p\Ra q) \Ra p)
    \Ra p} est valide classiquement.
  \end{enumerate}

\vfill
\end{slide}
%------------------------------------------------------
\begin{slide}
\heading{Incomplétude}
\VERT{La formule de Pierce n'est pas un théorème de la logique minimale.}

La logique minimale est \rouge{incomplète} pour le modèle \{0, 1\}.

Il faut 
\begin{itemize}
\item soit changer de logique,

\item soit changer de modèles.
\end{itemize}
\vfill
\end{slide}
%------------------------------------------------------
\begin{slide}
\heading{Incomplétude}
\VERT{La formule de Pierce n'est pas un théorème de la logique minimale.}

La logique minimale est \rouge{incomplète} pour le modèle \{0, 1\}.

Il faut 
\begin{itemize}
\item soit changer de logique, \VERT{logique classique}

\item soit changer de modèles, \VERT{modèles de Kripke}
\end{itemize}
\vfill
On fera les deux ! \hfill \VERT{Par exemple en ajoutant l'axiome de Pierce}
\end{slide}
%------------------------------------------------------
\begin{slide}
  \begin{center}
    {\large \bf \color{green}{\textit{La logique propositionnelle
          intuitionniste}}}

   {\large \bf \color{green}{\textit{(approche à la Hilbert)}}}
\end{center}
\end{slide}
%------------------------------------------------------
\begin{slide}
\heading{La syntaxe}
Il y a deux nouveaux connecteurs \bleu{\&} et \bleu{\vee}.

\begin{itemize}
\item \bleu{\&} et \bleu{\vee} représentent la conjonction et la
  disjonction.
\end{itemize}

\vfill
\end{slide}
%------------------------------------------------------
\begin{slide}
\heading{Les axiomes pour \bleu{\&} et \bleu{\vee}}
Il y a six axiomes.
\begin{footnotesize}

\rouge{\hrulefill}

$\leafLabel{\VERT{Or0:}}
     {\vdash (p \Ra  r) \Ra  (q \Ra  r) \Ra  (p \vee q) \Ra  r}$

$\leafLabel{\VERT{Or1:}}{\vdash   p \Ra  (p \vee q)}$

$\leafLabel{\VERT{Or2:}}{\vdash    q \Ra  (p \vee q)}$\\
\rouge{\hrulefill}

$\leafLabel{\VERT{And0:}}{\vdash   p \Ra  q \Ra  (p \& q)}$

$\leafLabel{\VERT{And1:}}{\vdash   (p \& q) \Ra  p}$

$\leafLabel{\VERT{And2:}}{\vdash   (p \& q) \Ra  q}$\\
\rouge{\hrulefill}

\end{footnotesize}
\end{slide}
%------------------------------------------------------
\begin{slide}
\heading{Quelques conséquences}
\begin{itemize}
\item \bleu{p \vee q ~\Ra~ q \vee p}
\item \bleu{p \vee (q \vee r) ~\Ra~ (p \vee q) \vee r}
\item \bleu{p \vee p ~\Ra~ p}
\item \bleu{(p \Ra q) ~\Ra~ (p \vee r) ~\Ra~ (q \vee r)}
\item \bleu{p \et q ~\Ra~ q \et p}
\item \bleu{p \et (q \et r) ~\Ra~ (p \et q) \et r}
\item \bleu{p \et p ~\Ra~ p}
\item \bleu{(p \Ra q) ~\Ra~ p \et r ~\Ra~ q \et r}
\end{itemize}
\vfill
\end{slide}
%------------------------------------------------------
\begin{slide}
\heading{Quelques conséquences (suite)}
\begin{itemize}
\item \bleu{(p \et q) \vee (p \et r) ~\Ra~ p \et (q \vee r)}
\item \bleu{p \et (q \vee r) ~\Ra~ (p \et q) \vee (p \et r))}
\item \bleu{(p \vee q) \et (p \vee r) ~\Ra~ p \vee (q \et r)}
\item \bleu{p \vee (q \et r) ~\Ra~ (p \vee q) \et (p \vee r)}
\end{itemize}
Et des règles:

$\inferTwoLabel{}{\vdash p}{\vdash q}{\vdash p\et q}$ $\inferTwoLabel{}{\vdash p\Ra q}{\vdash p\Ra r}{\vdash p\Ra
  q\et r}$ $\inferTwoLabel{}{\vdash p1 \Ra q1}{\vdash p2 \Ra q2}{\vdash p1 \et p2 ~\Ra~ q1 \et q2}$

\vfill
\end{slide}
%------------------------------------------------------
\begin{slide}
\heading{Le connecteur False}
Le connecteur \bleu{False} est régi par l'axiome :

\rouge{\hrulefill}

$\leafLabel{\VERT{F:}}{\vdash   False \Ra  p}$

\rouge{\hrulefill}

La négation est \bleu{\neg p ~\mathop{\VERT{\equiv}}~ p \Ra False}.
\vfill
\end{slide}
%------------------------------------------------------
\begin{slide}
\heading{Réduire les connecteurs ?}
En logique intuitionniste, \rouge{on ne peut pas réduire les connecteurs} les
uns par rapport aux autres.

Chaque connecteur a sa vie propre.

Il faut donc des axiomes spécifiques pour chaque connecteur (voir
exercice ... dans le livre de van Dalen).

\vfill
\end{slide}
%------------------------------------------------------
\begin{slide}
\heading{La logique intuitionniste et la logique classique}
En logique intuitionniste les formules suivantes ne sont pas des
théorèmes.
\begin{itemize}
\item \bleu{\neg \neg p \Ra p}
\item \bleu{p \vee \neg p}
\item \bleu{(\neg p \Ra \neg q) \Ra q \Ra p} 
\end{itemize}

\vspace*{12pt}

\begin{itemize}
\item \bleu{(p \Ra q) \vee (q \Ra p)}
\end{itemize}
\vfill
\end{slide}
%------------------------------------------------------
\begin{slide}
\heading{Le tiers exclus}
Le \rouge{tiers exclus} est la proposition \bleu{p \vee \neg p}.

En informatique, considérons la proposition \bleu{Null} à savoir\\
\hspace*{30pt}\VERT{``La variable \bleu{x} est nulle''}\footnote{On
  devrait préciser \VERT{``La variable \bleu{x} vaut  \rouge{toujours} zéro''}}.

Sa négation est \VERT{``La variable \bleu{x} n'est pas
  nulle''}\footnote{\VERT{``La variable \bleu{x} ne vaut
    \rouge{jamais} zéro''}}.

A-t-on \bleu{Null \vee \neg Null} ?

A-t-on une seule manière d'interpréter la négation ?

\vfill
\end{slide}
%------------------------------------------------------
\begin{slide}
\heading{La logique intuitionniste et les preuves}
En logique intuitionniste les preuves sont des \rouge{citoyens de première
classe}.

Une proposition est un théorème si on peut en exhiber une preuve.

Ainsi 
\begin{itemize}
\item d'une preuve de \bleu{\neg{\neg{p}}} on ne peut pas extraire une
  preuve de \bleu{p}.
\item on ne peut pas construire une preuve de \bleu{p \vee \neg{p}},
  car cet objet est construit à partir d'une preuve de \bleu{p} ou
  d'une preuve de \bleu{\neg{p}} \footnote{qu'on ne possède pas quand
    on affirme \bleu{p \vee \neg{p}}}.
\end{itemize}
\vfill
\end{slide}
%------------------------------------------------------
\begin{slide}
  C'est comme construire une maison sur un terrain situé 
  
  \centerline{à Vaise \rouge{ou} à Vénissieux !}
\end{slide}
%------------------------------------------------------
\begin{slide}
\heading{La logique intuitionniste et les preuves}
\VERT{Retournons à \bleu{MP}.}

En fait, dans
\[\bl{(theorem~p\Ra q) \rightarrow (theorem~p) \rightarrow
  (theorem~q)}\] 
\bleu{MP} prend une preuve de \bleu{p\Ra q} et
retourne une fonction qui prend une preuve de \bleu{p} et retourne une
preuve de \bleu{q}.

Donc \bleu {(theorem~p\Ra q)} représente le \rouge{type}~\footnote{plutôt que
l'ensemble} des preuves de \bleu{p\Ra q}.

\vfill
\end{slide}
%------------------------------------------------------
\end{document}
% LocalWords:  theorem Cut Ponens Dedekind Cantor Boole Frege proof theory red
% LocalWords:  Millet-Botta TD green Pierce Lalement Dalen Logic Springer Fagin
% LocalWords:  Verlag Gochet Gribomont HERMES Halpern Moses Vardi Reasoning The
% LocalWords:  about Knowledge Press MP Church Howard réductionniste Connes pt
% LocalWords:  Veroff McCune Sheffer False Null Vaise Bron méta-logiques méta
% LocalWords:  multi-ensembles multiensemble multiensembles constituents KS
% LocalWords:  méta-théorie curryfication
