val get_states : t -> StateSet.t
(** return the set of states of the automaton *)
+val get_starting_states : t -> StateSet.t
+(** return the set of starting states of the automaton *)
+
val get_selecting_states : t -> StateSet.t
(** return the set of selecting states of 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)].
+*)
module Builder :
sig
val make : unit -> t
(** Create a fresh builder *)
- val add_state : t -> ?selecting:bool -> State.t -> unit
- (** Add a state to the set of states of the automaton. The optional argument
- [?selecting] (defaulting to [false]) allows to specify whether the state is
- selecting. *)
+ val add_state : t -> ?starting:bool -> ?selecting:bool -> State.t -> unit
+ (** Add a state to the set of states of the automaton. The
+ optional arguments [?starting] and [?selecting] (defaulting
+ to [false]) allow one to specify whether the state is
+ starting/selecting. *)
val add_trans : t -> State.t -> QNameSet.t -> Formula.t -> unit
(** Add a transition to the automaton *)