What Monads Can and Cannot Do with a Few Extra Pages
Møgelberg, Zwart
The delay monad provides a way to introduce general recursion in type theory. To write programs that use a wide range of computational effects directly in type theory, we need to combine the delay monad with the monads of these effects. Here we present a first systematic study of such combinations.
We study both the coinductive delay monad and its guarded recursive cousin, giving concrete examples of combining these with well-known computational effects. We also provide general theorems stating which algebraic effects distribute over the delay monad, and which do not. Lastly, we salvage some of the impossible cases by considering distributive laws up to weak bisimilarity.
academic
Was Monaden mit ein paar zusätzlichen Seiten können und nicht können
Die Verzögerungsmonade (delay monad) bietet eine Methode zur Einführung allgemeiner Rekursion in der Typtheorie. Um Programme mit weit verbreiteten Recheneffekten direkt in der Typtheorie zu schreiben, müssen wir die Verzögerungsmonade mit den Monaden dieser Effekte kombinieren. Dieser Artikel untersucht diese Kombination erstmals systematisch. Der Artikel erforscht die coinduktive Verzögerungsmonade und ihre bewachte Rekursionsvariante und gibt konkrete Beispiele für die Kombination dieser Monaden mit bekannten Recheneffekten. Gleichzeitig werden allgemeine Theoreme bereitgestellt, die zeigen, welche algebraischen Effekte über der Verzögerungsmonade verteilt sind und welche nicht. Abschließend werden einige unmögliche Fälle durch Betrachtung von Verteilungsgesetzen unter schwacher Bisimulation gerettet.
Zu lösende Probleme: Martin-Löf-Typtheorie erfordert, dass alle Programme terminieren, um die Korrektheit der logischen Interpretation zu bewahren, aber praktisches Programmieren erfordert allgemeine Rekursion. Die Verzögerungsmonade löst dieses Problem durch Kapselung der Rekursion, es fehlt jedoch eine Theorie zur Kombination der Verzögerungsmonade mit anderen Recheneffekten.
Bedeutung des Problems: Moderne funktionale Programmiersprachen müssen mehrere Recheneffekte (Ausnahmen, Zustand, Nichtdeterminismus usw.) verarbeiten. Die direkte Programmierung und das Schlussfolgern über diese Effekte in der Typtheorie erfordern eine mathematische Theorie, die die Wechselwirkung zwischen der Verzögerungsmonade und anderen Monaden beschreibt.
Einschränkungen bestehender Ansätze:
Mangel an systematischer Untersuchung der Kombination von Verzögerungsmonaden mit anderen Monaden
Verwandte Ergebnisse in der Domänentheorie sind zu komplex für typtheoretische Einstellungen
Es ist bekannt, dass bestimmte Kombinationen (wie die endliche Potenzmengen-Monade) nicht machbar sind, aber es fehlt eine allgemeine Theorie
Forschungsmotivation: Aufbau einer vollständigen mathematischen Theorie für die Kombination von Verzögerungsmonaden mit anderen Recheneffekten, um eine theoretische Grundlage für fortgeschrittene funktionale Programmierung in der Typtheorie zu schaffen.
Systematischer Forschungsrahmen: Erste systematische Untersuchung der Kombination von Verzögerungsmonaden mit anderen Monaden, umfassend beide Varianten der coinduktiven und bewachten Rekursion.
Konkrete Kombinationsbeispiele: Demonstriert konkrete Kombinationsmethoden der Verzögerungsmonade mit standardmäßigen Recheneffekten (Ausnahmen, Reader, globaler Zustand, Kontinuationen, Auswahl).
Allgemeine Theoreme für Verteilungsgesetze:
Beweis, dass sequenzielle Verteilung für algebraische Monaden mit ausgeglichenen Gleichungen gilt
Beweis, dass Monaden mit kommutativ-idempotenten Operationen kein Verteilungsgesetz haben
Etablierung der Entsprechung zwischen Gleichungstypen und Existenz von Verteilungsgesetzen
Schwache Bisimulationstheorie: Durch Arbeit in der Kategorie der Mengen wird bewiesen, dass Verteilungsgesetze für algebraische Monaden ohne Verwerfungsgleichungen unter schwacher Bisimulation konstruiert werden können.
Formale Verifikation: Teilweise Ergebnisse in Agda formalisiert, mit verifizierbaren Implementierungen.
Untersuchung der Existenz von Verteilungsgesetzen TD → DT, wobei T eine beliebige Monade und D die Verzögerungsmonade ist. Das Verteilungsgesetz verteilt die Operationen von T über Rechenschritte, so dass die Komposition DT eine Monadenstruktur hat.
Bewachte Rekursion-Kodierung: Verwendung von Multi-Clock-bewachter Rekursion zur Kodierung coinduktiver Typen als ∀κ.D^κX, wodurch Kontinuitätsanforderungen vermieden werden.
Verteilungsgesetz-Äquivalenz: Etablierung einer Bijektion zwischen Verteilungsgesetzen und Monadenhebungen in der Eilenberg-Moore-Kategorie (Theorem 2.12).
Gleichungsgesteuerte Analyse: Vorhersage der Existenz von Verteilungsgesetzen durch Gleichungstypen der algebraischen Theorie, was einen systematischen Analyserahmen bietet.
Schwache Bisimulations-Kategorie: Arbeit in der Kategorie der Mengen zur Verarbeitung von Quotientenstrukturen, um technische Schwierigkeiten bei der direkten Quotientierung der Verzögerungsmonade zu überwinden.
Dieses Papier zitiert 69 wichtige Referenzen, die klassische Arbeiten aus mehreren Bereichen wie Typtheorie, Kategorientheorie und Recheneffekten abdecken, insbesondere Becks (1969) Verteilungsgesetz-Theorie, Caprettas (2005) Verzögerungsmonade und Nakanos (2000) bewachte Rekursion als grundlegende Arbeiten.