Six bells can be rung in 720 orders, and English ringers have been trying to ring every one of them exactly once since the 1600s. We set two programs the same task on one old method. The one that asked "which move next?" found 7,880 answers in two minutes. The one that asked "what can the moves never change?" found all 492,000 in a few seconds.
In 1886 the Cambridge booksellers Macmillan and Bowes published a pamphlet whose title is also its abstract: A Note on Grandsire Triples, Showing That the Construction of a Peal of Grandsire Triples by Means of Plain Leads and Common Bob Leads Only Is Impossible. Its author, W. H. Thompson, described himself on the title page as "sometime of the Bengal Civil Service, and formerly scholar of Gonville and Caius College, Cambridge." In it he proved that one of the most popular ways of ringing seven bells can never reach all 5,040 of their orderings using only plain leads and the ordinary bob. He did not prove it by trying compositions, which by hand would have been hopeless. He proved it by reasoning about what plain leads and bob leads can and cannot do together.
That move, reasoning about what the moves can and cannot do before searching over them, is the whole of this essay. We tested it on a small, real ringing problem, and the difference in speed was not a matter of percentages.
English change ringers ring a tower's bells in rows: each bell sounds once in a row, and the next row may swap only adjacent bells. Starting from rounds (123456 on six bells), the ambition since the seventeenth century has been the extent. Wikipedia's summary of the early practice puts it plainly: to "start from rounds, produce every possible change (an 'extent') once and once only" and come back to rounds. Fabian Stedman's Tintinnalogia (1668, with Richard Duckworth) and Campanalogia (1677) set down the art in print.
In the language a developer would use, an extent is a Hamiltonian cycle. The rows are vertices, the allowed swaps are edges, and the ringers want a tour that visits every vertex once and returns home. The mathematicians who study it say so directly. Michael Haythorpe and Andrew Johnson's 2019 paper on Erin and Stedman Triples calls peal composition "a similarly constrained (but not previously considered) form of the Hamiltonian cycle problem". They report that "the instances known to have solutions provide exceptionally difficult instances of HCP". Whether Erin Triples can be rung bobs-only "is still an open problem".
Ringers do not search that graph row by row, and they never did. They ring methods. A method is a fixed pattern of swaps that carries the bells through a lead, a block of rows ending at a lead end, where the conductor may call a bob or a single to change a swap or two. A composition is then a list of calls, one per lead end, not a list of 720 rows. The method is already a piece of structure, invented by people who could not afford brute force.
We took Plain Bob Minor, a six-bell method, and a precise question. An extent of 720 rows is 60 leads of 12 rows each. At every lead end the conductor chooses a plain lead, a bob or a single, and a composition is true if no row is ever rung twice. How many true extents come back to rounds with exactly two singles?
First, brute force. A depth-first search tried the three choices at each of the 60 lead ends, abandoning a branch the moment a row repeated, and counted every true extent with exactly two singles. In its first two minutes it found 7,880, after visiting 122,368,000 positions in the search tree. It found its first answers in a third of a second, and then it kept on finding them at about the same unhurried pace. Left running, it had 63,124 of the 492,000 after 15 minutes, about 13 percent, and had visited more than 900 million positions. Its speed also depends on the machine: a second run, under a different load, had 7,320 at the two-minute mark.
A note on the headline. An early estimate put the brute force at 49,179 in two minutes. We could not find that run. A similar search that counts extents with any number of singles found 48,454 in two minutes on our machine, but that is a different finish line: it also counts compositions with four or six singles. We wanted both programs racing to the same one, so every number here counts extents with exactly two singles.
Second, ask what two leads can share. A lead's 12 rows are not scattered: they overlap with exactly one other lead in the whole method, and that other lead rings the same 12 rows in reverse order. We checked all 120 possible leads. So the question "is any row rung twice?" is really a much smaller one: has any of 60 pairs of leads been used twice? The truth check shrinks from a set of 720 rows to a 60-bit mask.
Third, ask what a call cannot change. Every row is an even or an odd permutation of rounds. A plain lead and a bob both keep the parity of the lead head, the first row of each lead, and a single flips it. Of the 120 lead heads, 60 are even and 60 are odd, and a lead and its reverse always share parity. So any true extent rings exactly 30 even leads and 30 odd ones. With two singles it has a fixed shape: some even leads, a single, all 30 odd leads, a single, and the rest of the even leads back to rounds.
Fourth, count the halves. The search now splits into two small, independent searches:
Joining an even run to an odd run wherever the two singles connect them gives the full count: 492,000 true extents with exactly two singles. One implementation counted them in about two seconds; an independent rewrite, on a busier machine, took 4.4. Then we rang every one of the 492,000 row by row, 720 rows each, and found 0 false. The count came out the same with the other common form of single (1456).
The brute force was never slow code. It asked a question with no structure in it, "which call next?", sixty times over, and every false branch cost it the same effort as a true one. The structured count asked two different questions first: what can two leads share, and what can a call not change. The answers turned one search over 60 three-way choices into two searches over 29 two-way choices each, and the work went from 13 percent in a quarter of an hour to all of it in seconds.
Thompson's 1886 pamphlet reasons the same way about a harder problem. Grandsire Triples has 5,040 rows. Instead of searching, he proved from the structure of plain leads and bob leads that no composition of them can ring all 5,040, so no amount of searching could ever find one. In 1948 R. A. Rankin recast the result in the language of permutation groups, in "A campanological problem in group theory" (Proceedings of the Cambridge Philosophical Society, volume 44).
The ringing result carried more mathematics than its audience noticed. In a 2001 paper on Hamiltonian paths in directed graphs, David Austin, Heather Gavlas and Dave Witte point out that Rankin "implicitly gave a necessary and sufficient condition for the existence of a hamiltonian cycle in the cartesian product of two directed cycles; however, this result went unnoticed by graph theorists." Thirty years later, they continue, William Trotter and Paul Erdős "rediscovered the characterization" in 1978. A question about bells had settled a question about graphs a generation before the graph theorists asked it.
Haythorpe and Johnson's modern search makes the same point from the computing side. Their method also starts by splitting: "The original problem can be partitioned into smaller instances", which is what the parity split did for us.
Leave the singles out, and a conductor using only plain leads and bobs can never leave the 60 even lead heads: those calls cannot change parity. So a bobs-only touch can use at most 30 of the 60 pairs, 360 rows, half the extent. That is why Plain Bob Minor needs singles to ring all 720.
Those 60 even lead heads have a shape. Draw each as a point, with a line wherever a plain lead or a bob takes one to another, and you get a network with the symmetry of the icosahedron's rotations. Every point has four lines. There are 12 pentagons, one for each plain course (five plain leads bring the bells home), and 20 triangles, one for each place where three bobs in a row do the same. No two points are more than six steps apart. And each lead's reverse, the lead that rings its own rows backwards, is always the single farthest point from it: its antipode, every time, for all 60.
It is tempting to name the shape: 60 points, four lines each, 120 lines in all. The rhombicosidodecahedron has exactly those counts, and it is the comparison that suggests itself. So we built the solid from its coordinates and ran an exact isomorphism test. It is not the same graph. The solid has 30 square faces and a diameter of 8. The bell graph has no four-sided cycles at all, and its diameter is 6. Counting the same things and having the same structure are different claims.
One more measurement, because it keeps us honest. True bobs-only touches, rung from rounds and back without repeating a row, come round at every length from 1 to 30 leads except eight: 1, 2, 4, 7, 8, 11, 28 and 29. The top of that list is striking, because 140 different touches reach the full 30 leads. None stops at 28 or 29.
Our first guess was that a conservation law explains the gap. We looked and did not find one:
So the gap is a measured fact without an explanation. By the argument of this essay, it points at an invariant that, to our knowledge, nobody has named yet.
The two programs did not differ in cleverness of code. They differed in the question each asked before it started searching. Run on our case, the step looks like this.
The brute force reached 7,880 in two minutes because it could only ask "which call next?" The structured count asked two other questions, and each one took the same form: what do these moves leave unchanged?
Neither question needs the answer you are looking for. You can ask both of any search that is grinding: of a scheduler, a route planner, a test-case generator, a puzzle solver. List the moves, then look for what they cannot change: a count, a parity, a set that two moves can never both touch. Thompson did it with pen and paper in 1886 to prove a goal impossible. We did it in 2026 and counted 492,000 compositions in a few seconds; the brute force, given two minutes, found 7,880. The invariant is the algorithm.
Every count in this essay was checked twice: by two independent programs, and by re-ringing all 492,000 extents row by row. The Agent Trust Stack builds that habit in for AI agents: verification against a real check rather than the agent's own report, a provenance record of what the agent actually did, and ratings earned from a verified track record.
pip install agent-trust-stack npm install agent-trust-stack
Or start with the provenance record alone: Hosted Chain of Consciousness.