let make_prev_pred_neg func status st auto_state =
  let (_,tr_state) = auto_state in
  let auto = Data_for_aorai.getAutomata () in
  let treat_one (start_states, cond1) st =
    let trans = Path_analysis.get_transitions_to_state st auto in
    let event = (func, status) in
    let op = Data_for_aorai.get_logic_var Data_for_aorai.curOp in
    let func_status = Data_for_aorai.get_logic_var Data_for_aorai.curOp in
    let start_states, cond2 =
      List.fold_left
        (fun (start_states,conds as acc) tr ->
          if tr_state.(tr.numt) then
            let cond, _ = tr.cross in
            let my_pred =
              Logic_const.pand
                (is_state_pred tr.start,
                 Logic_const.pnot 
                   (crosscond_to_pred ~event cond op func_status))
            in
            Data_for_aorai.Aorai_state.Set.add tr.start start_states,
            Logic_const.por (my_pred,conds)
          else acc)
        (start_states,pfalse) trans
    in start_states, Logic_const.pand (cond1, cond2)
  in
  let (start_states, cond) =
    List.fold_left treat_one (Data_for_aorai.Aorai_state.Set.empty,ptrue) st
  in
  let not_start =
    Data_for_aorai.Aorai_state.Set.fold
      (fun st acc -> Logic_const.pand (is_out_of_state_pred st,acc))
      start_states ptrue
  in
  Logic_const.por (cond, not_start)