let mk_let ~fresh v exp p = match exp with
| Fol.Tdata D1addr _
| Fol.Tdata (D1var _)
-> Fol.subst_in_pred do_exp_in_data v exp p
| Fol.Tvar _v ->
Fol.subst_in_pred do_exp_in_data v exp p
| Fol.Tdata (D1muI _)
| Fol.Tdata (D1muIrange _)
(* TODO : build a let on x if it is not a single node *)
-> Fol.subst_in_pred do_exp_in_data v exp p
| _ -> Fol.let_pred do_exp_in_data ~fresh v exp p