No, in questo caso, la predicatività e la monotonicità non sono strettamente correlate.
Il controllo di positività in Coq / Adga serve a garantire che stai prendendo il punto meno fisso di una cosa monotona, approssimativamente.
Ecco come pensare ai tipi induttivi in termini di reticoli e operatori monotoni. Ricordiamo che il teorema di Knaster-Tarski dice che su un reticolo completo , ogni operatore monotono f : L → L ha un punto minimo fisso μ ( f ) . Successivamente, possiamo pensare ai tipi in una teoria dei tipi come a formare un reticolo sotto dimostrabilità. Cioè, tipo S è inferiore T se la verità di S comporta che di T . Ora, ciò che vorremmo fare è prendere un operatore monotono F sui tipi e usare Knaster-Tarski per ottenere un'interpretazione del punto meno fisso di questo operatoreLf:L→Lμ(f)STSTF . μ(F)
Tuttavia, i tipi nella teoria dei tipi non sono solo una grata: formano una categoria. Cioè, dato due tipi e T , ci sono potenzialmente molti modi per S al di sotto T , con un modo per ogni prova e : S → T . Quindi anche un operatore di tipo F deve fare qualcosa di sensato su queste prove. La generalizzazione appropriata della monotonicità è la funzionalità . Cioè, vogliamo che F abbia un operatore sui tipi e anche un'azione sulle prove, in modo che se e : S → T , quindi F (STSTe : S→ TFFe : S→ T .F( e ) : F( S) → F( T)
Ora, la funzionalità è preservata da somme e prodotti (cioè, se e G sono endofunctor sui tipi, allora F + G e F × G (agendo in senso puntuale) sono anche funzione sui tipi (supponendo che abbiamo somme e prodotti nella nostra algebra di tipi) Tuttavia, non è conservato dallo spazio delle funzioni, poiché il bifunctor esponenziale F → G è contravvenente nel suo argomento di sinistra. Quindi, quando scrivi una definizione di tipo induttivo, stai definendo un funzione per prendere un punto meno fisso di. Per assicurarsi che sia effettivamente un funzione, è necessario escludere le occorrenze del parametro ricorsivo sul lato sinistro degli spazi funzione, quindi il controllo di positività.FsolF+ GF× GF→ G
L'impredicatività (nel senso del Sistema F) è generalmente evitata, perché è un principio che ti obbliga a scegliere tra la logica classica e i modelli teorici di insiemi. Non è possibile interpretare i tipi come set nella teoria degli insiemi classica se si dispone dell'indicizzazione in stile F. (Vedi il famoso "Il polimorfismo non è teorico" di Reynolds.)
Dal punto di vista categorico, l'impredicatività in stile F afferma che la categoria di tipi e termini costituisce una piccola categoria completa (ovvero, homs e oggetti sono entrambi insiemi e esistono limiti di tutti i piccoli diagrammi). Classicamente questo forza una categoria ad essere un poset. Molti costruttivisti sono costruttivi perché vogliono che i loro teoremi rimangano in più sistemi della semplice logica classica, e quindi non vogliono provare nulla che sia classicamente falso. Quindi sono diffidenti nei confronti del polimorfismo impredicativo.
Tuttavia, il polimorfismo ti consente di dire molte condizioni classicamente "grandi" internamente alla tua teoria dei tipi - e la positività è una di queste! Un operatore di tipo è funzionale, se è possibile produrre un termine polimorfico:F
F m a p :∀α,β.( α → β) → ( F( α ) → F( β) )
Vedi come questo corrisponde alla funzionalità? IMO, questa sarebbe un'opzione molto bella da avere in Coq, poiché ti permetterebbe di fare la programmazione generica molto più facilmente. La natura sintattica del controllo di positività è un grosso ostacolo alla programmazione generica e sarei felice di scambiare la possibilità di assiomi classici con programmi funzionali più flessibili.
EDIT: La domanda che stai ponendo sulla differenza tra Prop e Set deriva dal fatto che gli sviluppatori di Coq vogliono permetterti di pensare ai teoremi di Coq in termini ingenui di teoria teorica se lo desideri, senza costringerti a farlo. Tecnicamente, hanno diviso Prop e Set e quindi hanno proibito ai set di dipendere dal contenuto computazionale di Prop.
Quindi puoi interpretare Prop come valori di verità in ZFC, che sono i booleani vero e falso. In questo mondo, tutte le prove delle proposizioni sono uguali, e quindi ovviamente non dovresti essere in grado di ramificarti sulla prova di una proposizione. Quindi il divieto di set in base al contenuto computazionale delle prove di Prop è totalmente ragionevole. Inoltre, il reticolo booleano a 2 elementi è ovviamente un reticolo completo, quindi dovrebbe supportare l'indicizzazione impredicativa, dal momento che esistono incontri arbitrari valutati in serie. La restrizione della predicatività sugli insiemi deriva dal fatto (menzionato sopra) che l'indicizzazione di tipo F è degenerata nei modelli classici di teoria degli insiemi.
Coq ha altri modelli (è una logica costruttiva!) Ma il punto è che non dimostrerà mai nulla per cui un matematico classico sarebbe perplesso.