let mk_invariant_2 () =
  mk_global_comment "//* Inv 2 : Each non-active state is not reachable";
  let tmp_st = Cil_const.make_logic_var "_buch_st" Cil_types.Linteger in
  let tmp_tr = Cil_const.make_logic_var "_buch_tr" Cil_types.Linteger in
  mk_global_invariant (
    Pforall(
      [tmp_st],
      unamed (Pimplies (
        unamed (Pand (
          (* 0 <= st <nbStates *)
          unamed (mk_logicvar_intervalle tmp_st 0 (getNumberOfStates ())),
          (* curStates[st]==0 *)
          unamed (Prel(Req,mk_offseted_array_lval_from_lval (host_state_term()) (tmp_st), mk_int_term 0))
        )),
        unamed (Pforall([tmp_tr],
          unamed (Pimplies (
            (* 0 <= tr <nbTrans *)
            unamed(mk_logicvar_intervalle tmp_tr 0 (getNumberOfTransitions ())),
            unamed(
                mk_disjunction
                  [ (* curTrans[tr]==0 *)
                    Prel(Req,mk_offseted_array_lval_from_lval (host_trans_term ()) tmp_tr , mk_int_term 0) ;
                    (* transStop(tr)!=st *)
                    Prel(Rneq,(mk_logic_call transStop [tmp_tr]), mk_term_from_logic_var tmp_st) ;
                    (* !transCond(tr) *)
                    Pnot(unamed (Papp(get_predicate transCond,[],[mk_term_from_logic_var tmp_tr]))) ;
                    (* curStatesOld[transStart(tr)]==0 *)
                    Prel(Req,mk_offseted_array_lval_from_term (host_stateOld_term()) (mk_logic_call transStart [tmp_tr]), mk_int_term 0)
                  ]
              )
            ))
          ))
        ))
      )
  ) "_Buch_st_reach_2"