Definition monad_map {M} `{Monad M} {X Y} (f : X -> Y) (m : M X) : M Y :=
x <- m;;
mreturn (f x).

(* Specifications: *)
Lemma plift_map : forall {M} `{PredLift M} {X Y} (f : X -> Y) (m : M X) (P : Y -> Prop),
plift (fun x => P (f x)) m ->
plift P (monad_map f m).