Come dimostrare che un tipo in un sistema con tipi dipendenti non è abitato (cioè formula non dimostrabile)?


15

Per i sistemi senza tipi dipendenti, come il sistema di tipo Hindley-Milner, i tipi corrispondono alle formule della logica intuizionistica. Ci sappiamo che i suoi modelli sono algebre Heyting, e in particolare, per confutare una formula, possiamo limitare ad uno algebra Heyting dove ogni formula è rappresentato da un aperto di .R

Ad esempio, se vogliamo mostrare che non è abitato, costruiamo una mappatura ϕ dalle formule ai sottogruppi aperti di R definendo: ϕ ( α )α.α(α)φR Quindi ϕ ( α )

φ(α)=(-,0)
Ciò dimostra che la formula originale non può essere dimostrabile, dal momento che abbiamo un modello in cui non è vero, o equivalentemente (dall'isomorfismo di Curry-Howard) il tipo non può essere abitato.
φ(α)=int([0,))=(0,)φ(α(α))=(-,0)(0,)=R0.

Un'altra possibilità sarebbe quella di utilizzare i frame Kriepke .


Esistono metodi simili per sistemi con tipi dipendenti? Come una generalizzazione delle algebre di Heyting o dei frame di Kripke?

Nota: non sto chiedendo una procedura decisionale, so che non può essercene una. Sto solo chiedendo un meccanismo che consenta di testimoniare l'improvvisazione di una formula - per convincere qualcuno che non è dimostrabile.

Risposte:


13

Che una formula non sia dimostrabile può essenzialmente essere fatto in due modi. Con un po 'di fortuna potremmo essere in grado di dimostrare all'interno della teoria dei tipi che la formula implica uno che è già noto per non essere dimostrabile. L'altro modo è trovare un modello in cui la formula non è valida e questo può essere piuttosto difficile. Ad esempio, ci è voluto molto tempo per trovare il modello groupoid della teoria dei tipi dipendenti, che è stato il primo a invalidare l' unicità delle prove di identità .

La domanda "cos'è un modello di teoria dei tipi dipendenti?" ha una risposta alquanto complicata. Se si ignorano alcune proprietà di sostituzione, un modello è una categoria chiusa localmente cartesiana e potrebbe essere la risposta più semplice. Se vuoi un modello "reale", allora ci sono diverse opzioni, vedi la pagina nLab sui modelli categorici della teoria dei tipi dipendenti . In ogni caso, la risposta è sempre un po 'complicata perché la teoria dei tipi dipendenti è un sistema formale abbastanza complesso.

Se dovessi suggerire un solo articolo sull'argomento, probabilmente consiglierei l'articolo originale di Robert Seely, "Categorie chiuse localmente cartesiane e teoria dei tipi" . Se dovessi suggerirne un altro, sarebbe probabilmente uno che spiega cosa deve essere corretto nel documento di Seely, ad esempio "Sull'interpretazione della teoria dei tipi nelle categorie chiuse localmente cartesiane" di Martin Hoffman .

Un recente importante progresso in questo settore è la realizzazione che i modelli teorici di omotopia sono anche modelli di teoria dei tipi dipendenti, vedi riferimenti su homotopytypetheory.org . Ciò offre molte possibilità, ma ora si deve imparare la teoria dell'omotopia per mettere le mani sui modelli.


2
Questa risposta è piuttosto carina, sebbene ignori forse il modo più semplice possibile per dimostrare che un tipo non è abitato: induzione su forme normali! In particolare, è facile dimostrare che il mezzo escluso non può essere abitato nel calcolo delle costruzioni da tale induzione. Certo, allora devi mostrare che ogni termine può essere messo in una forma normale dello stesso tipo, e che implica una costruzione di modello ...
cody

@cody: buon punto, le forme normali possono essere molto utili.
Andrej Bauer,

@cody: "allora devi mostrare che ogni termine può essere messo in una forma normale dello stesso tipo": non è una parte standard della metatheory per un sistema di tipo "buono" (purché tu non lo faccia hanno assiomi) o una logica "buona" (dove si tratta dell'eliminazione del taglio)? Quindi puoi semplicemente riutilizzare la prova esistente, giusto?
Blaisorblade,

@Blaisorblade: ovviamente devi solo provare l'eliminazione del taglio una volta. Il punto potrebbe essere che l'uso dell'induzione su forme normali anziché su costruzioni di modelli era un modo per porre la domanda: stai già costruendo un modello per mostrare che ogni termine può essere messo in forma normale. In un certo senso stai lavorando nel "modello di forma normale", piuttosto che fare un lavoro strettamente sintattico.
cody

Vedo, stavo pensando allo "sforzo di prova", mentre immagino che tu stia ragionando su come viene implementata l'intera dimostrazione. Ma mi hai fatto mettere di nuovo in dubbio la distinzione tra approcci sintattici e semantici, date le costruzioni come i modelli di termine. Quindi ho fatto una domanda separata a riguardo: cstheory.stackexchange.com/q/21534/989
Blaisorblade
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.