let initGlobals root complete =
  mk_global_comment "//****************";
  mk_global_comment "//* BEGIN Primitives generated for LTL verification";

  mk_global_comment "//* ";
  mk_global_comment "//* States and Trans Variables";
  let (st_old_init, st_init, tr_init, (*acc_init*) _) = get_states_trans_init root in
  mk_global_c_initialized_array curState (getNumberOfStates()) st_init;
  mk_global_c_initialized_array curTrans (getNumberOfTransitions()) tr_init;
  mk_global_c_initialized_array curStateOld (getNumberOfStates()) st_old_init;
(*  mk_global_c_initialized_array curTransTmp (getNumberOfTransitions()) tr_init;*)

(*  mk_global_comment "//* ";
  mk_global_comment "//* Their invariants";
  mk_global_invariant
    (mk_conjunction
       [(mk_valid_range curTrans (getNumberOfTransitions ())) ;
(*        (mk_valid_range curTransTmp (getNumberOfTransitions ())) ;*)
        (mk_valid_range curState (getNumberOfStates ())) ;
        (mk_valid_range curStateOld (getNumberOfStates ()))
       ])
    "Buch_Ranges_Validity";
*)

(*  mk_global_invariant
    (*(mk_conjunction
       [*) (mk_eq_tables curTrans curTransTmp (getNumberOfTransitions ())) (*;
        (mk_eq_tables curState curStateTmp (getNumberOfStates      ()))
       ])*)
    "Buch_Arrays_Coherence";
*)


  mk_global_comment "//* ";
  (*mk_global_comment "//* Acceptation States -- UNUSED AT THIS TIME !!!";
  mk_global_c_initialized_array acceptSt (getNumberOfStates()) acc_init;
  mk_global_invariant (mk_valid_range acceptSt (getNumberOfStates ())) "Buch_acc_Ranges_Validity";
  *)

  mk_global_comment "//* ";
  mk_global_comment "//* Some constants";
  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 root);
  mk_global_c_enum_type  listStatus (callStatus::[termStatus]);
  mk_global_c_initialized_enum curOpStatus listStatus (funcStatus_to_init Promelaast.Call);

  if complete then
    begin

      mk_global_comment "//* ";
      mk_global_comment "//* Loops management";
      mk_decl_loops_init ();


      mk_global_comment "//* ";
      mk_global_comment "//**************** ";
      mk_global_comment "//* Axiomatized transitions automata";

      mk_decl_axiomatized_auotmata ();

      mk_global_comment "//* ";
      mk_global_comment "//**************** ";
      mk_global_comment "//* Safety invariants";
      mk_global_comment "//* ";

      (*  mk_invariant_1 ();
          mk_invariant_2 ();
          mk_invariant_3 ();
          mk_invariant_4 ();
          mk_invariant_5 ();
          mk_invariant_6 ();
      *)

      (*mk_invariant_1_2 ();  Si remis, alors considerer qu'en cas de choix non-deterministe, seule l'une des possibilite doit necessairement etre prise. En prendre plusieurs n'est ni interdit ni obligatoire.*)
      mk_invariant_2_2_1 ();
      mk_invariant_2_2_2 ();
      (*mk_invariant_3_2 ();*)
      mk_invariant_4_2 ()
    end
  else
    begin
      mk_invariant_StatesDisjunction ();
      mk_invariant_TransitionsDisjunction ()
    end;

  mk_global_comment "//* ";
  mk_global_comment "//* END Primitives generated for LTL verification";
  mk_global_comment "//****************";

  flush_globals()