let get_states_trans_init root =
  let (states,trans) = Data_for_aorai.getAutomata () in
  let st_old_exps = (Array.make (List.length states) (mk_int_exp 0)) in
  let st_exps = (Array.make (List.length states) (mk_int_exp 0)) in
  let tr_exps = (Array.make (List.length trans ) (mk_int_exp 0)) in
  let acc_exps = (Array.make (List.length states) (mk_int_exp 0)) in

  List.iter (
    fun tr ->
      if (tr.start.Promelaast.init==Bool3.True&& (isCrossableAtInit tr root) then
        begin
          Array.set tr_exps tr.numt (mk_int_exp 1);
          Array.set st_exps tr.stop.nums (mk_int_exp 1);
          Array.set st_old_exps tr.start.nums (mk_int_exp 1)
        end
  ) trans;
  List.iter (
    fun st ->
      if (st.acceptation==Bool3.Truethen
        begin
          Array.set acc_exps st.nums (mk_int_exp 1);
        end
  ) states;

  let st_old_init =
    Array.mapi (
      fun i exp ->
        (*Chaque cas doit contenir : (offset * init)*)
        (Index(mk_int_exp i,NoOffset),SingleInit(exp))
    ) st_old_exps
  in
  let st_init =
    Array.mapi (
      fun i exp ->
        (*Chaque cas doit contenir : (offset * init)*)
        (Index(mk_int_exp i,NoOffset),SingleInit(exp))
    ) st_exps
  in
  let tr_init =
    Array.mapi (
      fun i exp ->
        (Index(mk_int_exp i,NoOffset),SingleInit(exp))
    ) tr_exps
  in
  let acc_init =
    Array.mapi (
      fun i exp ->
        (Index(mk_int_exp i,NoOffset),SingleInit(exp))
    ) acc_exps
  in
   (
    {init=Some(CompoundInit(Cil.intType, Array.to_list st_old_init))},
    {init=Some(CompoundInit(Cil.intType, Array.to_list st_init))},
    {init=Some(CompoundInit(Cil.intType, Array.to_list tr_init))},
    {init=Some(CompoundInit(Cil.intType, Array.to_list acc_init))}
   )