Non sono sicuro che questa domanda sia ideale per CSTheory, ma dato che sta già raccogliendo voti, ecco una risposta che qualcuno avrebbe potuto dare se la domanda fosse stata pubblicata su cs.stackexchange .
Per comprendere la nozione di dualità della logica lineare , che forza la congiunzione e la disgiunzione molto più lontano di quanto siamo abituati nella logica convenzionale, raccomando di non pensare alla logica lineare in termini di risorse (sebbene questa sia una lettura importante ). Pensa invece alle formule logiche lineari A
come processi che comunicano in una porta / nome / canale. Questa interpretazione è stata perfezionata per prima in (1) per quanto ne so, ma è già menzionata nell'opera originale di Girard. Come una foto:( ⋅ )⊥UN
(Non sono sicuro di come centrare correttamente le immagini qui.) La congiunzione lineare viene interpretata come processi in esecuzione A
e B in parallelo . Il processo A ⊗ B
comunica coppie ( a , b ) alla sua porta, dove a viene da
A e b è la comunicazione di B.A ⊗ BUNBA ⊗ B ( a , b )aAbB
La dualizzazione (che è la negazione della logica lineare) commuta l'ingresso e l'uscita. Quindi il doppio di A ⊗ B
è(.)⊥A⊗B
(A⊗B)⊥=A⊥⅋B⊥
In questa lettura è il processo che comunica con . A ⊗ BA⊥⅋B⊥A⊗B
L'equivalente della disgiunzione della logica lineare può ricevere una lettura teorica di processo simile. La formula
A & B
dovrebbero anche essere visti come due processi e in parallelo, ma anziché inviare attivamente messaggi, attendono che l'ambiente decida quale eseguire. Quindi, sta lì, in attesa sul suo canale per un po 'di informazioni che decide se dovrebbe essere eseguito come o . Questa è una versione "parallela" di in linguaggi di programmazione sequenziale. Il doppio
di èB A & B A & B A B i f / t h e n / e l s e ( A & B ) ⊥ A & BABA&BA&BABif/then/else(A&B)⊥A&B
(A&B)⊥=A⊥⊕B⊥
può essere visto come un processo che invia 1 bit di informazioni ad , vale a dire: "continue as " o "continue as ". Questo è simile a valutando mentre
valutando , tranne per il fatto che la scelta tra e è ora fatta dall'ambiente.A B i f t r u e t h e n P e l s e Q P i f f a l s e t h e n P e l s e Q Q A BA&BABif true then P else QPif false then P else QQAB
L'operatore! Ha anche un'interpretazione teorica del processo: se
viene letto come un processo, allora può essere letto come l'esecuzione di infiniti processi in parallelo.
! A AA!AA
In questa lettura gli assiomi delle logiche diventare semplici 'fili' lineari che inoltrare messaggi provenienti da processi di ai processi . Questa interpretazione degli assiomi è già presente nelle reti di prova di Girard (3).A ⊥ AA⊢AA⊥A
Questa interpretazione teorica del processo è stata influente e ha dato origine a molti lavori di follow-up come ad esempio (2) per i tipi di sessione. Tuttavia, ci sono alcuni casi limite che lo rendono un po 'imbarazzante e, per quanto ne sappia, non è stato fatto funzionare perfettamente per una logica completamente lineare anche nel 2017.
1. S. Abramsky, interpretazioni computazionali della logica lineare .
2. P. Wadler, Proposte come sessioni .
3. Wikipedia, rete di prova .