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