# Dependent bases - 2026-09-14 [Proved] The collapse theorem: for one root `r >= 2`, bases `base_i = r^(e_i)` with `i = 1..m`, any dimension `dim >= 1` and any digit sets `A_i` inside `{0,...,base_i - 1}^dim` each containing `0`, put `M = lcm(e_1,...,e_m)` and `B = r^M`; then `cap_i F(base_i, A_i) = F(B, A)` exactly, where `A = (cap_i F(base_i, A_i)) cap [0, B)^dim` is the joint set's own bottom block, the count law is exact at `card {n in [0, B^level)^dim : n in F(B, A)} = (card A)^level` for every `level >= 0`, and the attractor of `{x -> (x + a)/B : a in A}` has Hausdorff and box dimension `log card A / (M log r)`. Proof in four steps: `e_i` dividing `M` makes every `e_i`-group of base-`r` positions sit inside one `M`-group, so no group straddles and `lcm` is forced rather than chosen; each digit at base `base_i` is then a function of one base-`B` digit, so the constraint is per base-`B` digit with nothing carried between them; the top base-`B` digit is read with its full `M / e_i` base-`base_i` digits while the base-`base_i` expansion of `n` stops at its top nonzero digit, so the two readings agree exactly when `0 in A_i`; and membership one digit at a time gives the count with no error term while the maps send the unit cube to boxes with disjoint interiors, so the open set condition gives the dimension. No step uses `dim = 1` and no step asks `A_i` to be a product across the `dim` axes, so `dim >= 2` is covered with no extra hypothesis, compound designs included. Across two dependence classes the theorem says nothing. Witness: lab/py/base-collapse verbs `blocks`, `dim`, `check`; `bases.md:92`, `bases.md:101-107`. - 2026-09-14 [Proved] Multiplicative dependence is an equivalence relation on bases `>= 2` and each class is the set of integer powers of its least member: reading a base by its vector of prime exponents turns `p^a = q^base` into parallel vectors, so a class is the set of integer points on one ray through the origin, its least member `r` is the primitive vector on that ray and every member is `r^e` for one integer `e >= 1`; transitivity is one line, `p^a = q^base` and `q^c = s^d` give `p^(ac) = s^(bd)`. The half of the rule that follows is collapse first: partition the bases into dependence classes and replace each class by the single design the collapse theorem gives it, with its own base `r^M`, its own digit set and its exact dimension; a transversality budget inside a class is not allowed, by the Refuted row below. Witness: lab/py/base-collapse verb `blocks`; `bases.md:88`, `bases.md:126`. - 2026-09-14 [Verified] Four dependent cells rebuilt from their digit sets alone, root, exponents, `M`, block set and exact dimension: base `4` on `{0,1}` with base `8` on `{0,1,2,3}` gives `r = 2`, `M = 6`, `A = {0,1,16,17}` and dimension exactly `1/3`; base `4` on `{0,1}` with base `16` on `{0,1,4,5}` gives `M = 4`, `A = {0,1,4,5}` and exactly `1/2`; base `9` on `{0,1,2}` with base `27` on `{0,...,8}` gives `r = 3`, `M = 6`, nine blocks and exactly `1/3`; bases `4, 8, 16` on `{0,1}`, `{0,1,2,3}`, `{0,...,7}` give `M = 12`, sixteen blocks and exactly `1/3`. The block set is built twice per cell and asserted equal, once by sieving all `r^M` base-`r` words against the per-group constraint and once by testing every integer below `r^M` for membership in each original design. Witness: lab/py/base-collapse verbs `blocks`, `dim`; `bases.md:115-120`. - 2026-09-14 [Verified] The exact count law survives brute force to `10^13` on all four cells, three checks each: every element of `F(B, A)` below `10^13` passes a digit test in each original base; the joint count from enumerating the lowest-dimension original design (`2^22 - 1` elements at three cells, `3^14 - 1` at the base-9 cell) and filtering it by the others equals the count of `F(B, A)` below `10^13`, which with the first check gives set equality, the four counts reading `32767`, `4194303`, `19682`, `32767`; and the joint count below `B^level` is exactly `(card A)^level` at every `level` with `B^level <= 10^13`, reaching `level = 7` and `16384`, `level = 10` and `1048576`, `level = 4` and `6561`, `level = 3` and `4096`. Witness: lab/py/base-collapse verb `check`; `bases.md:124`. - 2026-09-14 [Verified] A dependence class can give a block count that is not a power of its root, so the exact dimension can be irrational: base `4` on `{0,1,2}` with base `16` on the full digit set gives `r = 2`, exponents `2, 4`, `M = 4` and `card A = 9`, dimension `log_2(9) / 4 = log_2(3) / 2`. The dimension is `log_r(card A) / M` always, and for the least base `r` of the class it is rational exactly when `card A` is a power of `r`, since a primitive `r` is no perfect power. Witness: lab/py/base-collapse verb `dim` cell `I`; `bases.md:107`. - 2026-09-14 [Verified] The hypothesis `0 in A_i` is sharp and not decoration: at `r = 2` with `base_1 = 2` on `A_1 = {1}` and `base_2 = 4` on the full digit set, `M = 2` and the bottom block is `A = {0, 1, 3}`, yet `F(4, A)` holds `4`, `5`, `12` and `13`, whose base-2 words carry a digit outside `A_1`, so the collapse strictly over-counts the joint set. Witness: lab/py/base-collapse verb `blocks`; `bases.md:105`. - 2026-09-14 [Conjecture] Budgeting across the collapsed classes alone, with `m` the number of classes and not the number of bases, is the right second step: nothing here shows a collapsed class behaves in a cross-class budget like an ordinary design of the same dimension, so the step is assumed. Witness: `bases.md:126`; no proof and no lab verb. - 2026-09-14 [Refuted] The naive budget `sum_i dim A_i - (m - 1)` is not an upper bound on a multiplicatively dependent cell and is low on every one tested: base `4` on `{0,1}` with base `8` on `{0,1,2,3}` has exact dimension `1/3` against a budget of `1/2 + 2/3 - 1 = 1/6`; base `4` on `{0,1}` with base `16` on `{0,1,4,5}` has exact dimension `1/2` against a budget of `1/2 + 1/2 - 1 = 0`; base `9` on `{0,1,2}` with base `27` on `{0,...,8}` reads `1/3` against `1/6`; and the three-base cell `4, 8, 16` reads `1/3` against `max(0, 1/2 + 2/3 + 3/4 - 2) = 0`, the budget being read at zero because no dimension is negative and the raw sum there is `-1/12`. The second cell is the clean failure: `F(16, {0,1,4,5}) = F(4, {0,1})` as sets, since a base-16 digit lies in `{0,1,4,5}` exactly when both of its base-4 digits lie in `{0,1}`, so the budget prices the intersection of a set with itself at dimension `0` while the truth is that set, of dimension `1/2`. A budget built on transversality cannot be applied inside a dependence class. Witness: lab/py/base-collapse verbs `dim`, `check`; `bases.md:113`, `bases.md:115-120`.