let mk_decl_axiomatized_automata () =
  let getNamedOffset s =
    Logic_const.term (TConst (CEnum (find_enum s.nums))) (Ctype Cil.intType)
  in
  let (_,trans_l) = getAutomata() in
  let param=(Cil_const.make_logic_var "tr" Lintegerin
  let logic=mk_global_logic transStart (*[]*) [param] (Some Linteger(*[]*) (*[TSSingleton(TSLval(TSVar(param),TSNo_offset))]*) in
  let tr_start_log_info = Data_for_aorai.get_logic transStart in
  let annotlist=List.fold_left
    (fun res tr ->
       (mk_global_axiom
          (transStart^(string_of_int tr.numt))
          (Prel(Req,
                Logic_const.term
                  (Tapp(tr_start_log_info,[],[mk_int_term tr.numt]))
                  (Ctype Cil.intType),
                (getNamedOffset tr.start)
               ))
       )::res
    )
    [logic]
    trans_l in
  globals_queue:=
    (GAnnot(Daxiomatic(transStart,List.rev annotlist, Location.unknown),
            Location.unknown))
  :: !globals_queue;


  let logic=mk_global_logic transStop  (*[]*) [param] (Some Linteger(*[]*) (*[TSSingleton(TSLval(TSVar(param),TSNo_offset))]*) in
  let tr_stop_log_info = Data_for_aorai.get_logic transStop in
  let annotlist=List.fold_left
    (fun res tr ->
       (mk_global_axiom
         (transStop^(string_of_int tr.numt))
         (Prel(Req,
               Logic_const.term
                 (Tapp(tr_stop_log_info,[],[mk_int_term tr.numt]))
                 (Ctype Cil.intType),
               (getNamedOffset tr.stop)))
       )::res
    )
    [logic]
    trans_l in

  globals_queue:=
    (GAnnot(Daxiomatic(transStop, List.rev annotlist, Location.unknown),
            Location.unknown))
  :: !globals_queue;

  let num= Cil_const.make_logic_var "_aorai_numTrans" Linteger in
  let op = Cil_const.make_logic_var "_aorai_op" Linteger in
  let st = Cil_const.make_logic_var "_aorai_status" Linteger in
  let pred =
    mk_conjunction
      (List.map
         (fun tr ->
            Pimplies(
              unamed (Prel(Req, mk_term_from_logic_var num, mk_int_term tr.numt)),
              unamed (crosscond_to_pred true tr.cross op st)
            )
         )
         trans_l
      )
  in
  mk_global_predicate transCondP ["L"] [num;op;st] pred;

  let pred2 =
    Papp(
      Data_for_aorai.get_predicate transCondP,
      [(LogicLabel(None,"L"),LogicLabel(None,"L"))],
      [mk_term_from_logic_var num;
       mk_term_from_logic_var (Cil.cvar_to_lvar (Data_for_aorai.get_varinfo curOp));
       mk_term_from_logic_var (Cil.cvar_to_lvar (Data_for_aorai.get_varinfo curOpStatus))
      ]
    )
  in
  mk_global_predicate transCond ["L"] [num] pred2