fact: Definition reduceM {A} (base : m A) (single : E -> m A) (join : A -> A -> m A) (t : T) : m A := reduce base single (fun x y => bind x (fun x => bind y (fun y => join x y))) t.
imports: Coq.Classes.RelationClasses ExtLib.Structures.BinOps ExtLib.Structures.Monad