fact: Definition bind@{a b+} {A:Type@{a}} {B:Type@{b}} (t : gtactic A) (f : A -> gtactic B) : gtactic B := fun g => gs <- t g >>= filter_goals; r <- M.map (fun '(m: x,g') => open_and_apply (f x) g') gs; let res := dreduce (@mconcat, mapp) (mconcat r) in M.ret res.
imports: Strings.String ssrmatching.ssrmatching Mtac2(Logic Datatypes List Utils Logic intf.Sorts) Strings.String NArith.BinNat NArith.BinNatDef