Decidibilità dell'inferenza del tipo e verifica del tipo in MLTT


9
  1. In Martin-Löf Un intuizionistica teoria dei tipi: Predicativo parte si è dimostrato che il controllo del tipo è decidibile oggetto di un essere tipizzabile in primo luogo, dimostrando un teorema di normalizzazione per i termini tipizzabile chiusi. D'altra parte, l'ho visto scritto in più punti (Wikipedia, Nördstrom ecc.) Che il controllo del tipo in MLTT (intensionale) è decidibile; si stanno implicitamente limitando a termini tipizzabili?un':UNun'

  2. Si sa qualcosa sulla decidibilità dell'inferenza del tipo o del controllo del tipo in MLTT intenzionale se non ci limitiamo ai termini tipizzabili? Ad esempio, forse esiste un processo decisionale che riconosce termini non tipizzabili, ad esempio normalizzandoli in una forma che non corrisponde a nessuno dei costruttori, o mostrando che non esiste una sequenza non periodica di riduzioni per qualsiasi termine non tipizzabile.

    Non sono riuscito a trovare molto in letteratura.

Risposte:


9

Certamente il problema decisionale

Dato un (pre) termine Esiste un tipo A tale che a : A è derivabile in MLTT?un'UNun':UN

A volte scritto (e chiamato il problema dell'inferenza del tipo ) è decidibile, vale a dire non importa se a è ben scritto o no per ottenere una risposta. In effetti, tutti i correttori di prove basati su MLTT implementano una versione di questo algoritmo decisionale!un' : ?un'

Ovviamente, il problema in un contesto non-vuoto ( ) È decidibile così, di solito è necessario risolvere quest'ultima per risolvere il primo.Γun' : ?

Ciò dovrebbe rispondere alle domande 1 e 2. L'algoritmo non implica la normalizzazione di , che in generale sarebbe una cattiva notizia, poiché è indecifrabile se un termine non tipizzato si normalizzi a qualcosa. Tuttavia il tipo di controllo algoritmo non comporta normalizzare tipi , che sono da costruzione sé ben digitato.un'

Di conseguenza, la normalizzazione di termini ben tipizzati è una condizione necessaria affinché il problema di inferenza del tipo sia decidibile.

Potresti voler controllare Nordström, Petersson e Smith per un'introduzione.


Non sono a conoscenza di alcuna descrizione generica di un algoritmo di inferenza del tipo per la normalizzazione delle teorie dei tipi, sebbene Pollack fornisca una panoramica abbastanza buona (sebbene lo stato dell'arte sia migliorato) in Typechecking in Pure Type Systems .


Che ne dici di pretipi (termini che indicano in modo generico un tipo)? Potrebbe valere la pena chiarire anche il loro status.
Andrej Bauer,

Grazie cody, ti riferisci agli algoritmi di verifica del tipo implementati da assistenti di verifica come ALF e Coq? Per quanto mi riguarda, si tratta di algoritmi per le specifiche varianti di MLTT su cui si basano (CIC per Coq, qualcos'altro per ALF), ma non mi è chiaro come possano essere usati per digitare la specifica MLTT del '73. In particolare, se la gerarchia dell'universo o altre differenze nei dettagli potrebbero cambiare qualcosa ...
Josh Chen,

... O gli algoritmi sono abbastanza generali da coprire queste differenze? Ho difficoltà a trovare risultati in tale generalità; tutto ciò che mi sembra di trovare nella mia ricerca letteraria sono risultati molto specifici, spesso particolarmente adattati alla teoria di base di un assistente di prova.
Josh Chen,

1
@JoshChen gli algoritmi sono al loro centro molto generali, in quanto implicano una ricerca orientata al tipo, alternata a fasi di normalizzazione su termini ben scritti, come ha spiegato Andrej. Purtroppo non sono a conoscenza di una descrizione generica dell'algoritmo, anche se aggiungerò un riferimento parziale alla mia risposta.
cody

1
@JoshChen Non chiariscono, ma potrebbero riferirsi a tipi inferenti per termini "in stile curry", per i quali l'inferenza è indecidibile. Vado più in dettaglio qui: cs.stackexchange.com/a/12957/988
cody

8

Vorrei integrare la risposta con il codice con un'osservazione generale che trasmette la mia comprensione del perché gli algoritmi di controllo del tipo funzionano.

Per un'ampia classe di teorie del tipo, il controllo del tipo o l'inferenza sono eseguiti in modo tale da non tentare mai di normalizzare un termine, a meno che non abbiamo stabilito in anticipo che è ben digitato. Allo stesso modo, non tentiamo mai di normalizzare un tipo, a meno che non abbiamo già stabilito che si tratta di un tipo. Per questo motivo, possiamo essere certi che la normalizzazione terminerà (il che richiede una prova separata).

Uno deve guardare algoritmi specifici e vedere che funzionano davvero in questo modo, ma lo fanno. Volevo solo affermare cosa li fa spuntare. O meglio, questo è il motivo per cui smettono di spuntare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.