let mk_abstract_pre_post (states_l,trans_l) func status =
  (* Intially, no state is a source for crossable transition and no transition is crossable*)
  let st_status = Array.make (List.length states_l) false in
  let tr_status = Array.make (List.length trans_l) false in

  (* Conjunction of forbidden transitions and disjunction of crossable
     transitions are computed together.  Moreover, authorized states
     are annotated in the same pass.  *)


  List.iter
    (fun tr ->
       if isCrossable tr func status then
         begin
           Array.set st_status tr.stop.nums true;
           Array.set tr_status tr.numt true
         end
    )
    trans_l;

  (st_status,tr_status)