Il est inspiré d’événements réels, mais sa formulation est à peine reconnaissable et «devrait être considéré avec méfiance» n’a aucun sens.
La cohérence a un sens précis en logique: une théorie cohérente en est une où toutes les déclarations ne peuvent être prouvées. Danslogique classique, cela équivaut à l'absence d'une contradiction,savoir une théorie ne correspond pas si et seulement s'il y a une déclarationtelle que la théorierévèlefoiset sa négation.AA¬A
Alors qu'est-ce que cela signifie en ce qui concerne le calcul lambda? Rien. Le lambda calcul est un système de réécriture, pas une théorie logique.
Il est possible de visualiser le calcul lambda en relation avec la logique. Considérer les variables comme représentant une hypothèse dans une preuve, les abstractions lambda comme preuves sous une certaine hypothèse (représentée par la variable), et l’application comme assemblant une preuve conditionnelle et une preuve de l’hypothèse. La règle bêta correspond alors à la simplification d’une preuve en appliquant le modus ponens , principe fondamental de la logique.
Ceci, cependant, ne fonctionne que si la preuve conditionnelle est combinée avec une preuve de la bonne hypothèse. Si vous avez une preuve conditionnelle supposant que et que vous avez également une preuve de , vous ne pouvez pas les combiner ensemble. Si vous voulez que cette interprétation du calcul lambda fonctionne, vous devez ajouter une contrainte selon laquelle seules les preuves de l'hypothèse appropriée sont appliquées aux preuves conditionnelles. Cela s'appelle un système de types et la contrainte est la règle de typage qui dit que lorsque vous passez un argument à une fonction, le type de l'argument doit correspondre au type de paramètre de la fonction.n=3n=2
La correspondance de Curry-Howard est un parallèle entre les calculs typés et les systèmes de preuve.
- les types correspondent à des déclarations logiques;
- les termes correspondent aux preuves;
- les types habités (c'est-à-dire qu'il existe un terme de ce type) correspondent à des énoncés vrais (c'est-à-dire qu'il existe une preuve de cet énoncé);
- L’évaluation du programme (c’est-à-dire des règles telles que la version bêta) correspond à des transformations d’épreuves (qui auraient mieux permis de transformer les épreuves correctes en épreuves correctes).
Un calcul typé qui a un combinateur à point fixe tel que permet de construire un terme de tout type (essayez d'évaluer ). Ainsi, si vous prenez l'interprétation logique dans la correspondance de Curry-Howard, vous obtiendrez une théorie incohérente. Voir Le combinateur Y contredit-il la correspondance de Curry-Howard? pour plus de détails.YY(λx.x)
Ce n'est pas significatif pour le calcul lambda pur, c'est-à-dire pour le calcul lambda sans types.
Dans de nombreux calculs typés, il est impossible de définir un combinateur à point fixe. Ces calculs typés sont utiles en ce qui concerne leur interprétation logique, mais pas comme base pour un langage de programmation complet de Turing. Dans certains calculs typés, il est possible de définir un combinateur à point fixe. Ces calculs typés sont utiles comme base pour un langage de programmation complet de Turing, mais pas en ce qui concerne leur interprétation logique.
En conclusion:
- Le lambda calcul n'est pas «incohérent», ce concept ne s'applique pas.
- Un typé lambda - calcul qui attribue un type à chaque terme lambda est incompatible. Certains calculs lambda typés sont comme ça, d'autres rendent certains termes impossibles à typer et cohérents.
- Les calculs lambda typés ne sont pas la seule raison d'être du calcul lambda, et même les calculs lambda typés incohérents sont des outils très utiles - mais non pour prouver des choses.