fact: Definition iter {E : Type -> Type} {R I: Type} (step : I -> itree E (I + R)) : I -> itree E R := cofix iter_ i := bind (step i) (fun lr => on_left lr l (Tau (iter_ l))).
imports: ExtLib.Structures.Functor ExtLib.Structures.Applicative ExtLib.Structures.Monad Program.Tactics ITree(Basics)