let p_exists_vars (prop_in_data: ('a d_term -> 'a d_term) -> '-> 'a d_term)
                    vars (p: 'a d_pred) : 'a d_pred =
    let vars, p = fresh_vars_in_pred prop_in_data vars p in
      List.fold_left (fun p v -> p_exists v p) p vars