Monade (Kategorientheorie)
Eine Monade ist im mathematischen Teilgebiet der Kategorientheorie eine Struktur, die gewisse formale Ähnlichkeit mit den Monoiden der Algebra aufweist.
Definition
Eine Monade ist ein Tripel aus
- einem Funktor T von einer Kategorie K in sich selbst, d. h.
- einer natürlichen Transformation (dabei steht für den Identitätsfunktor )
- einer natürlichen Transformation (dabei steht für ),
so dass die folgenden Bedingungen erfüllt sind:
- , d. h. das folgende Diagramm kommutiert:
- , d. h. das folgende Diagramm kommutiert:
Explizit bedeutet die Kommutativität der Diagramme, dass für jedes Objekt in die beiden Diagramme
und |
kommutieren. Die erste Bedingung ist analog zum Assoziativgesetz bei Monoiden, die zweite zur Existenz eines neutralen Elementes.
Algebren
Ist eine Monade, so ist ein Paar eine (Eilenberg-Moore-)Algebra für diese Monade, wenn
- und
gelten. Ein Homomorphismus von nach ist ein Pfeil in mit .
Für beliebige Objekte aus ist daher z. B. eine Algebra, und ist ein Homomorphismus von nach .
Beispiele
Dcpos
Der Endofunktor auf der Kategorie der partiell geordneten Mengen und monotonen Abbildungen ordne jedem die partiell geordnete Menge der Ordnungsideale in zu. Seine Wirkung auf monotonen Abbildungen sei . Für eine partiell geordnete Menge und eine Teilmenge ist hierbei .
Die Abbildungsfamilien und ergänzen den Funktor zu einer Monade.
Die Strukturabbildung einer -Algebra ist nun gerade . Jedes Ideal in (und somit jede gerichtete Teilmenge) hat also ein Supremum in . Das heißt, eine -Algebra ist dasselbe wie eine Dcpo. Ein Homomorphismus von -Algebren ist eine Scott-stetige Abbildung.
Adjungierte Funktoren
Ist ein Funktor zu einem Funktor linksadjungiert, und sind
- bzw.
Einheit bzw. Koeinheit der Adjunktion, so ist mit
- also für Objekte
eine Monade.
Dies ist im gewissen Sinn auch schon das einzige Beispiel, da jede Monade auf diese Weise entsteht, jedenfalls bis auf Isomorphie: Die Tripel mit , , und sind Objekte einer Kategorie . In dieser Kategorie ist ein Morphismus von nach ein Funktor , für den und gelten.
Anfangsobjekt in ist , wobei die Kleisli-Kategorie zu ist. , für ist . , für ist .
Endobjekt in ist wobei die Kategorie der Eilenberg-Moore-Algebren zu ist. , für ist . , .
Listen
Ein Beispiel für eine Monade sind Listen. Wenn die Liste mit den Elementen bis bezeichnet, dann stellt das folgende Tripel eine Monade über der Kategorie der Mengen dar:
- Listen-Funktor:
- Auf der Objektebene ergibt die Menge aller Listen, deren Elemente aus kommen, für eine beliebige Menge .
- Für eine Abbildung zwischen zwei Mengen ergibt die entsprechende Abbildung zwischen den Listenmengen mit
- Konstruktor für einelementige Listen:
- Konkatenation von Listen: , also – dies ist gewissermaßen das (einstufige) Flachklopfen einer Liste von Listen.
Die Aussagen der Axiome lassen sich entsprechend auf das Listenbeispiel übertragen:
- Wird das Axiom auf das Beispiel angewandt, ergibt sich für eine Menge zunächst . Auf das Listenbeispiel übertragen ergibt sich für auch , d. h., dass es bei mehrfach verschachtelten Listen egal ist, ob von innen oder von außen flachgeklopft wird, was bei Listen offensichtlich erfüllt ist.
- Das zweite Axiom sagt in diesem Beispiel aus, dass es beim Hinzufügen einer Listenebene egal ist, ob dies innen oder außen passiert, sofern danach flachgeklopft wird – es ist .
Diese Monade gehört zu einem adjungierten Funktorpaar (wie oben) zwischen den Kategorien der Mengen bzw. Halbgruppen. ordnet einer Menge die freie Halbgruppe über dieser Menge zu, einer Halbgruppe die zugrunde liegende Menge.
Anwendung
Monaden werden in der Informatik, besonders in funktionalen Programmiersprachen u. a. zur Abstraktion von Nebeneffekten verwendet. Es ist Haskell hervorzuheben, wo Monaden zur Integration von Ein- und Ausgabe in die sonst komplett von Seiteneffekten freie Sprache verwendet werden. Siehe dazu auch Monade (Informatik).
Literatur
- Saunders Mac Lane, Categories for the Working Mathematician. Springer-Verlag, Berlin 1971. ISBN 3-540-90035-7