Same torus, bigger ambient group

3×3 torus patterns with quarter turns

Allow rotation as well as translation and the ambient group grows from 9 elements to 36 — and stops being abelian. That single change alters what a stabilizer even is: patterns in one orbit no longer share a stabilizer, they only share a conjugacy class.

The ambient group

The quarter turn r(a,b) = (−b, a) is an order-4 automorphism of (ℤ/3)², so it acts on the wrapped 3×3 grid. Together with the nine translations it generates

Γ = (ℤ/3)² ⋊ C₄, of order 36, acting faithfully on the nine cells.

A cell has orbit 9 and stabilizer of order 4 (the quarter turns about it), and 9 × 4 = 36 — the same frame-counting argument as for the square grid, with the four reflections dropped.

What changes

translations only with quarter turns
ambient order936
abelian?yesno
orbits of the 512 patterns6428
distinct stabilizer subgroups632
conjugacy classes of stabilizers66
patterns with nontrivial stabilizer26224

The new phenomenon

With only translations, the ambient group was abelian, so Stab(t·P) = t·Stab(P)·t⁻¹ = Stab(P) — orbit-mates had identical stabilizers. That fails here. Take the nine patterns with a single filled cell: they form one orbit, and each is fixed by the quarter turns about its own cell, so the orbit carries nine different subgroups of order 4, all conjugate.

That is why the table above shows 32 subgroups but still only 6 classes, and it is the same distinction that forces Conway’s G/H/K notation: the three colour stabilizers of an S₃ colouring are conjugate but distinct. The abelian torus cannot show it; this one can.

The six classes

Filled cells are 1, outlined cells are 0. Rows are ordered by stabilizer size; every pattern with a nontrivial stabilizer is drawn, grouped by orbit.

|K| = 36 — Γ itself

orbit size 1 2 orbits 2 patterns 1 subgroup in the class nonabelian

Stabilizer
Generated by C₃×C₃ ⋊ C₄, everything. The constant patterns. Nothing can distinguish any cell, so the whole ambient group fixes them.
Orbits
Orbit–stabilizer forces every orbit to have size 36 / 36 = 1. Here every pattern in an orbit has the same stabilizer.

orbit 1 · 1 patterns

orbit 2 · 1 patterns

|K| = 6 — S₃ — rows and columns

orbit size 6 2 orbits 12 patterns 6 subgroups in the class nonabelian

Stabilizer
Generated by three translations along a line, inverted by half-turns. A striped pattern. The stripe direction is preserved by translations along it and by half-turns about points on it, but a quarter turn tilts it.
Orbits
Orbit–stabilizer forces every orbit to have size 36 / 6 = 6. Here patterns in one orbit have conjugate but different stabilizers.

orbit 1 · 6 patterns

orbit 2 · 6 patterns

|K| = 6 — S₃ — diagonals

orbit size 6 2 orbits 12 patterns 6 subgroups in the class nonabelian

Stabilizer
Generated by three translations along a line, inverted by half-turns. A striped pattern. The stripe direction is preserved by translations along it and by half-turns about points on it, but a quarter turn tilts it.
Orbits
Orbit–stabilizer forces every orbit to have size 36 / 6 = 6. Here patterns in one orbit have conjugate but different stabilizers.

orbit 1 · 6 patterns

orbit 2 · 6 patterns

|K| = 4 — C₄

orbit size 9 6 orbits 54 patterns 9 subgroups in the class abelian

Stabilizer
Generated by quarter turns about a single cell. Patterns built from full quarter-turn orbits around one fixed cell.
Orbits
Orbit–stabilizer forces every orbit to have size 36 / 4 = 9. Here patterns in one orbit have conjugate but different stabilizers.

orbit 1 · 9 patterns

orbit 2 · 9 patterns

orbit 3 · 9 patterns

orbit 4 · 9 patterns

orbit 5 · 9 patterns

orbit 6 · 9 patterns

|K| = 2 — C₂

orbit size 18 8 orbits 144 patterns 9 subgroups in the class abelian

Stabilizer
Generated by one half-turn. Patterns symmetric under a 180° turn about a point, but nothing more.
Orbits
Orbit–stabilizer forces every orbit to have size 36 / 2 = 18. Here patterns in one orbit have conjugate but different stabilizers.

orbit 1 · 18 patterns

orbit 2 · 18 patterns

orbit 3 · 18 patterns

orbit 4 · 18 patterns

orbit 5 · 18 patterns

orbit 6 · 18 patterns

orbit 7 · 18 patterns

orbit 8 · 18 patterns

|K| = 1 — trivial

orbit size 36 8 orbits 288 patterns 1 subgroup in the class abelian

Stabilizer
Generated by nothing. Patterns with no symmetry at all.
Orbits
Orbit–stabilizer forces every orbit to have size 36 / 1 = 36. Here every pattern in an orbit has the same stabilizer.

288 patterns in 8 orbits of size 36 — not drawn.

Summary

classorbit sizeorbits patternssubgroups within an orbit
|K| = 36 — Γ itself1221same
|K| = 6 — S₃ — rows and columns62126conjugate only
|K| = 6 — S₃ — diagonals62126conjugate only
|K| = 4 — C₄96549conjugate only
|K| = 2 — C₂1881449conjugate only
|K| = 1 — trivial3682881same

Checks: orbit sizes are exactly 36 / |K|; the orbit total is 28, matching Burnside’s lemma over Γ independently; and the pattern total is 512.

Why the four lines became two classes

In the translation-only version the four line subgroups — rows, columns, and the two diagonals — were four separate rows, fused only by GL(2,𝔽₃) at the classification level. The quarter turn is now inside the group: it carries rows to columns and each diagonal to the other. So they merge into two classes of six subgroups each, and the merging happens in the ambient group rather than in the equivalence on groups.

Note also that the striped stabilizers are S₃, not C₆: three translations along the stripe, inverted by the half-turns about points on it. The smallest nonabelian group appears here without being asked for.

Generated by scripts/generate_torus_patterns_c4.py. Companion to the torus tutorial and the translation-only pattern page.