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

drag the corner →

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

F = 2N − b − 3

— 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:

the braced grid is RIGID ⇔ that row×column graph is CONNECTED

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

(rows) + (columns) − 1 = n + n − 1 = 2n − 1 braces

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:

caseNbF = 2N−b−3verdict
gridrows+colsmin = (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.