Was sind die Verwendungen von Grenzen und Grenzen der Kategorietheorie bei alltäglichen Problemen?


9

Ich bin daran interessiert zu wissen, wie wir die Konzepte von Limits und Colimits bei der Modellierung von Problemen im täglichen Leben verwenden können. Könnte vielleicht jemand (Software-) Engineering-Beispiele liefern? Oder allgemein intuitiv beschreiben, für welche Art von Modellierungsproblemen wir diese Konzepte verwenden können? Vielen Dank.


1
Überall, wo diese Bibliothek verwendet wird, hackage.haskell.org/package/data-category-0.5.1/docs/…
Chad Brewbaker

3
Was leider nirgendwo ist, afaict ...
Sjoerd Visscher

1
Lesen Sie das Kapitel zur Kategorietheorie im Handbuch der Logik in cs.
Kaveh

Antworten:


7

Nehmen Sie einige Relationen , . Sei , Projektionen mit Domänen, die auf die Beziehungen , . Dann ist der Pullback von , die Verknüpfung von und im SQL-Sinne.R.0EIN0×EIN1R.1EIN1×EIN2π1::R.0EIN1π0::R.1EIN1R.0R.1π0π1R.0R.1


5

Ein schönes Beispiel ist Tate et al. Generieren von Compiler-Optimierungen aus Proofs . Er verwendet Pullbacks und Pushouts als verallgemeinerte Gewerkschaften und Schnittpunkte in Kategorien, in denen Pfeile (IIRC) -Substitutionen sind.

Ross Tate behauptet (auf der Papierwebseite), dass Details ohne die Abstraktion, die die Kategorietheorie bietet, überwältigend waren. Persönlich möchte ich die Diagramme (6) und (7) in ihrer Arbeit als "suggestive Beweise" (wenn es Beweise für eine solche Behauptung geben kann) einreichen - sie sehen in Diagrammform komplex genug aus. Lassen Sie mich ihre Kommentare inline zitieren.

Einige haben uns gefragt, warum wir unsere Proof-Generalisierungstechnik überhaupt abstrahiert haben und warum wir die Kategorietheorie als unsere Abstraktion verwendet haben. Wir haben den abstrakten Algorithmus jedoch zuerst mithilfe der Kategorietheorie entworfen und dann verwendet, um herauszufinden, wie wir unser konkretes Problem lösen können. Wir blieben bei dem konkreten Problem stecken, das von den Details und Variablen überwältigt war, und jede Lösung, die wir uns vorstellen konnten, schien willkürlich. Um zu reflektieren und zu vereinfachen, haben wir beschlossen, unsere Frage kategorisch zu formulieren. Dies führte zu einem Diagramm der Quellen und Senken, sodass wir nur Pushouts und Pullbacks verwendeten, um die Dinge zusammenzukleben. Die größte Herausforderung bestand darin, Pushout-Abschlüsse zu erstellen, anstatt ein bestehendes Standardkonzept zu verwenden. Die kategoriale Formulierung war leicht zu spezifizieren und zu begründen. Danach instanziierten wir die abstrakten Prozesse,

Wir haben tatsächlich festgestellt, dass dieser Prozess der Abstraktion zur Kategorietheorie immer dann, wenn wir nicht weiterkommen, ziemlich fruchtbar ist. Dies löst nicht nur unser konkretes Problem, sondern auch ein besseres Verständnis unseres eigenen Problems sowie eine abstrakte Lösung, die leicht an andere Anwendungen angepasst werden kann. Unsere Erfahrung legt daher nahe, dass die Kategorietheorie nicht nur als Rahmen für die Formalisierung, sondern auch zur Erstellung tatsächlicher Algorithmen nützlich sein kann. Wir wären interessiert, andere ähnliche Erfahrungen zu erfahren, entweder positive oder negative.


4

In Spivaks Buch auf Seite 192 gibt er ein Beispiel für die Verwendung von Colimits zum Erstellen von Transitkarten . In seiner Anwendung 5.2.1.2 wird außerdem erläutert, wie Liquibase- ähnliche Patches im Laufe der Zeit auf ein Datenbankschema angewendet werden und die Colimits verwendet werden, um auf universelle Weise zwischen alten und neuen Daten zu argumentieren.


4

Ein breites Anwendungsfeld sind Graphtransformationen (angewendet in der modellgetriebenen Technik). Zwei relevante Artikel sind (mit Links zu Google Scholar angegeben):

EDIT: Auch hier ist (ein Teil) der Grundidee, dass Pushouts als Vereinigung mit etwas Kleber wirken. Auf diese Weise können Sie "Umschreiberegeln" für Diagramme definieren. Sie passen die linke Seite an das Diagramm an und kleben die rechte Seite auf entsprechende Weise an den (Rest) des Diagramms. Ich fürchte, ich kann keine Details hinzufügen, weil ich nie mehr als die Intuition bekommen habe.


Eine bessere Erklärung findet sich in dieser Antwort von Dave Clarke: cstheory.stackexchange.com/a/947/989
Blaisorblade
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.