let pre_post_to_term (st_status, tr_status) =
let pp_to_term an_array array_term func =
let (authorized,forbidden,_) =
Array.fold_left
(fun (au_pred,fo_pred,i) b ->
if b then
begin
(por(au_pred,prel(Rneq, zero_term(),
(func array_term i))),
fo_pred,
i+1
)
end
else
(au_pred,
pand(fo_pred,prel(Req, zero_term(),
(func array_term i))),
i+1
)
)
(pfalse,ptrue,0)
an_array
in
authorized::[forbidden]
in
let tr = pp_to_term tr_status (host_trans_term ()) mk_offseted_array in
let st = pp_to_term st_status (host_state_term ()) mk_offseted_array_states_as_enum in
st@tr