fact: Definition ReaderProd@{d c} {m : Type@{d} -> Type@{c}} {M : Monad m} {T S : Type@{d}} {MR : MonadReader T m} (f : T -> S) (g : S -> T -> T) : MonadReader@{d c} S m := {| ask := @asks m M T MR S f ; local := fun _T up (c : m _T) => @local T m MR _ (fun s => g (up (f s)) s) c |}.
imports: ExtLib.Structures.Monad