Implement a new automaton run (non optimized) with cleaner semantics w.r.t. ranked...
[tatoo.git] / src / ata.mli
index e1fdc4a..89593cc 100644 (file)
@@ -122,8 +122,12 @@ val get_starting_states : t -> StateSet.t
 val get_selecting_states : t -> StateSet.t
 (** return the set of selecting states of the automaton *)
 
-val get_states_by_rank : t -> StateSet.t array
-(** return an array of states ordered by ranks.
+type rank = { td : StateSet.t;
+              bu : StateSet.t;
+              exit : StateSet.t }
+
+val get_states_by_rank : t -> rank array
+(** return an array of states (sources, states) ordered by ranks.
 *)
 
 val get_max_rank : t -> int
@@ -141,6 +145,10 @@ val get_form : t -> QNameSet.elt -> State.t -> Formula.t
 (** [get_form auto l q] returns a single formula for label [l] in state [q].
     Takes time proportional to the number of transitions in the automaton.
  *)
+val state_prerequisites : move -> t -> State.t -> StateSet.t
+(** [state_prerequisites m auto q] returns the set of all states q' such
+    that [q', _ -> phi] and [m(q)] is in phi
+*)
 
 val print : Format.formatter -> t -> unit
 (** Pretty printing of the automaton *)