The parameter was the difference
Assumes: The parities, in size order · Taking from several heaps at once
The parities, in size order found that sorting bounded Moore’s Nim heaps largest first and reading off their parities settles the game completely on five heaps, at every width of move, and that the losing words form a linear subspace — closed under exclusive-or, dimension four, two, one and one as the width rises. It closed on what a subspace without a map is:
The losing words are a subspace at every width and no map is known whose kernel they are … if the conditions at three, four and five heaps are one family with the heap count as a parameter, the family is a theorem in waiting.
The map exists at every heap count in reach, four conditions cover all of them, and they are one family — with a parameter the rung below did not consider.
The equations
For each heap count and each width , the losing words are computed from play — a position loses when the player to move loses under optimal play — and the linear functionals vanishing on them are enumerated and row-reduced. That is a small computation over a set of at most 64 words, and it produces the equations rather than testing a guess at them.
At six heaps with the equations are , , , , — every parity equal to the smallest heap’s, so every parity equal. At five heaps with , the same condition on five bits. At four with and three with , the same again.
At five heaps with the equations are , , : the parities pair off from the smallest heap upward, each pair agreeing, and the pairs’ values exclusive-or to nought, with standing alone at the top. At six heaps with , exactly that on six bits with three full pairs.
One detail of the computation matters for what the equations mean. The functionals are enumerated over all non-zero masks and then row-reduced, so what is printed is a canonical basis of the whole space of conditions rather than one arbitrary set of them. Two cases in the same family therefore have equations that can be compared directly, which is the only way the same condition at two lengths is a checkable statement rather than a resemblance.
Four conditions, and one is not like the others
Four conditions cover all thirteen settled cases.
Every width of one. A move takes a single counter from a single heap, so nothing but the total parity can matter and the sorting does nothing at all: the losing words are exactly those with an even number of ones. One equation, at every heap count.
Every parity equal. The losing words are and and nothing else.
Every parity but the smallest heap’s equal, and the smallest heap even. Losing words and .
The parities pair off from the smallest heap upward. Each pair agrees and the pairs exclusive-or to nought; when the heap count is odd the largest heap’s parity is a block on its own.
Each is checked rather than fitted: the condition is written as a predicate, applied to all words, and the set it produces is compared with the losing set computed from play. Thirteen agreements, no near misses.
Which variable indexes them
The rung below expected the heap count to be the parameter, and it is not.
Hold at three and change the heap count: five heaps with and six with have the same condition, written at five bits and at six. Hold the heap count at six and change the width: , and give three different conditions.
So the family is indexed by — the number of heaps less the number a move may touch — and the heap count enters only as the length of the word. That is not a small correction. It says the game’s structure is about how many heaps a move must leave alone, which is a quantity neither the rung below nor taking from several heaps at once had reason to name.
Read that way the conditions line up in a sensible order. At a move may touch all but one heap, and the condition is the strongest one there is: every parity equal. At it is nearly that, with the untouchable heap’s parity pinned. At the parities are only constrained in pairs. Each extra heap the mover cannot reach loosens the condition by one step.
The failure is not where it looked
One case in fourteen does not settle. At six heaps with , only 33 of the 64 parity words are uniform: the other 31 hold both won and lost positions, covering 924 of the 1,716 positions swept. The word does not decide the game and there is no subspace to find.
The rung below found that failure and read it as a fact about the heap count — it fails at six heaps, so the boundary is in the number of heaps rather than in their size. Six heaps was simply where the sweep first reached it.
Read against it is the fourth family failing to exist. Six heaps with is , and every settled case has or . Six heaps with , and all settle perfectly well.
A claim about seven heaps
The two readings differ on a heap count neither has seen, which is the useful kind of disagreement.
The word fails at six heaps predicts that all six widths on seven heaps fail. The word fails when and predicts that seven heaps with and fail, and that , and settle — with the conditions already written down: pairs from the smallest heap, all-but-the-smallest equal, and every parity equal.
Seven heaps of at most seven counters is 1,716 positions per width, which is the same order of arithmetic as the sweep here. So the reading is refutable by one afternoon’s computation, and this page does not do it, because a prediction stated before the measurement is worth more on a ladder than a prediction verified in the same paragraph that proposes it.
What a player would do with this
The conditions are short enough to be usable, which is unusual for a result on this anchor, and it is worth spelling out what using one looks like.
A player facing six heaps with a width of five sorts the heaps, reads the six parities, and asks whether they are all the same. If they are, the position is lost and there is nothing to do; if they are not, some move makes them the same, and the move is found by trying. With a width of four the question is whether the top five agree and the smallest is even. With a width of three it is whether the parities pair off from the bottom with the pairs cancelling.
None of that requires the heap sizes, only their parities and their order — and the order of the parities is the order of the sizes, which a player has in front of them. So the condition is genuinely readable off a position at a glance, which is the standard Bouton’s sets for an impartial game and which very little else on this site meets.
What is missing is the second half of Bouton’s achievement. His theorem names the move as well as the condition: change the largest heap whose leading bit is set. Nothing here does that, and the reason is the sorting — a move changes a parity and may also move that heap past another, so the effect of a move on the word is not a fixed bit flip. Finding a move to a losing word is a search over the moves available, and on six heaps with a width of three that is a search over a few dozen.
Why the conditions are kernels at all
It is worth asking why a linear condition should appear here, because Moore’s own theorem is not a linear condition and this game is not Moore’s.
Taking from several heaps at once is Moore’s Nim proper, where a move takes any amount from up to heaps and the losing condition is that every binary column of the heap sizes sums to nought modulo . That is a condition on residues, not a subspace over the two-element field, and it says nothing about order.
Bounding the amount taken to one counter changes the game completely. Only parities can change, so a position is its parity multiset as far as play is concerned — except that it is not, because the sorting matters. The rung below established that: 11100 loses and 11010 wins, and both have three odd heaps.
So the object is a word rather than a multiset, and a condition on a word that is closed under exclusive-or is a linear condition. The subspace is not an accident of small cases; it is what a losing set looks like when the moves act on the word by flipping bits. What is genuinely surprising, and what this page cannot explain, is that the sorting survives at all — flipping a bit can reorder the heaps and so permute the word, and there is no obvious reason for the losing set to be closed under exclusive-or once permutations are in play.
Nim and the nim-sum is the shape all of this is measured against: a losing set that is a kernel rather than a count, with a strategy falling out of the map. The strategy here does not fall out, and that is the honest limit of the analogy.
The shape of the correction
Two rungs in a row on this anchor have now found a boundary in the wrong variable, and the pair is worth reading together.
The wider move is the easier game established that raising the width makes the game simpler rather than harder, which is already counter-intuitive. The rung below found the parity word settling everything at five heaps and failing at six, and drew the natural conclusion. This page finds that the failure tracks the width as well, in the combination , and that at six heaps three of the four widths are fine.
The general trap is a common one and it is worth naming plainly: a sweep that raises one parameter at a time finds boundaries in that parameter. The rung below swept at a fixed heap count and then extended to six heaps at one width; both readings are consistent with its data, and the one it reported is the one its sweep was shaped to suggest. What separates them is a case where the two variables disagree, and the sweep here contains three of those — six heaps at , and , all of which settle and all of which the six heaps breaks it reading forbids.
That is not a criticism of the rung below, which reported a boundary at the edge of its data and said so. It is a description of what an extra column buys: the same measurement in two variables rather than one, and a parameter that could not have been seen in either alone.
What this does not settle
The equations are found, and there is no theorem. Thirteen cases with a condition each, four templates covering them, and no argument for why the template at should be pairs. A theorem would derive the condition from the move rule; this page derives it from the losing set.
The sweep is small in both directions. Heaps up to nine counters at three to five heaps and up to seven at six, which is what the recursion affords. Nothing here says the conditions survive a larger heap cap, though the rung below checked the five-heap case to thirteen counters and it did.
The family is a family of one condition and many cases, and it fits the pattern only in the sense of not contradicting it. At the sorting is irrelevant, so the game is not really the same game, and putting it in the table alongside the others is a convenience rather than a claim.
The four templates were written after the equations were seen. They are descriptions of thirteen row-reduced matrices, checked against those matrices by regenerating the losing set from each template — which is a real check and is not the same as having predicted them. The prediction this page does make is the one about seven heaps, and it is made in the right order.
And a kernel is not a strategy. Knowing the losing words tells a player which positions to hand over and not how to reach one. On five heaps with there are four losing words and 364 losing positions, and finding a move to one of them from a given position is a search that the condition does not shorten. A bound instead of an answer is the standing statement of that gap on this site.
Normal play throughout. The player who cannot move loses, and under misère play none of this survives — the rung two below measured what the ending convention costs on this exact game.
One number worth carrying
The dimensions are the compact summary of the whole table, and they fall in a pattern the equations explain.
At and the losing set has dimension one — two words, whatever the heap count. At it has dimension two, four words. At it has dimension , half of all words. So as the width falls from its maximum, the losing set doubles each step until the word stops working altogether.
That doubling is a statement about how hard the game is to lose. On six heaps with a width of five, two of the sixty-four words lose and a player has to hit one of them exactly; with a width of three, four of them do. A wider move is a game with fewer losing positions and therefore, oddly, a game in which it is harder to hand a loss over — which is a third reading of the wider move is the easier game and the first one on this anchor that is a count rather than a comparison.
Where the ladder goes next
The moores-nim anchor has seven rungs: Moore’s rule, the count of residues, the patch that generalised, the wider move being the easier game, the count of odd heaps, the word the sizes make of them, and now the map that word is the kernel of.
The rung above is the seven-heap sweep, and this page has deliberately not run it. Six predictions are written down — two failures and four conditions, each with its equations — and the computation that settles all six is the same one that produced this table with a larger heap count in it. A ladder is in an unusually good position when its next rung is a prediction rather than a question, and the reason to leave it is that a prediction checked in the same session as it is made is indistinguishable from a fit.
Two neighbours are worth the trip. The parities, in size order is where the word was found and where the subspace was noticed, and it is the page whose loose end this one ties. And the patch that generalised is the one repair on this anchor that survived contact with a wider sweep, and it is worth reading beside a reading whose whole content is that a boundary was in the wrong variable.
Part 7 of 8
One argument about Moores-nim. The parts either side of it:
What links here
Essays that reach for this one mid-argument — the half of a link its own author cannot write down.
The objects named here
The third axis, after the field and the series: the games, values and theorems themselves, and every essay that touches each one.
BoutonCounterexampleEnumerationImpartialInvariantLinear codeMoores-nimNimNormal playParitySecond-player winStrategy
- The count of odd heaps counterexample, enumeration, impartial, invariant, moores-nim, nim, normal play, parity, strategy
- A symmetry that is not a pairing counterexample, enumeration, impartial, invariant, normal play, second-player win, strategy
- Looking for the symmetry counterexample, enumeration, impartial, invariant, parity, strategy
- The check that was not a check counterexample, enumeration, impartial, invariant, normal play, strategy
- The dual was the value table enumeration, impartial, linear code, normal play, parity, second-player win
- The pairing the formula hides enumeration, impartial, nim, normal play, parity, second-player win