Definition respectful {X} (P : dist X -> Prop) : Prop :=
  forall d1 d2, d1 ==d d2 -> P d1 <-> P d2.

Lemma bind_assoc_resp {X Y Z} (P : dist Z -> Prop) (m : dist X) (f : X -> dist Y) (g : Y -> dist Z) : respectful P -> P (mbind (mbind m f) g) <-> P (mbind m (fun x => mbind (f x) g)).