Significato di "posizione positiva" e "posizione negativa" nella teoria dei tipi?


10

Che cosa significa "in posizione positiva" e "in posizione negativa" nel contesto della teoria dei tipi?

L'unica cosa che ho capito dal post sul blog di Bob Harper sull'argomento è che esiste una connessione tra polarità in questo senso nella teoria dei tipi e polarità nella logica, ma non so quale sia quella connessione.

Risposte:


9

Sfortunatamente la "polarità" è un concetto alquanto sovraccarico nella teoria dei tipi. "Posizione positiva" e "posizione negativa" si riferiscono a una nozione diversa di polarità rispetto a ciò di cui Bob sta parlando con messa a fuoco / polarizzazione.

Il tuo significato

Quando definisci un tipo induttivo, dai una serie di regole che corrispondono alle operazioni per il tipo che stai definendo. Ad esempio, potresti dire che a Natè qualcosa con

  • un valore zero : Nat
  • una funzione suc : Nat -> Nat

E poi aspettati che Natcontenga tutti i valori che possono essere generati dall'applicazione ripetuta sucad altri se Natinclude zero. In linea con questa costruzione induttiva otteniamo un principio di ricorsione su Nats che funziona in base al fatto che qualcuno Natè generato da quei costruttori.

rec : A -> (A -> A) -> Nat -> A

così che

rec Z S zero = zero
rec Z S (suc n) = S (rec Z S n)

Tuttavia, ci sono alcune restrizioni su ciò che possiamo scrivere come regole. Altrimenti, possiamo scrivere una serie di regole per le quali il principio della ricorsione non può essere giustificato. Considera il "tipo induttivo" Dcon un solo costruttore

  • d : (D -> D) -> D

Qui non c'è un principio di ricorsione sano qui. e per una buona ragione! Se avessimo qualche principio di ricorsione, potremmo usarlo per codificare una versione di auto-applicazione e con essa, non termine. Questo significa che Dnon può essere chiamato "induttivo" perché i tipi induttivi sono costruzioni finite generate da costruttori che applicano ripetutamente!

Per far fronte a questo, limitiamo il modo in cui i tipi induttivi possono essere ricorsivi nella teoria dei tipi. In particolare, impediamo loro di apparire in "luoghi negativi". Questa è la nozione di polarità di cui stavi parlando. La polarità di una posizione è determinata in tal modo,

  1. L'argomento inizia in una posizione positiva
  2. Ogni volta che andiamo a sinistra una freccia, la polarità si ribalta

Quindi Xè positivo nei primi due e negativo nei secondi due

X
Int -> X
X -> Int
(Unit -> X) -> Int

Questa idea è giustificata da un ricorso alla teoria delle categorie in cui un tipo induttivo con le cui uniche recidive sono positive dà origine a un covariante. I dettagli di come funziona e perché è interessante un po 'lungo.

Il significato di Bob Harper

Nel suo post sul blog, Harper parlava di un diverso significato di polarità. Questa polarità fa riferimento a come i vari connettivi nella logica hanno un significato. In particolare, possiamo classificare i connettivi in ​​due modi

  • I connettivi positivi possono essere definiti definendo come introdurli (le loro regole di introduzione)
  • I connettivi negativi possono essere definiti definendo come usarli (le loro regole di eliminazione)

In termini di linguaggio di programmazione, ciò cattura piacevolmente la distinzione tra tipi pigri e rigorosi. Un tipo rigoroso è definito dai suoi valori. Uno pigro è definito da come può corrispondere il modello su di essi. Per gestirlo correttamente, definiamo una lingua con 2 costrutti principali, modi per costruire tipi positivi e "spine" per decomporre i tipi negativi. Possiamo usarlo per incorporare il calcolo rigoroso e pigro in una lingua.

Per capirlo meglio, ti rimando al capitolo 38 del libro di Bob Harper .


Spiacente, @jozefg, ho capito il concetto ma non ho capito come vedere se un tipo appare solo su posizioni positive. Potresti specificare un po 'di più e dare qualche altro esempio?
paulotorrens,
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.