69-70 / 74 / 77 le problème de la décision : arithmétique, géométrie, prédicats
En 1929, Mojzesz Presburger a proposé un algorithme pour décider toutes les propositions de
l’« arithmétique linéaire », c’est-à-dire du fragment de la théorie des nombres entiers, dans lequel on garde
l’addition mais on supprime la multiplication. […] En 1930, Thoralf Skolem a, à l’inverse, proposé un
algorithme pour décider la démontrabilité de toutes les propositions de la théorie des nombres entiers dans
lesquelles figure la multiplication, mais pas l’addition. En 1930 encore, Alfred Tarski a proposé un algorithme
pour décider toutes les propositions de la théorie des nombres réels dans lesquelles figurent à la fois l’addition et
la multiplication.
[…] Une conséquence de l’existence de l’algorithme de Tarski est que tous [les problèmes de la
géométrie d’Euclide] peuvent se résoudre par le calcul. Alors que les Grecs avaient introduits le raisonnement
pour résoudre des problèmes, en particulier de géométrie, qu’ils n’arrivaient pas à résoudre par le calcul, Tarski
montrait, au moins dans le cas de la géométrie, que ce passage du calcul au raisonnement n’était
rétrospectivement pas nécessaire, puisqu’un algorithme, que les Grecs n’avaient pas entrevu, pouvait se
substituer au raisonnement.
[…]
Une question s’est alors naturellement posée : qu’en était-il du langage mathématique en entier ? […]
Le problème de trouver un algorithme pour décider si une proposition est démontrable ou non dans la logique
des prédicats a été formulée par Hilbert dans les années vingt sous le nom de « problème de la décision ». […]
La solution au problème de la décision a été apportée indépendamment, en 1936, par Alonzo Church et Alan
Turing, et elle est négative : il n’existe pas d’algorithme de décision pour la logique des prédicats. Il existe donc
une différence de nature entre le raisonnement et le calcul, et le programme de Hilbert de remplacer le
raisonnement par le calcul était voué à l’échec. […]
La question de Hilbert n’était […] pas de savoir si l’on pouvait remplacer le raisonnement par le calcul,
car la réponse, positive, est assez évidente, puisqu’il suffit de reformuler chaque règle de déduction comme une
règle de calcul, mais si l’on pouvait le remplacer par un algorithme, c’est-à-dire par un processus qui termine
toujours et répond négativement quand la proposition n’est pas démontrable.
78-79 le problème de l’arrêt (par argument diagonal)
Il s’agit d’une tentative de concevoir un algorithme A qui […] s’applique à deux objets a et b, où a est
un ensemble de règles de calcul, et indique si la méthode formée des règles a termine ou non quand on l’applique
à la valeur b. Appliquer A à a et b donnerait donc le résultat 1, si la méthode formée des règles a termine quand
on l’applique à b, et 0 sinon.
Or […] Turing et, indépendamment, Church et Kleene ont construit en 1936 une démonstration par
l’absurde qui consiste à montrer que l’hypothèse de [l’existence de l’algorithme A] a des conséquences
contradictoires et, donc qu’elle est fausse. Tout d’abord, si un tel algorithme existait, il ne serait pas difficile de
l’utiliser pour construire une méthode B qui, comme l’algorithme A, s’applique à deux objets a et b, teste si a est
une méthode qui termine quand on l’applique à la valeur b, se lance dans un calcul qui ne termine pas si c’est le
cas et termine dans le cas contraire. Si une telle méthode B existait, on pourrait l’utiliser pour construire une
troisième méthode C qui s’appliquerait à un objet unique a et appliquerait B à a et a. On pourrait alors appliquer
C à C ? Ce calcul se terminerait-il ou non ?
Par définition de C, appliquer C à C revient à appliquer B à C et C. Or la méthode B termine quand on
l’applique à C et C si C ne se termine pas quand on l’appliquer à C. Donc, appliquer C à C donnerait un calcul
qui termine s’il ne termine pas, ce qui est contradictoire.
83-84 la thèse de CHurch
préciser ce qu’[est] un algorithme et […] en proposer plusieurs définitions : les équations de Herbrand
et Gödel, le lambda-calcul de Church, les machines de Turing, les fonctions récursives de Kleene, la réécriture…
Ces définitions proposent chacune un langage dans lequel exprimer un algorithme : on dirait aujourd’hui que
chacune définit un « langage de programmation ».
Ces définitions se sont révélées équivalentes a posteriori : si un algorithme peut être défini dans l’un de
ces langages, on peut traduire cette définition dans n’importe quel autre. Cette équivalence des définitions est
l’un des succès de la théorie de la calculabilité : elle est le signe que l’on a atteint un concept absolu de calcul,
indépendamment des formes accidentelles que prendre tel ou tel langage d’expressions des algorithmes.
Une question n’a, cependant, pas manqué de se poser aux mathématiciens des années trente : cette
notion de calcul est-elle « la » notion de calcul, ou est-il possible que, dans le futur, d’autres mathématiciens
proposent d’autres langages, dans lesquels puissent s’exprimer davantage d’algorithmes ? La plupart des
mathématiciens des années trente ont pensé que ce n’était pas le cas, donc que la notion de calcul définie par les
machines de Turing, le lambda-calcul… était la bonne notion de calcul. Cette thèse est appelée la « thèse de
Church » bien que, encore une fois, plusieurs mathématiciens, en particulier Turing, aient proposé des thèses
similaires.