1 (***********************************************************************)
5 (* Lucca Hirschi, LRI UMR8623 *)
6 (* Université Paris-Sud & CNRS *)
8 (* Copyright 2010-2012 Université Paris-Sud and Centre National de la *)
9 (* Recherche Scientifique. All rights reserved. This file is *)
10 (* distributed under the terms of the GNU Lesser General Public *)
11 (* License, with the special exception on linking described in file *)
14 (***********************************************************************)
16 (** Implementation of alternating selecting tree automata (ASTA) *)
20 (** The type of states *)
22 type label = QNameSet.t
23 (** The type of labels of the transitions *)
25 type formula = Formula.t
26 (** The type of transition formulae *)
28 type transition = (state*label*formula)
29 (** The type of transitions *)
32 (** The type of ASTAs *)
34 val transition : t -> state -> label -> formula
35 (** Give the formula which must hold for a current state and label *)
37 val transitions : t -> state -> (label*formula) list * (label*formula) list
38 (** Give the list of labels and formulae from queries and recognizing
39 transitions for a given state *)
41 val transitions_lab : t -> QName.t -> (state*formula) list *(state*formula) list
42 (** Give the list of states and formulae from queries and recognizing
43 transitions for a given tag *)
46 (** The empty automaton *)
49 (** Set of all labels which can occur in a tree *)
51 val new_state : unit -> state
52 (** Give a new state (different from all others states) *)
54 val add_tr : t -> transition -> bool -> unit
55 (** Add a query transition (recognizing transition if flag=false) to an asta *)
57 val add_reco : t -> state -> unit
58 (** Add a state to the recognizing states of an asta *)
60 val add_quer : t -> state -> unit
61 (** Add a state to the query states of an asta *)
63 val add_selec : t -> state -> unit
64 (** Add a state to the selecting states of an asta *)
66 val add_bot : t -> state -> unit
67 (** Add a state to the bottom states of an asta *)
69 val add_top : t -> state -> unit
70 (** Add a state to the top states of an asta *)
72 val init_top : t -> unit
73 (** Remove all top states *)
75 val top_states : t -> state list
76 (** Give the list of top states of an ASTA *)
78 val top_states_s : t -> StateSet.t
79 (** Give the set of top states of an ASTA *)
81 val bot_states_s : t -> StateSet.t
82 (** Give the set of bottom states of an ASTA *)
84 val selec_states : t -> StateSet.t
85 (** Give the list of selecting states of an ASTA *)
87 val print : Format.formatter -> t -> unit
90 val to_file : out_channel -> t -> unit
91 (** Outputs the description of the automaton on the given out_channel *)