Useful epsilon cycles in the normalized empty-stack PDA #
The final-state-to-empty-stack conversion is almost deterministic. Its only extra branch enters the fresh drain state from a normalized final state. First-final normalization makes that branch harmless for useful computations: a simulation branch which returned to the same cut would be a forbidden nonempty epsilon path from a normalized final state to itself.
A simulation-to-simulation FS→ES step projects through arbitrary
Option stack context to a step of the normalized DPDA. none symbols in
the untouched context are simply erased by filterMap.
A run beginning in a simulation state either remains a simulation of the
normalized DPDA, or has entered the drain after reaching a normalized final
configuration. The statement permits arbitrary Option stack context.
The normalized FS→ES machine has no nonempty cycle with a continuation to empty stack. Boot cannot be re-entered, drain steps strictly shrink the stack, and a simulation cycle projects to the deterministic first-final machine. A useful simulation continuation either itself reaches empty stack, or enters drain from a normalized final state; both projected alternatives contradict determinism and first-final normalization.
The same exclusion holds for a useful self-embedding stack-growth
segment in the FS→ES machine. In the simulation component the inserted
Option block either projects to a nonempty normalized-DPDA block, where the
counted stack-growth kernels apply, or projects to the empty block, where the
nonempty FS→ES segment becomes an exact normalized-DPDA cycle.