erdos-problems 0.3.3 → 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.
@@ -46,3 +46,5 @@ Read next:
46
46
  - `VERIFICATION_REGIMES.md`
47
47
  - `VERIFICATION_CERTIFICATE_SPEC.md`
48
48
  - `EXTERNAL_VERIFICATION_LEDGER.md`
49
+ - `INTERVAL_WORK_QUEUE.yaml`
50
+ - `EXACT_SMALL_N_1_2000_CERTIFICATE.md`
@@ -0,0 +1,43 @@
1
+ packet_id: nt848_interval_work_queue_v1
2
+ operational_threshold:
3
+ value: "2.64 x 10^17"
4
+ source: forum_thread_2026_03_23
5
+ trust_status: external_public_claim
6
+ usage: sizing_only
7
+ intervals:
8
+ - interval_id: N848.V1
9
+ label: exact_small_n_base_interval
10
+ range: "1..2000"
11
+ status: done
12
+ method_class: exact_small_n
13
+ claim_level: verified
14
+ certificate: EXACT_SMALL_N_1_2000_CERTIFICATE.md
15
+ data_packet: EXACT_SMALL_N_1_2000_RESULTS.json
16
+ next_move: Use this as the first trusted base interval and decide whether the next extension is another exact interval or an imported-computation audit.
17
+ - interval_id: N848.V2
18
+ label: exact_small_n_extension
19
+ range: "2001..?"
20
+ status: ready
21
+ method_class: exact_small_n
22
+ claim_level: target
23
+ certificate: ""
24
+ data_packet: ""
25
+ next_move: Decide how far the exact clique scan can be pushed before a different method class is needed.
26
+ - interval_id: N848.V3
27
+ label: imported_computation_audit
28
+ range: "public_claimed_interval"
29
+ status: support
30
+ method_class: imported_external_computation
31
+ claim_level: external_only
32
+ certificate: EXTERNAL_VERIFICATION_LEDGER.md
33
+ data_packet: ""
34
+ next_move: Audit public computational claims without silently promoting them to canonical coverage.
35
+ - interval_id: N848.VA
36
+ label: asymptotic_handoff
37
+ range: "[2.64 x 10^17, inf)"
38
+ status: support
39
+ method_class: asymptotic_handoff
40
+ claim_level: external_only
41
+ certificate: OPERATIONAL_THRESHOLD_POSTURE.md
42
+ data_packet: ""
43
+ next_move: Keep the imported handoff threshold visible and separate from repo-audited theorem language.
@@ -0,0 +1,38 @@
1
+ # Problem 848 Operational Threshold Posture
2
+
3
+ This note fixes how the bounded-verification lane uses explicit thresholds.
4
+
5
+ ## Repo-owned audited threshold
6
+
7
+ - current repo-owned audited candidate:
8
+ - `N >= exp(1420)`
9
+ - status: repo-audited explicit candidate
10
+ - use: internal proof packaging and audit surface
11
+
12
+ ## Imported operational threshold
13
+
14
+ - current imported public threshold:
15
+ - `N0 = 2.64 x 10^17`
16
+ - source date: 2026-03-23
17
+ - source: Problem 848 forum thread
18
+ - trust status: external public claim, not yet repo-audited line by line
19
+
20
+ ## How the verification lane uses this
21
+
22
+ - The bounded-verification lane may use `2.64 x 10^17` to size the remaining finite gap.
23
+ - It may not present that value as canonical repo theorem truth.
24
+ - Any interval-coverage claim that relies on this handoff must explicitly say:
25
+ - the threshold value being used
26
+ - that it is an imported public claim unless and until the repo audits it
27
+ - what part of the interval claim is computational and what part is asymptotic handoff
28
+
29
+ ## Practical policy
30
+
31
+ - For planning: use the imported `2.64 x 10^17` value.
32
+ - For canonical theorem language: keep the stronger distinction
33
+ - imported threshold
34
+ - repo-audited threshold candidate
35
+ - fully closed all-`N` theorem
36
+
37
+ This keeps the finite-verification program operationally useful without overstating what the
38
+ repo has personally audited.
@@ -5,8 +5,8 @@ routes:
5
5
  title: Finite-Check Gap Closure
6
6
  status: active
7
7
  summary: Convert the sufficiently-large-N theorem into a complete all-N resolution without overstating what is already closed or confusing imported thresholds with repo-owned claims.
8
- why_now: The share package is already committed, and the repo has now chosen bounded finite verification as the next closure lane.
9
- next_move: Freeze the bounded finite-verification program and its certificate surface.
8
+ why_now: The share package is already committed, the bounded-verification lane is now frozen, and the repo has a first verified interval.
9
+ next_move: Decide whether to extend exact verified coverage beyond `2000` or switch method class.
10
10
  - route_id: external_threshold_tracking
11
11
  title: External Threshold Tracking
12
12
  status: support
@@ -18,7 +18,7 @@ routes:
18
18
  status: active_support
19
19
  summary: Reduce the finite remainder directly once a threshold is trusted enough to be operationally useful.
20
20
  why_now: Lowering `N0` matters because it reduces this lane, not because "smallest threshold" is the whole problem.
21
- next_move: Partition the finite remainder into regimes and define the certificate required before any interval counts as covered.
21
+ next_move: Build on the exact `1..2000` base interval and decide the next extension rule.
22
22
  - route_id: formalization_coverage_audit
23
23
  title: Formalization Coverage Audit
24
24
  status: support
@@ -30,9 +30,9 @@ tickets:
30
30
  title: Close the decidable gap without confusing imported threshold progress and repo-owned candidate work
31
31
  route_id: finite_check_gap_closure
32
32
  status: active
33
- summary: The repo now has a committed review package for its audited `exp(1420)` candidate, while the imported forum timeline currently points to a stronger external threshold. The chosen next lane is bounded finite verification under the best trusted threshold.
34
- current_blocker: The repo has not yet frozen the certificate surface needed for any bounded interval claim to count as canonical coverage.
35
- next_move: Close `N848.G1.A18`.
33
+ summary: The repo now has a committed review package for its audited `exp(1420)` candidate, a chosen bounded-verification lane, and an exact verified base interval `1..2000`. The live question is how to extend coverage from that foothold.
34
+ current_blocker: The repo has not yet chosen whether the next interval extension should stay in the exact clique-scan regime or switch to a different verification method.
35
+ next_move: Close `N848.G1.A21`.
36
36
  - ticket_id: N848F
37
37
  title: Audit public formalization coverage
38
38
  route_id: formalization_coverage_audit
@@ -164,6 +164,27 @@ atoms:
164
164
  title: Freeze the bounded finite-verification program and certificate surface
165
165
  route_id: finite_check_gap_closure
166
166
  ticket_id: N848
167
+ status: done
168
+ summary: The verification plan, regime split, certificate spec, and external audit ledger are now part of the live handoff surface.
169
+ next_move: Freeze the operational threshold posture and the first covered interval.
170
+ - atom_id: N848.G1.A19
171
+ title: Freeze the operational threshold posture for the bounded-verification lane
172
+ route_id: finite_check_gap_closure
173
+ ticket_id: N848
174
+ status: done
175
+ summary: The repo now distinguishes operational use of the imported `2.64 x 10^17` threshold from canonical repo-owned theorem language.
176
+ next_move: Build the first exact covered interval.
177
+ - atom_id: N848.G1.A20
178
+ title: Build the first exact covered interval for bounded verification
179
+ route_id: finite_check_gap_closure
180
+ ticket_id: N848
181
+ status: done
182
+ summary: The repo now has a reproducible exact certificate showing that the conjectured extremal size is correct for every `N` in `1..2000`.
183
+ next_move: Decide whether to extend the exact clique scan beyond `2000` or change method class.
184
+ - atom_id: N848.G1.A21
185
+ title: Choose the next verified interval extension beyond `2000`
186
+ route_id: finite_check_gap_closure
187
+ ticket_id: N848
167
188
  status: ready
168
- summary: The next closure cycle should start by partitioning the finite remainder into regimes and defining what evidence is strong enough for a bounded interval claim to count.
169
- next_move: Promote the bounded verification plan, regimes, certificate spec, and external ledger into the live handoff surface.
189
+ summary: The bounded-verification lane now starts from a real certified base interval `1..2000`. The next choice is whether the exact clique scan still has enough headroom to extend that base efficiently, or whether the next gain should come from breakpoint or audit methods.
190
+ next_move: Decide whether to extend exact verified coverage beyond `2000` or switch method class.
@@ -20,5 +20,7 @@
20
20
  - Seventeenth refinement: commit and push the review-ready 848 package so the audited candidate is now a public repo artifact rather than only a local workspace bundle.
21
21
  - Eighteenth refinement: record the imported public-threshold timeline through 2026-03-23 and state explicitly that the optimization target is finite-gap closure, not threshold-lowering in isolation.
22
22
  - Nineteenth refinement: choose bounded finite verification as the next closure lane and freeze the first repo artifacts for regimes, certificates, and external verification audit.
23
- - Current public pack posture: active route `finite_check_gap_closure`, with asymptotic theorem already in hand, a committed audited candidate package in the repo, and the remaining gap centered on building a trusted bounded-verification program under the best imported threshold currently tracked.
24
- - Next maturity threshold: turn the verification plan into the first concrete covered-interval program.
23
+ - Twentieth refinement: freeze the operational threshold posture so imported `N0` claims can size the finite remainder without being silently promoted to canonical repo theorem truth.
24
+ - Twenty-first refinement: certify the exact interval `1..2000` by a reproducible maximum-clique scan, giving the bounded-verification lane its first genuine covered interval.
25
+ - Current public pack posture: active route `finite_check_gap_closure`, with asymptotic theorem already in hand, a committed audited candidate package in the repo, and a real exact base interval `1..2000` now covered in the bounded-verification lane.
26
+ - Next maturity threshold: extend verified interval coverage beyond `2000` in the most efficient trustworthy way.
@@ -10,6 +10,7 @@ ready_prompts:
10
10
  - What certificate format is required before a claimed interval counts as canonically covered?
11
11
  - Which public verification attempts should be treated as audit inputs rather than accepted coverage?
12
12
  - How should the finite remainder be partitioned into regimes so that methods and trust levels stay visible?
13
+ - How far does the exact small-`N` clique scan now reach, and what should the next extension target be?
13
14
  verification_hook:
14
15
  - erdos number-theory status 848
15
16
  - erdos number-theory routes 848
@@ -76,12 +76,14 @@ Desired certificate:
76
76
 
77
77
  ## Current honest posture
78
78
 
79
- - Regime A: not frozen in this repo
79
+ - Regime A: first exact interval `1..2000` is now frozen in the repo with a reproducible
80
+ maximum-clique certificate
80
81
  - Regime B: not frozen in this repo
81
82
  - Regime C: public attempts exist, but some were explicitly criticized on the forum as
82
83
  difficult to verify or likely incorrect
83
84
  - Regime D: public asymptotic theorem exists; imported explicit thresholds are tracked but not
84
85
  yet repo-audited
85
86
 
86
- So the next honest move is to freeze the certificate format before claiming any new verified
87
- interval.
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,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));
@@ -3,11 +3,11 @@ family_role: finite_check_number_theory_workspace
3
3
  harness_profile: decidable_gap_workspace
4
4
  default_active_route: finite_check_gap_closure
5
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.
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: The repo has chosen bounded finite verification as the next closure lane under the best imported threshold currently tracked.
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: Freeze the bounded finite-verification program and its certificate requirements before claiming any new covered interval.
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:
@@ -21,15 +21,18 @@ artifact_focus:
21
21
  - EVIDENCE.md
22
22
  - FORMALIZATION.md
23
23
  - THRESHOLD_LEDGER.md
24
+ - OPERATIONAL_THRESHOLD_POSTURE.md
24
25
  - BOUNDED_VERIFICATION_PLAN.md
25
26
  - VERIFICATION_REGIMES.md
26
27
  - VERIFICATION_CERTIFICATE_SPEC.md
27
28
  - EXTERNAL_VERIFICATION_LEDGER.md
29
+ - INTERVAL_WORK_QUEUE.yaml
30
+ - EXACT_SMALL_N_1_2000_CERTIFICATE.md
28
31
  question_ledger:
29
32
  open_questions:
30
- - What exact interval should the repo try to cover first in a bounded-verification lane?
31
33
  - Which imported threshold value is trusted enough to size the finite remainder operationally?
32
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?
33
36
  - Which public verification attempts are worth auditing rather than rebuilding from scratch?
34
37
  active_route_notes:
35
38
  - Keep the asymptotic theorem separate from the unresolved finite closure.
@@ -41,4 +44,5 @@ question_ledger:
41
44
  - The threshold ledger separating existential and explicit claims is now frozen.
42
45
  - The repo now has an audited explicit candidate package distinct from the imported public threshold timeline.
43
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`.
44
48
  problem_solved: []
@@ -70,6 +70,11 @@ Current public evidence captured locally:
70
70
  - The repo has now chosen bounded finite verification as the next closure lane and frozen
71
71
  first-pass notes for verification regimes, certificate requirements, and imported
72
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.
73
78
 
74
79
  Claim-safe local posture:
75
80
  - Exact: the public status is `decidable`, not `open` and not fully `solved`.
@@ -109,4 +114,5 @@ Next maintainer step:
109
114
  - preserve the current claim-safe package as a clean review unit
110
115
  - treat imported threshold improvements as external progress markers unless they are
111
116
  re-audited inside the repo
112
- - freeze the bounded finite-verification program before counting any interval as covered
117
+ - decide whether exact verified coverage should be extended beyond `2000` or whether the
118
+ next gain now needs a different method class
@@ -70,9 +70,12 @@
70
70
  - The imported public thread currently reports a better external threshold
71
71
  `N0 = 2.64 x 10^17` on 2026-03-23.
72
72
  - The repo has now chosen the bounded finite-verification lane for the next cycle.
73
- - The next concrete task is to freeze:
73
+ - The repo now has:
74
74
  - a regime split for the finite remainder
75
75
  - a certificate format for bounded interval claims
76
76
  - an audit ledger for imported verification work
77
+ - an exact verified base interval `1..2000`
78
+ - The next concrete task is to decide whether the exact clique scan should be extended
79
+ directly beyond `2000` or whether the next gain now needs a different method class.
77
80
  - The right optimization target remains the size of the remaining finite gap, not the
78
81
  threshold race in isolation.
@@ -23,6 +23,7 @@ What is ready now:
23
23
  - supporting explicit ledgers for the branch bounds and numerical witness
24
24
  - a bounded finite-verification lane with regimes, certificate requirements, and external
25
25
  audit notes
26
+ - an exact verified base interval `1..2000`
26
27
 
27
28
  What is not being claimed:
28
29
  - not full all-`N` closure in the repo