let do_exists xs p =
    if F.pred_has_var xs p
    then
      let ys = List.filter (fun y -> F.pred_has_var [y] p) xs in
      if ys = [] then p
      else F.p_exists ys (guards_with F.p_and p ys)
    else p