let force_condition_to_predicate global_inv restricted_inv =
  let pred_l = ref [] in
  let mk_pred_det term index = prel(Rneq, term, mk_int_term index) in
  let mk_pred_nondet base index =
    prel(Req, mk_offseted_array base index, zero_term())
  in
  let treat global restric mk_pred=
    Array.iteri
      (fun index value ->
         if (not value) && global.(index) then
           begin
             let n_pred = mk_pred index in
             pred_l:= n_pred::!pred_l
           end
      )
      restric
  in
  treat (fst global_inv) (fst restricted_inv)
    (if Aorai_option.Deterministic.get() then mk_pred_det (state_term())
     else mk_pred_nondet (host_state_term ()));
(*  treat (snd global_inv) (snd restricted_inv)
    (if Aorai_option.Deterministic.get() then mk_pred_det (trans_term())
     else mk_pred_nondet (host_trans_term ()));*)

  if !pred_l<>[] then
    pands (List.rev !pred_l)
  else
    ptrue