let output_dot_automata (states_l,trans_l) fichier =
  let cout = open_out fichier in
  out_fmt:=formatter_of_out_channel cout ;

  fprintf !out_fmt "/* File generated by Aorai LTL2ACSL Plug-in                      */\n";
  fprintf !out_fmt "/*                                                               */\n";
  fprintf !out_fmt "/* Usage of dot files '.dot' :                                   */\n";
  fprintf !out_fmt "/*    dot <MyFile.dot> -T<DesiredType> > <OutputFile>            */\n";
  fprintf !out_fmt "/*                                                               */\n";
  fprintf !out_fmt "/*    Allowed types : canon,dot,xdot,fig,gd,gd2,                 */\n";
  fprintf !out_fmt "/*      gif,hpgl,imap,cmap,ismap,jpg,jpeg,mif,mp,pcl,pic,plain,  */\n";
  fprintf !out_fmt "/*      plain-ext,png,ps,ps2,svg,svgz,vrml,vtx,wbmp              */\n";
  fprintf !out_fmt "/*                                                               */\n";
  fprintf !out_fmt "/* Example with postscript file :                                */\n";
  fprintf !out_fmt "/*    dot property.dot -Tps > property.ps                        */\n";
  fprintf !out_fmt "";
  fprintf !out_fmt "digraph %s {\n"
    (Filename.chop_extension (Filename.basename fichier));
  fprintf !out_fmt "\n";
  List.iter (dot_state !out_fmt) states_l;
  fprintf !out_fmt "\n";
  List.iter (dot_trans !out_fmt) trans_l;
  fprintf !out_fmt "\n";
  if DotSeparatedLabels.get () then begin
    fprintf !out_fmt "/* guards of transitions */@\ncomment=\"%a\";@\n"
      (Pretty_utils.pp_list ~sep:(format_of_string "\\n") dot_guards) trans_l
  end;
  fprintf !out_fmt "} /*End of graph*/\n";
  fprintf !out_fmt "\n";

  close_out cout;
  out_fmt:=formatter_of_out_channel stdout