Companion to the torus tutorial

Symmetric patterns on the 3×3 torus

Colour each of the nine cells 0 or 1. There are 512 patterns, and only 26 of them have any translational symmetry at all. Here is every one, sorted by its stabilizer and then by orbit.

The funnel

The other 486 patterns have trivial stabilizer — 95% of them — falling into 54 orbits of size 9. Generic patterns have no symmetry, which is why searching over patterns is a poor way to find groups.

The five rows

Filled cells are 1, outlined cells are 0. Because the ambient group is abelian, every pattern in an orbit has exactly the same stabilizer, not merely a conjugate one, so each row below is a union of whole orbits.

K = A

|K| = 9 index 1 2 patterns 2 orbits of size 1

Stabilizer
Generated by X, Y. Every translation fixes the pattern, so the pattern is constant.
As an equivalence relation
Two cells are equivalent when nothing is distinguished agrees — one coset — the whole torus.
Orbits
The ambient group has order 9 and the stabilizer has order 9, so every orbit has size 9 / 9 = 1. The 2 patterns fall into 2 orbits; patterns in one orbit are translates of each other and share this stabilizer exactly.

orbit 1 · size 1

orbit 2 · size 1

K = ⟨Y⟩ — rows

|K| = 3 index 3 6 patterns 2 orbits of size 3

Stabilizer
Generated by Y = (0,1), the column shift. Sliding along a row changes nothing, so each row is uniform.
As an equivalence relation
Two cells are equivalent when a mod 3 — the row index agrees — three cosets — the three rows.
Orbits
The ambient group has order 9 and the stabilizer has order 3, so every orbit has size 9 / 3 = 3. The 6 patterns fall into 2 orbits; patterns in one orbit are translates of each other and share this stabilizer exactly.

orbit 1 · size 3

orbit 2 · size 3

K = ⟨X⟩ — columns

|K| = 3 index 3 6 patterns 2 orbits of size 3

Stabilizer
Generated by X = (1,0), the row shift. Sliding down a column changes nothing, so each column is uniform.
As an equivalence relation
Two cells are equivalent when b mod 3 — the column index agrees — three cosets — the three columns.
Orbits
The ambient group has order 9 and the stabilizer has order 3, so every orbit has size 9 / 3 = 3. The 6 patterns fall into 2 orbits; patterns in one orbit are translates of each other and share this stabilizer exactly.

orbit 1 · size 3

orbit 2 · size 3

K = ⟨XY⟩ — diagonal

|K| = 3 index 3 6 patterns 2 orbits of size 3

Stabilizer
Generated by XY = (1,1). Stepping down-and-right changes nothing; the stripes run diagonally.
As an equivalence relation
Two cells are equivalent when (b − a) mod 3 agrees — three cosets — three diagonal stripes.
Orbits
The ambient group has order 9 and the stabilizer has order 3, so every orbit has size 9 / 3 = 3. The 6 patterns fall into 2 orbits; patterns in one orbit are translates of each other and share this stabilizer exactly.

orbit 1 · size 3

orbit 2 · size 3

K = ⟨XY²⟩ — anti-diagonal

|K| = 3 index 3 6 patterns 2 orbits of size 3

Stabilizer
Generated by XY² = (1,2). Stepping down-and-left changes nothing; the stripes lean the other way.
As an equivalence relation
Two cells are equivalent when (a + b) mod 3 agrees — three cosets — three anti-diagonal stripes.
Orbits
The ambient group has order 9 and the stabilizer has order 3, so every orbit has size 9 / 3 = 3. The 6 patterns fall into 2 orbits; patterns in one orbit are translates of each other and share this stabilizer exactly.

orbit 1 · size 3

orbit 2 · size 3

Summary

stabilizer|K|index patternsorbits orbit size
K = A91221
K = ⟨Y⟩ — rows33623
K = ⟨X⟩ — columns33623
K = ⟨XY⟩ — diagonal33623
K = ⟨XY²⟩ — anti-diagonal33623
K = {0} (not shown)1 948654 9

Orbit sizes obey orbit–stabilizer exactly: |orbit| = 9 / |K|. Summing 2×1 + 8×3 + 54×9 = 512 recovers every pattern, and 2 + 8 + 54 = 64 recovers the Burnside count of patterns up to translation.

Counts for larger alphabets

Nothing above is special to two values. Writing q for the alphabet size, Möbius inversion over the subgroup lattice {0} < four lines < A gives closed forms, since a pattern with stabilizer containing K is a function on the [A:K] cosets.

qK = A
(q)
each line
(q³ − q)
all four lines trivial
(q⁹ − 4q³ + 3q)
total (q⁹)
22624486512
3324961958419683
4460240261900262144

The q³ − q reads directly: a line-stabilized pattern is a function on three cosets, so choices, minus the q constant ones whose stabilizer is really all of A.

Six subgroups, three types

The four line rows above are one GL(2,𝔽₃) orbit — one line per slope 0, 1, 2, ∞ — so as types there are only two nontrivial cases, the constant pattern and the striped one. The four rows look different because a shear relates them, and a shear is an automorphism of the torus but not a symmetry of the square grid. The torus tutorial names all six subgroups three ways: as stabilizers, by generators, and in Chaim Goodman-Strauss’s colour notation.

Generated by scripts/generate_torus_patterns.py.