sig
type state
type letter
module StateSet : Set.S
module Alphabet : Set.S
module StateToTransitionMap : Map.S
module TransitionMap : Map.S
type nfa = {
mutable nfa_states : StateSet.t;
mutable nfa_alphabet : Alphabet.t;
mutable nfa_start_state : StateSet.elt option;
mutable nfa_final_states : StateSet.t;
mutable nfa_transitions :
StateSet.t TransitionMap.t StateToTransitionMap.t;
}
val nfa_empty : Nfa.NFA.nfa
val fresh_nfa_empty : unit -> Nfa.NFA.nfa
val get_nfa_alphabet : Nfa.NFA.nfa -> Alphabet.t
val add_letter : Nfa.NFA.nfa -> Alphabet.elt -> unit
val add_all_letters : Nfa.NFA.nfa -> Alphabet.t -> unit
val get_nfa_states : Nfa.NFA.nfa -> StateSet.t
val get_nfa_start_state : Nfa.NFA.nfa -> StateSet.elt option
val get_nfa_final_states : Nfa.NFA.nfa -> StateSet.t
val add_state : Nfa.NFA.nfa -> StateSet.elt -> unit
val set_start_state : Nfa.NFA.nfa -> StateSet.elt -> unit
val set_final_states : Nfa.NFA.nfa -> StateSet.t -> unit
val add_final_state : Nfa.NFA.nfa -> StateSet.elt -> unit
val get_nfa_transitions :
Nfa.NFA.nfa -> StateSet.t TransitionMap.t StateToTransitionMap.t
val get_TransitionMap :
Nfa.NFA.nfa -> StateToTransitionMap.key -> StateSet.t TransitionMap.t
val get_destStateSet : 'a TransitionMap.t -> TransitionMap.key -> 'a
val get_destStateSet_s :
Nfa.NFA.nfa ->
StateToTransitionMap.key -> TransitionMap.key -> StateSet.t
val add_transitions_aux :
Nfa.NFA.nfa ->
StateToTransitionMap.key -> Alphabet.elt * StateSet.elt -> unit
val add_transitions :
Nfa.NFA.nfa -> StateSet.elt -> (Alphabet.elt * StateSet.elt) list -> unit
val print_automata :
Nfa.NFA.nfa -> (Alphabet.elt -> unit) -> (StateSet.elt -> unit) -> unit
val empty : Nfa.NFA.nfa -> bool
end