Plus précisément, si j'ai défini un nouveau comme
au lieu de
le -calcul serait-il une base concurrentielle?
Ma supposition est "non", simplement parce que je ne peux pas sembler être capable de construire le combinateur K régulier à partir des combinateurs , et , mais je n'ai pas d'algorithme à suivre, ni une bonne intuition à faire des choses avec ces combinateurs.
Il semble que vous puissiez définir
avec le calcul régulier , mais je ne pouvais pas vraiment travailler en arrière à partir de cela pour obtenir une dérivation de en termes de et le reste.
Ma tentative de prouver qu'elle n'était pas fonctionnellement complète a essentiellement tenté de construire de manière exhaustive toutes les fonctions réalisables à partir de ces combinateurs afin de montrer que vous atteignez une impasse (une fonction que vous avez déjà vue), quels que soient les combinateurs que vous utilisez. Je me rends compte que cela ne va pas nécessairement être vrai pour les ensembles de combinateurs fonctionnellement incomplets (par exemple, le combinateur seul ne sera jamais sans issue lorsqu'il est appliqué à lui-même), mais c'était ma meilleure pensée. J'ai toujours pu utiliser le combinateur pour me faufiler hors de ce que je pensais être finalement une impasse, donc je ne suis plus aussi sûr de la faisabilité de cette approche.
J'ai posé cette question sur StackOverflow mais j'ai été encouragé à la poster ici. J'ai reçu quelques commentaires sur ce post, mais je ne suis pas sûr de les avoir bien compris.
Bonus: si ce n'est pas une base complète, la langue résultante est-elle néanmoins Turing-complete?
Réponses:
Considérez les termes du calcul comme des arbres (avec des nœuds binaires représentant des applications et des feuilles représentant les combinateurs.S,K2,I S,K2
Par exemple, le terme serait représenté par l'arbreS(SS)K2
A chaque arbre associez sa feuille la plus à droite, celle que vous obtenez en prenant la branche droite à chacune . Par exemple, la feuille la plus à droite de l'arbre ci-dessus est .T K 2K2
@
Comme on peut le voir dans l'art ASCII ci-dessous, toutes les règles de réduction dans le calcul conservent la feuille la plus à droite.S,K2,I
À partir de là, il est facile de voir que si un terme réduit à , alors et ont la même feuille la plus à droite. Par conséquent, il n'y a pas de terme dans le calcul tel que réduit à . Cependant, réduit à , donc ne peut pas être exprimé dans le calculT T′ T T′ T S,K2,I TK2S K2 KK2S K2 K S,K2,I
la source
EDIT: Comme le soulignent les commentaires, ce n'est qu'une réponse partielle, car elle ne s'applique qu'au calcul simplement tapé (ou plutôt, cela montre qu'il n'y a pas de définition possible de K qui ne contient pas de mauvais sous-terme typé). S'il n'y a pas d'objection, je ne le supprimerai pas, car il présente une technique de preuve très productive pour le paramètre tapé.S,K2,I
Rappelons que nos combinateurs ont les types suivants (style Curry, donc sont variables):A,B,C
Par la correspondance de Curry-Howard, si nous pouvons exprimer en termes de alors le calcul de preuve de style Hilbert avec trois axiomes logiques et une règle d'inférence (de et inférer ) montre la formule .K I,S,K2 A→B→B,(A→B→C)→(A→B)→(A→C),A→A A A→B B A→B→A
Mais nous pouvons donner une→ A→B→B (A→B→C)→(A→B)→(A→C) A→A
t,f,u
sémantique à trois valeurs (valeurs ) à la connective telle que les formules , et obtiennent la valeur de toute interprétation.t
Cette sémantique est clairement saine dans le sens où chaque conséquence des axiomes obtient la valeur sous chaque interprétation (elle n'est pas complète, il y a des choses qui obtiennent toujours la valeur mais que nous ne pouvons pas réellement prouver). Cependant, obtient la valeur selon l'interprétation qui attribue à et à , et est donc pas prouvable des axiomes correspondant à .K2,S,I A → B → A A B S , K 2 , IA→B→A A B S,K2,I
t
t
f
u
t
la source