la petite et (presque) vraie¶

Histoire de la Calculabilité¶

Le notion de Calculabilité apparaît au détour d'une période appelée¶

"crise des fondements des mathématiques"¶

qui a eu lieu entre la fin du XIXè et le début du XXè siècle.¶

une sorte de crise existentielle de la communauté internationale mathématique

vers 1880 : apogée de la théorie des ensembles¶

La théorie des ensembles (ensembles, relations, fonctions ...) est très prolifique, en particulier en Allemagne.

Elle est utilisée dans toutes les branches des mathématiques.

No description has been provided for this image L'élève sérieux



"Les ensembles sont au top"
"La diagonale, c'est de la balle"
Georg Cantor
No description has been provided for this image Le logicien anglais



"Y a un truc qui cloche ..."
Bertrand RUSSELL

1901 - Paradoxe de Russell¶

Soit $E = \{x | x\notin x \}$¶

$x \in E \Leftrightarrow x \notin x$¶

$E \in E \Leftrightarrow ...$¶

1901 - Paradoxe de Russell¶

Soit $E = \{x | x\notin x \}$¶

$E \in E \Leftrightarrow E \notin E$¶

Une affirmation équivalente à sa négation ?? Ne serait-on pas entrain de faire n'importe quoi ?

No description has been provided for this image Le chef



"Ça suffit les paradoxes !"
"Les maths, c'est du sérieux !"

"Nul ne doit nous exclure du
Paradis que Cantor a créé."
David Hilbert

Déjà depuis quelques années, les fondations de mathématiques sont remises en question

Objectif de Hilbert :¶

Refonder les mathématiques, sur les bases d'une logique infaillible¶

et tout le monde pourra retourner travailler tranquillement ...

1900 - Les 23 Problèmes de Hilbert¶

Lors d'un congrès international de mathématiques, Hilbert énonce 23 problèmes mathématiques ouverts susceptibles d'orienter les efforts de recherche pour le siècle à venir

2ème problème :¶

"Peut-on prouver la cohérence logique de l'arithmétique ?"¶

1900-1928¶

Hilbert précise petit à petit son idée ...

1928 - Programme de Hilbert :¶

... pour aboutir à un programme de recherche, afin de fonder de nouvelles mathématiques :

  • cohérentes : impossibilité de démontrer une proposition et son contraire
  • complètes : pour tout énoncé ou son contraire doit pouvoir être démontré
  • "décidables" : disposer d'une procédure de décision (algorithme ?) permettant de tester si un énoncé est vrai ou faux

1931 : Théorème d'incomplétude de Gödel¶

No description has been provided for this image Le petit jeune



"il y a des énoncés indémontrables"
"Na !"
Kurt Gödel

... Première déception pour le programme de Hilbert¶

No description has been provided for this image Le chef



"je suis désappointé ..."
David Hilbert

1930-1936 - Calculabilité¶

Hilbert souhaitait "disposer d'une procédure de décision permettant de tester si un énoncé est vrai ou faux"

("Entscheidungsproblem" ou "problème de la décision"), c'est-à-dire

Créer un "mécanisme" de démonstration automatique (un algorithme).¶

  • En entrée : un énoncé mathématique
  • En sortie : Vrai ou Faux

Ce qui soulève une autre question ...

Qu'est-ce qui peut être calculé par un machine ?¶

C'est la notion de calculabilité.

Problème auxquels s'attaquent, Alan Turing et Alonzo Church, chacun de leur côté

image.png

Deux modèles de calcul :¶

Alan Turing : la machine de Turing¶

  • a inspiré les ordinateurs actuels (CPU, Ram)

Alonzo Church : le $\lambda$-calcul¶

  • a inspiré les langages de programmation fonctionnels (fonctions, composition de fonctions ...)

La machine de Turing¶

Machine mécanique sur papier :¶

Une bande de papier infinie, sur laquelle une tête de lecture se déplace en lisant et écrivant

Cette bande infinie sert à la fois d'entrée, de mémoire de travail, et de sortie

image.png

Formellement, une machine de Turing est un quintuplet $(Q,\Sigma,q_0,F,\delta)$ où :

  • $Q$ est un ensemble fini d'états ;
  • $\Sigma$ est l'alphabet de travail des symboles de la bande, contenant $\bullet$ un symbole particulier (dit blanc)
  • $q_0$ est l'état initial de la machine;
  • $F$ est l'ensemble des états finaux (ou acceptants) de la machine;
  • $\delta : Q \times \Sigma \rightarrow \Sigma \times \{\leftarrow, \rightarrow, \downarrow\} \times Q$ est la fonction de transition de la machine

$\delta(q,s)=(s',depl,q')$ signifie :

  • la machine étant dans l'état $q$, et la tête de lecture étant sur le symbole $s$
  • écrit sur la bande le symbole $s'$ (à la place du $s$)
  • déplace la tête de lecture dans le sens de la flèche ($\leftarrow$ : vers la gauche, $\rightarrow$ : vers la droite, $\downarrow$ : reste sur place)
  • passe dans l'état $q'$,

exemple de machine de Turing :¶

cf Exercices

NB : ça ressemble beaucoup à un "super"-automate ...

NB : les automates et leur formalisme apparaissent plus tardivement (environ 1950)

Le $\lambda$-calcul¶

Système de réécritures symboliques¶

Une $\lambda$-expression $e$ est soit :

  • $x$ : une variable
  • $\lambda x.e$ : une fonction qui à $x$ associe $e$
  • $e_1 e_2$ : l'application d'une fonction $e_1$ à une expression $e_2$

Exécution d'un calcul :

  • $(\lambda x.e)\,\, e' \leadsto e[x\leftarrow e']$ : appliquer une fonction à une expression consiste à substituer les occurrences de $x$ par $e'$

exemple de $\lambda$-calcul :¶

cf Exercices

NB : ça ressemble beaucoup à de la programmation purement fonctionnelle

Ces deux modèles sont équivalents¶

tout ce qu'une machine de Turing peut faire peut s'exprimer avec une $\lambda$-expression,¶

et inversement¶

Démontré par Turing, lorsque devenu étudiant de Church

Hypothèse de Church-Turing¶

... et on ne peut pas calculer quoi que ce soit de plus ?

aucun modèle de calcul n'a pour l'instant apporté quoi que ce soit de plus¶

Modèle Turing-complet¶

modèle Turing-complet = aussi puissant qu'une machine de Turing

sont Turing-complets :

  • un ordinateur moderne (CPU + Ram)
  • un langage de programmation avec boucle while ou récursivité (Python, C, OCaml, ...)
  • ...

Raisonner sur la calculabilité¶

On pourra donc considérer de manière équivalente :

  • une machine de Turing
  • une $\lambda$-expression
  • un algorithme décrit en pseudo-code,
  • un programme C / OCaml / Python ...
  • une suite de caractères représentant le code source d'un programme
  • une fonction OCaml / ...

Les limites de la calculabilité¶

Church :¶

Il n'existe pas de fonction permettant de décider si deux fonctions $f_1$ et $f_2$ sont égales sur toute entrée

Turing :¶

Il n'existe pas de machine prenant en entrée une machine $M$ et une entrée $e$, et décidant si l'exécution de $M$ sur $e$ termine

NB : machine universelle¶

Turing a dû définir une machine dite machine universelle permettant de simuler l'exécution d'une autre machine passée en entrée

si on considère qu'une machine correspond à un programme :

  • on a donc un programme (universel) qui simule l'exécution d'un autre programme
  • c'est un interpréteur (par exemple l'interpréteur Python)

Conséquence 1¶

Church et Turing finissent par conclure que :

l'objectif de Hilbert (prouver automatiquement tout énoncé mathématique) est impossible à atteindre¶

Deuxième déception pour le programme de Hilbert ...

No description has been provided for this image Le chef



"je suis re-désappointé ..."
David Hilbert

Conséquence 2 : Naissance de la science informatique¶

Modèles de calculs pour l'informatique¶

  • machine de Turing, machine universelle de Turing (HP)
  • $\lambda$-calcul (HP)

Résultats d'indécidabilité¶

  • cf cours

L'idée d'une machine/programme qui permet d'exécuter une machine/programme¶

  • ordinateur moderne (machine qui lit et exécute un programme)
  • interpréteur (programme qui lit et exécute un programme)
  • machines virtuelles (programme qui simule une machine)

La démonstration automatique (idée initiale de Hilbert)¶

  • sujet actif de recherche encore aujourd'hui