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