let mk_let ~fresh v exp p = 
    let p = match exp with
    | Some e -> 
        Wp_parameters.debug ~level:3 "mk_let %a -> %a" Why_output.pp_var v
          MT.pp_exp e;
        M.mk_let ~fresh v e p
    | None -> 
        Wp_parameters.debug ~level:3 "mk_let %a -> None" Why_output.pp_var v;
        subst_var v None p
    in Wp_parameters.debug ~level:3 "mk_let = %a" pretty p;
       p