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 #
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' }
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.