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)