TL;DR
This paper introduces Dijkstra monads as a flexible framework for verifying programs with various monadic effects, unifying different verification styles through a general semantic approach.
Contribution
It defines a universal construction for Dijkstra monads from monad morphisms and develops a language for correct monad transformers within a dependent type theory.
Findings
Framework supports verification of effects like exceptions, nondeterminism, state, input-output, and recursion.
Implemented in Coq and F* demonstrating practical applicability.
Allows tailoring Dijkstra monads to specific verification tasks.
Abstract
This paper proposes a general semantic framework for verifying programs with arbitrary monadic side-effects using Dijkstra monads, which we define as monad-like structures indexed by a specification monad. We prove that any monad morphism between a computational monad and a specification monad gives rise to a Dijkstra monad, which provides great flexibility for obtaining Dijkstra monads tailored to the verification task at hand. We moreover show that a large variety of specification monads can be obtained by applying monad transformers to various base specification monads, including predicate transformers and Hoare-style pre- and postconditions. For defining correct monad transformers, we propose a language inspired by Moggi's monadic metalanguage that is parameterized by a dependent type theory. We also develop a notion of algebraic operations for Dijkstra monads, and start to…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
