Chapter 7 · Section 4
Order in Space: Lattices, Néel Crystals, Stripes, Wigner and Space-Time Crystals
The BPT law
BPT Part 1.9 (The UniSpheral Grid) gives the grid these lattices live on: the Local Pixel Count, 4 · 2^L pixels a side at level L, the same count the game uses for its field. BPT Part 3.2 (Pulse Radius, The First Fold, and Recursive Constraints) gives the UniSpheral First Fold Function, F(n) = (n + 1)² mod n, "the primordial act of cosmic self-regulation" that turns unbounded growth into "stable, repeatable patterns", drawing on "crystallographic symmetries". In the cell rule the fold is local: as Part 3.15 states it, "a pulser whose eight neighbours all share its phase folds back to null (the First Fold, Part 3.2)". Part 1.1 adds that "String × Time Crystal → Spacetime structures (geometric-temporal coupling)", and Part 3.6 names Spacetime Genesis, the fourth Data Nova, where "three spatial axes and one temporal axis cohere into a stable four-dimensional lattice".
The code ties each family to one of these (states.js:49–53). The pulse lattice goes to "Local Pixel Count (ch 1 Part 1.9)" and the Néel crystal to "The First Fold (ch 3 Part 3.2): no cell may sit among its own phase". Smectic stripes also go to Part 3.2, the Wigner lattice to the "Pre-Pulse Field (ch 1)", and the space-time crystal to "Spacetime Genesis (ch 3 Part 3.6)". BPT does not state a lattice test. The test is a game method, and it serves BPT's First Fold: it finds the repeatable patterns the fold leaves standing.
The established physics
A crystal is a pattern that repeats under a lattice of translations. A two-dimensional lattice has a reduced basis, its two shortest independent translations, found by the Lagrange–Gauss reduction named in the code. That reduction is standard. Néel order is the antiferromagnet's checkerboard, in which nearest neighbors are in the opposite phase. A smectic liquid crystal has layered order in one direction only. A Wigner crystal is a lattice of lone charges held apart, here lone pulses in null. A space-time crystal is ordered in space and also beats slower than its drive. All are standard condensed-matter terms. The code cites no paper for them.
The game's math
Candidate shifts (lattice(per) states.js:267). The test uses every shift (dr, dc) with 0 ≤ dr ≤ 4 and −4 ≤ dc ≤ 4, taken in the half-plane (dr > 0, or dr = 0 and dc > 0), with dr² + dc² ≤ 20. Shifts are sorted by length. That gives 4 + 9 + 9 + 7 + 5 = 34 shifts.
Agreement and erosion. For each shift s, on the current frame cur, wrapping on the torus:
agree_s(i) = 1 if cur(i) = cur(i + s), else 0
eroded_s(i) = 1 only if agree_s = 1 at every cell of the 9 × 9 square centered on i (R = 4)
The erosion is a box sum along rows and then columns. The comment gives its purpose: the square must be "big enough to hold a whole tile of any lattice tested (shifts up to radius 4.5), so empty null cannot pass for a lattice".
Lattice of a cell. The test looks only at pulser cells and at cells constant over the window (per = 1). For each such cell it takes v₁, the first shift (shortest) that survives erosion, and v₂, the first later surviving shift not parallel to v₁ (a · d − b · c ≠ 0). reduceBasis(v₁, v₂) (states.js:94) applies Lagrange–Gauss reduction. It swaps so that |u| ≤ |v|, sets v ← v − round(u·v / u·u) · u, and repeats until the multiplier is 0 or 64 rounds have passed. It then signs and orders the pair so one lattice has one name. Cells with the same reduced basis share a lattice id.
Regions (scan step 2, states.js:359–383). The 4-connected components of cells with the same lattice id are the candidate regions. A region is kept only if all of these hold:
tile = |a₁·b₂ − b₁·a₂| (cells per tile, the basis's determinant)
box height and width ≥ 3 · max(1, min(|v₁|, |v₂|)) (three tiles along each direction)
cells ≥ 9 · tile and cells ≥ 36
at least one pulser, and tile ≠ 1 (the void is not a crystal; one cell repeated is uniform)
Its family is chosen in this order:
- space-time crystal if more than half its cells are slow (per ≥ 3);
- Néel if both basis vectors are (±1, ±1);
- smectic if a basis vector has length 1 and tile = 2;
- Wigner if fewer than half its cells are pulsers;
- pulse lattice otherwise.
Its period is the period of a slow cell for a space-time crystal, and 2 for every other family. The signature is FNV of family | tile | latticeKey | period. latticeKey() (states.js:110) takes the least reduced-basis name under the square's eight symmetries, so horizontal and vertical stripes are one species.
Rarity. Wigner is tier 3. A pulse lattice is tier 4 if its tile is 6 cells or more, otherwise 3. Néel and smectic are tier 2 at 1024 cells or more, otherwise 1. A space-time crystal is tier 5 if its period is 6 or more, otherwise 4 (states.js:67–71).
Worked case. A checkerboard of opposite-phase pulsers agrees under (1, 1) and (1, −1). Those two vectors reduce to the basis {(1, −1), (1, 1)}, with tile = |1·1 − (−1)·1| = 2. A 40 × 40 patch has 1600 cells, which is at least 36 and at least 18, and its box is at least 3 · √2 ≈ 4.2 on each side. So it is a Néel crystal of 1600 cells, tier 2.
The shifts tested here reach √20 ≈ 4.5 cells. A lattice whose shortest repeat is longer is taken up by step 4, which looks for repeats up to 12 cells (Part 7.5).
In the game
These orders form in the universe epoch wherever the rule leaves the field repeating in space, and like the beats of Part 7.3 they are recorded, not drawn. A player may see a checkerboard or stripes in the field itself, since the 2D grid and the torus skin show every cell, but no outline marks the region the detector found.
Each lands in the Collection under "states of the field" with its sentence, for example "Néel crystal · tile of 2 cells · 1,600 cells", and a space-time crystal adds its beat: "Space-time crystal · a 6-flip beat · tile of 4 cells · N cells" (finds.js:49). Their notice icons, with the notices on, would be ▦ Néel, ☰ smectic, ⬡ pulse lattice, ⁘ Wigner and ⌗ space-time (states.js:49–53). The run summary names up to four of the kinds found in its "◇ N states:" chip (app.js:2795).
If the first sighting of a pattern anywhere in PulseCore were shown, the discovery card would list its tile among its facts as "N cells · tile" (app.js:1861), and its physics line would read "In physics: antiferromagnetic order: every neighbour pulses in the opposite phase. In the book: The First Fold (ch 3 Part 3.2): no cell may sit among its own phase." Under QUIET that card does not open (Part 7.7).
The scale model
Exact on the drawn field: no scale model.
Where the game and the theory differ
- The Néel family's physics line says "every neighbour pulses in the opposite phase" (states.js:49), and the test asks for a basis of (±1, ±1) shifts. On the 8-cell neighborhood the cell rule uses, a checkerboard cell's four diagonal neighbors share its phase and only the four side neighbors are opposite. The fold rule BPT Part 3.15 states needs all eight to share the phase, so a checkerboard does not fold, which is what "no cell may sit among its own phase" relies on.
Fixed numbers
| Number | Where | What it is | Kind |
|---|---|---|---|
| 4, −4, 20 | states.js:271–273 | Shift search box and radius² (34 shifts). Longer repeats are not tested | CAP |
| 4 (R), 9 × 9 | states.js:287 | Erosion square, sized to hold one tile of the longest shift tested | METHOD |
64 (guard) |
states.js:97 | Safety bound on reduction rounds. Lagrange–Gauss ends far sooner | METHOD |
| 3 (tiles), 9 · tile, 36 | states.js:368 | Three tiles along each direction; minimum region | METHOD |
| 1 (tile) | states.js:372 | One-cell tile is uniform, not a lattice | METHOD |
| 1, 2 (Néel, stripe tests) | states.js:374–375 | Basis shapes that define Néel and smectic order | METHOD |
| 2 (half of cells) | states.js:376, 379 | Majority tests for space-time and Wigner | METHOD |
| 1024 | states.js:71 | Néel/smectic size for tier 2 | DISPLAY |
| 6 (tile), 6 (period) | states.js:67, 70 | Tier cut-offs for lattice and space-time | DISPLAY |
| 3, 4, 5 (tiers) | states.js:67–70 | Fixed tiers of Wigner, lattice, space-time | DISPLAY |