Implement set-theoretic operation on 2WSATA (union, intersection,
[tatoo.git] / src / ata.mli
index eada8d0..00070d4 100644 (file)
@@ -98,11 +98,16 @@ val get_selecting_states : t -> StateSet.t
 (** return the set of selecting states of the automaton *)
 
 val get_trans : t -> QNameSet.elt -> StateSet.t -> TransList.t
-(** [get_trans auto l q] return the list of transitions taken by [auto]
+(** [get_trans auto l q] returns the list of transitions taken by [auto]
     for label [l] in state [q]. Takes time proportional to the number of
     transitions in the automaton.
  *)
 
+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 print : Format.formatter -> t -> unit
 (** Pretty printing of the automaton *)
 
@@ -121,6 +126,26 @@ val merge : t -> t -> t
     in parallel
 *)
 
+val union : t -> t -> t
+(** [union a a'] creates a new automaton [a''] that selects node
+    selected by either [a] or [a']
+*)
+
+val inter : t -> t -> t
+(** [inter a a'] creates a new automaton [a''] that selects node
+    selected by both [a] and [a']
+*)
+
+val neg : t -> t
+(** [neg a] creates a new automaton [a'] that selects the nodes not
+    selected by [a]
+*)
+
+val diff : t -> t -> t
+(** [diff a a'] creates a new automaton [a''] that select nodes selected
+    by [a] but not selected by [a']
+*)
+
 module Builder :
 sig
   type auto = t