let generic_compute kf_opt behaviors p call_stmt =
  let fun_iter =
    match kf_opt with
      | Some kf -> on_function kf
      | None -> on_all_functions
  in
  let goals = do_wp_passes fun_iter behaviors p call_stmt in
  if not (Bag.is_empty goals) then do_wp_proofs_for goals