let p_forall_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_forall v p) p vars