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
Cosa i Monoidi Possono e Non Possono Fare con Poche Pagine Extra
La monade di ritardo (delay monad) fornisce un metodo per introdurre la ricorsione generale nella teoria dei tipi. Per scrivere direttamente programmi che utilizzano ampi effetti computazionali nella teoria dei tipi, è necessario combinare la monade di ritardo con le monadi di questi effetti. Questo articolo presenta il primo studio sistematico di tale combinazione. L'articolo esamina la monade di ritardo coindutti va e la sua variante ricorsiva protetta, fornendo esempi concreti di combinazione di queste monadi con effetti computazionali ben noti. Inoltre, fornisce teoremi generali che illustrano quali effetti algebrici si distribuiscono sulla monade di ritardo e quali no. Infine, alcuni casi impossibili vengono salvati considerando le leggi di distribuzione sotto bisimulazione debole.
Problema da Risolvere: La teoria dei tipi di Martin-Löf richiede che tutti i programmi terminino per mantenere la correttezza dell'interpretazione logica, ma la programmazione pratica richiede ricorsione generale. La monade di ritardo risolve questo problema incapsulando la ricorsione, ma manca una teoria per combinare sistematicamente la monade di ritardo con altri effetti computazionali.
Importanza del Problema: I moderni linguaggi di programmazione funzionale devono gestire molteplici effetti computazionali (eccezioni, stato, non-determinismo, ecc.). La programmazione e il ragionamento diretti su questi effetti nella teoria dei tipi richiedono una teoria matematica che descriva l'interazione tra la monade di ritardo e altre monadi.
Limitazioni degli Approcci Esistenti:
Mancanza di uno studio sistematico sulla combinazione della monade di ritardo con altre monadi
I risultati correlati nella teoria dei domini sono troppo complessi per applicarsi al contesto della teoria dei tipi
È noto che alcune combinazioni (come la monade dell'insieme potenza finito) non sono fattibili, ma manca una teoria generale
Motivazione della Ricerca: Stabilire una teoria matematica completa per la combinazione della monade di ritardo con altri effetti computazionali, fornendo le basi teoriche per la programmazione funzionale avanzata nella teoria dei tipi.
Quadro di Studio Sistematico: Primo studio sistematico della combinazione della monade di ritardo con altre monadi, coprendo sia la variante coindutti va che quella ricorsiva protetta.
Esempi Concreti di Combinazione: Dimostra come combinare concretamente la monade di ritardo con effetti computazionali standard (eccezioni, lettore, stato globale, continuazioni, scelta).
Teoremi Generali sulle Leggi di Distribuzione:
Dimostra che la distribuzione sequenziale vale per le monadi algebriche con equazioni bilanciate
Dimostra che le monadi con operazioni idempotenti commutative non ammettono leggi di distribuzione
Stabilisce una corrispondenza tra il tipo di equazione e l'esistenza di leggi di distribuzione
Teoria della Bisimulazione Debole: Dimostra che lavorando nella categoria degli insiemi, è possibile costruire leggi di distribuzione nel senso di bisimulazione debole per monadi algebriche senza equazioni di scarto.
Verifica Formale: Alcuni risultati sono formalizzati in Agda, fornendo implementazioni verificabili.
Studiare l'esistenza di leggi di distribuzione TD → DT, dove T è una monade arbitraria e D è la monade di ritardo. La legge di distribuzione distribuisce le operazioni di T sui passi computazionali, facendo sì che la composizione DT abbia una struttura monadica.
Codifica Ricorsiva Protetta: Utilizza ricorsione protetta multi-orologio per codificare i tipi coindutti vi come ∀κ.D^κX, evitando i requisiti di continuità.
Equivalenza delle Leggi di Distribuzione: Stabilisce una corrispondenza biunivoca tra leggi di distribuzione e sollevamenti di monadi nella categoria di Eilenberg-Moore (Teorema 2.12).
Analisi Guidata dalle Equazioni: Predice l'esistenza di leggi di distribuzione attraverso il tipo di equazione della teoria algebrica, fornendo un quadro di analisi sistematico.
Categoria di Bisimulazione Debole: Lavora nella categoria degli insiemi per gestire strutture quoziente, superando le difficoltà tecniche della quozientazione diretta della monade di ritardo.
Questo articolo cita 69 importanti riferimenti che coprono molteplici campi della teoria dei tipi, teoria delle categorie ed effetti computazionali, in particolare i lavori fondamentali di Beck (1969) sulla teoria delle leggi di distribuzione, Capretta (2005) sulla monade di ritardo, e Nakano (2000) sulla ricorsione protetta.