Comment transformer les termes sans terminaison en combinateurs à virgule fixe?

14

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 λtYt

Yt (λx.x)=t

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.Yf

Y f=f (Y f)
Y

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.t

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 2t n t ittt1 t2tnti


Jusqu'à présent: l'approche naturelle consiste à prendre les applications et "poivre" de partout, par exempleftf

Ω:=(λx.x x)(λx.x x)

devient l'habituel

YΩ:=λf.(λx.f (x x)) (λx.f (x x))

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 tλ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 ΩΩ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

(λx.x x x)(λx.x x x)
(λX.F (X X X))(λX.F (X X X))
Fλyz.F yFje
cody
la source
Je crois que l'exigence selon laquelle t n'a pas de forme normale de tête devrait être renforcée pour exclure également les formes normales de tête faible. Si t est capable de produire un lambda, alors, comme en position de tête vous avez toujours un combinateur de point fixe (commençant par f = id), le lambda devrait être produit par lui, ce n'est pas possible.
Andrea Asperti
@AndreaAsperti vous avez raison, bien sûr. Je vais modifier la question.
cody

Réponses:

7

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 IYYI

Ω 3 - { Ω 3 ( λ x . X x x ) ( λ x . X x x ) kk N }K n'est pas muet; ni comme cela se manifeste en inspectant son ensemble de réductions, qui est Ω3

{Ω3(λx.xxx)(λx.xxx)kkN}

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 - -YIY

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 = MMYYI=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 MzYzYMzM

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 IYIMMR:YIsMMYIYz[z:=I]C[N]=MRYIC[N0]whC[N1]iC[N]NzIPI[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.MYM

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 1P k P i I W z ΨΨ=WWW=λw.wjewwΩWzzP1PkPjejeWzΨ

THÉORÈME. Il n'y a pas de combinateur de bouclage tel que .Y I = ΨOuiOuije=Ψ

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}ΨOuijeOuijejejeWW

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 1I , N 2I , N 3O , N 4OuijesjejeWW

OuijewPN4,PwQN3,QwN1N2,Donc OuijewN1N2N3N4N1je,N2je,N3W,N4W

Faisons référence à la réduction comme , et aux réductions partant de comme .R 0 N i R iOuijewN1N2N3N4R0NjeRje

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 iM i [ z : = I ] R 0 Y I R z 0 [ z : = I ] I k ( N 1N 4 ) k[z: =je]

R0z:Ouizzk(M1M2M3M4)NjeMje[z: =je]
R0OuijeR0z[z: =je]jek(N1N4)wkN1N4

De même, nous pouvons soulever chaque comme Rje:NjeN{je,W}

Rjez:MjeNjezRje:NjeRjez[z: =je]Njez[z: =je]jeN

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, .)RjejeNjez[z: =je]NNjez

Njez est ce que nous appelons un « -sprinkling de », obtenue en plaçant un nombre quelconque de s autour un nombre quelconque de sous - terme de . Puisque , la forme de sera l'une deszNzNN{je,W}Njez

zk1(λX.zk2(X))zk1(λw.zk2(zk3(zk5(zksept(w)zk8(λX.zk9(X)))zk6(w))zk4(w)))

Donc , avec un saupoudrage de pour et de pour .M1M2M3M4N1zN2zN3zN4zNjezzjeje=1,2Wje=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.N1zN2zN3zN4zz(z(z()))zkjNjez

Et maintenant, nous avons terminé. En inspectant chaque , pour , et chaque valeur possible de , pour , nous constatons qu'aucune telle aspersion n'existe.Njezje4kjj2+septje-12

Par exemple, si nous modifions le dernier de en , alors nous obtenons la réduction de normalisation WjejeWWWz=λw.z(wjeww)

jejeWWzjeWWzWWzWzjeWzWzz(jejejeje)WzWzzjeWzWz

(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.zMN=λz.MzNje=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 écrire Ouije=MOuiMzMOuiMMOuiMM

OuiMz={z(OuiP[X: =Q]z)M(λX.P)QOuiNzM n'est pas un redex et MwhN

[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.

Andrew Polonsky
la source
Cette réponse est excellente et je l'accepterai probablement. Cependant, je ne sais pas quels sont les théorèmes réels que vous décrivez, à part "il n'y a pas de combinateur de boucle tel que ". Je pense qu'énoncer les théorèmes séparément rendra les arguments beaucoup plus faciles à suivre. OuiOui je=Ω3
cody
Bon point. Je viens de mettre à jour la réponse.
Andrew Polonsky