fact: Fixpoint insert_cont {A B: Type} (k: cont A B): forall {C: Type}, (B -> mon C) -> (A -> mon C) := match k in cont A B return forall {C: Type}, (B -> mon C) -> (A -> mon C) with | K0 A => fun C g => g | Kbind f k => fun D g a => Bind (f a) (insert_cont k g) end.
imports: Coq(Arith ZArith Psatz Bool String List) CDF(Sequences IMP)