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

Dijkstra Monads for Free

Abstract

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)

Identifiers

Cite

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

Altmetric

Share

Gmail Mastodon Facebook X LinkedIn More