Dans les rubriques avancées sur les types et les langages de programmation, il est mentionné, dans le chapitre sur les systèmes de types sous-structurels, qu'un calcul lambda affiné "soigneusement conçu" avec un combinateur de récursivité pour les listes ne peut taper que des termes qui ont un temps d'exécution polynomial (il ne présenter la preuve en raison de la complexité). Ce serait super intéressant si nous pouvions également résoudre tous les problèmes de P. Je pourrais essayer de trouver une solution à un problème P-complet en utilisant le calcul présenté par Je ne suis pas sûr que cela prouverait quoi que ce soit. Cela ne me semble pas signifier qu'il peut effectuer toutes les réductions nécessaires pour utiliser une solution à un problème P-complet (même si cela semble probable).
Si un calcul lambda affine n'est pas connu pour être en mesure de résoudre exactement les problèmes de P, existe-t-il un calcul connu qui peut résoudre exactement les problèmes de P?
Réponses:
Edit: ma supposition dans le premier paragraphe ci-dessous est fausse! Ugo Dal Lago m'a fait remarquer un article ultérieur de Martin Hofmann (paru dans POPL 2002), dont je n'étais pas au courant, montrant (comme corollaire de résultats plus généraux) que le système du livre ATTPL est en fait complet pour ( bien qu'il ne soit pas en mesure de calculer toutes les fonctions dans F P ). À ma grande surprise, la réponse à la question principale est donc oui.P F P
En ce qui concerne le système dont vous parlez (du livre de ATTPL), je suis sûr qu'il ne peut pas décider de toutes les langues . Il ne peut certainement pas calculer toutes les fonctions dans F P : comme mentionné dans les notes de ce chapitre, ce système est tiré de l'article LICS 1999 de Martin Hofmann ("Types linéaires et calcul du temps polynomial sans augmentation de taille"), dans lequel il est montré que les fonctions représentables sont polytemporaires et n'augmentent pas la tailleP F P , ce qui exclut de nombreuses fonctions de polytime. Cela semble également limiter sérieusement la taille de la bande des machines Turing que vous pouvez simuler dans cette langue. Dans l'article, Hofmann montre que vous pouvez coder le calcul d'espace linéaire; je suppose que vous ne pourrez pas faire beaucoup plus, c'est -à- dire que la classe correspondant à ce système est à peu près les problèmes pouvant être résolus simultanément dans le polytemps et l'espace linéaire.
En ce qui concerne votre deuxième question, il y a plusieurs -calculi qui peut résoudre exactement les problèmes P . Certains d'entre eux sont mentionnés dans les notes du chapitre ATTPL auquel vous vous référez (Sect. 1.6): λ -calculus à plusieurs niveaux de Leivant (voir son article POPL 1993, ou l'article avec Jean-Yves Marion "Lambda Calculus Characterisations of Poly-Time ", Fundamenta Informaticae 19 (1/2): 167-184, 1993), qui est liée à la caractérisation de F P par Bellantoni et Cook ; et les λ -calculi dérivés de la logique linéaire légère de Girard ( Information and Computation , 143: 175–204, 1998) ou de la logique linéaire douce de Lafont ( Theoretical Computer Scienceλ P λ F P λ 318 (1-2): 163-180, 2004). Les systèmes de types issus de ces deux derniers systèmes logiques et assurant la terminaison du polytime (tout en bénéficiant de l'exhaustivité) peuvent être trouvés dans:
Patrick Baillot, Kazushige Terui. Types de lumière pour le calcul du temps polynomial dans le calcul lambda. Information et calcul 207 (1): 41-62, 2009.
Marco Gaboardi, Simona Ronchi Della Rocca. Des logiques légères aux affectations de type: une étude de cas. Journal logique de l'IGPL 17 (5): 499-530, 2009.
Vous trouverez de nombreuses autres références dans ces deux articles.
Pour conclure, permettez-moi de développer la remarque de Neel Krishnaswami. La situation est un peu subtile. Tous les -calculi ci-dessus peuvent être considérés comme des restrictions de calculs plus généraux, dans lesquels vous pouvez calculer bien plus que les fonctions de polytime, par exemple le système F. En d'autres termes, vous définissez une propriété Φ des programmes du système F P : string → bool tel que:λ Φ P: chaîne → bool
solidité: implique que le langage décidé par P est en P ;Φ ( P) P P
complétude: pour tout , il existe un programme F système P décidant L tel que Φ ( P ) .L ∈ P P L Φ ( P)
L'intérêt est que la propriété exprimée par est purement syntaxique et, en particulier, décidable. Par conséquent, l'exhaustivité ne peut tenir que dans un sens extensionnel: si L est votre langue préférée dans P et si P est votre algorithme préféré pour décider de L exprimé dans le système F, il se peut que Φ ( P ) ne soit pas valide. Tout ce que vous savez, c'est qu'il existe un autre programme F du système P 'qui décide de L et tel que Φ ( P ' ) est vrai. Malheureusement, il peut arriver que P ′Φ L P P L Φ ( P) P′ L Φ ( P′) P′ est beaucoup plus que votre arrangé . En effet, l'exhaustivité est prouvée en codant les machines de Turing à synchronisation polynomiale en termes de système F satisfaisant Φ . Par conséquent, le seul moyen garanti de résoudre L en utilisant votre algorithme préféré consiste à implémenter cet algorithme sur une machine de Turing puis à le traduire dans le système F en utilisant l'encodage donné dans la preuve d'exhaustivité (votre propre encodage peut ne pas fonctionner!). Pas exactement la solution la plus élégante en termes de programmation ... Bien sûr, dans de nombreux cas, le programme "naturel" P satisfait Φ . Cependant, dans de nombreux autres cas, ce n'est pas le cas: dans l'article de LICS 1999 mentionné ci-dessus, Hofmann donne l'exemple du tri par insertion.P Φ L P Φ
Il existe des systèmes de type intentionnellement complets , qui sont capables de taper exactement les programmes polytime du langage plus large (système F dans mon exemple ci-dessus). Bien sûr, ils sont indécidables en général. Voir
Ugo Dal Lago, Marco Gaboardi. Types dépendants linéaires et exhaustivité relative. Méthodes logiques en informatique 8 (4), 2011.
la source