let visit_data_in_pred ~all do_data acc p =
let do_var acc v = do_data (fun acc _ -> acc) acc (D1var (None, v)) in
let do_top_data do_exp acc d =
let do_sub_data acc d = if all then do_data do_exp acc d else acc in
visit_exp_in_data do_sub_data do_exp (do_data do_exp acc d) d
in
Fol.fold_data_in_pred do_var do_top_data acc p