Notebook 6: Reachability Fixpoint & Decision Problems
Reachability Fixpoint & Decision Problems
This notebook walks through the reachability fixpoint algorithm for deciding language emptiness, and then shows how universality, inclusion, and equivalence all reduce to emptiness checks.
Running example – DFA that accepts words containing “aaa”:
- States: \(q_0, q_1, q_2, q_3\)
- \(\delta(q_0,a)=q_1,\; \delta(q_0,b)=q_0,\; \delta(q_1,a)=q_2,\; \delta(q_1,b)=q_0,\; \delta(q_2,a)=q_3,\; \delta(q_2,b)=q_0,\; \delta(q_3,a)=q_3,\; \delta(q_3,b)=q_3\)
- \(F = \{q_3\}\)
Widget 1: Reachability Fixpoint Iteration
Click Step → to advance the fixpoint computation one iteration at a time.
DFA — "contains aaa"
Iteration Table
| i | Rᵢ | Post(Rᵢ) | New |
|---|
Widget 2: Decision Problem Reductions
All standard decision problems for regular languages reduce to emptiness. Click the tabs below to see each reduction in action.
Complement DFA — swap accepting states
Reduction summary
Setup
Reduction summary
Two inclusion checks
Reduction summary
What To Notice
The fixpoint converges in at most |Q| iterations. Here we have 4 states, and the fixpoint is reached in exactly 4 steps (iterations 0 through 3 discover one new state each; iteration 4 confirms the fixpoint). In general \(R_i \subseteq R_{i+1} \subseteq Q\), so the chain stabilises after at most \(|Q|\) steps.
The iteration discovers states in BFS order from \(q_0\). \(R_0 = \{q_0\}\), then \(q_1\) appears at distance 1, \(q_2\) at distance 2, \(q_3\) at distance 3 – exactly the breadth-first layers of the transition graph. The iteration counter \(i\) at which a state first appears equals its shortest-path distance from \(q_0\), which is why the shortest witness for non-emptiness has length 3.
All decision problems reduce to emptiness via closure constructions. Universality uses complementation, inclusion uses product with complement, equivalence uses two inclusion checks. The only “engine” is \(L(\mathcal{A}) \stackrel{?}{=} \varnothing\), which is reachability.
Emptiness itself is just graph reachability. The fixpoint iteration \(R_{i+1} = R_i \cup \mathrm{Post}(R_i)\) is a standard BFS on the state graph. This is the fundamental algorithm underlying model checking: verify a property by exploring the reachable state space and checking whether any “bad” (or “accepting”) state is reachable.