let initGlobals root complete =
  mk_global_comment "//****************";
  mk_global_comment "//* BEGIN Primitives generated for LTL verification";
  mk_global_comment "//* ";
  mk_global_comment "//* ";
  mk_global_comment "//* Some constants";
  make_enum_states ();
  mk_global_c_enum_type
    listOp (List.map (fun e -> func_to_op_func e) (getFunctions_from_c()));
  mk_global_c_initialized_enum curOp listOp
    (func_to_init (Kernel_function.get_name root));
  mk_global_c_enum_type  listStatus (callStatus::[termStatus]);
  mk_global_c_initialized_enum
    curOpStatus listStatus (funcStatus_to_init Promelaast.Call);

  mk_global_comment "//* ";
  mk_global_comment "//* States and Trans Variables";
  let st_init = get_states_trans_init root in
  if Aorai_option.Deterministic.get () then begin
    mk_global_c_var_init curState (getInitialState());
  end else begin
    mk_global_c_initialized_array curState (getNumberOfStates()) st_init;
  end;

  if complete then
    begin
      mk_global_comment "//* ";
      mk_global_comment "//* Loops management";
      mk_decl_loops_init ();
    end;

  if Aorai_option.Deterministic.get () then begin
    mk_global_comment "//* ";
    mk_global_comment "//**************** ";
    mk_global_comment "//* Proof that the automaton is deterministic";
    mk_global_comment "//* ";
    mk_deterministic_lemma ();
  end;

  mk_global_comment "//* ";
  mk_global_comment "//****************** ";
  mk_global_comment "//* Auxiliary variables used in transition conditions";
  mk_global_comment "//*";
  List.iter mk_global_var (Data_for_aorai.aux_variables());
  (match Data_for_aorai.abstract_logic_info () with
    | [] -> ()
    | l ->
      let annot =
        Daxiomatic
          ("Aorai_pebble_axiomatic",
           List.map
             (fun li -> Dfun_or_pred(li,Cil_datatype.Location.unknown)) l,
           Cil_datatype.Location.unknown)
      in
      Globals.Annotations.add_user annot;
      mk_global (GAnnot(annot, Cil_datatype.Location.unknown)));
  mk_global_comment "//* ";
  mk_global_comment "//* END Primitives generated for LTL verification";
  mk_global_comment "//****************";

  flush_globals()