Dijkstra monads for free

Danel Ahman, Cătălin Hriţcu, Kenji Maillard, Guido Martínez, Gordon Plotkin, Jonathan Protzenko, Aseem Rastogi, Nikhil Swamy
2017 Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages - POPL 2017  
Dijkstra monads are a means by which a dependent type theory can be enhanced with support for reasoning about effectful code. These specification-level monads computing weakest preconditions, and their closely related counterparts, Hoare monads, provide the basis on which verification tools like F , Hoare Type Theory (HTT), and Ynot are built. In this paper we show that Dijkstra monads can be derived "for free" by applying a continuation-passing style (CPS) translation to the standard monadic
more » ... finitions of the underlying computational effects. Automatically deriving Dijkstra monads provides a correct-byconstruction and efficient way of reasoning about user-defined effects in dependent type theories. We demonstrate these ideas in EMF , a new dependently typed calculus, validating it both by formal proof and via a prototype implementation within F . Besides equipping F with a more uniform and extensible effect system, EMF enables within F a mixture of intrinsic and extrinsic proofs that was previously impossible.
doi:10.1145/3009837.3009878 fatcat:kecm3fhvpbgozjkyqu2fmw6m4e