Seven pieces: two large triangles, one medium triangle, one square, one parallelogram, two small triangles. However you lay them down without gaps or overlaps, the silhouette they form has area 8 in small-triangle units. The question this page settles by exhaustion: of all the convex silhouettes of exactly that area, how many can the seven pieces tile? The claim, checked live below: thirteen, and not one more.
There are exactly 20 convex silhouettes of area 8 on this lattice, and the census decides every one of them. "Not one more" is the half of the claim that needs the enumeration to be complete, so the page does not take the enumerator's word for it. A second enumeration, built on a different fact (a convex polygon is fixed, up to translation, by one maximal edge per lattice direction taken in angular order, with the lengths forced by closure), produces the same 20 shapes, and both lists are compared through a canonicalisation that works on quarter-atom sets rather than on edges and turns. That comparison is a bijection check, not a count: it is red if any shape is missing, spurious, or present twice.
Both implementations work on the half-square lattice the standard dissection lives on. Each unit cell is cut by both diagonals into four quarter-atoms; a candidate silhouette is 32 quarter-atoms, every piece is an exact union of quarter-atoms in every orientation, and every containment test is an integer sign test. There is no floating point anywhere in engine.c, reference.js or plan.js, so when the two implementations agree they agree exactly, digit for digit: no tolerance is involved, and no transcendental is called (the house deepmath mirror is loaded, as every page here loads it, but nothing on this page exercises it).
The enumeration lives on the lattice. An assembly whose pieces met only at points and drifted off the lattice directions is outside this census; every assembly the census does find is a physical placement, so nothing found is spurious. The research notes carry the full statement of the model and its residual.
| piece areas, quarter-units | 8, 8, 4, 4, 4, 2, 2 |
| quarter-atoms in any candidate silhouette | 32 |
| convex area-8 silhouettes on the lattice | 20 |
| the claim | thirteen |
The offline gate recomputes the first two from the piece coordinates themselves and refuses this page if they drift.
The seven pieces, as the geometry sees them:
Before the heavy run, a planted proof that the searcher works. The three silhouettes in this selector were built by scattering the seven pieces with a seeded PRNG, and were written into the engine's input channel (the state buffer), not into any result list. The unmodified compiled engine has to find them the hard way, and does, live:
Or pick one of the first six enumerated convex candidates and watch the engine decide it live: either a witness placement is drawn onto the silhouette, or the search runs to exhaustion and reports that no placement exists.
Decomposition A decides every convex candidate across 61 chunks; decomposition B decides them across 97 chunks with the piece order reversed. The two must produce identical decision-set fingerprints. Chunks are independent and run on all workers at once. The step count is the engine's own honest counter of inner-loop steps, summed over every chunk.
| chunks decided | 0 / 61 |
| inner-loop steps (counted) | 0 |
| elapsed | 0.0 s |
| solved so far | 0 |
| refuted so far | 0 |
| workers |
fingerprint A: (not yet)
fingerprint B: (not yet)
| check | status | detail |
|---|
What none of this rules out: two decompositions agreeing rules out boundary errors and very little else; the exact-cover cross-check shares no code with the census but does share the lattice model; and the lattice reduction itself remains a model choice, documented in the research notes. The reproducible-build check is offline: it runs only in research/thirteen-shapes-and-not-one-more/verify-thirteen-shapes-and-not-one-more.mjs, never in this page.
| operations (counted, not estimated) | 0 |
| wall time | - |
| workers | - |
| vs main thread | - |