let subst_lval env _t lval v_exp p =
      debug1 "[subst_lval] %a <- %a@." pp_loc lval pp_value v_exp;
      let wp = subst env lval (logic_of_value v_exp) p in
      if X.with_guards
      then
        (* be carreful that the guard is computed on [p], NOT on wp *)
        let g = prepare_guard lval p in F.p_and g wp
      else wp