Square Packing Atlas
Discrete geometry · computer-assisted proof

Four Short of a Square

Take a k × k grid of unit squares and remove four. For every k ≥ 5 we believe nothing smaller than side k holds the remaining k² − 4: s(k² − 4) = k. That is the deficit-4 case of Friedman's Conjecture 1. From k = 8 up the proof is the k² − 3 method with a wider band, checked once in the 9 × 9 box; k = 5, 6, 7 are separate results.

Status. Working in public. For k ≥ 8: an exact certificate, made by the same checker code as the k² − 3 certificate, this run adversarially reviewed by three agents with no errors found; the tilted squares of the 9 × 9 box have since been re-checked by wand125's separately written exact checker (6 Oct 2026), which jlevy/squares has reviewed and records as reported evidence, not yet as a verification. In Lean everything except those tilted squares is kernel-checked. Not yet externally reviewed or fully formalised. The evidence differs by k (§01).

two exact checkers (k ≥ 8) reduction to the tilted run kernel-checked in Lean second check not yet register-verified not peer reviewed Certificate & checker on GitHub →
01 · The result

s(k² − 4) = k for every k ≥ 5

The grid gives s(k² − 4) ≤ k; the work is the other direction. For k ≥ 8 it is done for all k at once.

Theorem. For every integer k ≥ 8 there is a mass distribution μ_k on [0,k]², made of mass spread evenly along short segments of the 1/5-grid near the walls and area density 1 on [14/5, k − 14/5]², of total mass k² − 4D with D = 214770225571 / (2·10¹¹), such that every closed unit square inside [0,k]², at every position and every angle, captures mass at least 1.

k² − 4.295405  <  k² − 4

If k² − 4 unit squares fit in a square of side s < k, spreading their centres by k/s gives that many pairwise disjoint closed unit squares in [0,k]², each capturing at least 1, more than the k² − 4.295 there is. The argument is the one on the k² − 3 page.

How much each case rests on:

kn = k² − 4proof and its checking
521s(21) = 5 (2026-09-27): two separately written exact checkers; a Lean theorem conditional on their covering statement
632s(32) = 6 (2026-09-26): two exact checkers, and kernel-checked in Lean with no hypothesis
745s(45) = 7 (2026-09-27): two separately written exact checkers; no Lean
860this family; also s(60) = 8 (2026-09-28, two exact checkers, no Lean)
977this family; also wand125, 2026-10-01, the first proof: a band inserted into our s(60) cover, certified with our two checkers (jlevy/squares#279; not replayed here)
≥ 1096, 117, …this family only, 2026-10-03

For k ≥ 8: our exact checker, the reviewed k² − 3 code, certifies the 9 × 9 box, and wand125's separately written one re-checks its tilted squares (§04); Lean carries that to every k (§05). Nothing here is peer reviewed.

02 · Context

Friedman's conjecture, four short

Friedman's survey conjectured that s(n² − c) = n implies s((n+1)² − c) = n + 1 (Conjecture 1). For c = 4 the conclusion now holds for every n that matters: at n = 3 the hypothesis fails (s(5) = 2 + 1/√2 < 3), at n = 4 the conclusion s(21) = 5 holds, and from there s(k² − 4) = k for every k ≥ 5. So the deficit-4 case of Conjecture 1 holds whatever the still open s(12) turns out to be.

As far as we know, no exact value of s(k² − 4) for any k ≥ 4 was known before September 2026. This project proved s(32) = 6 (26 September), s(21) = 5 and s(45) = 7 (27 September) and s(60) = 8 (28 September), one box at a time. wand125 proved s(77) = 9 first, on 1 October, by inserting a band into our s(60) cover and checking it with our checkers. The cases k ≥ 10, and k = 9 by a second route, are new here. Since s never decreases, this also re-derives s(k² − 3) = k for k ≥ 5.

03 · The certificate

The same pattern, a wider band

The measure has the three parts of the k² − 3 family, on the 1/5-grid with no weighted points, now with corner size and band width 3:

The measure for k = 10. Line thickness is proportional to the density of mass along each 1/5-segment; the shaded square has density 1 per unit area. Dashed: the four 3 × 3 corner modules. Between them, the wall band repeats with period 1. The k = 9 box, the one that is checked, has 2,076 segments. (Drawn from the family file by a copy of the k² − 3 figure script set to R = 3, which first checks that the family rebuilds the 9 × 9 box file exactly.)
saving per cornerD = 1.073851
total, any k ≥ 8k² − 4.295405
pieces176 corner + 110 per period
checked boxk = 9, 2,076 segments

Why one box is enough. As for k² − 3: the band carries exactly its own area per period, so all the saving sits at the corners, and a unit square, less than 2 wide at any angle, can be shifted by whole units along each axis into [0,9] without changing what it captures. With corner size R = 3 this works for every k ≥ 2R + 2 = 8 (the k² − 3 family, with R = 2, used the 7 × 7 box).

Zero margin. The wall squares, and many limits as the tilt goes to zero with the square's edges on grid lines, capture exactly 1. Away from those, the linear program that chose the masses demanded growth in proportion to the tilt (factor 0.08 up to 3°). The float optimum without that demand is about 1.13 per corner; the exact family keeps 1.0739, so 0.074 per corner above the 1 needed.

04 · Verification

How the 9 × 9 box is checked

The claim, Valid9: every closed unit square in [0,9]² captures mass at least 1 under μ₉. By the square's symmetries it is enough to take centres in [0, 9/2]² and tilts up to 45°.

At zero tilt all 1,600 one-sided corner limits were computed exactly: minimum exactly 1, reached at 208. This step is also kernel-checked in Lean over the whole box (§05).

At positive tilt the program of the k² − 3 certificate, byte for byte the same files apart from an assert and a dump flag, subdivides the placements until every piece is proved with exact rational arithmetic, using the same exact lemma at the tight placements.

run of search/qx2_zm.pyresult
arithmeticPython; exact Fraction throughout, floats only to choose tests
root boxes16,200 (centre pitch 1/10, 8 tilt bins)
certified16,200
boxes, max depth214,336, 17
leaves, all recorded115,268: exact lemma 23,393; zm_mixed bounds 84,152; other 7,723
uncertified0
CPU815,343 s ≈ 226 h (15.8 h on 15 processes)

Reviews. The checker code was reviewed by six agents for k² − 3, and wand125's separately written checker corroborated that certificate. This run was given to three more adversarial review agents (2026-10-03), each with its own code: an attack on the cover (all 111,392 tiny-tilt limits exactly, millions of poses near the tight sets and at random, local minimisation: nothing below 1; the smallest local minimum away from the exactly-tight sets is about 1 + 4.5·10⁻⁵); the run record (coverage reconstructed independently, all area-density leaves re-proved, about 0.9 million exact masses, none below 1); and the statement chain and literature. None found an error in the mathematics. The Rust checker zmx2 certifies all but 4,844 boxes, all at tilts below 0.05°.

A second checker. On 6 October 2026 wand125 published an exact re-check of ValidTilt9, the tilted part of Valid9 (§05), with the separately written checker that had corroborated Valid7 (valid7-independent-check, commit c561dbb3, records in release records-tilt9-v1): centres in [0, 9/2]², no symmetry used, 28,350 root boxes, none uncertified. jlevy/squares reviewed it: its region contains ValidTilt9's, the source's record check reports every root certified, and it found no defect. The register records it as reported evidence; the case itself (T-081) is not yet register-verified, and we have not re-run it here.

05 · Lean

What is formally proved

theorem SquarePacking.Bentz4.bentz4_of_validTilt9 (ht : ValidTilt9) :
    ∀ k : ℕ, 8 ≤ k → minSide (k ^ 2 - 4) = k

The hypothesis ValidTilt9 says that every closed unit square in [0,9]² with centre in [0, 9/2]² and tilt in (0°, 45°] captures mass at least 1 under the 9 × 9 box file, taken verbatim: exactly the region the positive-tilt run of §04 covers.

Everything else is checked by Lean's kernel: the measure for every k and that for k = 9 it is the box file; the total k² − 4D < k² − 4; the move of any unit square into the 9 × 9 box; the reduction by the square's symmetries (the box file's symmetry checked by the kernel); the zero-tilt case, by exact corner limits over the whole box; the scaling argument; and the grid. Standard axioms only, no sorry, no native_decide. The tilted run itself is not in Lean: its lemmas are proved on paper.

06 · Caveats

What to keep in mind

07 · Reproduce

Artifacts

The bundle is s12/certificates/k2m4: its README says what checks what. verify.sh takes about 20 seconds: hashes, the cover's total and symmetry, that the family rebuilds the box file, the Lean data, the zero-tilt check, and the run record's structure and coverage, but no positive-tilt mass bound. verify.sh --full re-runs qx2_zm.py (about 226 CPU-hours) and compares root for root. The 9 × 9 box file is K4_k008_box9.txt.

path (under s12/)what
certificates/k2m4/the bundle: the claim; family, box and exact-solution files; the checker files and the run record; verify.sh
search/K2M4_MARGIN.mdhow the family was found, and the run
search/QUADRANT_EXACT.mdthe lemmas the checker uses (shared with k² − 3)
lean/Sqpack/Bentz4.lean, ValidSplit9.leanthe theorem and the reduction to the tilted run
notes/lean-k2m4-reduction.md, notes/lean-valid-split.mdhow the Lean proof goes