let get_preds_wrt_params transl f status =
  (* These two constants are never used, but are syntactically
     needed to call the conversion function *)

  let op = Cil_const.make_logic_var "_aorai_op" Linteger in
  let st = Cil_const.make_logic_var "_aorai_status" Linteger in
  let event = (f,status) in
  let preds = ref [] in
  Array.iteri
    (fun trn b ->
       if b then
         begin
           Aorai_option.debug "considering transition %d" trn;
           let trans = Data_for_aorai.getTransition trn in
           (* Gets the cross condition of the transition *)
           let dnf =
             snd (Logic_simplification.simplifyCond (fst trans.cross))
           in
           let cond = Logic_simplification.simplifyDNFwrtCtx dnf f status in
           let pred = crosscond_to_pred ~event cond op st  in
           let retrieve_state (st,_) = st.nums = trans.stop.nums in
           let oth_preds =
             try
               snd (List.find retrieve_state !preds)
             with Not_found -> pfalse
           in
           let pred = Logic_const.por (oth_preds,pred) in
           preds :=
             (trans.stop,pred) ::
             (List.filter (not $ retrieve_state) !preds)
         end
    )
    transl;
    let preds =
      List.map (fun (st, pred) -> pimplies (is_state_pred st, pred)) !preds
    in
    let pred = Logic_const.pands preds in
    if Logic_utils.is_trivially_true pred then None else Some pred