let rec pp_epath fmt e = match e with
  | WpFol.Pfield f -> Format.fprintf fmt "%s" f.fname
  | WpFol.Pidx e -> Format.fprintf fmt "(%a)" pp_exp2 e
and pp_data2 fmt d = match d with
  | E2addr v -> Format.fprintf fmt "@@%s" v.Cil_types.lv_name
  | E2depl (d, ch) ->  Format.fprintf fmt "%a+%a" pp_exp2 d pp_epath ch
  | E2proj (d, ch) -> Format.fprintf fmt "%a.%a" pp_exp2 d pp_epath ch
  | E2shift (d, idx) -> Format.fprintf fmt "(%a + %a)" pp_exp2 d pp_exp2 idx
  | E2load (m, p) -> Format.fprintf fmt "%a(%a)" pp_exp2 m pp_exp2 p
  | E2store (m, p, v) -> Format.fprintf fmt "%a++{%a -> %a}"
                           pp_exp2 m pp_exp2 p pp_exp2 v
and pp_exp2 fmt e = Why_output.pp_term pp_data2 fmt e