Definition plift2 {M} `{PredLift M} {X Y} (P : X -> Y -> Prop) :
M X -> M Y -> Prop :=
fun mx my =>
plift (fun x => plift (P x) my) mx.

Lemma plift2_bind {M} `{PredLift M} {X Y X' Y'} : forall (P : X -> Y -> Prop)
(Q : X' -> Y' -> Prop) (m1 : M X) (m2 : M Y) (f1 : X -> M X') (f2 : Y -> M Y'),
plift2 P m1 m2 ->
(forall x y, P x y -> plift2 Q (f1 x) (f2 y)) ->
plift2 Q (mbind m1 f1) (mbind m2 f2).