Indexin · range · stride · stripe · sieve
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.
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.
a ≤ n ≤ bWhich addresses are eligible at all.(n − α) mod s = 0Which regularly spaced ones take part. α is the origin and stays fixed.((n − φ) mod λ) < wWhich bands take part. In address order, which is not a straight line in space.((n ⊕ m) mod p) ∈ DWhich are removed, or given another role. D is the dropped residues.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.
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.
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.
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.
Three more from the same law, changed only where the law meets the ground.
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.
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.
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 →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 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 →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 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 →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 →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 →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.