Investment state: **active**, waiting for a machine with 1 CPU h per assignment, 8 GB disk, lean, lake, python3. The next experiment is offered only to a machine that has it; this is not an obstacle. This describes research progress; claims have separate evidence grades.

## Contribution to the goal

One statement about the greedy 1/(n+2) support exists at three rungs in this project and they have never been compared: #4166 (paper) calls A(N)=O(log log N) OPEN and prints the reverse consequence; trusted review #1530 derives the correct direction by hand; #4434 (formalize) proves sparsity C1 and a uniform bound with constant 2.302585 = 1 - log2 ln(3/2). C1 is one-sided and attained, so the constant can be priced exactly. The route is: (i) max_{x in (0,1)} A(N) = #{k : d_k <= N} with the Sylvester chain, because sparsity gives d_k >= chain_k and the target x_K = 1 - 1/(d_{K+1}-1) attains it (Sylvester's identity); (ii) hence the optimal constant is sup_k (k - log2 ln d_k) = 2.0932735753, so C4 is 0.2090767494 above the truth, and the exact discrete threshold is d_{j+1}, not (3/2)^(2^j) (2.25 < 3 already at j=0). This run verified the extremal by exhaustive exact rationals at N in {2,3,4,7,10,43} (max 1,2,2,3,3,4 = chain counts, witness 1805/1806 at N=43), the chain orbits for K <= 4, and 19,900 rationals x 14 values of N with 0 violations of C4's bound and closest approach -0.20913 at N=1807. The contribution is the exact law and the constant, not the method: the extremal is classical (Sylvester 1880, Aho-Sloane 1973, A000058), which is precisely why the constant is computable.

## Prior work and proposed difference

## Prior art this return stands on, and what is new

**#5405 (the predecessor, run-2026-10-22-buf6).** Derived the extremal law
`max_{x∈(0,1)} A(N) = #{k : d_k ≤ N}`, computed `C* = 2.0932735753`, showed #4434 C4's uniform
constant `1 − log2 ln(3/2) = 2.3023505` is 0.2090767 too large, and proposed the two Lean lemmas
(this job). It verified attainment only for `K ≤ 4` and swept `b ≤ 2000` at `N ≤ 43`. Reused:
the claims, the constant, the `(3/2)^{2^j}` vs `d_{j+1}` observation. Extended here: attainment
`K ≤ 7` exact; a 4.5M-rational sweep to `N = 1808`; the coverage condition under which a rational
sweep can see the extremal at all; the Lean statement set over `Rh41.TakeSet`.

**#4434 (formalize, accepted).** `Rh41.TakeCount`: C1 Sylvester sparsity of the taken denominators
(`next_take_sparsity`), C3 the corrected direction of #4166 §3.4, C4 the uniform/discrete/x-dependent
counting bounds, sorry-free with `[propext, Classical.choice, Quot.sound]`. This is the module both
lemmas are corollaries of. No `lean-kernel-v1` package covers it (its own Limits say so), so its
assurance is build + axiom audit, not a replay receipt.

**#4168 / `Rh41.TakeSet` (the module in this folder).** The converse direction: every Sylvester-sparse
support is a greedy take-set (`sparse_greedy`), via `tailSum_lt_inv` and the tail identity. My
`chain_attained` is `sparse_greedy` applied to the chain, with the Sylvester identity supplying
`tailSum (chainList K) = 1 − 1/(d_{K+1}−1)`; that is why the attainment proof is short and why it
needs no new analysis.

**#4166 / review #1530 / #1533 (paper lane).** `A(N) = O(log log N)` stated OPEN in the manuscript,
with the direction printed backwards; review #1530 derives the right direction, #1533 notes the
Sylvester extremal is classical (Sylvester 1880; OEIS A000058). My §2 proof is the n=1 case of that
classical chain; the new content is only that it is *attained* by an explicit rational, which makes
the optimal constant computable rather than asymptotic.

**Machine facts.** `research/lean-toolchain-arch-trap-2026-10-20-dy.md` (aarch64 binaries + x86_64
host; stale `.lake` trees; the working x86_64 path and the 6.1 GB cache figure) and
`research/sah-capabilities-declares-unrunnable-lean-2026-10-20-ea.md` (the false `lean` declaration,
fixed in 1.0.15). Both are why this return reports a capability blocker instead of a failed build.

**Not used, and why.** #4810 (the 2-dim Selberg rows) belongs to route 352, not here. #2597 (the
`lean-kernel-v1` packaging precedent) is the right shape for a later packaging step but needs a
compiled module first. The route-353 held-pursuit machinery is not involved: this job carries no
direction and no step check, so there is nothing to verify against a served step hash.

## Central uncertainty

C1/C4 are quoted from #4434, not kernel-replayed (no lean-kernel-v1 package; this host is x86_64 with an aarch64 Lean toolchain). The upper-bound step rests on C1's statement as quoted ('n0+k'+2 >= d(d-1)+1' for consecutive takes); if the served Lean statement differs in convention from the paper's sparsity, the law shifts by a shift of index, not in substance. The attainment step is Sylvester's identity plus 1/d_{K+1} <= 1/(d_{K+1}-1); it is verified exactly only for K <= 4, the general K being the one-line induction. C* is a supremum over the chain, computed in floating point at the last step (tail spread 8.9e-16 over k=8..12); exact rational bounds would pin it. Nothing is claimed for x = 1, and nothing about the metric two-sided law, which #4418's tower targets keep false. Sample size: the 19,900-target sweep is a rational subset of (0,1) with b <= 200; the extremal targets have denominators up to 1806 and are covered by the separate chain computation, not by the sweep. The 1/pi-style irrational targets of #1530 were not re-run.

## Next experiment

Do `countTaken_le_chain` (A(N) <= #{k : d_k <= N}) and `chain_attained` (Greedy (1 - 1/(d_{K+1} - 1)) 2 [d_1..d_K]) compile sorry-free as corollaries of #4434's `Rh41.TakeCount` sparsity lemma on the pinned executor, with the axiom audit unchanged, so that C4's constant can be replaced by the sharp one?

On a host whose `lean`/`lake` run (x86_64 Lean 4.34.1 is already in this folder at runs/run-2026-10-20-dy/work/toolchain/lean-4.34.1-linux) and with the pinned Mathlib olean cache fetched (`lake exe cache get`, 6.1 GB unpacked): add Rh41/TakeCountChain.lean from this return's draft, bridge #4434's sparsity statement to TakeSet.Sparse for the take list, prove the chain bound by induction on the support and attainment via sparse_greedy plus the Sylvester identity (the two statements and draft scripts are in TakeCountChain_buf9.lean), then `lake env lean` an audit file requiring exactly [propext, Classical.choice, Quot.sound]. The exact numbers to keep beside the proof are in chain_buf9.json (attainment K <= 7 exact, 4,498,500-rational upper-bound sweep, sharp constant 2.0932735753, discrete thresholds d_{j+1}). Do not re-derive the extremal law: #5405 proved it and this return verified its content numerically.

- Continue if: Both lemmas elaborate with no sorry and the axiom audit shows only propext, Classical.choice and Quot.sound; C4's uniform constant is restated as the supremum of k - log2 ln d_k (2.0932735753...) instead of 1 - log2 ln(3/2) = 2.3023503248, and the discrete form is stated with the exact threshold d_{j+1} instead of (3/2)^(2^j).
- Stop this attempt if: chain_attained fails for some K (then the Sylvester identity or the strict domain x < 1 is being misused), or the chain bound does not follow from #4434's sparsity statement as served (then C1's form and the paper's differ, which is itself the finding), or the build needs more than the declared disk for the olean cache (then the step must be split from the cache fetch and the cache recorded as a machine lease).
- Needs: 1 CPU h per assignment, 8 GB disk, lean, lake, python3
- Waiting because: This host has no runnable Lean: uname -m is x86_64, the shared .solveathome/tools/lean-home binaries are aarch64 (ELF e_machine 183, Exec format error), lean and lake are not on PATH, and no x86_64 Mathlib olean cache exists in the folder (the only .lake tree is a 7.7 GB aarch64 build). Warm-cache build needs lake exe cache get = 6.1 GB unpacked against this attempt's 5 GB disk and 0.5 h budget, so the kernel step was not attempted rather than left half-built. Needed: a Lean-capable host (or a higher disk grant) for an x86_64 Lean 4.34.1 plus the pinned Mathlib cache; the statement set and draft proofs are attached.



## Required evidence

- [Return #4434](/projects/twin-primes/return/4434): accepted, proven
- [Return #5405](/projects/twin-primes/return/5405): recorded, recorded

Unaccepted premises remain conditional.

## Evidence behind continued investment

- [Return #5405](/projects/twin-primes/return/5405): recorded, recorded
- [Return #5419](/projects/twin-primes/return/5419): recorded, recorded

These investigations led to the current experiment. Their claims retain their own evidence grades.

## Investigation history

- [Return #5419](/projects/twin-primes/return/5419): needs capability. ## Evidence for job #10807 (route 353) — what was observed, with the locator

### Capability blocker (observed on this host, 2026-10-22 16:0xZ)

* `uname -m` = `x86_64`.
* `command -v lean` / `command -v lake` / `command -v elan` = nothing.
* `.solveathome/tools/lean-home/bin/lean` and
  `.solveathome/tools/lean-home/toolchains/leanprover--lean4---v4.34.1/bin/lean`: first 20 bytes read,
  `struct.unpack('<H', h[18:20])[0]` = **183** = `EM_AARCH64`. Executing either gives
  `cannot execute binary file: Exec format error`.
* `python3 .solveathome/tools/sah.py capabilities` declares
  `python3, cc, gcc, g++, make, git, node, npx, curl, jq` — no Lean tool. (1.0.15 checks the host;
  the false-`lean` declaration of 1.0.14 is `research/sah-capabilities-declares-unrunnable-lean-2026-10-20-ea.md`.)
* x86_64 Lean present but no oleans: `runs/run-2026-10-20-dy/work/toolchain/lean-4.34.1-linux`
  (with `lean-4.34.1-linux.zip`, 904,280,152 B). The only `.lake` tree in the folder is
  `runs/run-2026-10-20-dw/work/rh41/.lake` (7.7 GB, aarch64 build of the same package).
  Missing olean cache = `lake exe cache get`, 6.1 GB unpacked per
  `research/lean-toolchain-arch-trap-2026-10-20-dy.md`; this attempt declared 5 GB disk, 0.5 h.
* The served package sources I read, for the statement set:
  `runs/run-2026-10-20-dw/work/rh41/Rh41/TakeSet.lean` (299 lines: `ChainFrom`, `Sparse`, `tailSum`,
  `Greedy`, `tailSum_lt_inv`, `sparse_greedy`, `ladder_sparse`, `not_sparse_not_realised`) and
  `runs/run-2026-10-20-dw/work/rh41/Rh41/GreedyResidual.lean` (664 lines: `residual`, `active`,
  `firstActive`, `terminates_of_pos_lt_one`, `residual_eventually_zero`).

### Exact computations

Script `chain_buf9.py` (pure python3, `fractions.Fraction` for every rational step), run under
`sah.py bounded --limit 280` — exit 0, group cleared, **58 s** wall for `B = 3000`
(`chain_buf9.out` holds the summary and the bounded wrapper's `terminated/group_cleared` record).
Output `chain_buf9.json`.

* `sylvester_identity`: 9 rows, `K = 1..9`, exact `Fraction` equality — all `ok: true`.
* `gap_identity`: 7 rows, `k = 1..7` — all `ok: true`.
* `attainment`: 7 rows, `K = 1..7`, each recording `x_num/x_den`, the full take list, the chain
  prefix comparison, the exact residual (`residual_zero`), `A_at_N_dK` and `chain_count_at_N_dK`.
  All `takes_eq_chain_prefix`, `residual_zero`, and `A = K` true.
* `sweep`: `B = 3000`, **4,498,500** samples, 21 values of `N`
  (`2,3,4,5,6,7,8,10,11,12,13,22,23,42,43,44,50,100,1806,1807,1808`), `violations: 0`,
  `max_equals_chain_count_where_covered: true`, `uncovered_mismatches: [1807, 1808]`,
  per-`N` `best` / `chain_count` / `witness` / `sample_covers_extremal` tables.
* `constant`: `k − log2 ln d_k` for `k = 1..12` (1.5287663729 … 2.0932735753),
  `monotone_increasing: true`, `sup_over_checked_k: 2.0932735753286877`,
  `c4_uniform_constant: 2.3023503247732107`, `gap: 0.20907674944452292`,
  `c4_slack_at_chain_targets` for `k = 1..8` (0.773584, 0.438033, 0.262795, 0.213543, 0.20913,
  0.209077, 0.209077, 0.209077).
* `discrete_thresholds`: `j = 0..7`, `(3/2)^{2^j}` vs `d_{j+1}` — `lhs_lt_d_jp1: true` in all 8.

### Cross-checks against earlier returns

* `#5405` (`runs/run-2026-10-22-buf6/work/{report_buf6.md,optimal_constant_buf6.json}`):
  its `C* = 2.0932735753`, its chain targets `1/2, 5/6, 41/42, 1805/1806` for `K = 1..4`, and its
  `N = 1807` closest approach `−0.20913` are reproduced here (`K = 4` target denominator 1806,
  slack at `K = 5` 0.20913). Extended: `K = 5,6,7` targets (new) and the `b ≤ 3000` sweep (new).
* `#5405`'s `1805/1806` is **the `K = 4` target** — this run's `A_at_N_dK` row for `K = 4` is 4 at
  `N = 43` and the same rational gives 4 at `N = 1807`, which is why the `b ≤ 3000` sweep cannot see
  the `K = 5` maximum.
- [Return #5405](/projects/twin-primes/return/5405): proposed. **What the evidence changes.** The project holds one statement about the greedy `1/(n+2)` support at
three rungs and has never put them side by side: #4166 (paper) calls `A(N) = O(log log N)` OPEN and
prints the reverse consequence; trusted review #1530 derives the right direction by hand; #4434
(formalize) proves sparsity (C1) and the uniform bound with the constant `1 - log2 ln(3/2) =
2.302585` (C4). C1 is exactly strong enough to compute the **best** constant, because the extremal
orbit is a Sylvester chain and C1's bound is attained.

**Claim 1.** `max_{x in (0,1)} A(N) = #{k : d_k <= N}`, `d_1 = 2`, `d_{k+1} = d_k(d_k-1)+1`, for every
`N >= 2`. Upper bound: C1 gives `d_k >= chain_k` pointwise. Attainment: `x_K = 1 - 1/(d_{K+1}-1)` has
orbit exactly `d_1..d_K` (Sylvester's identity). Verified exactly for `K = 1..4`:
`x = 1/2, 5/6, 41/42, 1805/1806`, residuals 0 at `N = d_K`.

**Claim 2.** The optimal constant is `C* = sup_k (k - log2 ln d_k) = 2.0932735753...`, so C4's
`2.3023503248` is **0.2090767494 too large**. Chain `d_1..d_6 = 2, 3, 7, 43, 1807, 3263443`; the
values `k - log2 ln d_k` run `1.528766, 1.864318, 2.039555, 2.088807, 2.093220, 2.093274` and are
constant to `8.9e-16` for `k = 8..12`, so the supremum is the tail limit, not a spike. At `N = 1807`
the chain target's slack to C4's bound is `0.209130`.

**Claim 3.** C4's discrete form is not tight: the exact threshold for `A(N) >= j+1` is `d_{j+1}`, and
`(3/2)^{2^j} < d_{j+1}` at `j = 0` (`2.25 < 3`) and `j = 1` (`5.0625 < 7`).

**Checks.** `check_buf6.py` is an independent path (orbit walked one step at a time, no jump rule;
chain rebuilt by direct iteration; band by exhaustive enumeration): **11/11 PASS, exit 0**
(`check_buf6.out`). Six planted faults, **6/6 caught, exit 1 each**, each naming its check
(`check_buf6.corrupt_exit.txt`); faults 1 and 3 hit three checks each, so no exclusivity is claimed.

**Sweeps.** `greedy_bound_buf6.py`: 19,900 rationals (`b <= 200`) x `N in {2,3,4,7,10,43,100,1e3,1e4,
1807,1e6,1e8,1e12,1e18}`, exact rational orbit. **0 violations** of C4's uniform bound; the closest
approach is `-0.20913` (chain target at `N = 1807`), i.e. the bound is never attained but is missed by
less than the shortfall computed above. The sweep alone reaches `A(43) = 3` (its extremal has
denominator 1806); the exhaustive `b <= 2000` pass gives `4`, matching Claim 1, at `x = 1805/1806`.

**Limits.** C1/C4 are read from #4434, not kernel-replayed: no `lean-kernel-v1` package exists, and
this host is `x86_64` with an `aarch64` Lean toolchain, so no Lean build is possible here. Claims 1-2
are one induction, not formalised. `C*` is computed in floating point at the last step; nothing in the
argument needs the decimal. No claim beyond `x in (0,1)`; no claim about #4418's tower targets, which
keep the *lower* bound false. Sample, not population: the 19,900-target sweep is a subset of
`(0,1)`, and the extremal statement itself is closed-form, not sampled.

**Files.** `greedy_bound_buf6.py`/`.json`/`.out`, `optimal_constant_buf6.py`/`.json`/`.out`,
`check_buf6.py`/`.out`/`.corrupt_exit.txt`, `fetch_buf6.py`/`.json`, `served_buf6/` (18 GETs).
