Chinese Checkers — the laws

Every normative claim in checkers-core, as a machine-checked law: formula, precise statement, plain-language meaning, and the evidence that establishes it. Generated from the link-time law registry by checkers-spec-gen.

← back to the game · source

43 laws 11 proven (Kani) 17 exhaustive 15 property-tested 15 chapters

Coverage

EvidenceLaws
proof (Kani)11
exhaustive17
property test15
total43

Every chapter's prose and every law come from checkers-core; the page is generated, never edited.

1Coordinates and directions

Every playable hole is identified by an axial hex coordinate $(q,r) \in \mathbb{Z}^2$, with the third cube coordinate implicit as $s = -q-r$.

Six directions connect adjacent holes:

$$D = {(1,0),\ (1,-1),\ (0,-1),\ (-1,0),\ (-1,1),\ (0,1)}$$

Two holes $u, v$ are adjacent exactly when $v - u \in D$. The listing above is in rotational order, so consecutive directions are $60^\circ$ apart. Only the set matters to the rules; the order is fixed so that direction indices are stable.

In the implementation, directions are an enumeration rather than a collection of vectors, which makes "there are exactly six directions" a structural fact: no seventh direction is representable.

d₀ = (1,0)d₁ = (1,-1)d₂ = (0,-1)d₃ = (-1,0)d₄ = (-1,1)d₅ = (0,1)
The six directions from a hole, in rotational order, each 60° from the last.

Laws

CC-DIR-INVOLUTIONproof (Kani)

$$\forall d \in D:\ -d \in D \ \land\ -(-d) = d$$

Statement. Directions come in opposite pairs, so adjacency is symmetric.

In plain terms. Every direction has an opposite: you can always step back the way you came.

2The central hexagon

The board's centre is a hexagon of radius four:

$$H_4 = {(q,r) \in \mathbb{Z}^2 : |q| \le 4,\ |r| \le 4,\ |q+r| \le 4}$$

It contains $1 + 6(1+2+3+4) = 61$ holes.

All three constraints are required. Dropping the bounds on $q$ and $r$ leaves $|q+r| \le 4$, which describes an unbounded diagonal strip rather than a hexagon.

H₄ as concentric rings of radius 0–4: 1 + 6·(1+2+3+4) = 61 holes.

Laws

CC-GEO-NONVACUOUSproof (Kani)

$$|H_4| = 61 \land \forall i:\ |C_i| = 10 \land |V| = 121$$

Statement. The hexagon, each camp, and the board are inhabited with their stated sizes.

In plain terms. The regions are real: 61 middle holes, 10 per camp, 121 altogether.

3The six camps

Six triangular camps of ten holes each surround the hexagon. Camp $C_0$ is seated flush against the hexagon's $q = 4$ edge:

$$C_0 = {(q,r) \in \mathbb{Z}^2 : 5 \le q \le 8,\ -4 \le r \le -(q-4)}$$

Its columns hold $4, 3, 2, 1$ holes, decreasing outward to a single apex at $(8,-4)$. The triangle therefore points away from the centre, and its four-hole base lies against the hexagon.

The orientation is the whole content of this chapter, and it is easy to get wrong. The inward-pointing variant

$$C_0^{\text{bad}} = {(q,r) : 5 \le q \le 8,\ -q+5 \le r \le 0}$$

also has ten holes per camp and also yields a 121-hole board, so every cardinality check passes. But it meets the hexagon at the single hole $(5,0)$ instead of along a four-hole edge, leaving the six camps dangling from the hexagon's corners. It is not a six-pointed star.

Cardinality alone cannot detect this. The distinguishing property is contact with the hexagon: a correct camp has four holes adjacent to $H_4$, contributing eight camp-to-hexagon adjacent pairs, whereas the degenerate one has a single contact hole and a single adjacent pair.

C₀H₄
Camp–hexagon contact: C₀'s four dark contact holes contribute the eight red adjacent pairs.
C₀ outward — four contact holes, eight pairs. The real star.
C₀bad inward — one contact hole, one pair. Not a star.

Laws

CC-GEO-BASE-CAMPexhaustive

$$C_0 = \{(q,r) : 5 \le q \le 8,\ -4 \le r \le -(q-4)\},\quad \text{columns } 4,3,2,1$$

Statement. Camp 0 occupies columns q=5..8 with 4,3,2,1 holes, apex outward at (8,-4).

In plain terms. The home camp fills four columns of 4, 3, 2 and 1 holes, pointing outward.

CC-GEO-CONTACTexhaustive

$$\forall i:\ \left|\{(x,y) \in C_i \times H_4 : y - x \in D\}\right| = 8$$

Statement. Each camp's four-hole base sits flush against a hexagon edge, giving eight contact pairs.

In plain terms. Each camp hugs the middle along exactly eight neighbouring pairs of holes.

CC-GEO-INWARD-BADproof (Kani)

$$\left|\{x \in C_0^{\text{bad}} : \exists d \in D,\ x + d \in H_4\}\right| = 1$$

Statement. The inward-pointing camp variant touches the hexagon at one hole, so it is not a star.

In plain terms. The wrong camp shape touches the middle at just one hole, and that is how you catch it.

CC-GEO-INWARD-CONTACTexhaustive

$$\left|\{(x,y) \in C_0^{\text{bad}} \times H_4 : y - x \in D\}\right| = 1$$

Statement. The inward camp has one hexagon contact pair, against eight for a correct camp.

In plain terms. A proper camp meets the middle at four holes; the wrong shape meets it at one.

4Rotation and opposite camps

The remaining camps are rotations of $C_0$. A $60^\circ$ rotation in axial coordinates is

$$R(q,r) = (-r,\ q+r)$$

and $C_i = R^i(C_0)$ for $i = 0, \ldots, 5$.

$R$ has order six, and $R^3 = -\mathrm{id}$. The second fact is the important one: it means the camp three positions away is the point reflection of the original,

$$C_{(i+3) \bmod 6} = -C_i = {-x : x \in C_i}$$

which is why a player's target is camp $i+3$ — it is geometrically opposite, directly across the centre.

Whether $R$ reads as clockwise or counter-clockwise depends on the rendering convention and is not fixed here. Nothing in the rules depends on the choice, only on $R$ having order six and the camps being indexed consistently.

Note that $R$ sends $(1,0) \mapsto (0,1)$, stepping backwards through the direction order of chapter 1. That is harmless but worth knowing when comparing indices.

C₀C₁C₂C₃C₄C₅RR³ = −id
R maps each camp onto the next; R³ maps each camp onto the one opposite, through the centre.

Laws

CC-GEO-OPPOSITEproof (Kani)

$$C_{(i+3) \bmod 6} = -C_i = \{-x : x \in C_i\}$$

Statement. A player's target camp is the point reflection of their start.

In plain terms. The camp across the centre is the mirror image of your own camp.

CC-GEO-ROT-EXACTproof (Kani)

$$\text{ord}(R) = 6:\quad R^6 = \mathrm{id} \land \forall k \in \{1..5\}:\ R^k \neq \mathrm{id}$$

Statement. The rotation has order exactly six: no smaller power is the identity.

In plain terms. Six turns bring every hole home, and no smaller number ever does.

CC-GEO-ROT-NEGproof (Kani)

$$\forall x \in \mathbb{Z}^2:\ R^3(x) = -x$$

Statement. Three rotations equal point reflection, which is why camp i+3 is opposite camp i.

In plain terms. Turn three times and every hole lands on the hole directly opposite the centre.

CC-GEO-ROT-ORDERproof (Kani)

$$\forall x \in \mathbb{Z}^2:\ R^6(x) = x$$

Statement. The 60-degree rotation has order six.

In plain terms. Turn the whole board six times and every hole is back where it started.

CC-GEO-ROT-STEPproof (Kani)

$$\forall k:\ R(d_k) = d_{k-1 \bmod 6}$$

Statement. Rotation maps each direction to its neighbour in the cycle.

In plain terms. One turn rotates each direction onto its neighbour around the cycle.

5The complete board

The board is the disjoint union of the hexagon and the six camps:

$$V = H_4 \mathbin{\dot\cup} C_0 \mathbin{\dot\cup} \cdots \mathbin{\dot\cup} C_5,\qquad |V| = 61 + 6 \cdot 10 = 121$$

A correct construction satisfies more than its cardinality. Each camp must meet the hexagon in exactly eight adjacent pairs; the board graph must be connected; and the whole board must be centrally symmetric, $V = -V$.

A useful end-to-end check is that all six players have the same number of legal moves in the initial position — fourteen on the standard board. This follows from six-fold symmetry, so it fails loudly if a camp is misplaced.

Rendering the construction is the fastest way to catch a mistake:

               5
              5 5
             5 5 5
            5 5 5 5
 4 4 4 4 . . . . . 0 0 0 0
  4 4 4 . . . . . . 0 0 0
   4 4 . . . . . . . 0 0
    4 . . . . . . . . 0
     . . . . . . . . .
    3 . . . . . . . . 1
   3 3 . . . . . . . 1 1
  3 3 3 . . . . . . 1 1 1
 3 3 3 3 . . . . . 1 1 1 1
          2 2 2 2
           2 2 2
            2 2
             2

Each row $r$ is drawn at horizontal offset $2q + r$. Opposite camps sit diametrically across the centre, as chapter 4 requires.

C₀C₁C₂C₃C₄C₅
V as the disjoint union of H₄ and the six camps C₀…C₅: 61 + 6·10 = 121 holes.

Laws

CC-GEO-CAMP-OFexhaustive

$$\forall x \in V:\ \mathrm{camp}(x) = i \iff x \in C_i,\quad \mathrm{camp}(x) = \bot \iff x \in H_4$$

Statement. Camp lookup agrees with camp membership on every hole.

In plain terms. Asking which camp a hole is in always agrees with the camp definitions.

CC-GEO-CARDINALITYexhaustive

$$|V| = 61 + 6 \cdot 10 = 121,\quad |H_4| = 61,\quad |C_i| = 10$$

Statement. Hexagon of 61 holes plus six camps of 10 gives 121 holes.

In plain terms. The board has 121 holes: 61 in the middle and 10 in each of the six camps.

CC-GEO-DISJOINTproof (Kani)

$$V = H_4 \mathbin{\dot\cup} C_0 \mathbin{\dot\cup} \cdots \mathbin{\dot\cup} C_5$$

Statement. The hexagon and the six camps are pairwise disjoint, so every hole is covered once.

In plain terms. Every hole belongs to exactly one region: the middle, or one camp.

CC-GEO-SYMMETRYproof (Kani)

$$\forall x:\ x \in V \iff -x \in V$$

Statement. The board is symmetric under point reflection through centre.

In plain terms. For every hole there is a matching hole straight across the centre.

6Players, pieces, and the initial position

Six players each own ten indistinguishable pieces. A position is an occupancy function

$$s : V \rightarrow P \cup {\varnothing},\qquad P = {0,\ldots,5}$$

with every hole holding at most one piece. Player $i$ starts with all ten pieces in camp $C_i$ and every other hole empty, so a valid position always has 60 occupied and 61 empty holes.

Player $i$'s target is the opposite camp, $O_i = C_{(i+3) \bmod 6}$.

starttarget
Player 0 starts with all ten pieces in C₀; the target is the opposite camp C₃.

Laws

CC-POS-INITIALexhaustive

$$s_0(v) = i \iff v \in C_i,\qquad s_0(v) = \varnothing \iff v \in H_4$$

Statement. Initially each player fills their own camp and the hexagon is empty.

In plain terms. At the start every camp is full of its own pieces and the middle is empty.

CC-POS-OCCUPANCYproperty test

$$\left|\{v : s(v) \neq \varnothing\}\right| = 60 \ \land\ \left|\{v : s(v) = \varnothing\}\right| = 61$$

Statement. Sixty holes are occupied and sixty-one empty, totalling 121.

In plain terms. Sixty holes are occupied, sixty-one are empty, and together they are the whole board.

CC-POS-PIECESproperty test

$$\forall i \in P:\ \left|\{v \in V : s(v) = i\}\right| = 10$$

Statement. Every player owns exactly ten pieces in every position.

In plain terms. Every player always owns exactly ten pieces.

CC-POS-TARGETexhaustive

$$O_i = C_{(i+3) \bmod 6},\qquad O_{O_i} = C_i,\qquad O_i \cap C_i = \varnothing$$

Statement. A player's target is the opposite camp, distinct from their start, and the pairing is mutual.

In plain terms. Your goal is the camp directly across the centre from where you start.

7Adjacent moves

A turn moves exactly one piece belonging to the active player, and is either one adjacent step or a sequence of jumps — never a mixture.

A piece at $x$ may step to $y$ exactly when

$$s(x) = i \ \land\ y - x \in D \ \land\ s(y) = \varnothing$$

that is, the destination is adjacent and empty. The piece vacates $x$ and occupies $y$; nothing else changes.

✕
A step goes to an adjacent empty hole; an occupied neighbour is not a destination.

Laws

CC-STEP-DISPLACEproperty test

$$y - x \in D \implies \mathrm{dist}(x,y) = 1$$

Statement. A step moves to an adjacent hole, never further and never onto a piece.

In plain terms. A step moves exactly one hole and lands on an empty one.

8Jumps

A piece at $x$ may jump in direction $d$ to $x + 2d$ exactly when the intervening hole is occupied and the landing hole is an empty board hole:

$$x+d \in V \ \land\ s(x+d) \neq \varnothing \ \land\ x+2d \in V \ \land\ s(x+2d) = \varnothing$$

The jumped piece is never captured or removed, and may belong to any player — legality depends only on the hole being occupied, not on who occupies it. The only occupancy changes are that $x$ becomes empty and $x+2d$ becomes the mover's.

Since $d \neq 0$, a jump displaces by $2d \neq 0$ and so can never land on its own origin. The jumped hole is exactly the midpoint of the hop.

xx+dx+2d
A jump crosses the occupied midpoint x+d and lands on the empty hole x+2d = x+(x+2d). The crossed piece is not captured.

Laws

CC-JUMP-ANY-OWNERexhaustive

$$\mathrm{jump}(x,d) \text{ depends on } s(x+d) \neq \varnothing, \text{ not on } s(x+d)$$

Statement. A piece may be jumped regardless of which player owns it.

In plain terms. You may jump over anyone's piece, yours or theirs.

CC-JUMP-DISPLACEMENTproof (Kani)

$$\forall x, d \in D:\ x + 2d \neq x \ \land\ 2(x+d) = x + (x+2d)$$

Statement. A hop moves by twice a direction; the jumped hole is exactly the midpoint.

In plain terms. A jump lands exactly two holes away, with the jumped hole in the middle.

CC-JUMP-NO-CAPTUREproperty test

$$s'(x+d) = s(x+d),\qquad \left|\{v : s'(v) \neq \varnothing\}\right| = \left|\{v : s(v) \neq \varnothing\}\right|$$

Statement. Jumping leaves the crossed piece in place and removes nothing.

In plain terms. Jumping never removes the piece you jumped over.

9Jump sequences and reachability

A turn may chain arbitrarily many jumps, all performed by the same piece, changing direction freely between hops. The player may stop after any jump; continuing is optional.

Legality is evaluated against the position produced by the preceding jumps. That statement is true but routinely over-read, so it is worth being precise about what does and does not depend on the evolving position.

Because a turn moves only one piece and jumps never capture, the occupancy of every other hole is fixed for the whole turn. Writing $\Omega$ for the occupied holes excluding the moving piece, a jump from the piece's current hole $x$ is legal exactly when

$$x+d \in \Omega \ \land\ x+2d \in V \setminus \Omega$$

Only $x$, $d$, and the fixed set $\Omega$ appear. Within a single turn, therefore, occupancy is a function of the moving piece's position, and the available jumps depend on that position alone. The moving piece can never block itself, since it is excluded from $\Omega$.

The consequence is practical: the set of reachable destinations is the forward closure of a directed graph fixed once per turn, so a breadth-first search over positions, with a single visited set, computes it exactly and always terminates.

It is tempting to conclude instead that the search must be keyed on the pair (position, board state), on the grounds that the board changes after each hop. That is a mistake. Within a turn the state is determined by the position, so such a key can never distinguish two visits that the position alone would not — while making the search appear to need unbounded state. A search keyed that way does not terminate.

Jump sequences genuinely may revisit holes, including the starting hole: with a blocker adjacent, a piece can hop out and straight back. The space of jump paths is therefore infinite, and any procedure enumerating paths needs an explicit guard — forbidding repeats within the current path is the natural choice. The space of destinations is finite regardless, which is all move generation requires. A turn is conventionally required to end somewhere other than where it began, since ending at the origin is indistinguishable from not moving.

12
One piece chaining two hops around blockers that never move: what is reachable depends only on the piece's position.

Laws

CC-JUMP-CLOSUREproperty test

$$\{y : x \leadsto_s y\} = \{\mathrm{last}(\pi) : \pi \text{ a simple jump route from } x\}$$

Statement. Breadth-first search over positions yields exactly the routes' destinations.

In plain terms. Everything reachable by any chain of jumps is found by exploring one jump at a time.

CC-JUMP-OMEGAproperty test

$$\Omega = \{v : s(v) \neq \varnothing\} \setminus \{x_0\} \text{ is invariant during a turn}$$

Statement. The other pieces never move during a turn, so available jumps depend only on position.

In plain terms. During your turn the other pieces stand still, so what you can reach depends only on where you are.

CC-JUMP-REVISITexhaustive

$$\exists s, x, d:\ x \rightarrow x+2d \rightarrow x, \text{ so the route space is infinite}$$

Statement. A piece can jump out and back, so unguarded route enumeration does not terminate.

In plain terms. You can jump out and straight back, so one turn may visit the same hole twice.

CC-TURN-HOP-CLOSUREproperty test

$$\{y : x \leadsto_s y\} = \text{closure of single hops from } x$$

Statement. Chaining single hops reaches exactly the destinations the closure allows.

In plain terms. Taking one jump at a time reaches exactly the places a whole chain would.

CC-TURN-HOP-ONEproperty test

$$\forall y \in H(s,x):\ \exists d \in D:\ y = x + 2d$$

Statement. Every single-hop destination lies exactly two holes away in one direction.

In plain terms. Every offered hop is a single jump, never two chained together.

CC-TURN-NO-NULL-MOVEexhaustive

$$\text{current} = \text{origin} \implies \neg\text{commit}$$

Statement. A staged turn whose piece is back at its origin cannot be committed.

In plain terms. A turn that ends where it began cannot be confirmed.

10Move representation and generation

A move is identified by its kind, origin, and destination — not by the route taken. Distinct jump routes to the same hole produce the same resulting position, so they are the same move; counting them separately inflates move counts and any search built on them.

A route may still be recorded for animation or notation, but it must be excluded from equality and hashing.

The complete legal move set for player $i$ is the adjacent steps from each of their pieces, together with one jump move per reachable destination.

Laws

CC-MOVE-DEDUPproperty test

$$M_{\text{jump}}(s,i) = \{(x,y) : s(x) = i,\ y \in J^{*}(s,i,x)\}, \text{ without repetition}$$

Statement. Move generation yields one move per reachable destination, with no duplicates.

In plain terms. There is exactly one move per destination you can reach.

CC-MOVE-IDENTITYexhaustive

$$m_1 = m_2 \iff (\mathrm{kind}, x, y)_1 = (\mathrm{kind}, x, y)_2$$

Statement. Two routes to the same hole are the same move, so routes are not part of identity.

In plain terms. A move is its start and its end; the path taken does not matter.

CC-MOVE-ONBOARDproperty test

$$\forall m \in M(s,i):\ x, y \in V \ \land\ s(x) = i$$

Statement. Every generated move starts on one of the player's pieces and ends on the board.

In plain terms. Every move starts on your own piece and ends on an empty board hole.

11Applying a move

Applying a move vacates the origin and occupies the destination. For a jump sequence, no intermediate hole is modified and nothing is captured, so

$$s'(x) = \varnothing,\qquad s'(y) = i,\qquad s'(z) = s(z)\ \ \forall z \notin {x,y}$$

Replaying a route hole-by-hole and applying this net effect therefore agree, which is what justifies identifying moves by destination rather than by route.

Laws

CC-APPLY-NETproperty test

$$s'(x) = \varnothing,\quad s'(y) = i,\quad s'(z) = s(z)\ \ \forall z \notin \{x,y\}$$

Statement. Replaying a route hole-by-hole gives the same position as applying the net effect.

In plain terms. Replaying a route hole by hole ends exactly where the move says.

12Turn order, passing, and termination

Turns proceed cyclically through the six players.

The rules do not guarantee the active player has a legal move. The situation is reachable: if a player's ten pieces fill a camp, opponents can occupy that camp's frontier holes and the holes beyond them, leaving no step and no jump available. Such a player still holds all ten pieces, so this is neither a win nor a loss.

This specification resolves it by passing: a player with no legal move forfeits the turn and play continues. If all six players pass in succession the position cannot change, and the game is a draw.

One consequence is that the active player is not simply the turn number modulo six, since passing advances the player without consuming a turn in that sense. Implementations should track the active player as explicit state rather than deriving it.

Rule sets differ here. Passing is the least intrusive convention; others forbid the blocking configuration outright, or oblige the blocking player to move aside.

Laws

CC-TURN-BLOCKEDexhaustive

$$\exists s, i:\ T_i(s) = \varnothing \ \land\ \left|\{v : s(v) = i\}\right| = 10 \ \land\ \neg\mathrm{Won}(s,i)$$

Statement. A player can have no legal move yet all ten pieces, which is neither a win nor a loss.

In plain terms. A player can hold all ten pieces and still have no move, which is neither a win nor a loss.

CC-TURN-CYCLEexhaustive

$$\mathrm{next}(i) = (i+1) \bmod 6,\qquad \mathrm{next}^6 = \mathrm{id}$$

Statement. Turn order cycles through all six players and returns.

In plain terms. Turns go around the table in order and return to the start.

CC-TURN-PASSexhaustive

$$T_i(s) = \varnothing \implies \text{pass};\qquad |\text{successive passes}| = |P| \implies \text{draw}$$

Statement. A player with no move passes; when every player has passed in a row, the game is a draw.

In plain terms. A stuck player passes, and a draw needs every player to pass in a row.

CC-TURN-PASS-RESETexhaustive

$$\mathrm{move}(s, i, m) \implies \mathrm{passes}(s \cdot m) = 0;\quad \text{draw} \iff \text{six passes in succession}$$

Statement. A played move resets the pass counter, so a draw needs six passes after it.

In plain terms. A played move resets the pass count, so a draw needs six passes in a row.

13The winning condition

Player $i$ wins by occupying every hole of the opposite camp:

$$\forall x \in C_{(i+3) \bmod 6}:\ s(x) = i$$

Since the target camp has ten holes and the player has exactly ten pieces, this is equivalent to all of their pieces having arrived. The game ends at the first position satisfying this for some player.

A win: every hole of the opposite camp C₃ holds player 0's pieces.

Laws

CC-WIN-CONDITIONexhaustive

$$\mathrm{Won}(s,i) \iff \forall v \in C_{(i+3) \bmod 6}:\ s(v) = i$$

Statement. A player wins exactly when every hole of the opposite camp holds one of their pieces.

In plain terms. You win by filling the opposite camp with all ten of your pieces.

14Position invariants

Every completed move preserves the following. Each player owns exactly ten pieces; exactly 60 holes are occupied and 61 empty; every hole holds at most one piece. No move creates, destroys, or transfers ownership of a piece — jumping is not capture.

Laws

CC-INV-PRESERVEDproperty test

$$(s, s') \in T_i \implies \forall j:\ \left|\{v : s'(v) = j\}\right| = \left|\{v : s(v) = j\}\right|$$

Statement. Every legal move preserves each player's piece count and total occupancy.

In plain terms. No move ever creates, destroys, or hands over a piece.

15Rule variants

Two points are deliberately left open, and an implementation must choose explicitly rather than letting the choice emerge from its geometry code.

Camp restrictions. This specification uses the unrestricted convention: camp membership imposes no additional movement constraint, so a piece may enter, leave, or move within any camp subject only to the ordinary rules. Some rule sets restrict occupation of an opponent's camp. Such a restriction belongs in a separate legality predicate, not embedded in the movement rules.

Blocked players. See chapter 12. This specification passes; other conventions exist.

Laws

CC-VAR-CAMP-FREEexhaustive

$$\mathrm{CampLegal}(s, i, m) \equiv \text{true}$$

Statement. Under the unrestricted convention a piece may enter, leave, or cross any camp.

In plain terms. Camps add no extra rules: any piece may enter, leave, or cross any camp.