The Verification Venue · the most-repeated fact in making, made exact
Where to Nail the Diagonal
Everyone knows the slogan: triangles are strong, so add a diagonal. True — but it hides the real workshop question. A grid of squares is floppy; it shears into leaning rhombi. How many diagonal braces lock it, and does it matter which squares you brace? The honest answer is a 1979 theorem, and it is not "as many as you can."
Brace some cells below — click a square to nail a diagonal across it. Then grab the orange corner and pull. A wrongly-braced grid still collapses; a rightly-braced one with the same number of braces holds. The graph on the right is the whole secret: rigidity is whether every row and every column is wired together.
The frameclick a cell · drag the corner
Row × column graphBolker–Crapo
Structure is
FLOPPY
graph in 8 pieces
Braces placed
0 / min 7
need 7 more, well-placed
Floppy modes (shear DOF)
7
= components − 1
Reduced-motion is on, so the drag shows a single static sheared snapshot instead of a live pull.
Why a square is floppy and a triangle is not
It isn't that a square is "weak." Count its freedoms. A bar-joint framework in the plane with N pin-joints and b rigid bars has internal degrees of freedom
— two coordinates per joint, minus one constraint per bar, minus the three motions (slide, slide, spin) that move the whole thing without bending it. A triangle has N = 3, b = 3: F = 2·3 − 3 − 3 = 0 — no freedom left, rigid. A square has N = 4, b = 4: F = 2·4 − 4 − 3 = 1 — one freedom remains, and that one freedom is the shear: the four side-lengths are all satisfied while the corners swing from 90° into a rhombus. Nail one diagonal and you add a fifth bar: F = 2·4 − 5 − 3 = 0. Rigid. That single diagonal is the whole reason "add a triangle" works — it spends the square's last freedom.
But for a grid, count is not enough — placement is
String many cells into an n × n grid and Maxwell's bookkeeping says you need braces — but it can't tell you where. The exact answer was given by Ethan Bolker and Henry Crapo in 1979, and it is startling: turn each row of cells into a node and each column into a node, and draw an edge for every cell you brace (a brace in row r, column c joins node rₐ to node c_b). Then:
That is the graph on the right of the instrument, drawn live. A minimum rigid bracing is exactly a spanning tree of that graph — just enough edges to wire all n rows and n columns into one piece without a redundant loop — which takes
Try it: a 4×4 grid needs 7, not sixteen. And it must be the right spanning tree — press Over-brace & still floppy: on a 3×3 or larger grid it places 2n−1 braces or more (a 4×4 gets 12, well past the 7 minimum) and still collapses, because a whole row or column was left dangling. Count is necessary; connectivity is what's sufficient.
The check — every verdict recomputed in front of you
For the grid as you've braced it right now:
The Maxwell counts and the per-grid minimum, recomputed from the formulas:
| case | N | b | F = 2N−b−3 | verdict |
|---|
| grid | rows+cols | min = (m+n)−1 | = 2n−1? |
|---|
The live verdict is union-find connectivity of the bipartite graph. The offline verifier builds the framework's real rigidity matrix and checks rank = 2V − 3 for every bracing of the 2×2 and 2×3 grids and 1,200 random bracings up to 5×5 — the rank verdict and the connectivity verdict agree on every one, and the floppy-mode count (components − 1) equals the rank deficiency every time. Run it: node research/where-to-nail-the-diagonal/verify-where-to-nail-the-diagonal.mjs.
What's exactly true here, and what's idealised
Exactly true. The Maxwell count F = 2N − b − 3 is the dimension bookkeeping for a planar bar-joint framework. Bolker–Crapo is a theorem with a proof: a braced rectangular grid is rigid if and only if its row×column bracing graph is connected, and minimal rigid bracings are precisely the spanning trees of the complete bipartite graph K(m,n), of which there are mⁿ⁻¹·nᵐ⁻¹ — so an n×n grid needs exactly 2n−1 braces, and which ones is what decides it.
The model is the pin-jointed ideal. The bars are perfectly rigid in length; the joints are frictionless pins that carry no moment; a "brace" is one more rigid bar across a cell's diagonal. That idealisation is exactly why the count can be exact. A real wall frame, gate, or shelf is not this: lumber has bending stiffness, screwed and glued joints carry moment, sheathing acts as a membrane — so a real "floppy" grid still has residual stiffness and won't freely collapse the way the instrument's idealised one does. The theorem tells you where the structure has zero first-order stiffness, which is where a real one is weakest and where a brace buys the most. It is the right guide, not a promise that an unbraced wall folds flat.
A subtlety we had to get right (a free choice, named). Bolker–Crapo depends on the grid's special geometry — opposite sides of every cell parallel and equal. If you jitter the joints into generic position, the same bars can become rigid even with a disconnected graph, because parallelism is what makes connectivity necessary. The instrument and the verifier therefore both place the joints on the exact rectangular lattice; the drag-to-shear motion preserves every bar length exactly (each cell stays a rhombus, each braced cell stays a square), so what you pull is a true zero-energy mechanism, not an approximation.
Which notion we display. Three equivalent verdicts are available — the Maxwell count, the pebble-game / rigidity-matrix rank, and Bolker–Crapo connectivity. We show connectivity on screen because it is the one a hand can read at a glance, and we use the rigidity-matrix rank as the independent cross-check in the verifier. They agree by theorem and, here, on every tested case.