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)