let get_next_bycase func status states_bycase =
  (* In a first pass we compute all cases of specification (For each starting state, we compute ending states set) *)
  let st_bc,tr_bc = mk_empty_pre_or_post_bycase () in
  let (_,trans_l) = Data_for_ltl.getAutomata() in
    List.iter
      (fun t ->
         if (isCrossable t func status) then
           begin
             st_bc.(t.start.nums).(t.stop.nums)<- true ;
             tr_bc.(t.start.nums).(t.numt)<- true
           end
      )
      trans_l;

  (* In second pass we replace each ending state from states_bycase by the new computed one *)
  let res_st_bc,res_tr_bc = mk_empty_pre_or_post_bycase () in
  Array.iteri
    (fun init_st init_st_assocs ->
       Array.iteri
         (fun end_st b ->
            if b then
              begin
                res_st_bc.(init_st) <- (bool_array_or (res_st_bc.(init_st)) (st_bc.(end_st)) );
                res_tr_bc.(init_st) <- (bool_array_or (res_tr_bc.(init_st)) (tr_bc.(end_st)) );
              end
         )
         init_st_assocs;
    )
    states_bycase;

  (res_st_bc,res_tr_bc)