let pre_post_to_term_neg (st_status, _) =
if Aorai_option.Deterministic.get () then begin
let pp_to_term status var f =
let (forbidden,_) =
Array.fold_left
(fun (auth,i) b ->
if not b then
Logic_const.por(auth,prel(Req,var (), f i)),i+1
else
auth,i+1)
(pfalse,0)
status
in forbidden
in
let st = pp_to_term st_status state_term int2enumstate in
st
end else begin
let pp_to_term an_array array_term func =
let (forbidden,_) =
Array.fold_left
(fun (au_pred,i) b ->
if b then
begin
(Logic_const.pand(au_pred,prel(Req, zero_term(),
(func array_term i))),
i+1
)
end
else
(au_pred,i+1)
)
(ptrue,0)
an_array
in
forbidden
in
let st =
pp_to_term st_status (host_state_term ())
mk_offseted_array_states_as_enum
in
st
end