let rec pp_epath proj fmt e =
let proj_depl = if proj then "." else "+" in
match e with
| WpFol.Pfield f -> Format.fprintf fmt "%s%s" proj_depl f.fname
| WpFol.Pidx e -> Format.fprintf fmt "%s(%a)" proj_depl pp_exp0 e
and pp_data0 fmt d = match d with
| E0addr v -> Format.fprintf fmt "@@%s" v.lv_name
| E0proj (d, ch) -> Format.fprintf fmt "%a%a" pp_exp0 d (pp_epath true) ch
| E0depl (d, ch) -> Format.fprintf fmt "%a%a" pp_exp0 d (pp_epath false) ch
| E0shift (d, idx) -> Format.fprintf fmt "(%a + %a)" pp_exp0 d pp_exp0 idx
| E0mu (d, ch, e) -> Format.fprintf fmt "mu(%a, %a -> %a)" pp_exp0 d
(pp_epath true) ch pp_exp0 e
and pp_exp0 fmt e = Why_output.pp_term pp_data0 fmt e