Modifica: la mia ipotesi nel primo paragrafo sotto è sbagliata! Ugo Dal Lago mi ha fatto notare un articolo successivo di Martin Hofmann (apparso in POPL 2002), di cui non ero a conoscenza, che mostra (come corollario di risultati più generali) che il sistema del libro ATTPL è in effetti completo per ( nonostante non sia in grado di calcolare ogni funzione in F P ). Quindi, con mia sorpresa, la risposta alla domanda principale è sì.PFP
Per quanto riguarda il sistema si fa riferimento (dal libro ATTPL), sono abbastanza sicuro che non può decidere tutte le lingue in . Certamente non può calcolare ogni funzione in F P : come menzionato nelle note di quel capitolo, quel sistema è tratto dal documento LICS 1999 di Martin Hofmann ("Tipi lineari e calcolo del tempo polinomiale senza dimensioni"), in cui è mostrato che le funzioni rappresentabili sono polytime e non aumentano le dimensioniPFP, che esclude molte funzioni polytime. Sembra anche dare una seria limitazione alle dimensioni del nastro delle macchine Turing che è possibile simulare in quella lingua. Nel documento, Hofmann mostra che è possibile codificare il calcolo dello spazio lineare; la mia ipotesi è che non sarai in grado di fare molto di più, cioè la classe corrispondente a quel sistema è all'incirca i problemi risolvibili simultaneamente nello spazio temporale e lineare.
Per quanto riguarda la seconda domanda, ci sono diversi -calculi che può risolvere esattamente i problemi in P . Alcuni di questi sono menzionati nelle note del capitolo ATTPL a cui ti riferisci (Sez. 1.6): Calcolo λ a livelli di Leivant (vedi il suo articolo POPL 1993, o l'articolo con Jean-Yves Marion "Lambda Calculus Characterizes of Poly-Time ", Fundamenta Informaticae 19 (1/2): 167-184, 1993), che è legato alla caratterizzazione di F P di Bellantoni e Cook ; e i calcoli λ derivati dalla logica lineare leggera di Girard ( Informazione e calcolo , 143: 175–204, 1998) o dalla logica lineare morbida di Lafont ( Teoretical Computer ScienceλPλFPλ318 (1-2): 163-180, 2004). I sistemi di tipo che derivano da questi ultimi due sistemi logici e che garantiscono la terminazione polifunzionale (pur godendo della completezza) possono essere trovati in:
Patrick Baillot, Kazushige Terui. Tipi di luce per il calcolo del tempo polinomiale nel calcolo lambda. Informazioni e calcolo 207 (1): 41-62, 2009.
Marco Gaboardi, Simona Ronchi Della Rocca. Dalle logiche leggere ai compiti di tipo: un caso di studio. Logic Journal of IGPL 17 (5): 499-530, 2009.
Troverai molti altri riferimenti in quei due articoli.
Per concludere, lasciatemi espandere l'osservazione di Neel Krishnaswami. La situazione è un po 'sottile. Tutti i suddetti calcoli possono essere visti come restrizioni di calcoli più generali, in cui è possibile calcolare molto più delle semplici funzioni polytime, ad esempio il sistema F. In altre parole, si definisce una proprietà Φ dei programmi del sistema F P : stringa → bool tale che:λΦP: stringa → bool
solidità: implica che la lingua decisa da P sia in P ;Φ ( P)PP
completezza: per ogni esiste un programma F di sistema P che decide L in modo tale che Φ ( P ) .L ∈ PPLΦ ( P)
L'interesse è che la proprietà espressa da è puramente sintattica e, in particolare, decidibile. Pertanto, la completezza può valere solo in senso estensivo: se L è la tua lingua preferita in P e se P è il tuo algoritmo preferito per decidere L espressa nel sistema F, può darsi che Φ ( P ) non regge. Tutto quello che sai è che esiste qualche altro programma di sistema F P ′ che decide L e tale che Φ ( P ′ ) vale. Sfortunatamente, può succedere che P ′ΦLPPLΦ( P)P'LΦ ( P')P′è molto di più di quanto il tuo escogitato . In effetti, la completezza è dimostrata codificando le macchine di Turing con clock polinomiale come termini di sistema F soddisfacenti Φ . Pertanto, l'unico modo garantito per risolvere L usando il tuo algoritmo preferito è implementare quell'algoritmo su una macchina Turing e poi tradurlo nel sistema F usando la codifica fornita nella prova di completezza (la tua codifica potrebbe non funzionare!). Non esattamente la soluzione più elegante in termini di programmazione ... Naturalmente, in molti casi il programma "naturale" P soddisfa Φ . Tuttavia, in molti altri casi non lo è: nel documento LICS 1999 sopra menzionato, Hofmann fornisce un esempio di inserzione.PΦLPΦ
Esistono sistemi di tipo intenzionalmente completi , che sono in grado di digitare esattamente i programmi polytime del linguaggio più ampio (sistema F nel mio esempio sopra). Certo, sono indecidibili in generale. Vedere
Ugo Dal Lago, Marco Gaboardi. Tipi dipendenti lineari e completezza relativa. Metodi logici in Informatica 8 (4), 2011.