Abstract
Reasoning about programs that use effects can be much harder than reasoning about their pure counterparts. This paper presents a predicate transformer semantics for a variety of effects, including exceptions, state, non-determinism, and general recursion. The predicate transformer semantics gives rise to a refinement relation that can be used to relate a program to its specification, or even calculate effectful programs that are correct by construction.
Original language | English |
---|---|
Article number | 103 |
Number of pages | 26 |
Journal | Proceedings of the ACM on Programming Languages (PACM PL) |
Volume | 3 |
Issue number | ICFP |
DOIs | |
Publication status | Published - 2019 |
Keywords
- predicate transformers
- effects
- refinement
- program calculation
- weakestprecondition semantics
- programming with dependent types
- free monads
- Agda