We've written up the incidence reduction technique as a draft paper: incidence-reduction.pdf, with the LaTeX source beside it in papers/integer-reduction/main.tex.
Prerequisites: The Incidence Reduction for the analysis-net construction, and ZK Hold'em for the poker net.
The paper proves what the blog posts showed by running the solver. Build an analysis net with catalytic source places and drain transitions, run mass-action ODE to equilibrium, and the steady-state concentrations are exact reciprocals of drain counts. Each accumulator obeys its own ODE with a closed-form solution, so there is no eigenvector iteration and no coupled fixed point to converge on.
The decoupling lemma says each accumulator place obeys \dot{x}_i = 1 - n_i x_i, where n_i is the number of drain transitions attached to it. The source places hold constant concentration because the play transitions are catalytic, so no accumulator's equation mentions any other. Equilibrium is x_i^* = 1/n_i.
The incidence reduction theorem follows: after inverting and normalizing, the value of entity i is V_i = n_i / n_\text{min}, a positive rational fixed by the net's topology, and an integer whenever the smallest drain count divides the rest. That is degree counting, and the paper says so — it calls incidence reduction a diagonal approximation to eigenvector centrality of the co-occurrence matrix BB^T, and its ranking theorem shows the two agree on center > corner > edge for odd n \times n tic-tac-toe (worked by hand for 3×3, reported numerically for 5×5 and 7×7). Whether the rankings can disagree on a less symmetric topology is listed as open. The eigenvector figures are in the paper only; we have no test in the repo that reproduces them.
The four experimental validations each have a test in crates/pflow/src/lib.rs, which builds the analysis net, runs the Tsit5 solver to equilibrium and asserts the values:
| Game | Topology | Distinct Levels | Max:Min | Test |
|---|---|---|---|---|
| Tic-tac-toe (3×3, 5×5, 7×7) | Square grid, full-line wins | 3 | 2:1 | test_integer_reduction_tictactoe, _5x5, _7x7 |
| Poker hand rankings | Frequency-weighted drains | 9 | 32:1 | test_integer_reduction_holdem |
| Connect Four (7×6) | Rectangular grid, 4-in-a-row | 9 | 4.33:1 | test_integer_reduction_connect4 |
| Hex (5×5) | Hexagonal grid, shortest paths | 7 | 16:1 | test_integer_reduction_hex |
The poker row needs a caveat the other three don't. Its drain counts — 32, 24, 16, 12, 8, 5, 4, 2, 1 — are chosen by hand as log-scaled stand-ins for the 5-card combination counts, so the hand ordering and the 32:1 ratio are inputs. What the test establishes is that the weighted-drain net returns 1/n for each of them; it does not derive the ranking from the deck.
The ZK section proves single transitions of the tic-tac-toe game net with Groth16 — pre- and post-state roots, the delta, and enabledness — and reports timings for 3×3, 5×5 and 10×10 boards. The incidence matrix that defines the ODE system is the same one that supplies the constraint structure. Poker has its own circuit, described in ZK Hold'em. Connect Four and Hex have analysis nets only; we have not built circuits for them.
The earlier blog posts covered tic-tac-toe and poker. The paper adds two games with richer topology.
A 7×6 grid with 69 win lines — every 4-in-a-row segment: 24 horizontal, 21 vertical, 12 on each diagonal. The analysis net has 84 places and 318 transitions (42 play, 276 drain). The drain count matrix:
3 4 5 7 5 4 3
4 6 8 10 8 6 4
5 8 11 13 11 8 5
5 8 11 13 11 8 5
4 6 8 10 8 6 4
3 4 5 7 5 4 3
The center column has the highest count in every row, which agrees with the familiar heuristic that the center column is the strongest place to open. The peak cells (rows 2–3 of the center column, counting from zero) have drain count 13 against 3 for the corners, a 4.33:1 ratio, and there are nine distinct levels (3, 4, 5, 6, 7, 8, 10, 11, 13) where tic-tac-toe has three. The test asserts the 69 lines exactly and the solver's normalized equilibrium to within 0.15 of n/3 at every cell.
A 5×5 hexagonal board, where a player wins by forming any path of adjacent cells connecting opposite edges. There is no fixed line length to enumerate, so we restrict to shortest paths — the ones that visit exactly five cells — and find 96 of them (48 top-to-bottom, 48 left-to-right). Each path contributes one drain per cell it visits, 480 in all. The drain count matrix:
2 7 15 23 32
7 16 26 32 23
15 26 32 26 15
23 32 26 16 7
32 23 15 7 2
The five cells on the anti-diagonal all have drain count 32, a value of 16.0 against the two corners at 2. That anti-diagonal is the short diagonal of the rhombus. The paper reads it as the contested bridge between both pairs of edges; that reading is ours rather than a cited result, and it rests on counting only the five-cell paths — longer winning paths are left out of the net entirely. The board has exact 180° rotation symmetry (V_{r,c} = V_{4-r,4-c}), which the test asserts along with the path count and the full drain matrix. The 16:1 ratio is the largest of the three board games; poker's 32:1 is larger, but that one was put in by hand.
The exactness is a statement about the equilibrium: x_i^* = 1/n_i, with no game tree, no sampling and no training behind it. Whether n_i is strategic value is a separate question, and the theorem doesn't settle it. The paper's limitations section is plain about this: the technique sees only the degree of each entity's participation in constraints, it is static — it evaluates the game's topology, not the position in play — and it suits games where topological importance tracks strategic value. On tic-tac-toe, on Connect Four's center column and on poker's hand order the counts land on rankings people already hold. That is four game families, not a theorem about games.
What does carry across them is the construction. The same analysis net handles a square grid, a non-square grid, frequency-weighted drains and hex adjacency, and the constraints can be full lines, fixed-length segments or shortest paths without the lemma changing. And the incidence matrix is read twice — continuously for the equilibrium, discretely for the Groth16 constraints on game-state transitions — which is where Earned Compression starts from.
The paper, the tests and the ODE solver are all in pflow-rs.
For readers of the February version:
Related: The Incidence Reduction · ZK Hold'em · Zero-Knowledge Proofs for Petri Nets · Earned Compression