Va bene, ci provo: in generale per un dato tipo di sistema , è vero quanto segue:T
Se tutti i termini ben scritti nel calcolo stanno normalizzando, allora è coerente se visto come una logica.TT
La prova generalmente procede assumendo che tu abbia un termine di tipo , usando la riduzione del soggetto per ottenere una forma normale, e quindi procedendo per induzione sulla struttura di un tale termine per ottenere una contraddizione.a b s u r dF a l s e
È naturale chiedersi se il contrario vale, vale a dire
Per qualsiasi sistema di tipo , se è logicamente coerente , allora ogni termine ben scritto in sta normalizzando.T TTTT
Il problema è che non esiste una vera e propria nozione più generale di "sistema di tipo", e ancor meno un accordo sul significato di coerenza logica per tali sistemi. Tuttavia, possiamo verificarlo empiricamente
Per i sistemi di tipo più noti che hanno un'interpretazione logica, il contrario vale davvero.
Come si lega a Turing Completezza? Bene, per uno, se il controllo del tipo è decidibile , l'argomento di Andrej mostra che uno dei seguenti deve contenere:
- L'insieme di tutti i programmi ben scritti non è Turing Complete.
- Esiste un programma ben tipizzato non terminante.
Questo tende a suggerire che:
I sistemi di tipo che hanno un'interpretazione logica e sono coerenti e ricorsivamente enumerabili non sono Turing Complete.
Dare un teorema reale piuttosto che un suggerimento richiede di rendere matematicamente precisa la nozione di sistemi di tipo e interpretazioni logiche.
Ora mi vengono in mente due osservazioni:
Esiste un sistema di tipo indecidibile , il sistema di tipo di intersezione che ha un'interpretazione logica e può rappresentare ogni termo normalizzante . Come hai notato, questo non è esattamente lo stesso di Turing Complete, poiché potrebbe essere necessario aggiornare il tipo di una funzione totale (perfezionata, in effetti) prima di applicarla all'argomento desiderato. Il calcolo è un calcolo di "stile curry" ed è uguale a STLC +
Γ ⊢ M : τλ
e
Γ⊢M:τ∩σ
Γ⊢M:τΓ⊢M:σΓ⊢M:τ∩σ
È chiaro che l '"interpretazione"∩=∧porta a un'interpretazione logica coerente.Γ⊢M:τ∩σΓ⊢M:τΓ⊢M:τ∩σΓ⊢M:σ
∩=∧
Esiste una classe di sistemi di tipi, i sistemi di tipo puro , in cui una domanda del genere potrebbe essere precisata. In questo quadro, tuttavia, l'interpretazione logica è meno chiara. Si potrebbe essere tentati di dire: "un PTS è coerente se ha un tipo disabitato". Ma questo non funziona, poiché i tipi possono vivere in diversi "universi", dove alcuni potrebbero essere coerenti e altri no.
Coquand e Herbelin definiscono una nozione di sistemi logici di tipo puro , in cui la domanda ha un senso e mostrano
Ogni LPTS incoerente e non dipendente ha un combinatore di loop (e così anche Turing Complete)
Che risponde alla domanda in una direzione (incoerente TC) in questo caso. Per quanto ne so, la domanda per LPTS generale è ancora aperta e piuttosto difficile.⇒
Modifica: il contrario del risultato Coquand-Herbelin non è facile come pensavo! Ecco cosa mi è venuto in mente finora.
Un sistema logico di tipo puro è un PTS con (almeno) i tipi e T y p e , (almeno) l'assioma P r o p : T y p e e (almeno) la regola ( P r o p , P r o p , P r o p ) , con l'ulteriore requisito che non vi siano tipi di tipo P r o p .P r o pT y p eP r o p : T y p e(Prop,Prop,Prop)Prop
Ora assumerò una particolare dichiarazione di completezza di Turing: sistemare un LPTS e lasciare che Γ sia il contestoLΓ
Γ=nat:Prop, 0:nat, S:nat→nat
èTuring Completeiff per ogni funzione calcolabile totale f : N → N esiste un termine t f tale che
Γ ⊢ t f : n a t → n a t
e per ogni n ∈ N t f ( S n 0 ) → ∗ β S f ( n ) 0Lf:N→Ntf
Γ⊢tf:nat→nat
n∈N
tf (Sn 0)→∗βSf(n) 0
Ora l'argomento della diagonalizzazione di Andrej mostra che ci sono di tipo n a t non terminanti .tnat
Γ ⊢ l o o p : n a tnatA0SΓAA:Prop
S0