J'ai pensé à ces questions:
Existe-t-il un calcul lambda typé cohérent et complet de Turing?
/cs/65003/if-%CE%BB-xxx-has-a-type-then-is-the-type-system-inconsistent
et il y a déjà quelques questions difficiles à répondre dans le cadre non typé ! Plus précisément, je suis curieux de savoir si nous pouvons récupérer l'intégralité de Turing de la non-résiliation de la manière suivante:
Question: Étant donné une (pure) -terme avec aucune forme normale de tête faible, il ne toujours existe un combinateur point fixe tel que
Les égalités sont toutes prises modulo .
En fait, je soupçonne que cette version de la question est fausse , donc on peut assouplir la question aux combinateurs en boucle , où un combinateur en boucle est défini comme un terme tel que pour chaque où doit à nouveau être un combinateur en boucle. Bien sûr, cela suffit pour définir les fonctions récursives comme d'habitude.
Plus généralement, je suis intéressé à trouver des moyens «naturels» de passer d'un sans terminaison à un combinateur en boucle, même si l'équation ci-dessus n'est pas satisfaite.
Je suis également intéressé par les versions plus faibles de la question ci-dessus, par exemple, peut être considéré comme une application avec chaque sous une forme normale (bien que je ne suis pas sûr que cela aide vraiment).t ≡ t 1 t 2 … t n t i
Jusqu'à présent: l'approche naturelle consiste à prendre les applications et "poivre" de partout, par exemplef
devient l'habituel
L'idée est de réduire la tête de à une application et remplacez-le par , mais l'étape suivante n'est pas claire (et je suis sceptique que cela puisse conduire à n'importe quoi).λ x . t ′ λ x . f t ′
Je ne suis pas sûr de bien comprendre les arbres Böhm pour voir s'ils ont quelque chose à dire, mais j'en doute fortement, car l' arbre Böhm de est simplement , qui ne ressemble en rien à celui de : an arbre d'abstractions infini.⊥ Y Ω
Edit : Un de mes amis a fait remarquer que cette approche naïve ne fonctionne pas avec le terme: L'approche naïve donnerait Mais ce n'est pas un combinateur à virgule fixe! Cela peut être corrigé en remplaçant la deuxième application de par , mais alors ne donne pas le terme d'origine. Il n'est pas clair si ce terme est un contre-exemple à la question d'origine (et ce n'est certainement pas un contre-exemple à la plus générale).( λ x . f ( x x x ) ) ( λ x . f ( x x x ) ) f λ y z . f y f ↦ I
Réponses:
Cette très belle question comporte plusieurs aspects, je structurerai donc cette réponse en conséquence.
1. La réponse à la question encadrée est non . Le terme suggéré par votre ami est en effet un contre-exemple.Ω3=(λx.xxx)(λx.xxx)
Il a été remarqué plus tôt dans les commentaires que l'on a des contre-exemples comme le "ogre" , jusqu'à ce que la question se limite aux termes sans forme normale de tête faible. Ces termes sont appelés termes zéro . Ce sont des termes qui ne se réduisent jamais à un lambda, quelle que soit la substitution.K∞=YK
Pour tout combinateur à virgule fixe (fpc) , est un terme dit muet (AKA "root-active"): chaque réduction de celui-ci se réduit davantage à un redex.Y IY YI
Ω 3 - { Ω 3 ( λ x . X x x ) ⋯ ( λ x . X x x ) ⏟ k ∣ k ∈ N }K∞ n'est pas muet; ni comme cela se manifeste en inspectant son ensemble de réductions, qui est
Ω3 −
Plutôt que de donner un argument précis sur la raison pour laquelle est muet pour tous les fpcs (en effet, pour tout combinateur de boucle) ce qui peut être laborieux mais espérons-le assez clair je traiterai la généralisation évidente de votre question, en me limitant également aux termes muets.Y - -YI Y − −
Les termes muets sont une sous-classe de termes nuls qui sont une sous-classe de termes insolubles. Ensemble, ce sont peut-être les choix les plus populaires pour le concept de «vide de sens» ou «non défini» dans le calcul lambda, correspondant respectivement aux arbres triviaux de Berarducci, Levy-Longo et B \ "ohm. Le réseau de notions de termes sans signification a été analysé en détail par Paula Severi et Fer-Jan de Vries. [1] Les termes muets constituent l'élément inférieur de ce réseau, c'est-à-dire la notion la plus restrictive de "non défini".
2. Soit un terme muet, et être une boucle combinateur avec la propriété que .Y Y I = MM Y YI=M
D' abord , nous pensons que, pour une nouvelle variable , ressemble en fait beaucoup comme le que vous avez décrit, obtenu par « saupoudrage autour de » certains reduct de .Y z Y M z Mz Yz YM z M
Par Church-Rosser, et ont une réduction commune, . Prenez une réduction standard . Chaque sous-terme de correspond à un sous-terme unique de sous cette réduction. Pour tout sous-terme , les facteurs comme , où la jambe centrale est une faible réduction de la tête (et la jambe finale) est interne). est "gardé" par un si cette deuxième étape contracte une redex , avec un descendant de la substitution .M M ′ R : Y I ↠ s M ′ M ′ Y I ≡ Y z [ z : = I ] C [ N ] = M ′ R Y I ↠ C [ N 0 ] ↠ w h C [ N 1 ] ↠ i C [ N ] N z I P IYI M M′ R:YI↠sM′ M′ YI≡Yz[z:=I] C[N]=M′ R YI↠C[N0]↠whC[N1]↠iC[N] N z IP I [z:=I]
Évidemment, doit garder certains sous- termes de , sinon il serait également muet. D'un autre côté, il faut faire attention à ne pas garder les sous-termes nécessaires à la non-terminaison, sinon il ne pourrait pas développer l'arborescence infinie B \ "ohm d'un combinateur en boucle.MY M
Il suffit donc de trouver un terme muet dans lequel chaque sous-terme, de chaque réduction, est nécessaire pour la non-normalisation, en ce sens que placer une variable devant ce sous-terme donne un terme normalisant.
Considérez , où . C'est comme , mais à chaque itération, on vérifie que l'occurrence de dans la position d'argument n'est pas "bloquée" par une variable head, en lui donnant une identité. Mettre un devant n'importe quel sous-terme aboutira finalement à une forme normale de forme , où chaque est soit , soit un " saupoudrage" de ceux-ci. Donc est un contre-exemple de la question généralisée.W = λ w . w I w w Ω W z z P 1 ⋯ P k P i I W z ΨΨ = WW W= λ w . w jew w Ω W z zP1⋯ Pk Pje je W z Ψ
THÉORÈME. Il n'y a pas de combinateur de bouclage tel que .Y I = ΨOui Ouije= Ψ
PREUVE. L'ensemble de toutes les réductions de est . Pour être convertible avec , doit se réduire à l'un d'eux. L'argument est identique dans tous les cas; pour le concret, supposons que .{ W W , W I W W , I I I I W W , I I I W W , I I W W , I W W } Ψ Y I Y I ↠ I I W WΨ { WW, WjeWW, JejejejeWW, JejejeWW, JejeWW, JeWW} Ψ Ouije Ouije↠ jejeWW
Toute réduction standard peut être factorisée comme Y I ↠ w P N 4 , P ↠ w Q N 3 , Q ↠ w N 1 N 2 , donc Y I ↠ w N 1 N 2 N 3 N 4 N 1 ↠ I , N 2 ↠ I , N 3 ↠ O , N 4Ouije↠sjejeWW
Faisons référence à la réduction comme , et aux réductions partant de comme .R 0 N i R iOuije↠wN1N2N3N4 R0 Nje Rje
Ces réductions peuvent être levées sur la substitution pour donner pour que soit la composition .R z 0 : Y z ↠ z k ( M 1 M 2 M 3 M 4 ) N i ≡ M i [ z : = I ] R 0 Y I R z 0 [ z : = I ] ↠ I k ( N 1 ⋯ N 4 ) ↠ k[ z: = Je]
De même, nous pouvons soulever chaque commeRje: Nje↠ N∈ { I, W}
La seconde étape de cette factorisation de consiste précisément à contracter les -exexes créés par la substitution . (En particulier, puisque est une forme normale, .)Rje je Nzje[ z: = Je] N Nzje
Donc , avec un saupoudrage de pour et de pour .M1M2M3M4↠Nz1Nz2Nz3Nz4 Nzje z je i = 1 , 2 W i = 3 , 4
Dans le même temps, le terme devrait encore se réduire pour donner l'arbre de Bohm fpc infini . Il doit donc exister un "saupoudrer" dans l'un des qui vient infiniment souvent en tête du terme, sans pour en bloquer de nouvelles réductions.Nz1Nz2Nz3Nz4 z( z( z( ⋯ ) ) ) zkj Nzje
Et maintenant, nous avons terminé. En inspectant chaque , pour , et chaque valeur possible de , pour , nous constatons qu'aucune telle aspersion n'existe.Nzje i ≤ 4 kj j ≤ 2 + 7 ⌊ i - 12⌋
Par exemple, si nous modifions le dernier de en , alors nous obtenons la réduction de normalisationW jejeWW Wz= λ w . z( w Iw w )
(Notez que admet une telle aspersion précisément parce qu'un certain sous-terme peut être "gardé" sans affecter la non-normalisation. La variable vient en position de tête, mais suffisamment de redex restent en dessous.)Ω
3. La "transformation par aspersion" a d'autres utilisations. Par exemple, en plaçant devant chaque redex dans , on obtient un terme qui est une forme normale, encore satisfait à l'équation . Cela a été utilisé par Statman dans [2], par exemple.z M N= λ z. Mz Nje= M
4. Alternativement, si vous relâchez l'exigence que , vous pouvez trouver divers fpcs (faibles) qui simulent la réduction de , tout en émettant une chaîne de s en cours de route. Je ne suis pas sûr que cela répondrait à votre question générale, mais il existe certainement un certain nombre de transformations (calculables) qui produisent des combinateurs en boucle pour chaque muet , de telle sorte que le graphique de réduction de est structurellement similaire à celui de . Par exemple, on peut écrireOuije= M Oui M z M↦ YM M OuiM M
[1] Severi P., de Vries FJ. (2011) Décomposer le réseau d'ensembles sans signification dans le calcul infinitaire de Lambda. Dans: Beklemishev LD, de Queiroz R. (eds) Logic, Language, Information and Computation. WoLLIC 2011. Notes de cours en informatique, vol 6642.
[2] Richard Statman. Il n'y a pas de combinateur S, K hyperrécurrent. Rapport de recherche 91-133, Département de mathématiques, Université Carnegie Mellon, Pittsburgh, Pennsylvanie, 1991.
la source