Dijkstra Monads for Free - Archive ouverte HAL Access content directly
Conference Papers Year : 2017

Dijkstra Monads for Free


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 definitions of the underlying computational effects. Automatically deriving Dijkstra monads provides a correct-by-construction 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.

Dates and versions

hal-01424794 , version 1 (02-01-2017)



Danel Ahman, Cătălin Hriţcu, Kenji Maillard, Guido Martínez, Gordon Plotkin, et al.. Dijkstra Monads for Free. 44th ACM SIGPLAN Symposium on Principles of Programming Languages (POPL), 2017, Paris, France. pp.515-529, ⟨10.1145/3009837.3009878⟩. ⟨hal-01424794⟩
129 View
0 Download



Gmail Mastodon Facebook X LinkedIn More