let pp_region fmt r =
    begin
      Vmap.iter
        (fun x (px,ds) ->
           Format.fprintf fmt "@,@[<v 0>@[Variable %s %a@]:@[<hov 2>"  x.vname A.pp_addr px ;
           List.iter (fun d -> Format.fprintf fmt "@ @[%a@]" pp_range d) ds ;
           Format.fprintf fmt "@]@]"
        ) r.cvars ;
      Imap.iter
        (fun k (px,ds) ->
           Format.fprintf fmt "@,@[<v 0>@[Root %d %a@]:@[<hov 2>" k A.pp_addr px ;
           List.iter (fun d -> Format.fprintf fmt "@ @[%a@]" pp_range d) ds ;
           Format.fprintf fmt "@]@]"
        ) r.roots ;
      List.iter
        (fun (b,d) ->
           Format.fprintf fmt "@,@[<v 0>@[Base %a@]:@[<hov 2>@ %a@]@]@\n" A.pp_addr b pp_range d
        ) r.bases ;
    end