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