let forall_pred prop_in_data ~fresh v p =
if p = Ptrue then Ptrue
else if nb_var_in_pred prop_in_data v p > 0 then
(* TODOopt : do only one visit *)
let v, p = if fresh then fresh_var_in_pred prop_in_data v p else v, p in
Pforall (v, p)
else p