erdos-problems 0.3.2 → 0.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/package.json +1 -1
  2. package/packs/number-theory/problems/848/BOUNDED_VERIFICATION_PLAN.md +46 -0
  3. package/packs/number-theory/problems/848/BRANCH_COMPARISON_LEDGER.md +85 -0
  4. package/packs/number-theory/problems/848/CERTIFIED_NUMERICAL_LEDGER.md +88 -0
  5. package/packs/number-theory/problems/848/EXACT_SMALL_N_1_2000_CERTIFICATE.md +55 -0
  6. package/packs/number-theory/problems/848/EXACT_SMALL_N_1_2000_RESULTS.json +102531 -0
  7. package/packs/number-theory/problems/848/EXTERNAL_VERIFICATION_LEDGER.md +56 -0
  8. package/packs/number-theory/problems/848/EXTRACTION_CHECKLIST.md +31 -4
  9. package/packs/number-theory/problems/848/FRONTIER_NOTE.md +39 -8
  10. package/packs/number-theory/problems/848/INTERVAL_WORK_QUEUE.yaml +43 -0
  11. package/packs/number-theory/problems/848/LEMMA21_EXPLICIT_BOUND.md +200 -0
  12. package/packs/number-theory/problems/848/LEMMA21_TRUNCATION_SCAN.md +111 -0
  13. package/packs/number-theory/problems/848/LEMMA22_EXPLICIT_BOUND.md +133 -0
  14. package/packs/number-theory/problems/848/LEMMA22_PRIME_COUNT_BOUND.md +58 -0
  15. package/packs/number-theory/problems/848/OPERATIONAL_THRESHOLD_POSTURE.md +38 -0
  16. package/packs/number-theory/problems/848/OPS_DETAILS.yaml +140 -9
  17. package/packs/number-theory/problems/848/PROOF_OBLIGATIONS.md +101 -0
  18. package/packs/number-theory/problems/848/PROPOSITION_EXPLICIT_CANDIDATE.md +69 -0
  19. package/packs/number-theory/problems/848/ROUTE_HISTORY.md +19 -2
  20. package/packs/number-theory/problems/848/ROUTE_PACKET.yaml +7 -4
  21. package/packs/number-theory/problems/848/THEOREM_STYLE_EXPLICIT_NOTE.md +91 -0
  22. package/packs/number-theory/problems/848/VERIFICATION_CERTIFICATE_SPEC.md +60 -0
  23. package/packs/number-theory/problems/848/VERIFICATION_REGIMES.md +89 -0
  24. package/packs/number-theory/problems/848/WEAKEST_BRANCH_T250_ASSEMBLY.md +109 -0
  25. package/packs/number-theory/problems/848/WEAKEST_BRANCH_T250_BUDGET.md +107 -0
  26. package/packs/number-theory/problems/848/compute/problem848_small_n_exact_scan.mjs +170 -0
  27. package/packs/number-theory/problems/848/context.yaml +22 -15
  28. package/problems/848/CHECKPOINT_NOTES.md +4 -0
  29. package/problems/848/EVIDENCE.md +78 -4
  30. package/problems/848/EXPLICIT_CANDIDATE_REVIEW.md +57 -0
  31. package/problems/848/REFERENCES.md +4 -0
  32. package/problems/848/ROUTES.md +30 -8
  33. package/problems/848/SHARE_READY_SUMMARY.md +37 -0
  34. package/problems/848/STATEMENT.md +9 -0
@@ -0,0 +1,89 @@
1
+ # Problem 848 Verification Regimes
2
+
3
+ This file partitions the finite remainder into regimes so the repo can track progress
4
+ without pretending that one method fits the whole gap.
5
+
6
+ ## Trusted public asymptotic handoff
7
+
8
+ - public theorem: Sawhney proves the statement for all sufficiently large `N`
9
+ - imported explicit threshold timeline:
10
+ - `7 x 10^17` on 2026-03-21
11
+ - `3.3 x 10^17` on 2026-03-22
12
+ - `2.64 x 10^17` on 2026-03-23
13
+ - current repo posture:
14
+ - these thresholds are imported public claims
15
+ - they size the finite remainder operationally
16
+ - they are not yet promoted to canonical repo-owned theorem statements
17
+
18
+ ## Verification regime split
19
+
20
+ ### Regime A: exact small-`N` coverage
21
+
22
+ Goal:
23
+ - cover a small base interval by exact methods that can be rerun and independently checked
24
+
25
+ Candidate methods:
26
+ - direct search
27
+ - pair-exchange lemmas
28
+ - exact residue-structure enumeration
29
+ - very small witness-prime case splits
30
+
31
+ Desired certificate:
32
+ - exact witness/counterexample status for each `N`
33
+ - reproducible script or proof note
34
+
35
+ ### Regime B: structured breakpoint verification
36
+
37
+ Goal:
38
+ - cover a medium interval by checking a monotone or breakpoint-sufficient inequality rather
39
+ than every raw instance independently
40
+
41
+ Candidate methods:
42
+ - structural breakpoint tables
43
+ - clique/exchange inequalities
44
+ - monotonicity-ledger arguments
45
+
46
+ Desired certificate:
47
+ - exact breakpoint set definition
48
+ - proof that breakpoint coverage implies interval coverage
49
+ - machine-readable result table
50
+
51
+ ### Regime C: audited imported computation
52
+
53
+ Goal:
54
+ - record public computational claims without treating them as canonical until the repo has an
55
+ audit story
56
+
57
+ Candidate inputs:
58
+ - public repos
59
+ - public verification notes
60
+ - independently rerun scripts
61
+
62
+ Desired certificate:
63
+ - imported source URL
64
+ - exact claimed interval
65
+ - audit outcome: accepted, external-only, or blocked
66
+
67
+ ### Regime D: asymptotic handoff
68
+
69
+ Goal:
70
+ - state the point above which the public theorem takes over
71
+
72
+ Desired certificate:
73
+ - cited theorem source
74
+ - exact threshold assumption being used operationally
75
+ - note whether the threshold is imported-only or repo-audited
76
+
77
+ ## Current honest posture
78
+
79
+ - Regime A: first exact interval `1..2000` is now frozen in the repo with a reproducible
80
+ maximum-clique certificate
81
+ - Regime B: not frozen in this repo
82
+ - Regime C: public attempts exist, but some were explicitly criticized on the forum as
83
+ difficult to verify or likely incorrect
84
+ - Regime D: public asymptotic theorem exists; imported explicit thresholds are tracked but not
85
+ yet repo-audited
86
+
87
+ So the next honest move is to decide whether exact-small-`N` coverage should be extended
88
+ directly beyond `2000`, or whether the next gain comes from auditing imported computation or
89
+ switching method class.
@@ -0,0 +1,109 @@
1
+ # Problem 848 Weakest Branch Assembly at `T = 250`
2
+
3
+ This note closes `N848.G1.A7`.
4
+
5
+ Goal:
6
+ - turn the `T = 250` weakest-branch witness budget into a line-by-line branch ledger
7
+ - freeze an honest working `eta` value for this branch
8
+
9
+ Scope:
10
+ - this is only the weakest public `0.0377` branch
11
+ - this is not yet a full explicit-threshold proof for Proposition 1.1
12
+ - the remaining repo question is whether the same witness closes the other public branches
13
+
14
+ ## Branch setup
15
+
16
+ Assume:
17
+ - `N >= exp(1420)`
18
+ - `eta > 0`
19
+ - `|A| >= (1/25 - eta) * N`
20
+ - the branch with an even element `b in A* = A \\ (A7 union A18)` is active
21
+ - truncation witness `T = 250`
22
+
23
+ ## Line-by-line upper bound ledger
24
+
25
+ ### 1. `A*` main term
26
+
27
+ From `WEAKEST_CASE_BUDGET.md`:
28
+ - `A* / N <= 0.0251587645... + remainder`
29
+
30
+ ### 2. `A*` explicit remainder
31
+
32
+ From `LEMMA21_TRUNCATION_SCAN.md`:
33
+ - `A*` tail density at `T = 250`: about `0.0005641453`
34
+ - `A*` discrete term: `23 * (3^23 - 1) / N`
35
+
36
+ At `N >= exp(1420)`, the discrete term is astronomically small and far below the visible
37
+ decimal budget.
38
+
39
+ ### 3. `A7 union A18` main term
40
+
41
+ From `WEAKEST_CASE_BUDGET.md`:
42
+ - `(A7 union A18) / N <= 0.0124525434... + remainder`
43
+
44
+ ### 4. `A7 union A18` explicit remainder
45
+
46
+ From `LEMMA22_EXPLICIT_BOUND.md` and `LEMMA22_PRIME_COUNT_BOUND.md`:
47
+ - Lemma 2.2 `N / p^2` tail density at `T = 250`: about `0.0000491054`
48
+ - Lemma 2.2 prime-count term at `N >= exp(1420)`: at most `0.0014095427`
49
+ - Lemma 2.2 discrete term: `2 * (2^51 - 1) / N`
50
+
51
+ Again, the discrete term is astronomically small at `N >= exp(1420)`.
52
+
53
+ ## Combined explicit branch bound
54
+
55
+ Collecting the frozen decimal contributions gives
56
+
57
+ - branch main term: `0.0376113079`
58
+ - `A*` tail: `0.0005641453`
59
+ - Lemma 2.2 tail: `0.0000491054`
60
+ - Lemma 2.2 prime-count term: `0.0014095427`
61
+
62
+ So the visible explicit branch bound is
63
+
64
+ - `0.0376113079 + 0.0005641453 + 0.0000491054 + 0.0014095427`
65
+ - `= 0.0396341013` up to rounding in the displayed decimals
66
+
67
+ This leaves visible room to `1/25 = 0.04` of about
68
+
69
+ - `0.04 - 0.0396341013 = 0.0003658987`.
70
+
71
+ ## Working `eta` choice
72
+
73
+ The branch contradiction only needs a positive margin after paying for `eta`.
74
+
75
+ A conservative working choice is
76
+
77
+ - `eta_work = 0.0001`.
78
+
79
+ Then the remaining visible reserve is still about
80
+
81
+ - `0.0003658987 - 0.0001 = 0.0002658987`.
82
+
83
+ So with this working choice, the branch still retains about `2.66e-4` of visible room for
84
+ the tiny discrete terms and any final rounding/bookkeeping losses.
85
+
86
+ ## Honest branch conclusion
87
+
88
+ At the witness scale
89
+ - `N >= exp(1420)`,
90
+ - `T = 250`,
91
+ - `eta = 10^-4`,
92
+
93
+ the weakest public branch now appears explicitly contradictory.
94
+
95
+ What this does **not** yet prove:
96
+ - that `exp(1420)` is a fully verified threshold for the whole proposition
97
+ - that the stronger public candidate thresholds are unnecessary
98
+ - that every other public branch has already been checked with the same explicit witness
99
+
100
+ What it **does** prove for the repo route:
101
+ - the weakest public branch is no longer the blocker
102
+ - the repo now has a concrete explicit branch witness with positive visible reserve
103
+
104
+ ## Next route consequence
105
+
106
+ The next honest move is:
107
+ - carry the same witness philosophy into the other public proof branches
108
+ - check whether `T = 250`, `N >= exp(1420)`, and `eta = 10^-4` also close them
109
+ - if one branch needs a different witness, record that precisely instead of forcing uniformity
@@ -0,0 +1,107 @@
1
+ # Problem 848 Weakest Branch Budget at `T = 250`
2
+
3
+ This note closes `N848.G1.A6` at a witness-budget level.
4
+
5
+ Goal:
6
+ - test whether the weakest public `0.0377` branch is still blocked once both Lemma 2.1 and
7
+ Lemma 2.2 use a larger witness truncation parameter
8
+
9
+ Witness choice:
10
+ - `T = 250`
11
+
12
+ Reason for this choice:
13
+ - it is large enough to shrink the live `A*` tail materially
14
+ - it is still tiny compared with the public candidate scales `exp(1420)` and `exp(1958)`
15
+ - the discrete inclusion-exclusion terms remain negligible at those scales
16
+
17
+ ## Frozen main-term branch data
18
+
19
+ From `WEAKEST_CASE_BUDGET.md`:
20
+ - `A*` main term: about `0.0251587645`
21
+ - `A7 union A18` main term: about `0.0124525434`
22
+ - combined weakest-branch main term: about `0.0376113079`
23
+ - branch slack to `1/25 = 0.04`: about `0.0023886921`
24
+
25
+ ## Explicit remainder ledger at `T = 250`
26
+
27
+ ### 1. `A*` via Lemma 2.1
28
+
29
+ From `LEMMA21_TRUNCATION_SCAN.md`:
30
+ - `A*` tail density at `T = 250`: about `0.0005641453`
31
+ - `A*` discrete term: `23 * (3^23 - 1) / N`
32
+
33
+ At `N = exp(1420)`:
34
+ - the `A*` discrete density is below about `exp(-1392)`
35
+
36
+ ### 2. `A7 union A18` via Lemma 2.2
37
+
38
+ From `LEMMA22_EXPLICIT_BOUND.md`:
39
+ - Lemma 2.2 tail density at `T = 250`: about `0.0000491054`
40
+ - worst-case Lemma 2.2 discrete term: `2 * (2^51 - 1) / N`
41
+ - prime-count term from `LEMMA22_PRIME_COUNT_BOUND.md`: at most `0.0014095427` for
42
+ every `N >= exp(1420)`
43
+
44
+ At `N = exp(1420)`:
45
+ - the Lemma 2.2 discrete density is below about `exp(-1384)`
46
+
47
+ ### 3. Combined explicit remainder
48
+
49
+ Adding the two live tail terms gives
50
+
51
+ - combined tail density about `0.0006132507`
52
+
53
+ and the combined discrete terms are still negligible at the public candidate scales.
54
+
55
+ What is still missing:
56
+ - no further lemma-level tail term; the remaining work is branch assembly and `eta`
57
+
58
+ ## Combined weakest-branch budget
59
+
60
+ Main term plus the live explicit tails:
61
+
62
+ - `0.0376113079 + 0.0006132507 = 0.0382245586`
63
+
64
+ So the remaining room to `0.04` is still about
65
+
66
+ - `0.0017754414`
67
+
68
+ before the final branch bookkeeping.
69
+
70
+ After inserting the explicit Lemma 2.2 prime-count bound at `N >= exp(1420)`,
71
+
72
+ - `0.0017754414 - 0.0014095427 ~= 0.0003658987`
73
+
74
+ So the currently visible room for
75
+ - the final `eta` choice
76
+ - and any remaining line-by-line bookkeeping losses
77
+
78
+ is about `3.66e-4`.
79
+
80
+ ## Honest reading
81
+
82
+ This does **not** yet prove an explicit threshold.
83
+
84
+ What it **does** show is:
85
+ - once `T` is allowed to move, the weakest branch no longer looks blocked by the two lemma
86
+ `N / p^2` tails themselves
87
+ - the discrete inclusion-exclusion losses are no longer the issue
88
+ - the Lemma 2.2 prime-count term also fits inside the branch budget at the public candidate
89
+ threshold scale
90
+ - the route now has a concrete surviving witness margin of about `3.66e-4` for final
91
+ `eta` and bookkeeping losses
92
+
93
+ So the live unresolved work is narrower than before:
94
+ - write the line-by-line full branch assembly with the larger `T`
95
+ - record the exact `eta` room that survives that assembly
96
+ - then turn that into a genuine explicit-threshold witness candidate
97
+
98
+ ## Route consequence
99
+
100
+ This means the current proof skeleton now looks plausibly explicitizable in the weakest
101
+ branch at the witness scale `N >= exp(1420)`, provided the remaining line-by-line assembly
102
+ does not consume more than about `3.66e-4` of density.
103
+
104
+ That is a materially stronger posture than the one the repo started with:
105
+ - the route is no longer waiting on a mystery bottleneck
106
+ - it has a concrete witness truncation value
107
+ - and it has a concrete surviving witness margin after all currently frozen lemma-level costs
@@ -0,0 +1,170 @@
1
+ #!/usr/bin/env node
2
+
3
+ import fs from 'node:fs';
4
+ import path from 'node:path';
5
+
6
+ function parseArgs(argv) {
7
+ const args = { min: 1, max: 100, jsonOutput: null };
8
+ for (let i = 0; i < argv.length; i += 1) {
9
+ const token = argv[i];
10
+ if (token === '--min') {
11
+ args.min = Number(argv[++i]);
12
+ } else if (token === '--max') {
13
+ args.max = Number(argv[++i]);
14
+ } else if (token === '--json-output') {
15
+ args.jsonOutput = argv[++i];
16
+ } else {
17
+ throw new Error(`Unknown argument: ${token}`);
18
+ }
19
+ }
20
+ if (!Number.isInteger(args.min) || args.min < 1) {
21
+ throw new Error('--min must be a positive integer');
22
+ }
23
+ if (!Number.isInteger(args.max) || args.max < args.min) {
24
+ throw new Error('--max must be an integer >= --min');
25
+ }
26
+ return args;
27
+ }
28
+
29
+ function isSquarefree(n) {
30
+ let x = n;
31
+ for (let p = 2; p * p <= x; p += 1) {
32
+ if (x % p !== 0) continue;
33
+ x /= p;
34
+ if (x % p === 0) return false;
35
+ while (x % p === 0) x /= p;
36
+ }
37
+ return true;
38
+ }
39
+
40
+ function residueClass(N, residue) {
41
+ const result = [];
42
+ for (let n = 1; n <= N; n += 1) {
43
+ if (n % 25 === residue) result.push(n);
44
+ }
45
+ return result;
46
+ }
47
+
48
+ function sameSortedSet(left, right) {
49
+ if (left.length !== right.length) return false;
50
+ const a = [...left].sort((x, y) => x - y);
51
+ const b = [...right].sort((x, y) => x - y);
52
+ return a.every((value, index) => value === b[index]);
53
+ }
54
+
55
+ function buildGraph(N) {
56
+ const vertices = [];
57
+ for (let a = 1; a <= N; a += 1) {
58
+ if (!isSquarefree(a * a + 1)) vertices.push(a);
59
+ }
60
+ const adjacency = Array.from({ length: vertices.length }, () => new Set());
61
+ for (let i = 0; i < vertices.length; i += 1) {
62
+ for (let j = i + 1; j < vertices.length; j += 1) {
63
+ const a = vertices[i];
64
+ const b = vertices[j];
65
+ if (!isSquarefree(a * b + 1)) {
66
+ adjacency[i].add(j);
67
+ adjacency[j].add(i);
68
+ }
69
+ }
70
+ }
71
+ return { vertices, adjacency };
72
+ }
73
+
74
+ function maximumClique(vertices, adjacency) {
75
+ let best = [];
76
+
77
+ function bronKerbosch(R, P, X) {
78
+ if (P.length === 0 && X.length === 0) {
79
+ if (R.length > best.length) best = [...R];
80
+ return;
81
+ }
82
+ if (R.length + P.length <= best.length) return;
83
+
84
+ let pivot = null;
85
+ let pivotNeighborsInP = -1;
86
+ for (const u of [...P, ...X]) {
87
+ let count = 0;
88
+ for (const v of P) {
89
+ if (adjacency[u].has(v)) count += 1;
90
+ }
91
+ if (count > pivotNeighborsInP) {
92
+ pivotNeighborsInP = count;
93
+ pivot = u;
94
+ }
95
+ }
96
+
97
+ const candidates = pivot === null
98
+ ? [...P]
99
+ : P.filter((v) => !adjacency[pivot].has(v));
100
+
101
+ for (const v of candidates) {
102
+ bronKerbosch(
103
+ [...R, v],
104
+ P.filter((u) => adjacency[v].has(u)),
105
+ X.filter((u) => adjacency[v].has(u)),
106
+ );
107
+ P = P.filter((u) => u !== v);
108
+ X = [...X, v];
109
+ }
110
+ }
111
+
112
+ bronKerbosch([], vertices.map((_, index) => index), []);
113
+ return best.map((index) => vertices[index]).sort((a, b) => a - b);
114
+ }
115
+
116
+ function scanInterval(minN, maxN) {
117
+ const rows = [];
118
+ for (let N = minN; N <= maxN; N += 1) {
119
+ const residue7 = residueClass(N, 7);
120
+ const residue18 = residueClass(N, 18);
121
+ const { vertices, adjacency } = buildGraph(N);
122
+ const clique = maximumClique(vertices, adjacency);
123
+ const maxSize = clique.length;
124
+ const residue7Size = residue7.length;
125
+ const residue18Size = residue18.length;
126
+ rows.push({
127
+ N,
128
+ maxCliqueSize: maxSize,
129
+ residue7Size,
130
+ residue18Size,
131
+ candidateAchievesMaximum: residue7Size === maxSize,
132
+ exampleMaximumClique: clique,
133
+ exampleMatchesResidue7: sameSortedSet(clique, residue7),
134
+ exampleMatchesResidue18: sameSortedSet(clique, residue18),
135
+ });
136
+ }
137
+ return rows;
138
+ }
139
+
140
+ function summarize(rows) {
141
+ return {
142
+ interval: `${rows[0].N}..${rows[rows.length - 1].N}`,
143
+ rows: rows.length,
144
+ allCandidateAchievesMaximum: rows.every((row) => row.candidateAchievesMaximum),
145
+ allExampleCliquesMatchCandidateClass: rows.every(
146
+ (row) => row.exampleMatchesResidue7 || row.exampleMatchesResidue18,
147
+ ),
148
+ };
149
+ }
150
+
151
+ const args = parseArgs(process.argv.slice(2));
152
+ const rows = scanInterval(args.min, args.max);
153
+ const payload = {
154
+ generatedAt: new Date().toISOString(),
155
+ method: 'exact_maximum_clique_scan',
156
+ problemId: '848',
157
+ parameters: {
158
+ min: args.min,
159
+ max: args.max,
160
+ },
161
+ summary: summarize(rows),
162
+ results: rows,
163
+ };
164
+
165
+ if (args.jsonOutput) {
166
+ fs.mkdirSync(path.dirname(args.jsonOutput), { recursive: true });
167
+ fs.writeFileSync(args.jsonOutput, `${JSON.stringify(payload, null, 2)}\n`);
168
+ }
169
+
170
+ console.log(JSON.stringify(payload.summary, null, 2));
@@ -2,40 +2,47 @@ problem_id: "848"
2
2
  family_role: finite_check_number_theory_workspace
3
3
  harness_profile: decidable_gap_workspace
4
4
  default_active_route: finite_check_gap_closure
5
- bootstrap_focus: Freeze the explicit finite-check gap before choosing analytic threshold extraction or direct bounded computation.
6
- route_story: Problem 848 is already asymptotically resolved in public, but not yet packaged here as a full all-N resolution. The honest job is to map the finite remainder precisely.
5
+ bootstrap_focus: Treat Problem 848 as a finite-gap closure problem and freeze the certificate surface before claiming bounded verification progress.
6
+ route_story: Problem 848 is already asymptotically resolved in public, but not yet closed here for all N. The honest job is to shrink the finite remainder with audited threshold tracking and reproducible bounded verification, beginning from the verified base interval `1..2000`.
7
7
  frontier_label: finite_check_gap_closure
8
- frontier_detail: Keep the route centered on explicit threshold extraction plus bounded finite verification, not on rediscovering the sufficiently-large-N theorem.
8
+ frontier_detail: The repo now has a verified exact interval `1..2000`; the next question is whether to extend that exact scan further or change method class.
9
9
  checkpoint_focus: Preserve the distinction between existential N0, explicit N0, sample finite checks, and full closure.
10
- next_honest_move: Spend the frozen weakest-branch slack on the first explicit inequality, namely the Lemma 2.1 tail plus inclusion-exclusion remainder.
10
+ next_honest_move: Decide whether to extend the exact clique scan beyond `2000` or pivot to a different bounded-verification method.
11
11
  related_core_problems:
12
12
  - "844"
13
13
  literature_focus:
14
14
  - squarefree values
15
15
  - sieve bounds
16
16
  - explicit threshold extraction
17
+ - bounded verification
17
18
  artifact_focus:
18
19
  - STATEMENT.md
19
20
  - REFERENCES.md
20
21
  - EVIDENCE.md
21
22
  - FORMALIZATION.md
22
23
  - THRESHOLD_LEDGER.md
23
- - EXTRACTION_CHECKLIST.md
24
- - WEAKEST_CASE_BUDGET.md
24
+ - OPERATIONAL_THRESHOLD_POSTURE.md
25
+ - BOUNDED_VERIFICATION_PLAN.md
26
+ - VERIFICATION_REGIMES.md
27
+ - VERIFICATION_CERTIFICATE_SPEC.md
28
+ - EXTERNAL_VERIFICATION_LEDGER.md
29
+ - INTERVAL_WORK_QUEUE.yaml
30
+ - EXACT_SMALL_N_1_2000_CERTIFICATE.md
25
31
  question_ledger:
26
32
  open_questions:
27
- - Can the existing sufficiently-large-N proof be made explicit enough to give a practical threshold?
28
- - How much of the remaining small-N range has actually been checked publicly?
29
- - How much of the nominal `0.0023` weakest-branch slack survives once the rounded branch numerics are frozen exactly?
30
- - Can Lemma 2.1 be made explicit without consuming most of the roughly `0.002388` frozen branch slack?
33
+ - Which imported threshold value is trusted enough to size the finite remainder operationally?
34
+ - What certificate format is strong enough to prevent repeat low-trust verification claims?
35
+ - How far can the exact clique scan be pushed before a different method class is needed?
36
+ - Which public verification attempts are worth auditing rather than rebuilding from scratch?
31
37
  active_route_notes:
32
38
  - Keep the asymptotic theorem separate from the unresolved finite closure.
33
- - Treat public Lean claims as support evidence until the exact coverage is audited.
34
- - Do not spend the full `0.0023` branch slack until the repo freezes the exact main-term constants behind `0.0252` and `0.0125`.
35
- - The branch budget is now frozen numerically; the next uncertainty is analytic, not case-selection.
39
+ - Keep imported threshold claims separate from repo-owned audited claims.
40
+ - Prefer interval certificates to raw "checked up to X" claims.
41
+ - Use past public verification criticism as a design constraint, not just background chatter.
36
42
  route_breakthroughs:
37
43
  - Public asymptotic resolution by Sawhney is already in hand.
38
44
  - The threshold ledger separating existential and explicit claims is now frozen.
39
- - The weakest public branch is now isolated in a dedicated budget sheet.
40
- - The weakest public branch is now numerically frozen at about `0.0376113`.
45
+ - The repo now has an audited explicit candidate package distinct from the imported public threshold timeline.
46
+ - The repo has now chosen bounded finite verification as the next closure lane.
47
+ - The repo now has an exact verified base interval `1..2000`.
41
48
  problem_solved: []
@@ -13,7 +13,11 @@ Checkpoint prompts:
13
13
  - What route, evidence, and formalization notes should be promoted out of scratch space into canonical dossier files?
14
14
  - Did we improve the explicit threshold side, the finite-computation side, or only our
15
15
  understanding of the gap between them?
16
+ - Are we optimizing the right thing right now: a smaller imported `N0`, or a smaller
17
+ remaining finite range to verify?
16
18
  - Is any new `N0` claim actually checked line-by-line against Sawhney's note, or is it still
17
19
  forum-level heuristic discussion?
20
+ - Have we cleanly separated the best imported threshold claim from the repo's own audited
21
+ explicit candidate?
18
22
  - What exactly does the current public Lean development certify, and what does it still leave
19
23
  open?
@@ -21,24 +21,98 @@ Current public evidence captured locally:
21
21
  arXiv reference for the sufficiently-large-`N` result.
22
22
  - Sawhney's public four-page note proves the existence of an `N0`, but does not give an
23
23
  explicit threshold in the statement of Proposition 1.1.
24
- - The public forum discussion says that straightforward threshold extraction is currently
25
- huge, with one GPT-assisted route reaching `exp(1958)` and later discussion treating
26
- `exp(1420)` as a plausible intermediate bound rather than a final clean resolution.
24
+ - The public forum discussion records an explicit-threshold timeline:
25
+ - `N0 = 7 x 10^17` on 2026-03-21
26
+ - `N0 = 3.3 x 10^17` on 2026-03-22
27
+ - `N0 = 2.64 x 10^17` on 2026-03-23
28
+ - The same thread also records earlier larger threshold exploration, including
29
+ `exp(1958)`-scale discussion and `exp(1420)` as a plausible intermediate explicit route
30
+ rather than a final clean resolution.
27
31
  - The same thread suggests the real technical bottleneck is improving the error terms in
28
32
  Lemma 2.1 and especially Lemma 2.2 enough to make the explicit threshold and the finite
29
33
  range practically closable.
30
34
  - The public Lean thread claims a formalization of the sufficiently-large-`N` theorem and
31
35
  mentions finite verification for `N = 50` and `N = 100`, but not a full finite closure.
36
+ - The local number-theory pack now has a one-sided explicit Lemma 2.1 remainder ledger.
37
+ It shows that, at the public threshold candidates `exp(1420)` and `exp(1958)`, the
38
+ small-prime inclusion-exclusion remainder is negligible while the large-prime tail still
39
+ exceeds the frozen weakest-branch slack.
40
+ - The local truncation scan also shows that the one-sided explicit route no longer needs
41
+ `T = floor(sqrt(log N))`; larger choices of `T` leave the discrete term negligible while
42
+ materially shrinking the live `A*` tail.
43
+ - The local weakest-branch witness budget at `T = 250` now shows that, after the explicit
44
+ Lemma 2.1 and Lemma 2.2 tail terms are paid, the branch still appears to retain about
45
+ `0.001775` slack before the Lemma 2.2 prime-count term is inserted, and about `0.000366`
46
+ witness margin after that term is bounded with a Dusart-style explicit prime-count estimate.
47
+ - The local weakest-branch assembly note now fixes a working witness
48
+ `T = 250`, `N >= exp(1420)`, `eta = 10^-4`, with about `0.000266` visible reserve left in
49
+ that branch after all currently frozen lemma-level costs.
50
+ - The local branch-comparison ledger now indicates that the same witness also closes the
51
+ public branches with rounded bounds `0.0358`, `0.0336`, and `0.0294` at the repo's current
52
+ explicit level.
53
+ - The local proposition-level candidate note now packages that shared witness as the current
54
+ repo candidate for an explicit stability statement, while still refusing to mark the problem
55
+ fully solved.
56
+ - The local proof-obligation ledger now identifies the next real blocker as numerical
57
+ certification of the displayed decimal inputs, not another branch estimate.
58
+ - The local certified numerical ledger now replaces the main displayed decimal inputs with
59
+ conservative machine-interval bounds, leaving a certified visible reserve of about
60
+ `0.000266` after the working `eta = 10^-4`.
61
+ - The local theorem-style note now assembles the current explicit candidate into a single
62
+ proof-shaped artifact suitable for paper-writer mode and future public review.
63
+ - The current candidate is now surfaced in both the paper bundle and a dossier-level public
64
+ review note, with a short share-ready summary.
65
+ - The local paper bundle now has drafted introduction, preliminaries, and related-work
66
+ sections, and the bundle has been refreshed so that no placeholder paper text remains.
67
+ - The current repo candidate is weaker than the best imported threshold value currently
68
+ visible on the public thread, so its main value is auditability and handoff structure,
69
+ not "best known `N0`" status.
70
+ - The repo has now chosen bounded finite verification as the next closure lane and frozen
71
+ first-pass notes for verification regimes, certificate requirements, and imported
72
+ verification audit.
73
+ - The repo now has an operational threshold posture note that allows imported `N0`
74
+ values to size the finite remainder without being silently promoted to canonical theorem
75
+ truth.
76
+ - A reproducible exact maximum-clique scan now verifies the expected extremal size for every
77
+ `N` in `1..2000`, giving the bounded-verification lane its first trusted covered interval.
32
78
 
33
79
  Claim-safe local posture:
34
80
  - Exact: the public status is `decidable`, not `open` and not fully `solved`.
35
81
  - Exact: a formalized statement is publicly claimed by the imported atlas.
36
82
  - Exact: the remaining public gap is not a new asymptotic theorem, but the bridge from
37
83
  existential `N0` to an explicit or fully checked all-`N` statement.
84
+ - Exact: as of 2026-03-23, the best imported public-thread threshold visible in the dossier
85
+ is `N0 = 2.64 x 10^17`.
86
+ - Exact: the repo's own audited candidate is currently weaker than that imported threshold,
87
+ so it should not be described as the best-known public bound.
88
+ - Exact: the current repo explicitization of Lemma 2.1 isolates the large-prime tail as the
89
+ live analytic blocker in the weakest branch.
90
+ - Exact: within the one-sided explicit route, enlarging `T` is now justified and appears to
91
+ be the right next analytic move.
92
+ - Exact: a concrete witness value `T = 250` now survives the live tail bookkeeping in the
93
+ weakest branch at an explicit witness-budget level.
94
+ - Exact: the weakest branch now has a concrete working `eta` witness, not just a floating
95
+ slack budget.
96
+ - Exact: no other public branch currently appears to outrun that witness in the repo ledger.
97
+ - Exact: the repo now has a proposition-level explicit candidate, but not yet a publication-
98
+ ready explicit theorem artifact.
99
+ - Exact: the next real mathematical hardening step is numerical certification of the displayed
100
+ decimal inputs.
101
+ - Exact: the current repo candidate is now numerically hardened at the ledger level.
102
+ - Exact: the repo now also has a theorem-style proof artifact for the current candidate.
103
+ - Exact: the current candidate package is now surfaced for both paper-writing and public
104
+ review workflows.
105
+ - Exact: the paper bundle for the current candidate is now fully drafted at the section-shell
106
+ level and no longer depends on placeholder text in its public-facing sections.
38
107
  - Heuristic: the lowest-friction route from here is to work both sides of the bridge:
39
108
  sharpen the explicit threshold while separately understanding how far direct finite
40
109
  verification can reasonably go.
41
110
 
42
111
  Next maintainer step:
43
112
  - keep the dossier centered on the finite-check gap rather than re-opening the asymptotic
44
- theorem lane.
113
+ theorem lane
114
+ - preserve the current claim-safe package as a clean review unit
115
+ - treat imported threshold improvements as external progress markers unless they are
116
+ re-audited inside the repo
117
+ - decide whether exact verified coverage should be extended beyond `2000` or whether the
118
+ next gain now needs a different method class