A coinductive monad for prop-bounded recursion
Monads for functional programming