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?
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?
Réponses:
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 plusM M0 x |x| M M |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.N M0 N M0 N M
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
(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– M n 0– tM 0– M
la source