improve monad proofs