+Each monad transformer's `elevate` function will be defined differently. They have to obey the following laws:
+
+* `Outer.elevate (Inner.unit a) <~~> Outer.unit a`
+* `Outer.elevate (Inner.bind u f) <~~> Outer.bind (Outer.elevate u) (fun a -> Outer.elevate (f a))`