Algorithme pour déterminer l'égalité des fonctions sur le calcul lambda simplement tapé?

10

Nous savons que l'égalité bêta de termes lambda simplement typés est décidable. Étant donné M, N: σ → τ, est-il décidable que ce soit pour tout X: σ, MX β NX?

MaiaVictor
la source
Wikipédia simplement tapé Lambda Calculus / STLC . comme ce n'est pas Turing complet, existe-t-il un autre modèle de calcul de base que son équivalent? il pourrait également être utile d'étudier l'algorithme de détection d'arrêt, qui selon wikipedia est décidable pour STLC ...
vzn
3
@Marzio: En fait, je pense que le problème ici est avec la façon dont la question est formulée, ce qui est assez imprécis. Une fois correctement formulée, il s'agit d'une question de niveau recherche. Une meilleure formulation serait: nous savons que l'égalité bêta de termes lambda simplement typés est décidable. Étant donné M,N:στ , est-il décidable que ce soit pour tous les X:σ , MXβNX ? La réponse est négative en général (donc aucun algorithme tel que celui recherché par Viclib n'existe). Bien que peut-être attendu, ce n'est pas évident a priori et est la conséquence de quelques articles des années 90.
Damiano Mazza
@DamianoMazza: ok, en effet je n'ai pas voté pour le fermer ... Je vais supprimer mon commentaire, laisser le vôtre et attendre le commentaire / modification d'OP.
Marzio De Biasi
@DamianoMazza et Marzio, je n'en sais pas assez pour poser une question aussi formelle. J'aimerais bien l'avoir fait, mais ce n'est pas quelque chose que j'apprends dans mon école. En fait, même googler pour la "bêta-égalité", ce que j'ai essayé avant de poser la question, me donne si peu de résultats que c'est presque comme si ce terme n'existait même pas. Je n'ai donc même aucune idée où vous apprenez et lisez tout cela. Voudriez-vous me montrer le bon endroit pour commencer à étudier le sujet? Question mise à jour.
MaiaVictor
1
@Viclib: l'équivalence bêta est une notion technique, j'ai évité de le mentionner dans ma réponse. En gros, deux termes sont équivalents à la version bêta lorsqu'ils donnent le même résultat. Donc, dire pour tous les signifie que et calculent la même fonction. En ce qui concerne les conseils pour en savoir plus sur le lambda-calcul (typé ou non), je pense que les notes de Peter Selinger et les notes de conférence Sørensen et Urzyczyn sur Curry-Howard sont d'excellents points de départ. MXβNXXMN
Damiano Mazza

Réponses:

13

Comme je l'ai dit dans mon commentaire, la réponse est en général non.

Le point important à comprendre (je dis cela pour Viclib, qui semble apprendre ces choses) est que le fait d'avoir un langage de programmation / un ensemble de machines dans lequel tous les programmes / calculs se terminent n'implique nullement que l'égalité de fonction (c'est-à-dire si deux programmes / machines calculent la même fonction) est décidable. Un exemple simple: prenez l'ensemble des machines de Turing à synchronisation polynomiale. Par définition, toutes ces machines se terminent sur toutes les entrées. Maintenant, étant donné n'importe quelle machine de Turing que ce soit , il existe une machine de Turing qui, étant donnée en entrée la chaîne , simuleétapes du calcul de sur une entrée fixe (disons la chaîne vide) et accepte si termine au plusMM0x|x|MM|x|étapes, ou rejette autrement. Si est une machine de Turing qui rejette toujours immédiatement, et sont tous les deux (évidemment) synchronisés polynomialement, et pourtant si nous pouvions décider si et calculent la même fonction (ou, dans ce cas, décider le même langage), nous pourrions décider si (qui, rappelez-vous, est une machine de Turing arbitraire) se termine sur la chaîne vide.NM0NM0NM

Dans le cas du -calculus simplement tapé (STLC), un argument similaire fonctionne, sauf que mesurer la puissance expressive du STLC n'est pas aussi trivial que dans le cas ci-dessus. Quand j'ai écrit mon commentaire, j'avais à l'esprit quelques articles de Hillebrand, Kanellakis et Mairson du début des années 90, qui montrent qu'en utilisant des types plus complexes que le type habituel d'entiers de l'Église, on peut encoder dans le STLC suffisamment complexe calculs pour que l'argument ci-dessus fonctionne. En fait, je vois maintenant que le matériel nécessaire est déjà dans la preuve simplifiée de Mairson du théorème de Statman:λ

Harry G. Mairson, Une simple preuve d'un théorème de Statman. Informatique théorique, 103 (2): 387-394, 1992. (Disponible en ligne ici ).

Dans ce document, Mairson montre que, compte tenu de toute machine de Turing , il existe un type simple et une -terme codant pour la fonction de transition de . (Ce n'est pas évident a priori, si l'on pense au pouvoir expressif extrêmement faible du STLC sur les entiers de l'Église. En effet, l'encodage de Mairson n'est pas immédiat). À partir de là, il n'est pas difficile de construire un termeMσλδM:σσM

tM:nat[σ]bool

(où est l'instanciation sur du type d'entiers Church) de telle sorte que réduit à si termine en au plus étapes lorsque alimenté la chaîne vide, ou réduit à sinon. Comme ci-dessus, si nous avions pu décider que la fonction représentée par est la fonction constante , nous aurions décidé la terminaison de sur la chaîne vide.nat[σ]σtMn_1_Mn0_tM0_M

Damiano Mazza
la source
Il est probablement également possible d'utiliser l'encodage de fonctions polynomiales à plusieurs variables dans STLC , puis de faire appel au théorème de Matiyasevich .
cody
Le STLC n'est donc pas complet, mais est suffisamment puissant pour encoder la fonction de transition d'une machine de Turing!? Donc, une machine de Turing pourrait être définie comme une bande plus un programme STLC fonctionnant dessus?
MaiaVictor
2
@Viclib: Pensez-y: simuler une étape d'une machine de Turing arbitraire ne nécessite pas beaucoup de puissance de calcul. Fondamentalement, vous n'avez besoin que de types de données finis (avec if-then-else), de listes (avec les opérations de base: contre, queue, etc.) et de paires ordonnées. (En fait, la thèse étendue de Church-Turing affirme qu'une si faible complexité est commune à tous les modèles de machines raisonnables). Ce qui manque au STLC, c'est la possibilité d'exécuter des transitions TM "ad libitum", indépendamment de l'entrée: il ne peut les itérer qu'un nombre de fois égal à une tour d'exponentielles dans la taille d'entrée (voir l'article de Mairson).
Damiano Mazza
1
@cody: Merci, je ne connaissais pas ce papier. Je suppose que tu as raison.
Damiano Mazza