fact: Definition CFree_bind {S : Type} {P : S -> Type} `(k : a -> CFree P b) : CFree P a -> CFree P b := fun x0 => let fix go x := match x with | CPure a => k a | CJoin s g => CJoin s (go \o g) end in go x0.
imports: Hask.Prelude Control.Monad Control.Comonad