let rec do_instantiate hs p = function
    | [] -> hs , p
    | h::others ->
        match h#instantiate with
          | Some hyp ->
              (*TODO: add pid to collector *)
              do_instantiate hs (F.p_implies hyp p) others
          | None ->
              do_instantiate
                (if h#alive then h::hs else hs)
                p others