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_automata ();
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()