let mk_let ~fresh v exp p = match exp with
    | Fol.Tdata E1addr _ -> Fol.subst_in_pred prop_in_data v exp p
    | Fol.Tdata (E1muI (_ptr, _x)) -> 
        (* TODO : build a let on x if it is not a single node *)
        Fol.subst_in_pred prop_in_data v exp p
    | _ -> Fol.let_pred prop_in_data ~fresh v exp p