Applicazioni solide della teoria delle categorie in TCS?


103

Ho imparato alcuni frammenti di teoria delle categorie. Certamente è un modo diverso di vedere le cose. (Riepilogo molto approssimativo per coloro che non l'hanno visto: la teoria delle categorie offre modi di esprimere tutti i tipi di comportamento matematico esclusivamente in termini di relazioni funzionali tra oggetti. Ad esempio, cose come il prodotto cartesiano di due insiemi sono definite completamente in termini di come le altre funzioni si comportano con esso, non in termini di quali elementi sono membri dell'insieme.)

Ho una vaga comprensione che la teoria delle categorie sia utile dal punto di vista dei linguaggi di programmazione / logica (la "Teoria B"), e mi chiedo di quanti benefici potrebbero trarre algoritmi e complessità ("Teoria A"). Potrebbe aiutarmi a decollare, tuttavia, se conosco alcune solide applicazioni della teoria delle categorie nella Teoria B. (Sto già presumibilmente supponendo che finora non siano state trovate applicazioni nella Teoria A, ma se ne hai alcune, è persino meglio per me!)

Per "applicazione solida" intendo:

(1) L'applicazione dipende così fortemente dalla teoria delle categorie che è molto difficile da ottenere senza usare il macchinario.

(2) L'applicazione invoca almeno un teorema non banale della teoria delle categorie (ad esempio il lemma di Yoneda).

Potrebbe essere che (1) implichi (2), ma voglio assicurarmi che si tratti di applicazioni "reali".

Anche se ho un po 'di "teoria B", è passato un po' di tempo, quindi qualsiasi de-gergo sarebbe apprezzato.

(A seconda del tipo di risposte che ottengo, potrei trasformare questa domanda in wiki della comunità in seguito. Ma voglio davvero buone applicazioni con buone spiegazioni, quindi sembra un peccato non premiare i rispondenti con qualcosa.)

Risposte:


79

Mi viene in mente un caso in cui la teoria della categoria è stata "applicata" direttamente per risolvere un problema aperto nei linguaggi di programmazione: Thorsten Altenkirch, Peter Dybjer, Martin Hofmann e Phil Scott, "Normalizzazione mediante valutazione per il calcolo lambda tipizzato con coprodotti" . Dal loro abstract: "Risolviamo il problema decisionale per il calcolo lambda semplicemente digitato con forti somme binarie, equivalentemente il problema della parola per le categorie chiuse cartesiane libere con coprodotti binari. Il nostro metodo si basa sulla tecnica semantica nota come" normalizzazione mediante valutazione "e prevede invertendo l'interpretazione della sintassi in un modello di covone adatto e da questo estraendo forme normali uniche appropriate. "

In generale, tuttavia, penso che la teoria delle categorie non venga solitamente applicata per dimostrare teoremi profondi nei linguaggi di programmazione (di cui non ce ne sono così tanti), ma offre invece un quadro concettuale che è spesso utile (ad esempio in precedenza, il idea della semantica (pre) del covone).

Un importante esempio storico è il suggerimento di Eugenio Moggi che la nozione di monade (che è fondamentale e onnipresente nella teoria delle categorie) potrebbe essere usata come parte di una spiegazione semantica degli effetti collaterali nei linguaggi di programmazione (ad esempio, stato, non determinismo). Ciò ha anche ispirato alcune riflessioni sulla sintassi dei linguaggi di programmazione, ad esempio portando direttamente alla "classe di caratteri Monad" di Haskell (utilizzata per incapsulare gli effetti).

Più recentemente (l'ultimo decennio), questa spiegazione degli effetti in termini di monadi è stata rivisitata dal punto di vista della vecchia connessione (stabilita dai teorici di categoria, negli anni '60) tra monadi e teorie algebriche: vedi Martin Hyland e John Power's , "La comprensione teorica della categoria dell'algebra universale: teorie e monadi di Lawvere" . L'idea è che la visione monadica degli effetti sia compatibile con la vista algebrica (per certi versi più accattivante) degli effetti, in cui gli effetti (es. Archivio) possono essere spiegati in termini di operazioni (es. "Ricerca" e "aggiornamento") ed equazioni associate (ad es. idempotenza dell'aggiornamento). Esiste un recente studio su questo collegamento di Paul-André Melliès, "La condizione segale incontra gli effetti computazionali", che si basa anche fortemente su idee provenienti dalla "teoria delle categorie superiori" (ad esempio la nozione di "struttura di Yoneda" come modo di organizzare la semantica del pre-sordo).

Un'altra classe di esempi correlati deriva dalla logica lineare . Poco dopo la sua introduzione da parte di Jean-Yves Girard negli anni '80 (con l'obiettivo di una migliore comprensione della logica costruttiva), furono stabilite solide connessioni con la teoria delle categorie. Per una spiegazione di questa connessione, consultare John Baez e Mike Stay, "Fisica, topologia, logica e calcolo: una pietra di Rosetta" .

Infine, questa risposta sarebbe incompleta senza riferimento al blog illuminante di Sigfpe "A Neighbourhood of infinity" . In particolare è possibile consultare "Un ordinamento parziale di una teoria di categoria applicata a Haskell" .


3
Ciao Noam, penso che dopo quell'ottima risposta, il tuo rappresentante è abbastanza alto da aggiungere collegamenti!
Suresh Venkat,

Ho affrontato lo stesso problema di un principiante. Ho solo aspettato che la mia risposta fosse votata, poi ho inserito i link. Potresti fare lo stesso ...
Andrej Bauer il

10
Grazie! Mi dispiace per la limitazione dell'hyperlink ... vorrei che ci fosse un modo per dire al sistema "yo, sono Noam Zeilberger, sono legittimo"
Ryan Williams

aggiunti i collegamenti! Sì, è una politica totalmente ragionevole, a volte si mette in mezzo.
Noam Zeilberger,

46

Calcolo Quantico

Un'area molto interessante è l'applicazione di varie categorie monoidali al calcolo quantistico. Alcuni potrebbero sostenere che anche questa è fisica, ma il lavoro è svolto da persone nei dipartimenti di informatica. Un primo articolo in quest'area è una semantica categorica dei protocolli quantistici di Samson Abramsky e Bob Coecke; molti lavori recenti di Abramsky e Coecke e altri continuano a lavorare in questa direzione.

In questo corpus di lavori i protocolli quantistici sono assiomatizzati come (certi tipi di) categorie chiuse compatte. Tali categorie hanno un bellissimo linguaggio grafico in termini di diagrammi a stringa (e a nastro). Le equazioni nella categoria corrispondono a determinati movimenti delle stringhe, come raddrizzare una corda aggrovigliata ma non annodata, che a sua volta corrisponde a qualcosa di significativo nella meccanica quantistica, come un teletrasporto quantistico.

L'approccio categorico offre una visione logica di alto livello su ciò che in genere comporta calcoli di livello molto basso.

Teoria dei sistemi

Coalgebra è stata utilizzata come framework generale per modellare sistemi (flussi, automi, sistemi di transizione, sistemi probabilistici). La sua teoria è radicata nella teoria delle categorie, essendo basata sulla nozione di -coalgebra , dove è un funzione che descrive la struttura del sistema di transizione. Pertanto, il tipo di sistema cambia con il funzione di base, ma gran parte della teoria, come la nozione di bisimulazione, è applicabile a tutti i funzioni. La teoria delle categorie consente anche la costruzione modulare di logiche modali per il ragionamento su sistemi descritti come coalgebre.FF

Trasformazioni grafiche

Le trasformazioni grafiche possono essere espresse abbastanza bene nel linguaggio della teoria delle categorie. Questo ha trovato applicazione, ad esempio, nella trasformazione dei modelli (come nei modelli UML) e in altri formalismi di modellazione visiva. L'approccio si svolge nella categoria dei grafici e degli omomorfismi grafici. In primo luogo, un pushout può essere visto come una costruzione di incollaggio: dati due grafici . Un grafico e due morfismi ed indicano le parti che i due grafici hanno in comune. Il pushout unifica queste parti, aggiungendo le parti rimanenti di e , in effetti, incollando e insieme PG1,G2Pe1:PG1e2:PG2G1G2G1G2P .

Un doppio pushout viene utilizzato per descrivere una trasformazione del grafico. La regola è rappresentata da una tupla , dove indica la precondizione della regola, indica la condizione post della regola e indica la parte del grafico a cui applicare la regola. Esistono mappe da e , una delle quali verrà utilizzata per abbinare una parte del grafico originale, l'altra per creare il grafico risultante. descrive la parte del grafico da eliminare. descrive la parte da creare. Una mappa da in un contesto(L,K,R)LRKl:KLr:KRLKRKdKgrafico deve essere fornito e la pushout di e mappa deve uguagliare il grafico di interesse . Il pushout di e dà quindi il risultato dell'esecuzione della trasformazione.DdlGdk

Linguaggi di programmazione (tramite MathOverflow)

Ci sono state molte applicazioni della teoria delle categorie nella progettazione dei linguaggi di programmazione e della teoria dei linguaggi di programmazione. Ampie risposte sono disponibili su MathOverflow. https://mathoverflow.net/questions/3721/programming-languages-based-on-category-theory ) https://mathoverflow.net/questions/4235/relating-category-theory-to-programming-language-theory .

Bigraphs - Calcoli di processo

Infine, ci sono i bigraph di Milner , un quadro generale per la descrizione e il ragionamento sui sistemi di agenti interagenti. Può essere visto come un quadro generale per il ragionamento sulle algebre di processo e le loro teorie strutturali e comportamentali. L'approccio si basa anche su pushout.


35

Sto già implicitamente supponendo che finora non siano state trovate applicazioni nella Teoria A, ma se ne hai alcune, è ancora meglio per me!

  • La mia comprensione è che la teoria delle specie di Joyal è utilizzata in modo relativamente ampio nella combinatoria enumerativa, come generalizzazione delle funzioni generatrici che inoltre ti dicono come permutare le cose oltre a quante ce ne sono.

  • Pippenger ha applicato la dualità di Stone per mettere in relazione lingue e varietà regolari di semigruppi. Jeandel ha introdotto automi topologici che applicano queste idee per fornire resoconti unificati (e prove!) Per automi quantistici, probabilistici e ordinari.

  • Roland Backhouse ha dato caratterizzazioni astratte di algoritmi avidi per mezzo di connessioni Galois con il semiring tropicale.

In una vena molto più speculativa, Noam menzionò i modelli di covoni. Questi caratterizzano astrattamente la tecnica sintattica delle relazioni logiche, che è probabilmente una delle tecniche più potenti in semantica. Li usiamo principalmente per dimostrare risultati di inesprimibilità e coerenza, ma dovrebbe essere interessante per i teorici della complessità poiché è un bell'esempio di una tecnica pratica non naturale (nel senso di Razborov / Rudich). (Tuttavia, le relazioni logiche di solito sono progettate con molta attenzione per garantire che si relativizzino - come progettisti del linguaggio, vogliamo essere in grado di assicurare ai programmatori che le chiamate di funzione sono scatole nere!)

EDIT: Continuerò a speculare, su richiesta di Ryan. A quanto ho capito, una prova naturale è all'incirca quella del tentativo di definire un invariante induttivo della struttura di un circuito, soggetto a varie condizioni sensibili. Idee simili sono (sorprendentemente) abbastanza comuni anche nei linguaggi di programmazione, quando si tenta di definire invariante gestito induttivamente da un termine lambda-calcolo (ad esempio, per dimostrare la sicurezza del tipo). 1

Tuttavia, questa tecnica spesso si suddivide in tipi più elevati (ad es. Funzione). Ad esempio, il calcolo lambda tipizzato in modo semplice è totale - ogni programma scritto in esso termina. Tuttavia, i tentativi diretti di dimostrare questo tendono al fondatore sul problema delle funzioni di prima classe: non è sufficiente dimostrare che ogni termine di tipo da termina. Poiché possiamo inoltre applicare argomenti alle funzioni, non dobbiamo solo garantire che ogni termine di tipo da interrompa, ma dobbiamo anche assicurarci che questa proprietà sia "ereditaria", ma dobbiamo anche sapere che, dato qualsiasi termine di tipo , anche l'applicazione si arresterà.ABABA

Questo è ciò che fanno le relazioni logiche. Invece di definire un singolo invariante induttivo, definiamo un'intera famiglia di predicati mediante ricorsione sulla struttura (tipicamente) del tipo. Quindi, dimostriamo che ogni termine definibile si trova nel predicato appropriato, che ci consente di stabilire ciò che abbiamo cercato. Quindi per terminazione, dovremmo dire che i valori buoni del tipo base sono i valori del tipo base, e i buoni valori del tipo da sono i valori di questo tipo che, dato un buon valore di , valuta un buon valore diA BABAB. Nota che non esiste un singolo invariante induttivo: definiamo un'intera famiglia di invarianti per ricorsione sulla struttura dell'input e usiamo altri mezzi per mostrare che tutti i termini si trovano all'interno di questi invarianti. In teoria, questa è una tecnica molto più forte ed è il motivo per cui ti consente di dimostrare risultati di coerenza.

La connessione alle pulegge deriva dal fatto che spesso dobbiamo ragionare su termini aperti (cioè, termini con variabili libere), e quindi dobbiamo distinguere tra rimanere bloccati a causa di errori e rimanere bloccati a causa della necessità di ridurre una variabile. Le pulegge derivano dal considerare le riduzioni del calcolo lambda come la definizione dei morfismi di una categoria i cui termini sono gli oggetti (cioè, l'ordine parziale indotto dalla riduzione), e quindi considerare i funzionali di questa categoria in insiemi (cioè predicati). All'inizio degli anni 2000 Jean Gallier scrisse dei bei documenti a riguardo, ma dubito che siano leggibili a meno che tu non abbia già assimilato una buona quantità di calcolo lambda.


1
Potresti dare un riferimento al documento di Backhouse? Ne ha molti che menzionano "connessione Galois" nel titolo, ma una rapida ricerca non ha ovviamente rivelato quale sia per gli algoritmi avidi (e non credo di avere abbastanza familiarità con l'area per guadare i dettagli e la figura facilmente quale sia "realmente" sugli algoritmi golosi). Grazie!
Joshua Grochow,

1
Insieme alla domanda di Joshua, sono anche interessato a come i modelli di covoni e le relazioni logiche si collegano alle prove naturali.
Ryan Williams,

Ri: dualità di pietra, per lavori recenti più interessanti vedi "La dualità di pietra e le lingue riconoscibili su un'algebra" ( math.ru.nl/~mgehrke/Ge09.pdf ) e Gehrke, Grigorieff e Pin "Un approccio topologico al riconoscimento "( math.ru.nl/~mgehrke/GGP10.pdf )
Noam Zeilberger

Ri: Gallier, intendi la fine degli anni '90 (come in sciencedirect.com/science/article/pii/0304397594002800 ?)
Blaisorblade

24

Ci sono molti esempi, il primo che viene in mente è l' uso della teoria delle categorie da parte di Alex Simpson per dimostrare le proprietà dei linguaggi di programmazione, vedi ad esempio " Adeguatezza computazionale per tipi ricorsivi in ​​modelli di teoria intuitiva dei set ", Annali di logica pura e applicata , 130: 207-275, 2004. Anche se il titolo menziona la teoria degli insiemi, la tecnica è teorica per categoria. Vedi la home page di Alex per ulteriori esempi.


Grazie per i riferimenti, ma tieni presente che non ho chiesto: "quali risultati sono stati ottenuti utilizzando la teoria delle categorie che non si sarebbe potuto ottenere altrimenti?"
Ryan Williams,

Vero, non l'hai fatto. Ho modificato la mia risposta.
Andrej Bauer,

11

Penso che tu stia facendo due domande sull'applicabilità, tipo A e tipo B separatamente.

Come notate, ci sono molte applicazioni sostanziali della teoria delle categorie per gli argomenti di tipo B: semantica dei linguaggi di programmazione (monadi, categorie chiuse cartesiane), logica e provabilità (topoi, varietà di logica lineare).

Tuttavia, sembrano esserci poche applicazioni sostanziali alla teoria A (algoritmi o complessità).

Ci sono alcuni usi in oggetti elementari, come la descrizione di categorie di automi o oggetti combinatori (grafici, sequenze, permutazioni, ecc.). Ma questi non sembrano spiegare meglio la teoria del linguaggio o gli algoritmi.

Speculativamente, potrebbe essere una discrepanza tra le attuali strategie di teoria delle categorie e teoria A:

  • La strategia centrale della teoria delle categorie ha a che fare con l'uguaglianza (quando le cose sono uguali e quando sono diverse e come si mappano l'una con l'altra).

  • Per la teoria della complessità, la strategia principale è la riduzione e la definizione di limiti (si potrebbe pensare che una riduzione sia come una freccia, ma non credo che sia stato studiato nulla al di là di questa somiglianza superficiale).

  • Per gli algoritmi, non esiste una strategia globale al di fuori del pensiero combinatorio intelligente ad hoc. Per alcuni domini, mi aspetto che ci possano essere esplorazioni fruttuose (algoritmi per algebre?) Ma non l'ho ancora visto.


2
si scopre che le riduzioni sono legate alle ricostruzioni categoriche dell'interpretazione dialettica di Goedel e alla semantica della logica lineare. Vedi "Domande e risposte di Andreas Blass - Una categoria che emerge dalla logica lineare, dalla teoria della complessità e dalla teoria degli insiemi". math.lsa.umich.edu/~ablass/qa.pdf
Neel Krishnaswami il

3

Le applicazioni "TCS-A" che mi vengono in mente sono le specie combinatorie di Joyal (generalizzazioni delle serie di potenze ai funzionali in modo da descrivere oggetti combinatori come alberi, insiemi, multiset, ecc.) E la formalizzazione del "gioco-salto" crittografico usando relazionale, logica probabilistica di Hoare (opera di Easycrypt, Certicrypt, Andreas Lochbihler). Sebbene le categorie non compaiano direttamente in quest'ultima, sono state determinanti nello sviluppo delle logiche sottostanti (ad es. Monadi).

PS: Dal momento che il mio nome è stato menzionato nella prima risposta: l'uso di fibrazioni di groupoids per mostrare la non derivabilità di un certo assioma nella teoria dei tipi di Martin-Löf di Thomas Streicher e me stesso può anche essere considerato un uso "solido" della teoria delle categorie (anche se in logica o "TCS-B").


3

Il libro più recente Seven Sketches in Compositionality elenca diverse applicazioni della teoria delle categorie in informatica e ingegneria. Notevole il capitolo sui database in cui gli autori descrivono la query, la combinazione, la migrazione e l'evoluzione di database basati su un modello categorico. Gli autori hanno approfondito ulteriormente questo aspetto e hanno sviluppato il linguaggio di query categoriale (CQL) e un ambiente di sviluppo integrato (IDE) basato sul loro modello categorico di database.

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.