+let add_reco ast st = ast.reco <- (StateSet.add st (ast.reco))
+
+let add_selec ast st = ast.selec <- (StateSet.add st (ast.selec))
+
+let add_bot ast st = ast.bottom <- (StateSet.add st (ast.bottom))
+
+let add_top ast st = ast.top <- (StateSet.add st (ast.top))
+
+let init_top ast = ast.top <- (StateSet.empty)
+
+let top_states ast = StateSet.elements ast.top
+
+let print fmt asta =
+ let print_box fmt flag =
+ let pp = Format.fprintf fmt in
+ pp "@[<v 0># Query states: %a@ @]"
+ StateSet.print asta.quer;
+ pp "@[<v 0># Recognizing states: %a@ @]"
+ StateSet.print asta.reco;
+ pp "@[<v 0># Selecting states: %a@ @]"
+ StateSet.print asta.selec;
+ pp "@[<v 0># Bottom states: %a@ @]"
+ StateSet.print asta.bottom;
+ pp "@[<v 0># Top states: %a@ @]"
+ StateSet.print asta.top;
+ let print_list_tr fmt z =
+ if SetT.is_empty z
+ then Format.fprintf fmt "ø"
+ else
+ SetT.iter (fun x -> Format.fprintf fmt "| %a @ " Transition.print x) z in
+ let print_box_list fmt trans =
+ Format.fprintf fmt " @[<hov 0>%a @]" print_list_tr trans in
+ Format.fprintf fmt "@[<v 0># Queries transitions:@ %a@ @]"
+ print_box_list asta.trans_q;
+ Format.fprintf fmt "@[<v 0># Recognizing transitions:@ %a@]"
+ print_box_list asta.trans_r in
+ Format.fprintf fmt "@[<v 1>##### ASTA #####@, %a@ @]@." print_box 0