Indexin · range · stride · stripe · sieve

Ranges become places.

Lars Rocha's law: give every element of a world a stable integer address, choose which ones take part with a handful of named integer rules, and build under shared boundary constraints. The same recipe and the same address give the same place, whatever order you ask for it in. Every wall on this page can tell you why it exists.

The law

Four filters over a nonnegative address n, combined with AND. Leave one out and it is 1. The stride keeps its own origin, so narrowing the window you are looking at does not restart the pattern.

And the repeat: with h the bit length of the mask, the pattern repeats every lcm(s, λ, p, 2ʰ) addresses. A valid repeat length, not necessarily the smallest.

Try it here

This runs the real law, the same code the worlds below run. The worked example from Lars's document is loaded: the range 10 to 30, every third address from 10, XOR mask 2 modulo 4, dropping residue 0.

The law, deciding

…

The same law, as a code

…

An IX1 code carries the law's version, its address convention and its ten parameters, with a checksum that catches a code mangled in transit. It is not a signature. The same code reads in Python, in Node, in the workbench, and in Wander.

Six ranges written in the selection

Each of these is a whole landscape with no noise in it anywhere. For a column and a lane, count how many of the last few addresses the law keeps; that count is the tier the ground stands on. The lane's address is the zigzag of its coordinate, so a signed lane becomes a nonnegative one and the range is symmetric about the centre line. Because the ground is the law, you can say exactly how far a range runs before its skyline comes round again: lcm(the law's period, the ramp's cell), a number you check rather than trust.

Green terraced ridges in repeating bands running to the horizon, with blocky near chunks in the foreground
The Indexin Terraces Stride seven, mask five, modulo four, dropping residue zero. The bands you can see marching away are the law's own pattern standing up as ground. the skyline repeats every 56 columns · lcm(56, 8) = 56
Rolling green mesas and benches with rivers cutting through them, lakes and sand banks
The Sieve Range A stride of seven, a stripe of eleven and a sieve of thirteen under a mask of 255. Rivers cut it, and hamlets, villages and a town stand along them. 256,256 columns before it repeats
Wide plateaus and gorges under a clear sky
The Long Count Stride nine, stripe twenty-five, sieve forty-nine, mask 4,095. Four small numbers whose least common multiple is larger than anyone will walk. 45,158,400 columns before it repeats
Inside a courtyard behind a village doorway in the Sieve Range
And you can walk inside Every hamlet and village along the rivers has a lit doorway, and behind it nine courtyards compiled from that settlement's own column. The range and the rooms are the same four decisions at two scales. press E at a doorway
The Rule panel open on the Indexin Terraces, showing the column, its rank and the law
Ask the ground why The Rule panel follows the crosshair and reads out the column, its rank, the run, the square remainder, the selection that put the tier there, and how far this skyline runs before it repeats. the full stop key

Three more from the same law, changed only where the law meets the ground.

A green plateau with dark trenches cut through it in a repeating grid
The Indexin Canyons The Sieve Range with its sign flipped: subtracted from a plateau instead of added to the ground, so every address the law keeps carves down. Benches become gorges. Nothing changed but a minus. landMul: −1 · 256,256 columns
A blue channel with sand banks winding between green terraced islands and blocky woods
The Sieve Isles The same counting with the ground dropped under the water line, so the tiers that would have been hills are islands and everything the law drops is sea. Reeds and sand banks along every shore. 58% water · 44,352 columns
The Sieve Rally, a driving world over the terraced benches
The Sieve Rally Sixteen gates around the benches, in a car, a buggy or a tank. Every terrace edge is a jump that is where it is because of an XOR, and the same ground runs the same way on every lap. press G for the garage

Vehicles work in all six: press G for a hovercraft, a buggy, a plane or a tank, and the Rule panel keeps answering while you fly. Six worlds, one law, six sets of four numbers.

Where else the law builds

Each of these is the same four decisions, realized by a different renderer. Nothing below is a picture of a world: it is the world, generated from an address while you look at it.

WebGL

Walk into a courtyard

Every hamlet and village in a vale has a lit doorway. Press E and the courtyard behind it is compiled from that settlement's own column: the range from its square remainder, the stride and the storeys from its ruler rank, the mask from the world's word. Stairs wind round the levels, turning with the mask. Look at any wall to read its rule.

Open the Sixfold Vale and press E →
no WebGL needed

The same courtyard, on a canvas

The identical records drawn by a CPU painter, for a browser without WebGL. Orbit it, tap a triangle for its address and rule, or walk the ground floor. The engine is shared, so the two renderers cannot drift apart.

Open the builder →
nine blocks

A neighbourhood that agrees on its edges

Nine courtyards, each compiled from its own address, with the street running on through every block and the doors meeting at the same place on every facade. Each edge record comes from a shared key, so a block never has to ask its neighbour what it built.

See the nine →
press the full stop key

Why is the ground what it is?

The Rule panel follows your crosshair and answers for whatever is under it: the column, its rank, the edge run, the square remainder, the hill the law raised there, the river's cut, how the height adds up, and whether the prize law puts a prize on that column. No lookups, no noise, just the arithmetic.

Open the Ruler Hills and press . →
a hunt you can prove

Today's law hunt

A hunt is a selection law over the region's prize columns, set by the date, the same for everyone. The Warp panel states it, stars the prizes that qualify, and hands you the law as a code. You work out where the next one must be rather than sweeping the map.

Open the Warp panel →
Graphics → Town lights

Villages lit by the law

Each settlement gets its own law from its address, and a window is lit when the pattern holds at its index plus the clock. The lights move and repeat with the law's period, and no village is ever wholly dark, because the stripe's slot can never be the dropped residue.

Open a law world and choose Indexin →

Read it, run it

private preview

The law workbench

Lars's law with nothing built on top: set a recipe, watch each address pass or fail its four decisions in order, pin two recipes against each other, move the view without moving the pattern, and export what you selected.

Open the workbench →
the card

The law, written down

One card: the arithmetic, both languages' signatures, what the fixtures hold, what is proved and what is not. Lars's own law document sits beside it, and the library's constitution says a law is not in until both twins agree with one fixture.

Read the card →

Whose work this is. The Indexin addressing, the ruler, the range, the stride, the stripe, the sieve and the grouping are Lars Rocha's, as are the courtyard and the worlds they build. He directed every part of this, and the implementation was done with Claude and with Codex, the way CREDITS.md describes every AI's part in the project. Everything here is in sitoolz: standard library only, no third-party runtime, so anyone who imports it has the whole law locally.

What is honest about it. The repeat length is valid, not necessarily the smallest. An address stripe runs in index order and is not a straight corridor in space. The nine blocks of a neighbourhood agree on their edges within one frame; two windows recentred on different settlements do not yet agree about a block they share, and that is the next piece of engine work, not a thing this page claims. Addresses are exact integers within the domain both languages share.