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

  in
  let tr = pp_to_term tr_status (host_trans_term ()) in
  let st = pp_to_term st_status (host_state_term ()) in
  st@tr