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.
Type de document :
Communication dans un congrès
44th ACM SIGPLAN Symposium on Principles of Programming Languages (POPL), 2017, Paris, France. ACM, pp.515-529, 2017, 〈10.1145/3009837.3009878〉
Liste complète des métadonnées

https://hal.archives-ouvertes.fr/hal-01424794
Contributeur : Cătălin Hriţcu <>
Soumis le : lundi 2 janvier 2017 - 21:32:57
Dernière modification le : jeudi 26 octobre 2017 - 16:34:02

Identifiants

Collections

Citation

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. ACM, pp.515-529, 2017, 〈10.1145/3009837.3009878〉. 〈hal-01424794〉

Partager

Métriques

Consultations de la notice

146