Deterministic Automata #
A Deterministic Automaton (DA) is an automaton defined by a transition function equipped with an
initial state.
Automata with different accepting conditions are then defined as extensions of DA.
These include, for example, a generalised version of DFA as found in the literature (without
finiteness assumptions), deterministic Buchi automata, and deterministic Muller automata.
References #
- [J. E. Hopcroft, R. Motwani, J. D. Ullman, Introduction to Automata Theory, Languages, and Computation][Hopcroft2006]
A deterministic automaton extends a FLTS with a unique initial state.
- tr : State → Symbol → State
- start : State
The initial state of the automaton.
Instances For
A deterministic automaton that accepts finite strings (lists of symbols).
Instances For
A DA.FinAcc accepts a string if its multistep transition function maps the start state and
the string to an accept state.
This is the standard string recognition performed by DFAs in the literature.
Equations
- Cslib.Automata.DA.FinAcc.instAcceptor = { Accepts := fun (a : Cslib.Automata.DA.FinAcc State Symbol) (xs : List Symbol) => a.mtr a.start xs ∈ a.accept }
Deterministic Buchi automaton.
Instances For
An infinite run is accepting iff accepting states occur infinitely many times.
Equations
- Cslib.Automata.DA.Buchi.instωAcceptor = { Accepts := fun (a : Cslib.Automata.DA.Buchi State Symbol) (xs : Cslib.ωSequence Symbol) => ∃ᶠ (k : ℕ) in Filter.atTop, (a.run xs) k ∈ a.accept }
Deterministic Muller automaton.
- tr : State → Symbol → State
- start : State
- accept : Set (Set State)
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
- Cslib.Automata.DA.Muller.instωAcceptor = { Accepts := fun (a : Cslib.Automata.DA.Muller State Symbol) (xs : Cslib.ωSequence Symbol) => (a.run xs).infOcc ∈ a.accept }