let dump_scripts file =
  let out = open_out file in
  let fmt = Format.formatter_of_out_channel out in
  try
    Format.fprintf fmt "(* Generated by Frama-C (WP) *)@\n@\n" ;
    Hashtbl.iter
      (fun goal (keys,proof) ->
        Format.fprintf fmt "Goal %s.@\n" goal ;
        (match keys with
        | [] -> ()
        | k::ks ->
          Format.fprintf fmt "Hint %s" k ;
          List.iter (fun k -> Format.fprintf fmt ",%s" k) ks ;
          Format.fprintf fmt ".@\n");
        Format.fprintf fmt "Proof.@\n%sQed.@\n@." proof) 
      scriptbase ;
    Format.pp_print_newline fmt () ;
    close_out out ;
  with e ->
    Format.pp_print_newline fmt () ;
    close_out out ;
    raise e