Verifying higher-order programs with the dijkstra monad
The Essence of JavaScript