Nondeterministic Automaton #
A Nondeterministic Automaton (NA) is a transition relation equipped with a set of initial states.
Automata with different accepting conditions are then defined as extensions of NA.
These include, for example, a generalised version of NFA as found in the literature (without
finiteness assumptions), nondeterministic Buchi automata, and nondeterministic Muller automata.
This definition extends LTS and thus stores the transition system as a relation Tr of the form
State → Symbol → State → Prop. Note that you can also instantiate Tr by passing an argument of
type State → Symbol → Set State; it gets automatically expanded to the former shape.
References #
- [J. E. Hopcroft, R. Motwani, J. D. Ullman, Introduction to Automata Theory, Languages, and Computation][Hopcroft2006]
A nondeterministic automaton that accepts finite strings (lists of symbols).
- accept : Set State
The set of accepting states.
Instances For
An NA.FinAcc accepts a string if there is a multistep transition from a start state to an
accept state.
This is the standard string recognition performed by NFAs in the literature.
Equations
- Cslib.Automata.NA.FinAcc.instAcceptor = { Accepts := fun (a : Cslib.Automata.NA.FinAcc State Symbol) (xs : List Symbol) => ∃ s ∈ a.start, ∃ s' ∈ a.accept, a.MTr s xs s' }
Nondeterministic Buchi automaton.
- accept : Set State
The set of accepting states.
Instances For
An infinite run is accepting iff accepting states occur infinitely many times.
Equations
- One or more equations did not get rendered due to their size.
Nondeterministic Muller automaton.
The set of sets of accepting states.
Instances For
An infinite run is accepting iff the set of states that occur infinitely many times
is one of the sets in accept.
Equations
- One or more equations did not get rendered due to their size.