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
Ce que les Monades Peuvent et Ne Peuvent Pas Faire avec Quelques Pages Supplémentaires
La monade de délai (delay monad) fournit une méthode pour introduire la récursion générale dans la théorie des types. Pour écrire directement des programmes utilisant des effets de calcul généralisés dans la théorie des types, nous devons combiner la monade de délai avec les monades de ces effets. Cet article étudie systématiquement pour la première fois cette combinaison. L'article examine la monade de délai coinductive et sa variante de récursion gardée, en fournissant des exemples concrets de combinaison de ces monades avec des effets de calcul bien connus. Il fournit également des théorèmes généraux indiquant quels effets algébriques se distribuent sur la monade de délai et lesquels ne se distribuent pas. Enfin, certains cas impossibles sont sauvés en considérant les lois de distribution sous bisimulation faible.
Problème à résoudre: La théorie des types de Martin-Löf exige que tous les programmes se terminent pour préserver la correction de l'interprétation logique, mais la programmation pratique nécessite la récursion générale. La monade de délai résout ce problème en encapsulant la récursion, mais manque d'une théorie pour combiner la monade de délai avec d'autres effets de calcul systématiquement.
Importance du problème: Les langages de programmation fonctionnels modernes doivent traiter plusieurs effets de calcul (exceptions, état, non-déterminisme, etc.). La programmation et le raisonnement directs sur ces effets dans la théorie des types nécessitent une théorie mathématique décrivant l'interaction entre la monade de délai et d'autres monades.
Limitations des approches existantes:
Absence d'étude systématique de la combinaison de la monade de délai avec d'autres monades
Les résultats connexes de la théorie des domaines sont trop complexes pour s'appliquer au cadre de la théorie des types
Certaines combinaisons (comme la monade d'ensemble fini) sont connues comme impossibles, mais une théorie générale fait défaut
Motivation de la recherche: Établir une théorie mathématique complète de la combinaison de la monade de délai avec d'autres effets de calcul, fournissant une base théorique pour la programmation fonctionnelle avancée dans la théorie des types.
Cadre d'étude systématique: Première étude systématique de la combinaison de la monade de délai avec d'autres monades, couvrant les variantes coinductive et de récursion gardée.
Exemples concrets de combinaison: Démonstration des façons concrètes de combiner la monade de délai avec les effets de calcul standard (exceptions, lecteur, état global, continuations, choix).
Théorèmes généraux sur les lois de distribution:
Preuve que la distribution séquentielle s'applique aux monades algébriques avec équations équilibrées
Preuve que les monades avec opérations idempotentes commutatives n'admettent pas de loi de distribution
Établissement d'une correspondance entre le type d'équation et l'existence de lois de distribution
Théorie de la bisimulation faible: Preuve que les lois de distribution peuvent être construites pour les monades algébriques sans équations de suppression dans le sens de la bisimulation faible en travaillant sur la catégorie des ensembles.
Vérification formelle: Formalisation partielle des résultats en Agda, fournissant une implémentation vérifiable.
Étudier l'existence de lois de distribution TD → DT, où T est une monade arbitraire et D est la monade de délai. Une loi de distribution distribue les opérations de T sur les étapes de calcul, donnant à la composition DT une structure monadique.
Codage de récursion gardée: Utilisation de la récursion gardée multi-horloge pour coder les types coinductifs comme ∀κ.D^κX, évitant les exigences de continuité.
Équivalence des lois de distribution: Établissement d'une bijection entre les lois de distribution et les levées monadiques dans la catégorie d'Eilenberg-Moore (Théorème 2.12).
Analyse pilotée par les équations: Prédiction de l'existence de lois de distribution par le type d'équation de la théorie algébrique, fournissant un cadre d'analyse systématique.
Catégorie de bisimulation faible: Travail sur la catégorie des ensembles pour traiter les structures quotient, surmontant les difficultés techniques de la quotation directe de la monade de délai.
Cet article cite 69 références importantes couvrant plusieurs domaines incluant la théorie des types, la théorie des catégories, les effets de calcul, en particulier les travaux fondateurs tels que la théorie de distribution de Beck (1969), la monade de délai de Capretta (2005), et la récursion gardée de Nakano (2000).