Epsilon Phases of a DPDA #
Before a DPDA can safely be complemented by flipping final states, its forced epsilon-only phases must be accounted for. This file records the semantic objects used by the totalization construction: epsilon-only one-step motion, epsilon-only reachability, stable configurations, and divergence.
The stack/control part of a DPDA configuration, ignoring the unchanged input.
Equations
- DPDA.EpsilonConf Q S = (Q × List S)
Instances For
One forced epsilon step on the control/stack part of a configuration.
Equations
Instances For
The deterministic successor function for one epsilon step, if one exists.
Equations
Instances For
Epsilon-only reachability on the control/stack part of a configuration.
Equations
Instances For
A control/stack configuration is stable when no epsilon transition is forced.
Equations
Instances For
An epsilon phase stops at a stable control/stack configuration.
Equations
- M.EpsilonStopsAt c c' = (M.EpsilonReaches c c' ∧ M.EpsilonStable c')
Instances For
An infinite epsilon-only computation from a control/stack configuration.
Equations
- M.EpsilonDiverges c = ∃ (run : ℕ → DPDA.EpsilonConf Q S), run 0 = c ∧ ∀ (n : ℕ), M.EpsilonStep (run n) (run (n + 1))
Instances For
The canonical epsilon run that follows the deterministic epsilon successor while it exists.
Equations
- M.epsilonRun c 0 = c
- M.epsilonRun c n.succ = (M.epsilonNext? (M.epsilonRun c n)).getD (M.epsilonRun c n)
Instances For
Semantically, a deterministic epsilon phase either reaches a stable configuration or has an infinite epsilon-only run. The later finite-state totalizer must implement this split using regular stack lookahead.
Lift one semantic epsilon step to the underlying PDA step relation, for any fixed input.
Lift epsilon-only reachability to ordinary PDA reachability, preserving the input.