Simp lemmas for working with weakest preconditions #
Many weakest preconditions are so simple that we can compute them directly or
express them in terms of "simpler" weakest preconditions.
This module provides simp lemmas targeting expressions of the form wp⟦x⟧ Q
and rewrites them to expressions of simpler weakest preconditions.
WP #
WPMonad #
MonadLift #
The definitions that follow interpret liftM and thus instances of, e.g., MonadStateOf.
MonadFunctor #
The definitions that follow interpret monadMap and thus instances of, e.g., MonadReaderWithOf.
MonadControl #
The definitions that follow interpret liftWith and thus instances of, e.g., MonadReaderWithOf.
MonadExceptOf #
The definitions that follow interpret throw, throwThe, tryCatch, etc.
Since MonadExceptOf cannot be lifted through MonadLift or MonadFunctor, there is one lemma per
MonadExceptOf operation and instance to lift through; the classic m*n instances problem.