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_exp1 e
and pp_data1 fmt d = match d with
| E1addr v -> Format.fprintf fmt "@@%s" v.lv_name
| E1indir e -> Format.fprintf fmt "*(%a)" pp_exp1 e
| E1proj (d, ch) -> Format.fprintf fmt "%a%a" pp_exp1 d (pp_epath true) ch
| E1depl (d, ch) -> Format.fprintf fmt "%a%a" pp_exp1 d (pp_epath false) ch
| E1shift (d, idx) -> Format.fprintf fmt "(%a + %a)" pp_exp1 d pp_exp1 idx
| E1mu (d, ch, e) -> Format.fprintf fmt "mu(%a, %a -> %a)" pp_exp1 d
(pp_epath true) ch pp_exp1 e
| E1muI (d, e) -> Format.fprintf fmt "mu(%a, * -> %a)" pp_exp1 d pp_exp1 e
and pp_exp1 fmt e = Why_output.pp_term pp_data1 fmt e