let dot_annots cfg annots =
  let kf = Cil2cfg.cfg_kf cfg in
  let kf_name = Kernel_function.get_name kf in
  let pp_edge fmt e =
    let h = annots.WpAnnot.find_hyps e in
    let h = List.map (fun p -> WpAnnot.pred_of_prop p) h in
    let g = annots.WpAnnot.find_goals e in
    let g = List.map (fun p -> WpAnnot.pred_of_prop p) g in
    let print kind p =
      Format.fprintf fmt "%s: %a@." kind !Ast_printer.d_predicate_named p
    in List.iter (print "H") h; List.iter (print "G") g
  in
  let name = match annots.WpAnnot.behavior_name with None -> kf_name
    | Some bhv -> kf_name^"_"^bhv
  in
  let name = name^".wp_annot_cfg" in
    cfg_dot "cfg" name cfg (Some pp_edge)