mrly.net

The core

MrlyMath is two moves. Choose a rule that fills some corners of the parity cube {0,1}^D; substitute that rule into itself by the Kronecker product. The Sierpinski carpet, the Menger sponge, their siblings and their antis are all one choice in move one carried through the same move two. Fix the dimension and the whole universe of rules is finite and already there — 4 of them in 1D, 16 in 2D, 256 in 3D — so the designs are not designed, they are enumerated.

Every claim below carries a tag. Proved means a proof is given or restated here; Verified means recomputed from scratch for this page; Conjecture means neither.

Move one: a design is a parity rule

Fix a dimension D. A design decides, for each cell of an n^D grid, whether the cell is filled (1) or void (0), using only the parity of each coordinate. Equivalently, a design is a choice of which corners of the parity cube {0,1}^D are filled: a subset F of {0,1}^D.

That definition closes the universe immediately. The number of designs in dimension D is the number of subsets of a 2^D-element set, 2^(2^D): 4 in 1D, 16 in 2D, 256 in 3D, 65536 in 4D. (Proved; Verified by enumeration at D = 1..4.)

Move two: substitution

The fractal of a design at level L is its tile substituted into itself L times, substitution being the Kronecker product:

fractal(g, L) = g (x) g (x) ... (x) g      [L copies]

Because the construction is a pure Kronecker power, the fill count is multiplicative in the level: fill(n, L) = fill(n, 1)^L. The proof is one line — the sum of the entries of a Kronecker product is the product of the sums — so a single tile fixes a closed form for every level at once, and with it the fractal dimension log(fill) / log(n). (Proved; Verified for all 16 designs at D = 2 and all 256 at D = 3, at L = 2 and L = 3.)

Three designs make the point concretely at n = 3. (Verified: each tile built cell by cell from its parity rule, then Kronecker-substituted to L = 3.)

designDfill at n = 3fill at level Ldimension
mrly_0728 of 98^L of 9^Llog(8)/log(3) = 1.892789
mrly_023320 of 2720^L of 27^Llog(20)/log(3) = 2.726833
mrly_003312 of 2712^L of 27^Llog(12)/log(3) = 2.261860

The first row is the Sierpinski carpet, the second the Menger sponge. Neither was put in by hand; both fall out of a parity rule and one product.

The name is the rule

The core name of a design is not a word, it is the rule written as a number. Index the 2^D corners of {0,1}^D as c_0, ..., c_(2^D - 1) in binary order. A design F has code

i(F) = sum of 2^k over all k with c_k in F,    0 <= i(F) < 2^(2^D)

and is named mrly_i, zero-padded to the digit width of the dimension's largest code: one digit in 1D, two in 2D, three in 3D. The historical names survive only as aliases pointing at particular codes. In 3D, carpet and net are the single class mrly_023, tree is mrly_003, void is mrly_024. (Verified: each name's defining corner set was built from its definition and reduced to the smallest code in its symmetry class.)

That carpet and net collapse into one class at base 2 is not a slip. It is the same fact the fill-class census records in lab/census/fillclasses/, where only one of the two labels survives.

The universe is finite, and small up to symmetry

Designs that differ by a symmetry of the cube draw the same shape. The symmetry group is the hyperoctahedral group B_D of signed permutations, of order 2^D * D!, acting on the 2^D corners.

Ddesigns 2^(2^D)classes up to cube symmetry
143
2166
325622
465536402

(Verified three independent ways: a direct orbit walk over every code, a Burnside average (1/|B_D|) * sum over g of 2^c(g) that never builds an orbit, and the census script lab/census/fillclasses/census.py, whose base-2 cube group is the same B_D. All three agree at D = 1, 2, 3, 4.)

These counts are OEIS A000616, the number of NP-equivalence classes of Boolean functions, at offset -1, so that A000616(D) runs 3, 6, 22, 402, 1228158, 400507806843728 over D = 1..6. The match is an identity, not a coincidence — a design up to cube symmetry is a Boolean function up to permuting variables and flipping their parities — and the bijection is given in the bijection page. (Proved there; the terms are Verified here, the Burnside sum reproducing all of A000616(0..6) against the live OEIS entry.)

The Burnside form is what makes high dimensions tractable: it needs the cycle counts of the group, never the 2^(2^D) designs, so D = 6 is instant while listing its designs is impossible.

Three genera

A single parity constraint takes exactly three irreducible forms, and genus is a property of the shape, so it is constant on a symmetry class.

S inside {0,...,D}, filled where the popcount lies in S.

Dclassesisotropicaxial onlycompound
13300
26510
32210210

(Verified by testing each class orbit-wide rather than on its smallest member — a class counts as isotropic when some member is a level-set, which several 3D classes are without their canonical representative being one. The D + 1 pins are always present, but the pin of no axes and the pin of all D axes are also level-sets, which is why the axial-only column reads D - 1.)

The algebraic degree over GF(2) is a class invariant, and in 3D its histogram across the 22 classes is deg -1: 1, 0: 1, 1: 3, 2: 9, 3: 8. (Verified.) Degree does not detect a compound, though: the research notes describe compounds as the designs of degree 3 or more, and that is false already in 3D, where mrly_060 — fill iff exactly one of two named axes is odd — has degree 1 and is neither a level-set nor a pin. Genus and degree are independent invariants. (Verified.)

The 2D universe in full

Six classes, sixteen designs. (Verified: codes, degrees, rules and orbit sizes all recomputed; the orbit sizes sum to 16.)

namedeggenusruleorbitalias
mrly_00-1isoS = {}1
mrly_012isoS = {0}4
mrly_031axispin(y)4tree
mrly_061isoS = {1}2void
mrly_072isoS = {0,1}4carpet / net
mrly_150isoS = {0,1,2}1

One caution on reading any such table: the rule shown belongs to the canonical representative, the smallest code in the class. Parity flips are symmetries of the infinite tiling but not of a truncation to n cells, so the level-1 fill at a fixed n is not constant on a class — mrly_06 and its orbit-mate mrly_09 (the diagonal S = {0,2}) are the same design and fill differently at n = 3. What is invariant is the tail: the degree and leading coefficient of the fill, hence the fractal dimension. The same caveat is recorded against the census in the sequence ledger.

Structure, and what survives into high dimensions

Four structural facts, checked rather than supposed.

its class has popcount k, and 2^k - 1 is the smallest integer with k bits set. (Proved; Verified at D = 1..4.)

2^(2^D). In 3D the sizes are exactly {1, 2, 4, 6, 8, 12, 24} and sum to 256. (Proved; Verified at D = 3.)

code, and the canonical set is closed under it. Six 3D classes are self-complementary — codes 15, 23, 27, 30, 60, 105, among them the carpet mrly_023 — and 42 of the 402 classes at D = 4. (Verified at D = 2, 3, 4.)

(Verified at D = 1..8, by enumerating the 2^(D+1) level-sets and quotienting by the parity flips, which are the only part of B_D that moves a level-set design.) These eight terms are (2^(D+1) + 2^ceil((D+1)/2))/2 for odd D and one less than that for even D; that the pattern continues is a Conjecture, fitted rather than derived. The research notes give the formula without the even-D correction, and it overcounts by exactly one at D = 2, 4, 6, 8, where an extra pair of level-sets is identified by a parity flip.

That last line is the whole asymptotic story. The nameable classes — isotropic or axial — number at most 2^(D+1) + D + 1, since there are only 2^(D+1) level-sets and D + 1 pins to begin with, while the classes in total number at least 2^(2^D) / (2^D * D!), no orbit being larger than the group. The first bound is exponential, the second doubly exponential, so the fraction of classes that are isotropic or axial tends to 0. Almost every design is a compound. (Proved; the ratio of the two bounds is already 6.3 * 10^-5 at D = 5 and 3.4 * 10^-13 at D = 6, Verified.)

This is the precise content of the intuition that most designs look like noise. In the dimensions we can draw, the historical four and their level-set siblings are nearly the entire nameable world. The compounds are the ocean that only opens as D climbs.

Where the numbers live

The classification census — canonical representatives, orbit sizes, fill polynomials, three notions of algebraic degree, each design validated cell by cell against an independently rendered array — is lab/census/fillclasses/census.py, with its output in lab/census/fillclasses/census_sequences.csv and the per-dimension counts in lab/census/fillclasses/mrlymath_classification_counts.csv. Sequences that fall out of this construction, and the standard every one of them has to meet, are in the sequence ledger.