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_path proj_depl fmt ch = 
  Format.fprintf fmt "[%a]"  (Cilutil.print_list Cilutil.comma 
                                (pp_epath proj_depl)) ch *)

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