Qual è il modello folk della logica lineare?


23

Probabilmente l'applicazione più comune di tipi lineari in PL è usarli per fornire linguaggi che controllano l'aliasing (ovvero, un valore lineare ha un singolo puntatore ad esso, più o meno).

Ma c'è una leggera discrepanza tra questo utilizzo e i tipici modelli denotazionali della logica lineare. IIRC, Benton mostrò che se una categoria chiusa cartesiana ha una forte monade commutativa , la sua categoria di algebre sarà simmetrica monoidale chiusa (cioè un modello di logica lineare). Ma questo teorema non si applica all'uso del controllo alias, poiché la monade di stato non è commutativa. E in effetti, negli ultimi anni Simpson e i suoi colleghi hanno dato calcoli per monadi generali forti, che non sono termini termini per logica lineare.

Quindi la mia domanda è: qual è la semantica denotazionale dei linguaggi lineari con stato? Esiste una categoria chiusa monoideale simmetrica non degenerata (cioè il tensore non è un prodotto cartesiano) in cui è possibile modellare allocazione, lettura e aggiornamento lineare?


6
Questo è il tipo di domanda che mi sarei aspettato che rispondessi a Neel, senza fare domande. ;-)
Marc Hamann

5
se riesci ad attrarre ricercatori su cstheory.stackoverflow.com che sono in grado di rispondere a questa domanda, allora il mondo sarà un posto migliore per questo.
Dave Clarke,

Risposte:


9

Mi sembra che la direzione da prendere in considerazione riguardi la semantica del gioco per riferimenti generali e la semantica relativa per la logica lineare, come quelle basate sui giochi Conway . Un resoconto algebrico di riferimenti nella semantica dei giochi di Paul-André Melliès e Nicolas Tabareau è probabilmente il punto di partenza migliore. In questo documento la logica lineare è rilassata alla cosiddetta logica tensoriale per far funzionare le cose, quindi non è esattamente l'impostazione che desideri. Ma fanno affidamento sui giochi Conway, quindi esiste sicuramente una connessione con modelli di logica lineare. Inoltre, non sfruttano realmente la linearità come nei tipi lineari, ma credo che il macchinario sia lì per farlo, se lo desideri.

Anche il lavoro di Jim Laird (come A Game Semantics of Names and Pointers ) e Guy McCusker può contribuire alla tua ricerca. La recente interessante tesi Semantica di gioco per un linguaggio orientato agli oggetti di Nicholas Wolverson spinge ulteriormente queste idee in un ambiente OO. Considera dettagliatamente il threading lineare , una sola operazione attiva alla volta e descrive come aggiungere classi lineari . Entrambi si basano sulla digitazione lineare. Ancora una volta, tuttavia, il modello sottostante non è strettamente un modello di logica lineare, ma è vicino.


1
Solo curioso Neel. Ti è stato utile o sapevi già di tutte queste cose?
Dave Clarke,

T(A)=SA×S

1
Forse lo stato globale di Uday Reddy non è stato ritenuto necessario: un'introduzione alla semantica basata sugli oggetti, J. Lisp e Symbolic Computation, 9 (1996): 7-76.
Dave Clarke,

Lo sto leggendo ora, in realtà!
Neel Krishnaswami,

7

(Accidenti, Neel, era una domanda difficile.)

Il "modello folk" della logica lineare è sicuramente il modello di spazi coerente, discusso nel documento di Linear Logic di Girard (e anche in "Prove e tipi"). Questo non è degenerato nel senso che descrivi.

Non so se questa semantica faccia luce su come implementare un linguaggio funzionale lineare. Quando parli di allocazione, lettura e aggiornamento lineare, stai davvero parlando dell'implementazione. Quindi, forse, la tua domanda potrebbe essere formulata come "Come posso dimostrare la corretta implementazione di un linguaggio funzionale lineare che utilizza l'aggiornamento di stato?" Non conosco la risposta, ma penso che debba esistere nei documenti che propongono implementazioni di aggiornamento lineare.


In realtà, è troppo facile dimostrare la correttezza delle implementazioni dello stato lineare - la linearità è un vincolo strutturale così forte che non è quasi necessaria alcuna semantica per fare queste prove. Di conseguenza, non conosco una semplice semantica denotazionale di stato lineare. Le due cose più vicine a ciò che voglio sono i tuoi lavori sulla semantica basata sugli oggetti e il modello di "spazi di lunghezza" di Hofmann nel suo lavoro sulla complessità implicita.
Neel Krishnaswami,

In realtà, non descriverei la semantica basata sugli oggetti come "stato lineare" modellistico. È piuttosto "stato sequenziale" e "oggetti lineari", il latte viene imposto dalla SCI. I modelli di gioco di Idealized Algol, che sono anche "basati sugli oggetti" nello stesso senso, non hanno nulla di lineare.
Uday Reddy,

Puoi trovare dei riferimenti su dove trovare tali prove di correttezza? (Mi spiace, volgendoti di nuovo la domanda!)
Uday Reddy,

1
La più semplice prova di solidità per un linguaggio lineare con stato che conosco è "L3: un linguaggio lineare con posizioni" di Ahmed, Fluet e Morisett. ( ttic.uchicago.edu/~amal/papers/linloc-fi07.pdf ) Nel documento, forniscono una semplice relazione logica, ma menzionano che passa anche una prova sintattica di progresso e conservazione.
Neel Krishnaswami,

Ecco un altro pezzo di lavoro che è appena venuto alla mia attenzione. Prova citeseer per Stephen Cooper, link "Sui tipi lineari e aggiornamento imperativo" . Avrei dovuto saperlo, ma non l'ho fatto.
Uday Reddy,
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.