Every Edge But One

Unit-distance graphs398 minimal forbidden graphs74 known since 2019324 new, on ten verticesOEIS A308349182 proved in your browser

Put the vertices of a graph at distinct points of the plane so that every edge is exactly one unit long. Some graphs let you and some do not. Among those that do not are the smallest ones: graphs that cannot be drawn, but can the moment any single edge is taken away. There are 398 of them with ten vertices or fewer, and every graph that size which cannot be drawn contains one of them. Each is drawn below with every edge at length one, but one.

The Möbius ladder10 vertices · 15 edges
the dashed edge1.000 every other edge1 closest two points0
Drag any point. The solid edges stay exactly one unit long, so the drawing can only move in the ways its edges allow.

Tap any edge to make it the dashed one instead: the rest redraws with every edge at length 1, whichever edge you pick. Pull asks the solver to make the dashed edge 1 as well. Nothing here is a proof; the proofs are further down.

The question is easy to state. A unit-distance graph is one whose vertices can be placed at distinct points of the plane with every edge exactly one unit long; pairs that are not edges can be any distance apart, including one. A triangle is a unit-distance graph. So is a square, and a hexagon with its centre joined to every corner. Four points that are all one apart are not: after two equilateral triangles share a side, the last pair is √3 apart, never 1. That is K4, the smallest graph that cannot be drawn.

Take away any edge of K4 and it can be drawn: two triangles back to back. A graph like that, impossible as a whole but possible without any one of its edges, is called a minimal forbidden graph, and the reason to want the full list is a theorem of plain logic: a graph can be drawn exactly when it contains none of them. Every graph that cannot be drawn contains a smallest part that cannot, and that part is on the list.

Aidan Globus and Hans Parshall found every minimal forbidden graph with at most nine vertices in 2019: there are 74. (Chilakamarri and Mahoney had done it to seven in 1995.) Ten vertices was left open; Alexeev, Mixon and Parshall named it in the closing discussion of their 2024 paper on the unit distance problem, and perhaps even extend their result to unit-distance graphs on 10 vertices. Would such an extension make u(22) accessible? This page is that extension: 324 minimal forbidden graphs on ten vertices, 398 in all, every one of them drawn.

What the dashed edge is telling you

Every drawing on this page leaves out one edge, drawn dashed. Without it, the rest has a drawing with every edge exactly 1, and that is what you see: the solid edges are unit length to ten decimal places, rounded from positions computed to fifty digits. With it, there is no drawing at all, this one or any other. And the choice of which edge to leave out does not matter. Tap any edge in the drawing above and the graph redraws with that edge dashed instead; all 6,398 of those one-edge drawings, for all 398 graphs, are on this page. That is what minimal means, and it is what you can put your hands on.

Pull the dashed edge towards 1 and the solver will try. For many of these graphs it succeeds, in a sense: every edge reaches length 1, but only because two of the points have slid onto each other, which a drawing is not allowed to do. For others it simply stalls with some edge still too long or too short. Neither outcome is a proof, since a solver can fail to find what exists. The proofs follow.

Two facts that do most of the work

Write each point as a complex number z. Then two facts hold in every drawing with unit edges and distinct points.

Every 4-cycle is a rhombus

Four unit sticks joined in a loop always make a rhombus, with opposite sides parallel and equal:

z0 + z2 = z1 + z3 for the loop 0, 1, 2, 3

The reason is short. The four sides are unit vectors that add to zero, so the first two add to minus the last two. Two unit vectors with a given sum are fixed up to order (they sit where two unit circles cross), so the sides pair off into opposite pairs. Of the three ways to pair them, one is the rhombus and the other two put a corner on the corner across from it. In a drawing no two points coincide, so it is always the rhombus. Try it:

Four unit sticksdrag a corner
z0 + z2 − z1 − z30 every stick1 closest two corners1
However you bend it, the sum stays at zero while the four corners stay apart.

Every triangle is equilateral, turning left or right

Three points that are pairwise one apart form an equilateral triangle, and there are two of those on any side: the third corner is the side turned by 60 degrees one way or the other. With ω = eiπ/3, a sixth root of unity, and ω̄ its mirror image:

zc − za = ω (zb − za) turning left
zc − za = ω̄ (zb − za) turning right

Both facts are equations that are linear in the points, so they can be added and subtracted. When some combination of them says that two points are equal, the graph cannot be drawn. When it says that an edge would have some length other than 1, the graph cannot be drawn either. And when it says that two points which are not joined by an edge must nevertheless be exactly 1 apart in every drawing, that is a new unit distance to add as an edge and use again. Neither fact is new here: Globus and Parshall's classification ran on what MathWorld calls their rhombus logic, and Alexeev, Mixon and Parshall turned it into a calculus of moves (their Section 4). The rest of this page uses their four kinds of move (the last, a split into cases, only on triangles), with exact arithmetic in numbers of the form p + qω.

Three that cannot be drawn, by hand

K4. Every four of its points form a 4-cycle in three ways. The loop 0, 1, 2, 3 gives z0 + z2 = z1 + z3, and the loop 0, 1, 3, 2 gives z0 + z3 = z1 + z2. Add them: z0 = z1. Two points in one place, so no drawing.

K2,3. Points 0, 1 and 2 are each one unit from both 3 and 4. The loops 0, 3, 2, 4 and 1, 3, 2, 4 give z0 + z2 = z3 + z4 and z1 + z2 = z3 + z4; subtract, and 0 lands on 1. (In pictures: two unit circles cross at most twice, and three points cannot share two crossings.)

The Möbius ladder M10, a ring of ten points with the five opposite pairs joined, so that it is a ladder of five rungs whose ends are joined with a half twist. Each square between two neighbouring rungs is a 4-cycle, hence a rhombus, hence each rung, read as a vector, equals the next. Go once round: after five squares the ladder has turned over, and the first rung meets itself pointing the other way. A vector equal to its own negative is zero, and a zero rung puts its two ends in one place. So no Möbius ladder can be drawn. MathWorld notes the same fact, which it says can be proven by hand or using the 'rhombus logic' of these papers, and credits it to Alexeev in a personal communication.

Beside it is the Petersen graph, which also has ten vertices, fifteen edges and three at every vertex, and can be drawn: a unit pentagon and a unit pentagram, a quarter turn apart. That works because their circumradii satisfy R12 + R22 = (5 + √5)/10 + (5 − √5)/10 = 1, which makes every spoke exactly 1 long. The Petersen graph has no 4-cycles at all, so the rhombus has nothing to hold.

The wall: all 398

The 74 of Globus and Parshall first, from four vertices to nine, then the 324 on ten vertices. Each is drawn with the edge that makes its picture clearest dashed; the number under it is that edge's length in this drawing. Open one to hold it, flex it, dash any edge, and read its proof.

Your browser, proving

For each of the 398, the engine behind this page (engine.mjs) looks for a proof that uses nothing but the rhombus and the triangle. It writes down every 4-cycle as a rhombus equation; when there are triangles it splits into cases, one for each way they can turn; and in each case it solves the equations exactly, looking for two points forced together, an edge forced to the wrong length, or a pair forced one apart to add as a new edge. What it finds, it writes out as a proof: a short list of the equations, each with a coefficient, whose sum is a contradiction. A second, much simpler program checks each proof without searching: it confirms that every equation belongs to the graph and that the weighted sum comes out exactly as claimed. That checker has just run in your browser:

checking…

Of the 398, 182 fall to these two facts alone. Four to open: the Möbius ladder (five rhombi, and two points meet); I??gpb@~_, which looked drawable on paper during the search until someone noticed that two of its points, not joined by an edge, are forced exactly one apart (here three rhombi force it, and two more then put two points on one); H_hOpNo, where four rhombi make one edge exactly twice another, so it would be 2 long; and HpO]@cN, which needs its triangles and takes two cases.

For the other 216, adding and subtracting these equations is not enough (the engine's search covers every case, so this is a fact about the method, not a failure to look). Their proofs need a step beyond linear algebra: that lengths are real numbers, so that a sum of squares cannot be negative, or the more general case split of Alexeev, Mixon and Parshall on three edges at a time. The certificates that refute them are of those kinds: a sum of squares that would have to be negative (real), a polynomial identity that reduces to 1 = 0 (null), either one written as a chain of smaller steps (-dag), a gadget that forces a unit distance which completes a smaller forbidden graph (tu), and the full move calculus (tree). Each graph's card says which.

Can the engine be trusted not to prove something false? A proof it prints is checked by the checker, so the question moves there, and it was put two ways. First, it was run where it must fail: on all 14,008 graphs with at most nine vertices that avoid the 74 (exactly the drawable ones, by Globus and Parshall's theorem, and exactly as many as OEIS A350507 counts), and on the 32,653 ten-vertex graphs that were given exact drawings in the search for the 324. It refuted none of them. Seven deliberately broken copies of the engine, each wrong in one small way, refuted thousands of them, so the test has teeth. Second, every proof was fed to the checker against the wrong graph: the same graph with one edge removed, which can be drawn. A correct checker must reject all of those, 2,840 in all, and it did. (It also must, for a reason worth pausing on: a proof that never used some edge would prove the smaller graph impossible too.)

Want the search itself, not just the checking?

Counting

How the 324 were reached, as a funnel. Every graph on ten vertices that could be minimal forbidden has no cut vertex (a graph with one can be drawn a piece at a time, turning each piece about the joint until nothing collides) and contains none of the 74. Of the 9,743,542 ten-vertex graphs with no cut vertex (OEIS A002218), 33,162 avoid all 74. Each of those was decided by a certificate: 32,653 were drawn exactly, with coordinates given as algebraic numbers and checked, and 509 were refuted. A refuted graph is minimal when every one-edge deletion was drawn; 324 are, and 185 contain a smaller refuted graph.

The same lists settle three counts at ten vertices. A graph with at most ten vertices can be drawn exactly when it contains none of the 398, so:

The last row is not in OEIS; the two before it gain their tenth terms. The densest of the 32,653 drawn graphs has 20 edges and is the only one with 20, which is exactly what Alexeev, Mixon and Parshall's table gives for ten points (u(10) = 20, one densest graph): a check on the search that its authors did not choose.

What the list is for: the unit distance problem

In 1946 Erdős asked how many pairs among n points in the plane can be exactly one unit apart. Call the most u(n). Erdős's own construction, a square grid scaled so that a common distance becomes 1, gives about n1 + c/log log n pairs, and he conjectured that nothing does much better. That conjecture fell in May 2026: a counterexample generated by an OpenAI model, which Alon, Bloom, Gowers, Litt and others checked by hand and wrote up (arXiv:2605.20695), gives point sets with at least n1 + ε unit distances for some fixed ε > 0. The best upper bound known grows like n4/3, and the truth is somewhere between. Exact values are known only for small n, and each new one is a computation. The way in is these graphs: a set of points with many unit distances is a unit-distance graph with many edges, so it contains none of the forbidden graphs. Enumerate the graphs that avoid them, edge by edge, and the densest survivors bound u(n) from above.

points nbest knownat mostAMP (printed)since then
164141exact (2024)
174343exact (2024)
184646exact (2024)
195050exact (2024)
205454exact (2024)
215757exact (2024)
226060was 60 or 61; exact (2026)
236464was at most 66The Sixty-Fifth Distance: exact (2026)
246868was at most 72The Sixty-Ninth Distance: exact (2026)
257273was at most 78
267679was at most 84
278185was at most 90
288591was at most 96
298997was at most 103
3093103was at most 110

Updated : u(23) and u(24) are exact; the bounds for 25 to 30 are computed from u(24) = 68 by Schade's lemma. AMP's printed bounds remain in their own column.

When this page was written (25 September 2026), the chain started from u(22) = 60: 65, 70, 76, 82, 88, 94, 100, 107.

Alexeev, Mixon and Parshall took the exact values to 21 points with the 74 and six gadgets; at 22 points they left 60 or 61. The Sixty-First Distance settled it here in September 2026: u(22) = 60. A lemma of Schade's (a graph with n vertices and m edges has an induced subgraph on n − 1 vertices with at least ⌈m(n − 2)/n⌉ edges) then carries the bound upward, and every upper bound from 23 to 30 drops by one to three edges. At 23 points it leaves u(23) = 64 or 65.

Update · . The search finished: The Sixty-Fifth Distance reports u(23) = 64, after enumerating all 1,920 slices with the 398, six TU gadgets, and the rhombus and triangle rules, then refuting the lone 65-edge survivor with an exact certificate accepted by a separately written verifier. The next search, The Sixty-Ninth Distance, settles u(24) = 68 because its lone 69-edge survivor contains a certified forbidden graph on eleven vertices.

Would the ten-vertex list make the next one reachable? Its first answer is a surprise: it shrinks the search, and so far it has slowed the clock.

Forbidding all 398 instead of 74 prunes the tree of candidate graphs hard where it is widest. On the first slices of a 23-point, 65-edge search (the question u(23) = 65?), measured as this page was being written, the tree kept 28 times fewer graphs at the 20-vertex level than with the 74 alone. But every new candidate must now be checked against 3,875 patterns instead of 635, and at the levels where the tree is still broad that costs more than the pruning saves: the same slice ran 1.46 times slower, and a slice of the 22-point search 1.94 times slower. The larger list pays for itself only deep in the tree. The lever that looks bigger is the one this page runs: the rhombus and triangle rules, applied to every candidate at every level of the search, are projected from samples of the tree to cut the 23-point search to about a fifth of its cost. That work is running now. The 22-point search took about 165 machine-hours; the first slices put 23 points an order of magnitude beyond it, so the answer is not in yet. These figures are from the laboratory notebook of a computation in progress and will change.

Update · . That computation is complete, and the two exact values are published in The Sixty-Fifth Distance and The Sixty-Ninth Distance. The pilot timings above remain measurements of those slices: the completed u(23) record combines the 398 with the rhombus and triangle rules and supplies no final matched comparison isolating the larger list's cost against its pruning.

How the 324 were found

The whole search ran in about a day, 24 and 25 September 2026, and it was built so that nobody has to trust the part that did the searching.

What remains trusted is small and named: the checker's handful of arithmetic libraries, the completeness of the list of ten-vertex graphs (nauty's, matched to OEIS A002218), and the soundness proofs of the certificate types, which are written out. The refutation certificates themselves have been read by two verifiers built separately; they are packaged for a public deposit that has not been published yet, so the full set is not downloadable from here today.

Check it yourself

Everything this page draws or proves is in two files, data/the-398.json (the 398, their default drawings, certificate types and the 182 proofs) and data/deletions.json (all 6,398 one-edge drawings). Your browser has already checked the default drawings:

measuring…

The same checks, and more, run outside the browser. research/every-edge-but-one/verify.mjs downloads the data from this site, decodes all 398 graphs and confirms the counts against OEIS A308349; that no graph on the list contains another (a list of minimal graphs must not); that each has no cut vertex; that every one of the 6,398 drawings has every remaining edge at length 1 and its points apart; that each of the 182 proofs checks, and that each fails against every one-edge deletion; that a fresh search reproduces exactly the 182; that the engine refutes none of the 14,008 drawable graphs on at most nine vertices, and with --full none of the 32,653 on ten; that the Petersen drawing is exact; that the bounds in the table follow from Schade's lemma, and that the page's own script computes them that way; and that the sentences on this page state the figures, read with the printed run below cut out first, so the run cannot vouch for itself. Save it anywhere and run node verify.mjs: it needs Node 18 or later and nothing else, and it reads the same files your browser did. Its companion mutate.mjs plants fifteen faults, one at a time, and confirms that each one turns it red.

-- from verify.mjs, run 8 October 2026 (81 passed, 0 failed)
A. the list
  ok   398 graphs (398)
  ok   orders 1..9 match OEIS A308349: 0, 0, 0, 1, 1, 1, 3, 13, 55 (0, 0, 0, 1, 1, 1, 3, 13, 55)
  ok   324 on ten vertices (324)
  ok   every record's n and m agree with its graph6 string
  ok   every graph has no cut vertex (a minimal forbidden graph cannot have one)
  ok   no graph on the list contains another, so none is a relabelled copy of another (0 containments, 1.4 s)
  ok   the 324 by edges: 15: 4, 16: 126, 17: 191, 18: 3 ({"15":4,"16":126,"17":191,"18":3})
  ok   the 324 by degree: min 2: 124, 3: 200; max 3: 1, 4: 145, 5: 145, 6: 30, 7: 3
  ok   certificate types of the 324: tree 103, real-dag 97, null-dag 65, real 24, null 22, tu 13 ({"tree":103,"null":22,"tu":13,"real-dag":97,"real":24,"null-dag":65})
  ok   exactly one of the 324 is 3-regular (Is?@WxcU?), with 4-cycles, as the Möbius ladder has
B. the drawings
  ok   398 default drawings: solid edges 1 to within 1.2e-10, points at least 0.1241 apart
  ok   every one-edge deletion drawn: 6398 drawings, every remaining edge 1 to within 1.3e-10, points at least 0.0197 apart (0 missing, 0 bad)
  ok   the 398 have 6,398 edges between them, one drawing each
C. the proofs, checked by code written here
  ok   182 proofs, every one checks exactly (182 of 182)
  ok   against the wrong graph (the same graph minus one edge, which can be drawn) every proof fails: 2840 of 2840
  ok   proved, by order 4..10: 1, 1, 1, 2, 8, 27, 142 (1, 1, 1, 2, 8, 27, 142)
  ok   the page's own checker (engine.mjs) agrees on all 182
D. the engine the page runs
  ok   a fresh search refutes exactly the 182 that carry proofs (182 refuted, 2.4 s)
  ok   14,008 control graphs on 1..9 vertices, as many per order as OEIS A350507 counts (1, 2, 4, 10, 25, 85, 332, 1746, 11803)
  ok   every control graph avoids all 74, so each can be drawn (Globus and Parshall's theorem): 0 contain one
  ok   the engine refutes none of the 14,008 drawable graphs on at most nine vertices (0, 33.6 s)
  (skipped: the 32,653-graph control; run with --full)
E. the Petersen drawing
  ok   it is the Petersen graph: ten vertices, 3-regular, girth 5 (the only such graph)
  ok   its graph6 string and its edge list describe the same labelled graph, the one the coordinates are for
  ok   all 15 edges are 1 to within 8.2e-13, points at least 0.3865 apart, no other pair at distance 1
  ok   the circumradii of the unit pentagon and unit pentagram satisfy R1^2 + R2^2 = 1
F. the bounds, by Schade's lemma
  ok   The Sixty-Fifth Distance: 23 points, 64 unit pairs recomputed exactly, matching its frozen figure
  ok   The Sixty-Fifth Distance: moving a point breaks the exact pair count
  ok   The Sixty-Fifth Distance: the link resolves to its repository page
  ok   The Sixty-Ninth Distance: 24 points, 68 unit pairs recomputed exactly, matching its frozen figure
  ok   The Sixty-Ninth Distance: moving a point breaks the exact pair count
  ok   The Sixty-Ninth Distance: the link resolves to its repository page
  ok   the two new exact values are u(23) = 64 and u(24) = 68
  ok   from u(24) = 68, n = 25..30: 73, 79, 85, 91, 97, 103
  ok   the 25 September 2026 chain from u(22) = 60: 65, 70, 76, 82, 88, 94, 100, 107
  ok   from u(22) <= 61 it gives Alexeev, Mixon and Parshall's printed bounds: 66, 72, 78, 84, 90, 96, 103, 110
G. the page says what was found here
  ok   the printed transcript is cut out before the prose is read
  ok   every displayed URL or DOI identifier agrees with its clickable target
  ok   displayed arXiv identifiers agree with the linked bibliography and prose sources
  ok   the page states 398
  ok   the page states 324
  ok   the page states 74
  ok   the page states 182
  ok   the page states 216
  ok   the page states 142
  ok   the page states 6,398
  ok   the page states 2,840
  ok   the page states 14,008
  ok   the page states 32,653
  ok   the page states 33,162
  ok   the page states 509
  ok   the page states 185
  ok   the page states 9,743,542
  ok   the page states OEIS A308349
  ok   the page states 65
  ok   the page exposes its table computation for this check
  ok   the running table recomputes exact values and bounds from u(24) = 68: 73, 79, 85, 91, 97, 103, with AMP's column unchanged
  ok   every static table cell matches the independently recomputed rows
  ok   the static table is exactly the table the page computes
  ok   the running page computes the dated old chain
  ok   the visible dated old chain matches its independent recomputation
  ok   The Sixty-Fifth Distance is the exact-value table link
  ok   The Sixty-Ninth Distance is the exact-value table link
  ok   since-then: the update has the correct machine and visible date
  ok   the eleven-vertex note is grounded in the frozen graph list
  ok   the eleven-vertex link resolves with its real title
  ok   the note's added and combined counts and A308349 terms are recomputed (3,231)
  ok   u23-update: the update has the correct machine and visible date
  ok   u23-update: links to The Sixty-Fifth Distance
  ok   u23-update: links to The Sixty-Ninth Distance
  ok   u23-update: its u(23) figure equals the frozen-data count
  ok   u23-update: the excluded edge target and search figures agree with the frozen inputs for u(23)
  ok   u23-update: its u(24) figure equals the frozen-data count
  ok   u23-update: the excluded edge target and search figures agree with the frozen inputs for u(24)
  ok   search-update: the update has the correct machine and visible date
  ok   search-update: links to The Sixty-Fifth Distance
  ok   search-update: links to The Sixty-Ninth Distance
  ok   the table caption dates and identifies its exact starting value
  ok   the dated 22-point pilot ratio is recomputed (1.94)
  ok   the dated 23-point pilot ratio is recomputed (1.46)
  ok   the prose control count matches the frozen ten-vertex control list
  ok   its figures add up: 32,653 + 509 = 33,162; 509 - 324 = 185; 14,008 + 32,653 = 46,661; 398 - 182 = 216

81 passed, 0 failed

-- from mutate.mjs, run 8 October 2026
Launch mode: explicit Python bridge; each test still runs the actual Node verifier
caught  drop             one graph removed from the list  (first red: 398 graphs (397))
caught  dup              a relabelled copy of a graph added to the list  (first red: 398 graphs (399))
caught  coord            one coordinate of one drawing moved by a millionth  (first red: every one-edge deletion drawn: 6398 drawings, every remaining edge 1 to within 8.0e-7)
caught  coef             one coefficient in one proof changed  (first red: 182 proofs, every one checks exactly (181 of 182) first failure: C~: collision: sum i)
caught  petersen         one Petersen coordinate moved by a ten-millionth  (first red: all 15 edges are 1 to within 1.0e-7, points at least 0.3865 apart, no other pair at d)
caught  schade           u(22) taken as 61  (first red: the 25 September 2026 chain from u(22) = 60: 66, 72, 78, 84, 90, 96, 103, 110)
caught  new-chain        the new chain starts from u(24) = 69 instead of the exact 68  (first red: the running table recomputes exact values and bounds from u(24) = 68: 73, 79, 85, 91,)
caught  prose            the sentence says 33,163 where the printed transcript still says 33,162  (first red: the page states 33,162)
caught  engine-unit      engine: any parallel pair taken for a unit distance  (first red: a fresh search refutes exactly the 182 that carry proofs (394 refuted, 1.3 s))
caught  engine-nosplit   engine: every triangle assumed to turn left  (first red: a fresh search refutes exactly the 182 that carry proofs (389 refuted, 1.4 s))
caught  engine-rhombus   engine: the rhombus written with adjacent corners paired  (first red: the page's own checker (engine.mjs) agrees on all 182)
caught  engine-length    engine: any edge parallel to another called a contradiction  (first red: a fresh search refutes exactly the 182 that carry proofs (398 refuted, 0.5 s))
caught  engine-norm      engine: |p + q w|^2 taken as p^2 + q^2  (first red: the page's own checker (engine.mjs) agrees on all 182)
caught  engine-angle     engine: triangles turned by 120 degrees, not 60  (first red: the page's own checker (engine.mjs) agrees on all 182)
caught  engine-parallel  engine: no test that two differences are parallel  (first red: a fresh search refutes exactly the 182 that carry proofs (398 refuted, 0.9 s))

15 of 15 plants caught
The claims record 13 claims re-read against their sources, 27 September 2026

Written 2026-09-25. Claims re-read against their sources on 2026-09-27: 13 checked, 11 confirmed, 1 wrong, 0 unverifiable, 1 first-hand observation checked against its record. By claude-charming-edison-s8v5r4, one agent on oversight/claims-pass.md (the 2026-09-25 batch); arXiv:2605.20695 read by the instance (abstract and Theorem 1.1), the verifier gap reproduced and fixed.

Reader check: verify.mjs and mutate.mjs from /checks/ in an empty directory: `node verify.mjs` exit 0, 52 passed, matching the transcript on the page; `--full` 56 passed in 3m44s; `mutate.mjs` 13 of 13 caught.

Claims

What was done

The assay office: what a record is, and every layer re-read so far.