end
(** Modules representing the Boolean formulae used in transitions *)
-module Transition : Hcons.S with type data = State.t * QNameSet.t * Formula.t
+module Transition : sig
+ include Hcons.S with type data = State.t * QNameSet.t * Formula.t
+ val print : Format.formatter -> t -> unit
+end
(** A [Transition.t] is a hashconsed triple of the state, the set of labels and the formula *)
type t
(** 2-way Selecting Alternating Tree Automata *)
+val uid : t -> Uid.t
+(** return the internal unique ID of the automaton *)
+
val get_states : t -> StateSet.t
(** return the set of states of the automaton *)
(** 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 *)
+val copy : t -> t
+(** [copy a] creates a copy of automaton [a], that is a new automaton with
+ the same transitions but with fresh states, such that [get_states a] and
+ [get_states (copy a)] are distinct
+*)
+val concat : t -> t -> t
+(** [concat a a'] creates a new automaton [a''] such that, given a set of tree
+ nodes [N], [a'' N = a' (a N)].
+*)
+
+val merge : t -> t -> t
+(** [merge a a'] creates a new automaton [a''] that evaluates both [a] and [a'']
+ in parallel
+*)
module Builder :
sig