kirancodes.me
To Proof Maintenance & Beyond!

A predicate transformer semantics for effects (functional pearl)

Wouter Swierstra, Tim Baanen

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.

Related papers