Fixpoint lm_to_ml {A:Type} (lm:list (monad A)) : monad (list A):=
match lm with
| [] => Mreturn []
| m::ms => m >>::(lm_to_ml ms)
end.

Lemma lm_to_ml_incl {A B:Type} (mal:list (monad A)) (f:A→B) g st:
(∀ st ma, ma ∈ mal → f (snd (ma st)) ∈ g (snd (ma st))) →
incl (map f (snd ((lm_to_ml mal) st)))
(concat (map g (snd ((lm_to_ml mal) st)))).