Quali sono gli usi dei limiti e dei limiti della teoria delle categorie nei problemi di ogni giorno?


9

Sono interessato a sapere come possiamo usare i concetti di Limits e Colimits per modellare i problemi nella vita di tutti i giorni? Qualcuno potrebbe fornire esempi di ingegneria (software), forse? O descrivere in modo intuitivo in generale per quali tipi di problemi di modellazione possiamo usare questi concetti? Grazie.


1
Ovunque venga utilizzata questa libreria, hackage.haskell.org/package/data-category-0.5.1/docs/…
Chad Brewbaker

3
Che purtroppo non è da nessuna parte, afaict ...
Sjoerd Visscher,

1
Controlla il capitolo sulla teoria delle categorie nel manuale di logica in cs.
Kaveh,

Risposte:


7

Prendi alcune relazioni , R 1A 1 × A 2 . Sia π 1 : R 0A 1 , π 0 : R 1A 1 siano proiezioni con domini limitati alle relazioni R 0 , R 1 . Quindi il pullback di π 0 , π 1 è il join di R 0 eR0UN0×UN1R1UN1×UN2π1:R0UN1π0:R1UN1R0R1π0π1R0 in senso SQL.R1


5

Un bell'esempio è la generazione di ottimizzazioni del compilatore da prove di Tate et al . Usa pullback e pushout come unioni e intersezioni generalizzate, in categorie in cui le frecce sono sostituzioni (IIRC).

Ross Tate afferma (sulla pagina web della carta) che i dettagli erano schiaccianti senza l'astrazione offerta dalla teoria delle categorie. Personalmente, vorrei presentare come "prove suggestive" (se possono esserci prove di tale affermazione) i diagrammi (6) e (7) nel loro documento - sembrano abbastanza complessi in forma schematica. Vorrei citare i loro commenti in linea.

Alcuni ci hanno chiesto perché abbiamo astratto la nostra tecnica di generalizzazione delle prove e perché abbiamo usato la teoria delle categorie come nostra astrazione. Tuttavia, in realtà abbiamo prima progettato l'algoritmo astratto, usando la teoria delle categorie, e poi usato quello per capire come risolvere il nostro problema concreto. Siamo rimasti bloccati dal problema concreto, sopraffatti dai dettagli e dalle variabili, e qualsiasi soluzione a cui potessimo pensare sembrava arbitraria. Al fine di riflettere e semplificare, abbiamo deciso di esprimere categoricamente la nostra domanda. Questo ha portato a un diagramma di fonti e pozzi, quindi abbiamo usato semplicemente pushout e pullback per incollare le cose insieme. La sfida più grande è stata quella di arrivare ai completamenti pushout, piuttosto che utilizzare alcuni concetti standard esistenti. La formulazione categorica era facile da specificare e motivare. Successivamente, abbiamo istanziato i processi astratti,

Abbiamo effettivamente trovato questo processo di astrazione alla teoria delle categorie ogni volta che restiamo bloccati per essere abbastanza fruttuoso. Non solo finisce per risolvere il nostro problema concreto, ma finiamo per comprendere meglio il nostro problema e una soluzione astratta che può essere facilmente adattata ad altre applicazioni. Pertanto, la nostra esperienza suggerisce che la teoria delle categorie può essere utile nella costruzione di algoritmi reali, oltre ad essere utile come quadro per la formalizzazione. Saremmo interessati a conoscere altre esperienze simili, sia positive che negative.


4

Nel libro di Spivak a pagina 192 fornisce un esempio dell'uso dei colimit per creare mappe di transito . Inoltre, la sua Applicazione 5.2.1.2 discute l'applicazione nel tempo di Liquibase come patch a uno schema di database, quindi usando i colimit per ragionare tra vecchi e nuovi dati in modo universale.


4

Un ampio campo di applicazioni è rappresentato dalle trasformazioni grafiche (applicate nell'ingegneria basata su modelli). Sono disponibili due documenti pertinenti (forniti con collegamenti a Google Scholar):

EDIT: di nuovo, (parte di) l'idea di base è che i pushouts fungono da unione con un po 'di colla. Ciò consente di definire "regole di riscrittura" per i grafici: abbini il lato sinistro al grafico, quindi incolli il lato destro con il (resto del) grafico in modo corrispondente. Temo di non poter aggiungere dettagli perché non ho mai ottenuto più dell'intuizione.


Una spiegazione migliore è in questa risposta di Dave Clarke: cstheory.stackexchange.com/a/947/989
Blaisorblade,
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.