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