erdos-problems 0.3.4 → 0.3.6
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.
- package/package.json +1 -1
- package/packs/number-theory/problems/848/BOUNDED_VERIFICATION_PLAN.md +3 -1
- package/packs/number-theory/problems/848/EXACT_SMALL_N_1_10000_CERTIFICATE.md +58 -0
- package/packs/number-theory/problems/848/EXACT_SMALL_N_1_10000_RESULTS.json +100018 -0
- package/packs/number-theory/problems/848/FRONTIER_NOTE.md +1 -1
- package/packs/number-theory/problems/848/INTERVAL_WORK_QUEUE.yaml +6 -6
- package/packs/number-theory/problems/848/OPS_DETAILS.yaml +22 -8
- package/packs/number-theory/problems/848/ROUTE_HISTORY.md +4 -2
- package/packs/number-theory/problems/848/VERIFICATION_CERTIFICATE_SPEC.md +3 -0
- package/packs/number-theory/problems/848/VERIFICATION_REGIMES.md +5 -2
- package/packs/number-theory/problems/848/compute/problem848_small_n_exact_scan.mjs +62 -45
- package/packs/number-theory/problems/848/context.yaml +6 -5
- package/problems/848/EVIDENCE.md +4 -2
- package/problems/848/ROUTES.md +3 -2
- package/problems/848/SHARE_READY_SUMMARY.md +1 -1
- package/packs/number-theory/problems/848/EXACT_SMALL_N_1_2000_CERTIFICATE.md +0 -55
- package/packs/number-theory/problems/848/EXACT_SMALL_N_1_2000_RESULTS.json +0 -102531
|
@@ -7,22 +7,22 @@ operational_threshold:
|
|
|
7
7
|
intervals:
|
|
8
8
|
- interval_id: N848.V1
|
|
9
9
|
label: exact_small_n_base_interval
|
|
10
|
-
range: "1..
|
|
10
|
+
range: "1..10000"
|
|
11
11
|
status: done
|
|
12
12
|
method_class: exact_small_n
|
|
13
13
|
claim_level: verified
|
|
14
|
-
certificate:
|
|
15
|
-
data_packet:
|
|
16
|
-
next_move: Use this as the
|
|
14
|
+
certificate: EXACT_SMALL_N_1_10000_CERTIFICATE.md
|
|
15
|
+
data_packet: EXACT_SMALL_N_1_10000_RESULTS.json
|
|
16
|
+
next_move: Use this as the current trusted base interval and decide whether the next extension is another exact interval or an imported-computation audit.
|
|
17
17
|
- interval_id: N848.V2
|
|
18
18
|
label: exact_small_n_extension
|
|
19
|
-
range: "
|
|
19
|
+
range: "10001..?"
|
|
20
20
|
status: ready
|
|
21
21
|
method_class: exact_small_n
|
|
22
22
|
claim_level: target
|
|
23
23
|
certificate: ""
|
|
24
24
|
data_packet: ""
|
|
25
|
-
next_move: Decide
|
|
25
|
+
next_move: Decide whether exact coverage should continue directly beyond `10000` or whether the next gain should come from a different method class.
|
|
26
26
|
- interval_id: N848.V3
|
|
27
27
|
label: imported_computation_audit
|
|
28
28
|
range: "public_claimed_interval"
|
|
@@ -6,7 +6,7 @@ routes:
|
|
|
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
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 `
|
|
9
|
+
next_move: Decide whether to extend exact verified coverage beyond `10000` 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: Build on the exact `1..
|
|
21
|
+
next_move: Build on the exact `1..10000` 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, a chosen bounded-verification lane, and an exact verified base interval `1..
|
|
34
|
-
current_blocker: The repo has not yet chosen whether the next interval extension should stay in the exact clique-scan regime or
|
|
35
|
-
next_move: Close `N848.G1.
|
|
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..10000`. The live question is how to extend coverage from that foothold while taking advantage of the new incremental verifier honestly.
|
|
34
|
+
current_blocker: The repo has not yet chosen whether the next interval extension should stay in the exact clique-scan regime or whether the right next gain is a breakpoint-style compression of the exact lane.
|
|
35
|
+
next_move: Close `N848.G1.A23`.
|
|
36
36
|
- ticket_id: N848F
|
|
37
37
|
title: Audit public formalization coverage
|
|
38
38
|
route_id: formalization_coverage_audit
|
|
@@ -182,9 +182,23 @@ atoms:
|
|
|
182
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
183
|
next_move: Decide whether to extend the exact clique scan beyond `2000` or change method class.
|
|
184
184
|
- atom_id: N848.G1.A21
|
|
185
|
-
title:
|
|
185
|
+
title: Extend the exact verified base interval beyond `2000`
|
|
186
|
+
route_id: finite_check_gap_closure
|
|
187
|
+
ticket_id: N848
|
|
188
|
+
status: done
|
|
189
|
+
summary: The repo now has a second exact certificate extending the bounded-verification base interval from `1..2000` to `1..3000`, while also showing that a blind jump to `1..5000` is no longer cheap enough to count as the default next move.
|
|
190
|
+
next_move: Choose the post-`3000` extension policy.
|
|
191
|
+
- atom_id: N848.G1.A22
|
|
192
|
+
title: Rebuild the exact verifier and remove the false post-`3000` policy wall
|
|
193
|
+
route_id: finite_check_gap_closure
|
|
194
|
+
ticket_id: N848
|
|
195
|
+
status: done
|
|
196
|
+
summary: The exact verifier now uses an incremental update rule, the compact certificate format keeps packets small, and the exact bounded-verification base interval now reaches `1..10000`.
|
|
197
|
+
next_move: Choose the post-`10000` interval policy.
|
|
198
|
+
- atom_id: N848.G1.A23
|
|
199
|
+
title: Choose the post-`10000` verified interval policy
|
|
186
200
|
route_id: finite_check_gap_closure
|
|
187
201
|
ticket_id: N848
|
|
188
202
|
status: ready
|
|
189
|
-
summary: The bounded-verification lane now starts from a real certified base interval `1..
|
|
190
|
-
next_move: Decide whether to extend exact verified coverage beyond `
|
|
203
|
+
summary: The bounded-verification lane now starts from a real certified base interval `1..10000`. The next choice is whether exact coverage should continue directly beyond that range, or whether the new exact data should be compressed into a stronger breakpoint method.
|
|
204
|
+
next_move: Decide whether to extend exact verified coverage beyond `10000` or switch method class.
|
|
@@ -22,5 +22,7 @@
|
|
|
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
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
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
|
-
-
|
|
26
|
-
-
|
|
25
|
+
- Twenty-second refinement: extend the exact certificate to `1..3000`, and record that a direct jump to `1..5000` no longer looks cheap enough to treat as the obvious default next move.
|
|
26
|
+
- Twenty-third refinement: rebuild the exact verifier incrementally, compact the witness packet format, and extend the exact certificate all the way to `1..10000`.
|
|
27
|
+
- 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..10000` now covered in the bounded-verification lane.
|
|
28
|
+
- Next maturity threshold: choose the post-`10000` extension policy in the most efficient trustworthy way.
|
|
@@ -40,6 +40,9 @@ Any bounded-verification claim for Problem `848` should attach a certificate wit
|
|
|
40
40
|
- a second script, proof note, or reviewer confirmation
|
|
41
41
|
- `cost_profile`
|
|
42
42
|
- rough runtime or proof complexity
|
|
43
|
+
- `witness_encoding`
|
|
44
|
+
- if the certificate omits raw witness lists because they are derivable, state that
|
|
45
|
+
encoding explicitly, for example "pure residue class mod 25 when possible"
|
|
43
46
|
|
|
44
47
|
## Rejection triggers
|
|
45
48
|
|
|
@@ -76,8 +76,10 @@ Desired certificate:
|
|
|
76
76
|
|
|
77
77
|
## Current honest posture
|
|
78
78
|
|
|
79
|
-
- Regime A: first exact interval `1..
|
|
79
|
+
- Regime A: first exact interval `1..10000` is now frozen in the repo with a reproducible
|
|
80
80
|
maximum-clique certificate
|
|
81
|
+
- Regime A note: an incremental verifier removed the earlier false cost wall caused by
|
|
82
|
+
rebuilding the graph and clique search from scratch for each `N`
|
|
81
83
|
- Regime B: not frozen in this repo
|
|
82
84
|
- Regime C: public attempts exist, but some were explicitly criticized on the forum as
|
|
83
85
|
difficult to verify or likely incorrect
|
|
@@ -85,5 +87,6 @@ Desired certificate:
|
|
|
85
87
|
yet repo-audited
|
|
86
88
|
|
|
87
89
|
So the next honest move is to decide whether exact-small-`N` coverage should be extended
|
|
88
|
-
directly beyond `
|
|
90
|
+
directly beyond `10000`, or whether the next gain comes from
|
|
91
|
+
auditing imported computation or
|
|
89
92
|
switching method class.
|
|
@@ -26,52 +26,34 @@ function parseArgs(argv) {
|
|
|
26
26
|
return args;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
+
const squarefreeCache = new Map();
|
|
30
|
+
|
|
29
31
|
function isSquarefree(n) {
|
|
32
|
+
if (squarefreeCache.has(n)) return squarefreeCache.get(n);
|
|
30
33
|
let x = n;
|
|
31
34
|
for (let p = 2; p * p <= x; p += 1) {
|
|
32
35
|
if (x % p !== 0) continue;
|
|
33
36
|
x /= p;
|
|
34
|
-
if (x % p === 0)
|
|
37
|
+
if (x % p === 0) {
|
|
38
|
+
squarefreeCache.set(n, false);
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
35
41
|
while (x % p === 0) x /= p;
|
|
36
42
|
}
|
|
43
|
+
squarefreeCache.set(n, true);
|
|
37
44
|
return true;
|
|
38
45
|
}
|
|
39
46
|
|
|
40
|
-
function
|
|
41
|
-
|
|
42
|
-
|
|
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]);
|
|
47
|
+
function residueClassSize(N, residue) {
|
|
48
|
+
if (N < residue) return 0;
|
|
49
|
+
return Math.floor((N - residue) / 25) + 1;
|
|
53
50
|
}
|
|
54
51
|
|
|
55
|
-
function
|
|
56
|
-
|
|
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 };
|
|
52
|
+
function isPureResidueClass(clique, N, residue) {
|
|
53
|
+
return clique.length === residueClassSize(N, residue) && clique.every((value) => value % 25 === residue);
|
|
72
54
|
}
|
|
73
55
|
|
|
74
|
-
function
|
|
56
|
+
function maximumCliqueIndices(adjacency, candidateIndices, lowerBound = 0) {
|
|
75
57
|
let best = [];
|
|
76
58
|
|
|
77
59
|
function bronKerbosch(R, P, X) {
|
|
@@ -79,7 +61,7 @@ function maximumClique(vertices, adjacency) {
|
|
|
79
61
|
if (R.length > best.length) best = [...R];
|
|
80
62
|
return;
|
|
81
63
|
}
|
|
82
|
-
if (R.length + P.length <= best.length) return;
|
|
64
|
+
if (R.length + P.length <= Math.max(best.length, lowerBound)) return;
|
|
83
65
|
|
|
84
66
|
let pivot = null;
|
|
85
67
|
let pivotNeighborsInP = -1;
|
|
@@ -109,29 +91,63 @@ function maximumClique(vertices, adjacency) {
|
|
|
109
91
|
}
|
|
110
92
|
}
|
|
111
93
|
|
|
112
|
-
bronKerbosch([],
|
|
113
|
-
return best.
|
|
94
|
+
bronKerbosch([], [...candidateIndices], []);
|
|
95
|
+
return best.sort((a, b) => a - b);
|
|
114
96
|
}
|
|
115
97
|
|
|
116
98
|
function scanInterval(minN, maxN) {
|
|
117
99
|
const rows = [];
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
100
|
+
const vertices = [];
|
|
101
|
+
const adjacency = [];
|
|
102
|
+
let bestCliqueIndices = [];
|
|
103
|
+
|
|
104
|
+
for (let N = 1; N <= maxN; N += 1) {
|
|
105
|
+
const residue7Size = residueClassSize(N, 7);
|
|
106
|
+
const residue18Size = residueClassSize(N, 18);
|
|
107
|
+
|
|
108
|
+
if (!isSquarefree(N * N + 1)) {
|
|
109
|
+
const newIndex = vertices.length;
|
|
110
|
+
const neighbors = [];
|
|
111
|
+
for (let i = 0; i < vertices.length; i += 1) {
|
|
112
|
+
if (!isSquarefree(vertices[i] * N + 1)) {
|
|
113
|
+
adjacency[i].add(newIndex);
|
|
114
|
+
neighbors.push(i);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
adjacency.push(new Set(neighbors));
|
|
118
|
+
vertices.push(N);
|
|
119
|
+
|
|
120
|
+
if (neighbors.length + 1 > bestCliqueIndices.length) {
|
|
121
|
+
const neighborClique = maximumCliqueIndices(
|
|
122
|
+
adjacency,
|
|
123
|
+
neighbors,
|
|
124
|
+
Math.max(0, bestCliqueIndices.length - 1),
|
|
125
|
+
);
|
|
126
|
+
if (neighborClique.length + 1 > bestCliqueIndices.length) {
|
|
127
|
+
bestCliqueIndices = [...neighborClique, newIndex].sort((a, b) => a - b);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
const clique = bestCliqueIndices.map((index) => vertices[index]);
|
|
123
133
|
const maxSize = clique.length;
|
|
124
|
-
|
|
125
|
-
const
|
|
134
|
+
if (N < minN) continue;
|
|
135
|
+
const exampleResidueClass = isPureResidueClass(clique, N, 7)
|
|
136
|
+
? 7
|
|
137
|
+
: isPureResidueClass(clique, N, 18)
|
|
138
|
+
? 18
|
|
139
|
+
: null;
|
|
140
|
+
|
|
126
141
|
rows.push({
|
|
127
142
|
N,
|
|
128
143
|
maxCliqueSize: maxSize,
|
|
129
144
|
residue7Size,
|
|
130
145
|
residue18Size,
|
|
131
146
|
candidateAchievesMaximum: residue7Size === maxSize,
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
147
|
+
exampleResidueClass,
|
|
148
|
+
exampleMaximumClique: exampleResidueClass === null ? clique : undefined,
|
|
149
|
+
exampleMatchesResidue7: exampleResidueClass === 7,
|
|
150
|
+
exampleMatchesResidue18: exampleResidueClass === 18,
|
|
135
151
|
});
|
|
136
152
|
}
|
|
137
153
|
return rows;
|
|
@@ -153,6 +169,7 @@ const rows = scanInterval(args.min, args.max);
|
|
|
153
169
|
const payload = {
|
|
154
170
|
generatedAt: new Date().toISOString(),
|
|
155
171
|
method: 'exact_maximum_clique_scan',
|
|
172
|
+
resultEncoding: 'residue_class_when_possible',
|
|
156
173
|
problemId: '848',
|
|
157
174
|
parameters: {
|
|
158
175
|
min: args.min,
|
|
@@ -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, beginning from the verified base interval `1..
|
|
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..10000`.
|
|
7
7
|
frontier_label: finite_check_gap_closure
|
|
8
|
-
frontier_detail: The repo now has a verified exact interval `1..
|
|
8
|
+
frontier_detail: The repo now has a verified exact interval `1..10000`, and an incremental verifier has made larger exact tranches practical again. The next question is whether to keep extending that exact lane or compress it into a stronger breakpoint method.
|
|
9
9
|
checkpoint_focus: Preserve the distinction between existential N0, explicit N0, sample finite checks, and full closure.
|
|
10
|
-
next_honest_move: Decide whether to extend the exact clique scan beyond `
|
|
10
|
+
next_honest_move: Decide whether to extend the exact clique scan beyond `10000` or pivot to a different bounded-verification method.
|
|
11
11
|
related_core_problems:
|
|
12
12
|
- "844"
|
|
13
13
|
literature_focus:
|
|
@@ -27,7 +27,7 @@ artifact_focus:
|
|
|
27
27
|
- VERIFICATION_CERTIFICATE_SPEC.md
|
|
28
28
|
- EXTERNAL_VERIFICATION_LEDGER.md
|
|
29
29
|
- INTERVAL_WORK_QUEUE.yaml
|
|
30
|
-
-
|
|
30
|
+
- EXACT_SMALL_N_1_10000_CERTIFICATE.md
|
|
31
31
|
question_ledger:
|
|
32
32
|
open_questions:
|
|
33
33
|
- Which imported threshold value is trusted enough to size the finite remainder operationally?
|
|
@@ -44,5 +44,6 @@ question_ledger:
|
|
|
44
44
|
- The threshold ledger separating existential and explicit claims is now frozen.
|
|
45
45
|
- The repo now has an audited explicit candidate package distinct from the imported public threshold timeline.
|
|
46
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..
|
|
47
|
+
- The repo now has an exact verified base interval `1..10000`.
|
|
48
|
+
- The exact verifier now uses an incremental update rule rather than rebuilding every instance from scratch.
|
|
48
49
|
problem_solved: []
|
package/problems/848/EVIDENCE.md
CHANGED
|
@@ -74,7 +74,9 @@ Current public evidence captured locally:
|
|
|
74
74
|
values to size the finite remainder without being silently promoted to canonical theorem
|
|
75
75
|
truth.
|
|
76
76
|
- A reproducible exact maximum-clique scan now verifies the expected extremal size for every
|
|
77
|
-
`N` in `1..
|
|
77
|
+
`N` in `1..10000`, giving the bounded-verification lane a much larger trusted covered interval.
|
|
78
|
+
- The exact verifier has been rebuilt incrementally, so the old post-`3000` cost wall is now
|
|
79
|
+
understood to have been mostly a tooling artifact rather than a serious mathematical barrier.
|
|
78
80
|
|
|
79
81
|
Claim-safe local posture:
|
|
80
82
|
- Exact: the public status is `decidable`, not `open` and not fully `solved`.
|
|
@@ -114,5 +116,5 @@ Next maintainer step:
|
|
|
114
116
|
- preserve the current claim-safe package as a clean review unit
|
|
115
117
|
- treat imported threshold improvements as external progress markers unless they are
|
|
116
118
|
re-audited inside the repo
|
|
117
|
-
- decide whether exact verified coverage should be extended beyond `
|
|
119
|
+
- decide whether exact verified coverage should be extended beyond `10000` or whether the
|
|
118
120
|
next gain now needs a different method class
|
package/problems/848/ROUTES.md
CHANGED
|
@@ -74,8 +74,9 @@
|
|
|
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..
|
|
77
|
+
- an exact verified base interval `1..10000`
|
|
78
|
+
- an incremental verifier that makes larger exact tranches practical
|
|
78
79
|
- The next concrete task is to decide whether the exact clique scan should be extended
|
|
79
|
-
directly beyond `
|
|
80
|
+
directly beyond `10000` or whether the next gain now needs a different method class.
|
|
80
81
|
- The right optimization target remains the size of the remaining finite gap, not the
|
|
81
82
|
threshold race in isolation.
|
|
@@ -23,7 +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..
|
|
26
|
+
- an exact verified base interval `1..10000`
|
|
27
27
|
|
|
28
28
|
What is not being claimed:
|
|
29
29
|
- not full all-`N` closure in the repo
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
# Problem 848 Exact Small-`N` Certificate: `1..2000`
|
|
2
|
-
|
|
3
|
-
This is the first exact bounded-verification certificate frozen in the repo for Problem `848`.
|
|
4
|
-
|
|
5
|
-
## Claim
|
|
6
|
-
|
|
7
|
-
For every `N` with `1 <= N <= 2000`, the maximum size of a set `A subseteq [N]` such that
|
|
8
|
-
`ab + 1` is never squarefree for all `a, b in A` is equal to the size of the `7 mod 25`
|
|
9
|
-
residue class in `[N]`.
|
|
10
|
-
|
|
11
|
-
This certificate only covers the interval `1..2000`.
|
|
12
|
-
|
|
13
|
-
## Method class
|
|
14
|
-
|
|
15
|
-
- `exact_small_n`
|
|
16
|
-
|
|
17
|
-
## Reproduction
|
|
18
|
-
|
|
19
|
-
Command used:
|
|
20
|
-
|
|
21
|
-
```bash
|
|
22
|
-
node packs/number-theory/problems/848/compute/problem848_small_n_exact_scan.mjs \
|
|
23
|
-
--min 1 \
|
|
24
|
-
--max 2000 \
|
|
25
|
-
--json-output packs/number-theory/problems/848/EXACT_SMALL_N_1_2000_RESULTS.json
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
The script:
|
|
29
|
-
- filters vertices by the loop condition `a^2 + 1` not squarefree
|
|
30
|
-
- builds the compatibility graph where `a` and `b` are adjacent exactly when `ab + 1` is not
|
|
31
|
-
squarefree
|
|
32
|
-
- computes an exact maximum clique for each `N`
|
|
33
|
-
- compares that maximum clique size against the `7 mod 25` class size
|
|
34
|
-
|
|
35
|
-
## Outcome
|
|
36
|
-
|
|
37
|
-
- interval: `1..2000`
|
|
38
|
-
- result: verified
|
|
39
|
-
- every scanned `N` satisfied:
|
|
40
|
-
- `max_clique_size = |{n in [N] : n equiv 7 mod 25}|`
|
|
41
|
-
|
|
42
|
-
The machine-readable result packet is:
|
|
43
|
-
- `EXACT_SMALL_N_1_2000_RESULTS.json`
|
|
44
|
-
|
|
45
|
-
## Scope warning
|
|
46
|
-
|
|
47
|
-
This does **not** certify anything above `2000`.
|
|
48
|
-
It is a base interval certificate only.
|
|
49
|
-
|
|
50
|
-
## Why this interval matters
|
|
51
|
-
|
|
52
|
-
- it creates a real in-repo covered interval, not just a verification plan
|
|
53
|
-
- it is large enough to be a meaningful finite-check foothold
|
|
54
|
-
- it does not rely on disputed public computation
|
|
55
|
-
- it gives the bounded-verification lane a concrete certificate format and reproduction path
|