Verify a property by exploring every state a system can reach. Give a machine a finite graph of states and a temporal formula, and it returns the exact set of states that satisfy it — computed by iterating a fixpoint over the transition relation, not by testing a few runs. Rendered, not quoted.
source Clarke & Emerson (1981), Design and synthesis of synchronization skeletons using branching time temporal logic, LNCS 131 · Queille & Sifakis (1982), CESAR — Springer LNCS 131 (paywalled; cited author/title/year — AMBER)
A finite Kripke structure K = (S, R, L): states S={0..4}, a total transition relation R, and atomic labels L. Atom p marks a goal state; bad marks an error.
R: 0→1 · 1→2 · 1→4 · 2→3 · 3→3 · 4→4. Every state has a successor (total), so EX/AX are well-defined.
CTL is evaluated over branching time: at each state the future forks along every outgoing edge.
Model checking made the-temporal-logic decidable on a finite graph. Pnueli's temporal operators say what must hold along time; Clarke & Emerson's labeling algorithm turns each operator into a fixpoint over the transition relation and computes its whole satisfying set.
That is how protocols and hardware are verified: check every path a system can take, not a sampled few. The neighbour sphere supplies the logic; this one supplies the decision procedure.
Re-runs the labeling algorithm on the live structure and compares EF p against the canonical set proved at boot. Flips red the instant the transition relation is tampered.
Canonical EF p (sealed at boot):
The structure K above, plus three CTL properties to decide:
EF p · AG p · AG(¬bad)
EF p = "a p-state is reachable" (some path eventually p). AG p = "p holds on all reachable states" (every path always p). AG(¬bad) = a safety property.
Labeling / fixpoint algorithm. EX(Z)=states with a successor in Z; AX(Z)=states with all successors in Z.
Every set below equals the CTL semantic definition, verified by exhaustive set-equality (fixpoint vs. independent BFS reachability).
Real limit: state explosion — |S| is exponential in the number of variables. The set-equality here is honest only because |S|=5.
Disclosed sabotage: replace the EF fixpoint with a single EX step. States that reach p in 2+ hops (0 and 1) are dropped.
The Witness (7) recomputes live and catches the mismatch every time.