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.PF 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 taillePF 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)PP
complétude: pour tout , il existe un programme F système P décidant L tel que Φ ( P ) .L ∈ PPLΦ ( 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 ′ΦLPPLΦ ( 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ΦLPΦ
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.