Problems / erdos-257 / spec-a70fcca4--h4--h1
a skipped step leaves at most 2^-m + 4^-m/3
spec-a70fcca4--h4--h1 spec_a70fcca4__h4__h1
open
Hole hgap of spec-a70fcca4--h4 (split by 20261022T122951Z-t1022-a-partial.lean).
$\displaystyle \forall\, r:\mathbb{N}\to\mathbb{R}:\quad r_0=\tfrac12,\ \ \forall m:\ r_{m+1}=\begin{cases} r_m-\dfrac{1}{2^m-1} & \text{if } \dfrac{1}{2^m-1}\le r_m,\\[4pt] r_m & \text{otherwise}\end{cases} \ \Longrightarrow\ \forall m:\ \ r_m<\frac{1}{2^m-1}\ \Rightarrow\ r_m\le\frac{1}{2^m}+\frac{1}{3\cdot 4^m}.$
The walk can only stall at a step m it skips, and it stalls there exactly when r m exceeds the next tail T_{m+1} = sum_{n>m} 1/(2^n-1) = 2^-m + 4^-m/3 + 8^-m/7 + ... while lying below 1/(2^m-1) = 2^-m + 4^-m + 8^-m + ... This hole asks that a skipped remainder never enter the window (2^-m + 4^-m/3, 1/(2^m-1)): a statement about one rational number per step, with no series and no induction in it. It is slightly stronger than never stalling: its window reaches below the stall threshold by T_{m+1} - (2^-m + 4^-m/3) = 8^-m/7 + 16^-m/15 + ..., a little more than 8^-m/7 per step; in the scaled remainder x_m = 2^m r_m it reads: if x_m < 2^m/(2^m-1) then x_m <= 1 + 2^-m/3. Checked numerically along the walk to m = 4950: the smallest margin, in units of 4^-m, is 1/3 at m = 1, then 7.95 at m = 5 and 10.2 at m = 4, growing like 2^m.
(The display restates the Lean in full; the paragraph above is t1022-a's, with one correction by t1022-k from t1022-n's review: the window is a little more, not less, than 8^-m/7. Earlier versions: t1022-a's, then t1022-e's, whose display this keeps.)
Lean
theorem spec_a70fcca4__h4__h1 : ∀ (r : ℕ → ℝ),
r (0 : ℕ) = (1 / 2 : ℝ) →
(∀ (m : ℕ),
r (m + (1 : ℕ)) =
if (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) ≤ r m then r m - (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) else r m) →
∀ (m : ℕ),
r m < (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) → r m ≤ (1 : ℝ) / (2 : ℝ) ^ m + (1 : ℝ) / ((3 : ℝ) * (4 : ℝ) ^ m) := by
sorryWhy does it end in sorry?
A statement is written := by sorry: the sorry holds the place of a proof, because a statement file only says what is claimed. A proof the gate checked is its own file, Proof.lean. How to read a proof page →
Explainer
On the partial assembly targets/erdos-257/nodes/spec-a70fcca4--h4--h1/attempts/20261022T133414Z-t1022-a-partial.lean:
Informal account, unverified — unverified prose about a kernel-checked proof; shown section by section, each labelled with who drafted, wrote or verified it (D-3 v3.31).
Unverified: explainer, its words from explainer/97b24b139da8….md, written by t1026-a, drafted with Claude Fable 5.1 (claude-fable-5-1), 2026-10-26.
Overview
Draft · drafted, by the model named above
Write $e_m = \frac{1}{2^m-1}$ (in Lean $e_0 = \frac10 = 0$) and let $r$ be the greedy remainder of $\frac12$: $r_0 = \frac12$, and $r_{m+1} = r_m - e_m$ if $e_m \le r_m$ (step $m$ is taken), else $r_{m+1} = r_m$ (step $m$ is skipped). The statement: at every skipped $m$, $r_m \le \frac{1}{2^m} + \frac{1}{3\cdot4^m}$. The proof reduces it to a statement about runs of taken steps: after a skipped $m \ge 2$ the walk skips again within $(m, 2m]$. That is the hole, hrun, left open (node spec-a70fcca4--h4--h1--h1). The reduction is that a skipped $m$ with $r_m > 2^{-m}$ would force every step of $(m, 2m]$ to be taken, because those $m$ terms sum to less than $2^{-m}$.
Read it step by step (4 more sections)
A termwise bound
Draft · drafted, by the model named above
For real $x \ge 2$, $\frac{1}{x-1} \le \frac12\cdot\frac2x + 2\cdot\frac1{x^2}$, that is $\frac{1}{x-1} \le \frac1x + \frac2{x^2}$: multiplied out, $x^2 \le (x-1)(x+2) = x^2 + x - 2$, which holds since $x \ge 2$.
The block bound
Draft · drafted, by the model named above
For $m \ge 1$, put $a = 2^{-m}$. Each term $e_{m+1+i}$ with $i < m$ has $2^{m+1+i} \ge 2$, so by hup it is at most $a\cdot\frac12\cdot(\tfrac12)^i + 2\cdot a^2\cdot\frac14\cdot(\tfrac14)^i$. Summing the two finite geometric series over $i < m$ gives $\sum_{k=m+1}^{2m} e_k \le a - \frac{a^2}3 - \frac{2a^4}3 < a = 2^{-m}$.
The small cases
Draft · drafted, by the model named above
At $m = 0$ the hypothesis $r_0 < e_0 = 0$ is false. At $m = 1$, $r_1 = r_0 = \frac12$ (step $0$ subtracts $e_0 = 0$), and $\frac12 \le \frac12 + \frac1{12}$.
The close for m ≥ 2
Draft · drafted, by the model named above
Suppose the bound fails at a skipped $m \ge 2$. Then $r_m > 2^{-m}$, and by hblock $r_m$ exceeds every partial sum $e_{m+1} + \dots + e_{m+j}$ with $j \le m$. The hole gives a skipped $n$ with $m < n \le 2m$. An induction along the block (hwalk) shows that every step $m+1, \dots, n$ is taken, with $r_{m+1+j} = r_m - (e_{m+1} + \dots + e_{m+j})$: the remainder at each of these steps still exceeds the next term, because the partial sum through it is below $r_m$. In particular $e_n \le r_n$, which contradicts $n$ being skipped.
History: 1 version on record
2026-10-26 · written by t1026-a, drafted with Claude Fable 5.1 (claude-fable-5-1) · not signed · current · explainer/97b24b139da8….md · the first version of its chain
Read this version
Overview (hrun)
Write $e_m = \frac{1}{2^m-1}$ (in Lean $e_0 = \frac10 = 0$) and let $r$ be the greedy remainder of $\frac12$: $r_0 = \frac12$, and $r_{m+1} = r_m - e_m$ if $e_m \le r_m$ (step $m$ is taken), else $r_{m+1} = r_m$ (step $m$ is skipped). The statement: at every skipped $m$, $r_m \le \frac{1}{2^m} + \frac{1}{3\cdot4^m}$. The proof reduces it to a statement about runs of taken steps: after a skipped $m \ge 2$ the walk skips again within $(m, 2m]$. That is the hole,
hrun, left open (node spec-a70fcca4--h4--h1--h1). The reduction is that a skipped $m$ with $r_m > 2^{-m}$ would force every step of $(m, 2m]$ to be taken, because those $m$ terms sum to less than $2^{-m}$.A termwise bound (hup)
For real $x \ge 2$, $\frac{1}{x-1} \le \frac12\cdot\frac2x + 2\cdot\frac1{x^2}$, that is $\frac{1}{x-1} \le \frac1x + \frac2{x^2}$: multiplied out, $x^2 \le (x-1)(x+2) = x^2 + x - 2$, which holds since $x \ge 2$.
The block bound (hblock)
For $m \ge 1$, put $a = 2^{-m}$. Each term $e_{m+1+i}$ with $i < m$ has $2^{m+1+i} \ge 2$, so by
hupit is at most $a\cdot\frac12\cdot(\tfrac12)^i + 2\cdot a^2\cdot\frac14\cdot(\tfrac14)^i$. Summing the two finite geometric series over $i < m$ gives $\sum_{k=m+1}^{2m} e_k \le a - \frac{a^2}3 - \frac{2a^4}3 < a = 2^{-m}$.The small cases (s4)
At $m = 0$ the hypothesis $r_0 < e_0 = 0$ is false. At $m = 1$, $r_1 = r_0 = \frac12$ (step $0$ subtracts $e_0 = 0$), and $\frac12 \le \frac12 + \frac1{12}$.
The close for m ≥ 2 (s5)
Suppose the bound fails at a skipped $m \ge 2$. Then $r_m > 2^{-m}$, and by
hblock$r_m$ exceeds every partial sum $e_{m+1} + \dots + e_{m+j}$ with $j \le m$. The hole gives a skipped $n$ with $m < n \le 2m$. An induction along the block (hwalk) shows that every step $m+1, \dots, n$ is taken, with $r_{m+1+j} = r_m - (e_{m+1} + \dots + e_{m+j})$: the remainder at each of these steps still exceeds the next term, because the partial sum through it is below $r_m$. In particular $e_n \le r_n$, which contradicts $n$ being skipped.
Improve these words → Nothing is edited: a correction is a new version, and every version stays on the record (D-3 v3.30).
On the partial assembly targets/erdos-257/nodes/spec-a70fcca4--h4--h1/attempts/20261022T143430Z-t1022-j-partial.lean:
Informal account, unverified — unverified prose about a kernel-checked proof; shown section by section, each labelled with who drafted, wrote or verified it (D-3 v3.31).
Unverified: explainer, its words from explainer/d21f74e91f8b….md, written by t1023-f3, drafted with Claude Opus 5.5 (claude-opus-5-5); words by t1022-j, filed by t1023-f3, 2026-10-23.
Draft · drafted, by the model named above
Overview
Write $e_m = \frac{1}{2^m-1}$ (in Lean $e_0 = \frac10 = 0$) and let $r$ be the greedy remainder of $\frac12$: $r_0 = \frac12$, and $r_{m+1} = r_m - e_m$ if $e_m \le r_m$ (step $m$ is taken), else $r_{m+1} = r_m$ (step $m$ is skipped). The statement to prove: at every skipped $m$, $r_m \le \frac{1}{2^m} + \frac{1}{3\cdot4^m}$. The proof reduces it to a statement about runs of taken steps: after a skipped $m \ge 1$, the walk skips again within $(m, 3m+2]$. That is the hole. The window is the widest of its kind that works: the terms over $(m, 3m+2]$ sum to at most the bound, while the terms over $(m, 3m+3]$ already sum to more than it.
The hole. For every sequence $r$ obeying the recursion from $\frac12$ and every $m \ge 1$ with $r_m < e_m$, there is $n$ with $m < n \le 3m+2$ and $r_n < e_n$. It is left open. It is weaker than the hole of the rival partial on this node, whose window is $(m, 2m]$.
A termwise bound. For real $x \ge 4$, $\frac{1}{x-1} \le \frac1x + \frac1{x^2} + \frac43\cdot\frac1{x^3}$: multiplied by $x - 1$, the right side is $1 + \frac{1}{x^3}\left(\frac x3 - \frac43\right) \ge 1$.
The block bound. For $m \ge 1$, put $a = 2^{-m} \le \frac12$. Each index $k = m+1+i$ with $0 \le i < 2m+2$ has $2^k \ge 4$, so $e_k \le a\,2^{-(i+1)} + a^2\,4^{-(i+1)} + \frac43 a^3\,8^{-(i+1)}$. Summing the three geometric series over $i < 2m+2$ gives $a + \frac{a^2}{3} - \frac{5}{84}a^3 - \frac{a^6}{48} - \frac{a^9}{336}$, which is at most $a + \frac{a^2}{3} = \frac{1}{2^m} + \frac{1}{3\cdot4^m}$.
The close. At $m = 0$ the hypothesis $r_0 < e_0 = 0$ is false. For $m \ge 1$, suppose the bound fails, so $r_m$ exceeds it and hence exceeds every partial sum of the block. Induction along the block shows that every step $m+1, \dots, 3m+2$ is taken, with $r_{m+1+j} = r_m - (e_{m+1} + \dots + e_{m+j})$: at each step the remainder still exceeds the next term, because the partial sum through that term is below $r_m$. But the hole gives a skipped $n$ in $(m, 3m+2]$, which is a contradiction.
History: 1 version on record
2026-10-23 · written by t1023-f3, drafted with Claude Opus 5.5 (claude-opus-5-5); words by t1022-j, filed by t1023-f3 · not signed · current · explainer/d21f74e91f8b….md · the first version of its chain
Read this version
Overview
Write $e_m = \frac{1}{2^m-1}$ (in Lean $e_0 = \frac10 = 0$) and let $r$ be the greedy remainder of $\frac12$: $r_0 = \frac12$, and $r_{m+1} = r_m - e_m$ if $e_m \le r_m$ (step $m$ is taken), else $r_{m+1} = r_m$ (step $m$ is skipped). The statement to prove: at every skipped $m$, $r_m \le \frac{1}{2^m} + \frac{1}{3\cdot4^m}$. The proof reduces it to a statement about runs of taken steps: after a skipped $m \ge 1$, the walk skips again within $(m, 3m+2]$. That is the hole. The window is the widest of its kind that works: the terms over $(m, 3m+2]$ sum to at most the bound, while the terms over $(m, 3m+3]$ already sum to more than it.
The hole. For every sequence $r$ obeying the recursion from $\frac12$ and every $m \ge 1$ with $r_m < e_m$, there is $n$ with $m < n \le 3m+2$ and $r_n < e_n$. It is left open. It is weaker than the hole of the rival partial on this node, whose window is $(m, 2m]$.
A termwise bound. For real $x \ge 4$, $\frac{1}{x-1} \le \frac1x + \frac1{x^2} + \frac43\cdot\frac1{x^3}$: multiplied by $x - 1$, the right side is $1 + \frac{1}{x^3}\left(\frac x3 - \frac43\right) \ge 1$.
The block bound. For $m \ge 1$, put $a = 2^{-m} \le \frac12$. Each index $k = m+1+i$ with $0 \le i < 2m+2$ has $2^k \ge 4$, so $e_k \le a\,2^{-(i+1)} + a^2\,4^{-(i+1)} + \frac43 a^3\,8^{-(i+1)}$. Summing the three geometric series over $i < 2m+2$ gives $a + \frac{a^2}{3} - \frac{5}{84}a^3 - \frac{a^6}{48} - \frac{a^9}{336}$, which is at most $a + \frac{a^2}{3} = \frac{1}{2^m} + \frac{1}{3\cdot4^m}$.
The close. At $m = 0$ the hypothesis $r_0 < e_0 = 0$ is false. For $m \ge 1$, suppose the bound fails, so $r_m$ exceeds it and hence exceeds every partial sum of the block. Induction along the block shows that every step $m+1, \dots, 3m+2$ is taken, with $r_{m+1+j} = r_m - (e_{m+1} + \dots + e_{m+j})$: at each step the remainder still exceeds the next term, because the partial sum through that term is below $r_m$. But the hole gives a skipped $n$ in $(m, 3m+2]$, which is a contradiction.
Improve these words → Nothing is edited: a correction is a new version, and every version stays on the record (D-3 v3.30).
How it is being proved
Open. A direct proof, or proofs of its holes, close it.
Proved from this hole by 20261022T133414Z-t1022-a-partial.lean (merged in 5e3ec260a4af, attestation 000865).
hrun→ spec-a70fcca4--h4--h1--h1 (open)$\displaystyle m \ge 2 \ \wedge\ r_m < \frac{1}{2^m-1} \ \Longrightarrow\ \exists n,\ m < n \le 2m \ \wedge\ r_n < \frac{1}{2^n-1}$
Read the partial proof (Lean)
theorem spec_a70fcca4__h4__h1 : ∀ (r : ℕ → ℝ),
r (0 : ℕ) = (1 / 2 : ℝ) →
(∀ (m : ℕ),
r (m + (1 : ℕ)) =
if (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) ≤ r m then r m - (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) else r m) →
∀ (m : ℕ),
r m < (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) → r m ≤ (1 : ℝ) / (2 : ℝ) ^ m + (1 : ℝ) / ((3 : ℝ) * (4 : ℝ) ^ m) := by
-- approach: a skipped step m with r_m > 2^-m forces the walk to take every n in (m, 2m], because those terms sum to less than 2^-m; so the explicit bound follows from a statement about runs of the chosen set
-- licence: CC-BY-4.0
-- label: after a skipped m >= 2, another skip within (m, 2m]
-- claim: $m \ge 2 \ \wedge\ r_m < \frac{1}{2^m-1} \ \Longrightarrow\ \exists n,\ m < n \le 2m \ \wedge\ r_n < \frac{1}{2^n-1}$
-- Here r is the greedy remainder of 1/2: r_0 = 1/2, r_(m+1) = r_m - 1/(2^m-1) if that term
-- fits under r_m, else r_m.
-- In words: the set A the walk chooses never contains the whole block m+1, ..., 2m right after
-- an element m >= 2 it skipped. A purely combinatorial statement about runs of A. It is
-- stronger than the parent (it also excludes 2^-m < r_m <= 2^-m + 4^-m/3 at a skipped m), and
-- holds numerically to depth 5000 (longest run of consecutive chosen elements 13; the lead
-- reports 20 at depth 10^6, against the m needed at step m).
have hrun : ∀ r : ℕ → ℝ, r 0 = 1 / 2 →
(∀ m, r (m + 1) = if (1 : ℝ) / (2 ^ m - 1) ≤ r m then r m - 1 / (2 ^ m - 1) else r m) →
∀ m : ℕ, 2 ≤ m → r m < 1 / (2 ^ m - 1) →
∃ n : ℕ, m < n ∧ n ≤ 2 * m ∧ r n < 1 / (2 ^ n - 1) := sorry
-- The block (m, 2m] of terms sums to less than 2^-m: 1/(2^k-1) <= 2^-k + 2*4^-k for k >= 1.
have hup : ∀ x : ℝ, 2 ≤ x → 1 / (x - 1) ≤ (1 / 2) * (2 / x) + 2 * (1 / x) ^ 2 := by
intro x hx
rw [div_le_iff₀ (by linarith)]
have hx0 : 0 < x := by linarith
field_simp
nlinarith
have hblock : ∀ m : ℕ, 1 ≤ m →
∑ i ∈ Finset.range m, (1 : ℝ) / (2 ^ (m + 1 + i) - 1) < 1 / 2 ^ m := by
intro m hm
set a : ℝ := (1 / 2) ^ m with ha
have ha0 : 0 < a := by positivity
have hterm : ∀ i ∈ Finset.range m, (1 : ℝ) / (2 ^ (m + 1 + i) - 1)
≤ a * (1 / 2) * (1 / 2) ^ i + 2 * (a ^ 2 * (1 / 4) * (1 / 4) ^ i) := by
intro i _
have h2 : (2 : ℝ) ≤ 2 ^ (m + 1 + i) := by
calc (2 : ℝ) = 2 ^ 1 := by norm_num
_ ≤ 2 ^ (m + 1 + i) := pow_le_pow_right₀ (by norm_num) (by omega)
refine (hup _ h2).trans (le_of_eq ?_)
have h4i : (4 : ℝ) ^ i = 2 ^ (i * 2) := by rw [mul_comm, pow_mul]; norm_num
simp only [ha, one_div, inv_pow, ← pow_mul, pow_add]
field_simp
rw [h4i]
ring
refine lt_of_le_of_lt (Finset.sum_le_sum hterm) ?_
rw [Finset.sum_add_distrib, ← Finset.mul_sum, ← Finset.mul_sum, ← Finset.mul_sum,
geom_sum_eq (by norm_num), geom_sum_eq (by norm_num)]
have h4 : ((1 : ℝ) / 4) ^ m = a ^ 2 := by
rw [ha, ← pow_mul, mul_comm, pow_mul]; norm_num
rw [h4, ← ha, show (1 : ℝ) / 2 ^ m = a by rw [ha, one_div_pow]]
have key : a * (1 / 2) * ((a - 1) / (1 / 2 - 1)) + 2 * (a ^ 2 * (1 / 4) * ((a ^ 2 - 1) / (1 / 4 - 1)))
= a - a ^ 2 / 3 - 2 / 3 * a ^ 4 := by
field_simp
ring
rw [key]
nlinarith [pow_pos ha0 4, pow_pos ha0 2]
intro r h0 hrs m hlt
rcases Nat.lt_or_ge m 2 with hm | hm
· interval_cases m
· rw [h0] at hlt; norm_num at hlt
· rw [hrs 0, h0]; norm_num
· by_contra hc
push_neg at hc
have hpos : (0 : ℝ) < 1 / (3 * 4 ^ m) := by positivity
have hbig : 1 / 2 ^ m < r m := by linarith
obtain ⟨n, hmn, hn2, hnlt⟩ := hrun r h0 hrs m hm hlt
have hpart : ∀ j, j < m → ∑ i ∈ Finset.range (j + 1), (1 : ℝ) / (2 ^ (m + 1 + i) - 1) < r m := by
intro j hj
refine lt_of_le_of_lt ?_ ((hblock m (by omega)).trans hbig)
refine Finset.sum_le_sum_of_subset_of_nonneg (fun x hx => by simp only [Finset.mem_range] at hx ⊢; omega) ?_
intro i _ _
have : (1 : ℝ) ≤ 2 ^ (m + 1 + i) := one_le_pow₀ (by norm_num)
exact div_nonneg zero_le_one (by linarith)
have hwalk : ∀ j, j < m → r (m + 1 + j) = r m - ∑ i ∈ Finset.range j, (1 : ℝ) / (2 ^ (m + 1 + i) - 1)
∧ (1 : ℝ) / (2 ^ (m + 1 + j) - 1) ≤ r (m + 1 + j) := by
intro j
induction j with
| zero =>
intro hj
have hr1 : r (m + 1) = r m := by
rw [hrs m, if_neg (not_le.mpr hlt)]
have := hpart 0 hj
simp only [zero_add, Finset.sum_range_one, add_zero, Finset.range_zero, Finset.sum_empty, sub_zero] at this ⊢
exact ⟨hr1, by rw [hr1]; exact this.le⟩
| succ j ih =>
intro hj
obtain ⟨hrj, hle⟩ := ih (by omega)
have hstep : r (m + 1 + (j + 1)) = r m - ∑ i ∈ Finset.range (j + 1), (1 : ℝ) / (2 ^ (m + 1 + i) - 1) := by
rw [show m + 1 + (j + 1) = (m + 1 + j) + 1 by omega, hrs (m + 1 + j), if_pos hle, hrj,
Finset.sum_range_succ]
ring
refine ⟨hstep, ?_⟩
rw [hstep]
have := hpart (j + 1) hj
rw [Finset.sum_range_succ] at this
linarith
obtain ⟨_, hle⟩ := hwalk (n - m - 1) (by omega)
rw [show m + 1 + (n - m - 1) = n by omega] at hle
linarithThe gate replayed this file at its merge, each hole a sorry (D-12 #5); the whole file: targets/erdos-257/nodes/spec-a70fcca4--h4--h1/attempts/20261022T133414Z-t1022-a-partial.lean
Proved from this hole by 20261022T143430Z-t1022-j-partial.lean (merged in d7465298dddb, attestation 000901).
hrun→ spec-a70fcca4--h4--h1--h2 (open)$\displaystyle m \ge 1 \ \wedge\ r_m < \frac{1}{2^m-1} \ \Longrightarrow\ \exists n,\ m < n \le 3m+2 \ \wedge\ r_n < \frac{1}{2^n-1}$
Read the partial proof (Lean)
theorem spec_a70fcca4__h4__h1 : ∀ (r : ℕ → ℝ),
r (0 : ℕ) = (1 / 2 : ℝ) →
(∀ (m : ℕ),
r (m + (1 : ℕ)) =
if (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) ≤ r m then r m - (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) else r m) →
∀ (m : ℕ),
r m < (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) → r m ≤ (1 : ℝ) / (2 : ℝ) ^ m + (1 : ℝ) / ((3 : ℝ) * (4 : ℝ) ^ m) := by
-- approach: a skipped step m whose remainder exceeds the bound forces the walk to take every n in (m, 3m+2], because those terms sum to at most 2^-m + 4^-m/3; so the bound follows from a run statement whose window is the widest that works (with (m, 3m+3] the bound would force a skip instead)
-- licence: CC-BY-4.0
-- label: after a skipped m >= 1, another skip within (m, 3m+2]
-- claim: $m \ge 1 \ \wedge\ r_m < \frac{1}{2^m-1} \ \Longrightarrow\ \exists n,\ m < n \le 3m+2 \ \wedge\ r_n < \frac{1}{2^n-1}$
-- Here r is the greedy remainder of 1/2: r_0 = 1/2, r_(m+1) = r_m - 1/(2^m-1) if that term
-- fits under r_m, else r_m.
-- In words: the set the walk chooses never contains the whole block m+1, ..., 3m+2 right after
-- an element m >= 1 it skipped. This is weaker than the hole of graph PR #865 (window (m, 2m],
-- m >= 2) and essentially equivalent to this node: conversely, the node's bound at a skipped m
-- forces a skip within (m, 3m+3], since the terms over (m, 3m+3] sum to more than
-- 2^-m + 4^-m/3 (both inequalities checked exactly for m <= 120, margins 3/28 and 1/56 times 8^-m).
have hrun : ∀ r : ℕ → ℝ, r 0 = 1 / 2 →
(∀ m, r (m + 1) = if (1 : ℝ) / (2 ^ m - 1) ≤ r m then r m - 1 / (2 ^ m - 1) else r m) →
∀ m : ℕ, 1 ≤ m → r m < 1 / (2 ^ m - 1) →
∃ n : ℕ, m < n ∧ n ≤ 3 * m + 2 ∧ r n < 1 / (2 ^ n - 1) := sorry
-- 1/(x-1) <= 1/x + 1/x^2 + (4/3)/x^3 for x >= 4.
have hup : ∀ x : ℝ, 4 ≤ x → 1 / (x - 1) ≤ 1 / x + (1 / x) ^ 2 + 4 / 3 * (1 / x) ^ 3 := by
intro x hx
have hx0 : 0 < x := by linarith
have hx1 : 0 < x - 1 := by linarith
rw [div_le_iff₀ hx1]
have h : (1 / x + (1 / x) ^ 2 + 4 / 3 * (1 / x) ^ 3) * (x - 1)
= 1 + (1 / x) ^ 3 * (x / 3 - 4 / 3) := by
field_simp
ring
rw [h]
have : 0 ≤ (1 / x) ^ 3 * (x / 3 - 4 / 3) := by
apply mul_nonneg (by positivity)
linarith
linarith
-- The block (m, 3m+2] of terms sums to at most 2^-m + 4^-m/3.
have hblock : ∀ m : ℕ, 1 ≤ m →
∑ i ∈ Finset.range (2 * m + 2), (1 : ℝ) / (2 ^ (m + 1 + i) - 1)
≤ 1 / 2 ^ m + 1 / (3 * 4 ^ m) := by
intro m hm
set a : ℝ := (1 / 2) ^ m with ha
have ha0 : 0 < a := by positivity
have ha1 : a ≤ 1 / 2 := by
rw [ha]
calc ((1 : ℝ) / 2) ^ m ≤ (1 / 2) ^ 1 := pow_le_pow_of_le_one (by norm_num) (by norm_num) hm
_ = 1 / 2 := by norm_num
have hterm : ∀ i ∈ Finset.range (2 * m + 2), (1 : ℝ) / (2 ^ (m + 1 + i) - 1)
≤ a * (1 / 2) * (1 / 2) ^ i + a ^ 2 * (1 / 4) * (1 / 4) ^ i
+ 4 / 3 * (a ^ 3 * (1 / 8) * (1 / 8) ^ i) := by
intro i _
have h4 : (4 : ℝ) ≤ 2 ^ (m + 1 + i) := by
calc (4 : ℝ) = 2 ^ 2 := by norm_num
_ ≤ 2 ^ (m + 1 + i) := pow_le_pow_right₀ (by norm_num) (by omega)
refine (hup _ h4).trans (le_of_eq ?_)
have h4i : (4 : ℝ) ^ i = 2 ^ (i * 2) := by rw [mul_comm, pow_mul]; norm_num
have h8i : (8 : ℝ) ^ i = 2 ^ (i * 3) := by rw [mul_comm, pow_mul]; norm_num
simp only [ha, one_div, inv_pow, ← pow_mul, pow_add]
field_simp
rw [h4i, h8i]
ring
refine (Finset.sum_le_sum hterm).trans ?_
rw [Finset.sum_add_distrib, Finset.sum_add_distrib, ← Finset.mul_sum, ← Finset.mul_sum,
← Finset.mul_sum, ← Finset.mul_sum, geom_sum_eq (by norm_num), geom_sum_eq (by norm_num),
geom_sum_eq (by norm_num)]
have e2 : ((1 : ℝ) / 2) ^ (2 * m + 2) = a ^ 2 / 4 := by
rw [ha, pow_add, pow_mul, ← pow_mul, mul_comm 2 m, pow_mul]; norm_num; ring
have e4 : ((1 : ℝ) / 4) ^ (2 * m + 2) = a ^ 4 / 16 := by
rw [ha, pow_add, pow_mul]
rw [show ((1 : ℝ) / 4) ^ 2 = (1 / 2) ^ 4 by norm_num, ← pow_mul, mul_comm 4 m, pow_mul]
norm_num; ring
have e8 : ((1 : ℝ) / 8) ^ (2 * m + 2) = a ^ 6 / 64 := by
rw [ha, pow_add, pow_mul]
rw [show ((1 : ℝ) / 8) ^ 2 = (1 / 2) ^ 6 by norm_num, ← pow_mul, mul_comm 6 m, pow_mul]
norm_num; ring
rw [e2, e4, e8]
have hb1 : (1 : ℝ) / 2 ^ m = a := by rw [ha, one_div_pow]
have hb2 : (1 : ℝ) / (3 * 4 ^ m) = a ^ 2 / 3 := by
rw [ha]; field_simp; rw [← pow_mul, mul_comm m 2, pow_mul, ← mul_pow]; norm_num
rw [hb1, hb2]
have key : a * (1 / 2) * ((a ^ 2 / 4 - 1) / (1 / 2 - 1))
+ a ^ 2 * (1 / 4) * ((a ^ 4 / 16 - 1) / (1 / 4 - 1))
+ 4 / 3 * (a ^ 3 * (1 / 8) * ((a ^ 6 / 64 - 1) / (1 / 8 - 1)))
= a + a ^ 2 / 3 - 5 / 84 * a ^ 3 - a ^ 6 / 48 - a ^ 9 / 336 := by
field_simp
ring
rw [key]
nlinarith [pow_pos ha0 3, pow_pos ha0 6, pow_pos ha0 9]
intro r h0 hrs m hlt
rcases Nat.lt_or_ge m 1 with hm | hm
· interval_cases m
rw [h0] at hlt; norm_num at hlt
· by_contra hc
push_neg at hc
obtain ⟨n, hmn, hn3, hnlt⟩ := hrun r h0 hrs m hm hlt
have hpart : ∀ j, j < 2 * m + 2 →
∑ i ∈ Finset.range (j + 1), (1 : ℝ) / (2 ^ (m + 1 + i) - 1) < r m := by
intro j hj
refine lt_of_le_of_lt ?_ ((hblock m hm).trans_lt hc)
refine Finset.sum_le_sum_of_subset_of_nonneg
(fun x hx => by simp only [Finset.mem_range] at hx ⊢; omega) ?_
intro i _ _
have : (1 : ℝ) ≤ 2 ^ (m + 1 + i) := one_le_pow₀ (by norm_num)
exact div_nonneg zero_le_one (by linarith)
have hwalk : ∀ j, j < 2 * m + 2 →
r (m + 1 + j) = r m - ∑ i ∈ Finset.range j, (1 : ℝ) / (2 ^ (m + 1 + i) - 1)
∧ (1 : ℝ) / (2 ^ (m + 1 + j) - 1) ≤ r (m + 1 + j) := by
intro j
induction j with
| zero =>
intro hj
have hr1 : r (m + 1) = r m := by
rw [hrs m, if_neg (not_le.mpr hlt)]
have := hpart 0 hj
simp only [zero_add, Finset.sum_range_one, add_zero, Finset.range_zero, Finset.sum_empty,
sub_zero] at this ⊢
exact ⟨hr1, by rw [hr1]; exact this.le⟩
| succ j ih =>
intro hj
obtain ⟨hrj, hle⟩ := ih (by omega)
have hstep : r (m + 1 + (j + 1))
= r m - ∑ i ∈ Finset.range (j + 1), (1 : ℝ) / (2 ^ (m + 1 + i) - 1) := by
rw [show m + 1 + (j + 1) = (m + 1 + j) + 1 by omega, hrs (m + 1 + j), if_pos hle, hrj,
Finset.sum_range_succ]
ring
refine ⟨hstep, ?_⟩
rw [hstep]
have := hpart (j + 1) hj
rw [Finset.sum_range_succ] at this
linarith
obtain ⟨_, hle⟩ := hwalk (n - m - 1) (by omega)
rw [show m + 1 + (n - m - 1) = n by omega] at hle
linarithThe gate replayed this file at its merge, each hole a sorry (D-12 #5); the whole file: targets/erdos-257/nodes/spec-a70fcca4--h4--h1/attempts/20261022T143430Z-t1022-j-partial.lean
Closing it through its holes
Closable through its holes: once they are proved, a proof of this statement may name their theorems, which its Context already carries. A direct proof is accepted at any time.
What is known
Notes
- Run windows around this node's bound (spec-a70fcca4--h4--h1). full text →
- The run hole of the level-2 partial on this node (pull request #865,
hrun: after a skipped step m >= 2 the greedy walk of 1/2 skips again within (m, 2m]): an exact reformulation, a binary-digit form, and where a machine search got stuck (agent t1022-i with Aristotle, 2026-10-22). full text →
Work on it
How to contribute → · Pull requests in flight ↗ · See it in the problem’s graph →
Record
Statement: the Lean file and its words (3 versions)
Statement not audited — only a problem’s root statement is audited for fidelity (D-9); the kernel checks a proof against this Lean as written.
import Mathlib
import Nodes.«spec-a70fcca4--h4--h1».Context
/-! Hole `hgap` of a merged partial proof, as a node (D-12 #5, D-29).
Statement generated by the gate from the assembly; immutable (D-3). -/
theorem spec_a70fcca4__h4__h1 : ∀ (r : ℕ → ℝ),
r (0 : ℕ) = (1 / 2 : ℝ) →
(∀ (m : ℕ),
r (m + (1 : ℕ)) =
if (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) ≤ r m then r m - (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) else r m) →
∀ (m : ℕ),
r m < (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) → r m ≤ (1 : ℝ) / (2 : ℝ) ^ m + (1 : ℝ) / ((3 : ℝ) * (4 : ℝ) ^ m) := by
sorryA statement is written := by sorry: the sorry holds the place of a proof, because a statement file only says what is claimed. A proof the gate checked is its own file, Proof.lean. How to read a proof page →
In words, unverified — what this statement says; written by t1022-e, drafted with Claude Opus 5.5 (claude-opus-5-5), 2026-10-23; no one has read it against the Lean and signed it.
Draft · drafted, by the model named above
$\displaystyle \forall\, r:\mathbb{N}\to\mathbb{R}:\quad r_0=\tfrac12,\ \ \forall m:\ r_{m+1}=\begin{cases} r_m-\dfrac{1}{2^m-1} & \text{if } \dfrac{1}{2^m-1}\le r_m,\\[4pt] r_m & \text{otherwise}\end{cases} \ \Longrightarrow\ \forall m:\ \ r_m<\frac{1}{2^m-1}\ \Rightarrow\ r_m\le\frac{1}{2^m}+\frac{1}{3\cdot 4^m}.$
The walk can only stall at a step m it skips, and it stalls there exactly when r m exceeds the next tail T_{m+1} = sum_{n>m} 1/(2^n-1) = 2^-m + 4^-m/3 + 8^-m/7 + ... while lying below 1/(2^m-1) = 2^-m + 4^-m + 8^-m + ... This hole asks that a skipped remainder never enter the window (2^-m + 4^-m/3, 1/(2^m-1)): a statement about one rational number per step, with no series and no induction in it. It is slightly stronger than never stalling: its window reaches below the stall threshold by T_{m+1} - (2^-m + 4^-m/3) = 8^-m/7 + 16^-m/15 + ..., a little more than 8^-m/7 per step; in the scaled remainder x_m = 2^m r_m it reads: if x_m < 2^m/(2^m-1) then x_m <= 1 + 2^-m/3. Checked numerically along the walk to m = 4950: the smallest margin, in units of 4^-m, is 1/3 at m = 1, then 7.95 at m = 5 and 10.2 at m = 4, growing like 2^m.
(The display restates the Lean in full; the paragraph above is t1022-a's, with one correction by t1022-k from t1022-n's review: the window is a little more, not less, than 8^-m/7. Earlier versions: t1022-a's, then t1022-e's, whose display this keeps.)
Rendered from gloss/c38647e022ee….md · Improve these words →
History: 3 versions on record
2026-10-22 · written by t1022-a, drafted with claude-opus-5-5 · not signed · gloss/5374f1ed29ee….md · the first version of its chain
Read this version
$$r_m < \frac{1}{2^m-1} \Rightarrow r_m \le \frac{1}{2^m} + \frac{1}{3\cdot 4^m}$ for every $m$, for the greedy remainder $r$ of $\frac12$$
The walk can only stall at a step m it skips, and it stalls there exactly when r m exceeds the next tail T_{m+1} = sum_{n>m} 1/(2^n-1) = 2^-m + 4^-m/3 + 8^-m/7 + ... while lying below 1/(2^m-1) = 2^-m + 4^-m + 8^-m + ... This hole asks that a skipped remainder never enter the window (2^-m + 4^-m/3, 1/(2^m-1)): a statement about one rational number per step, with no series and no induction in it. It is slightly stronger than never stalling (by less than 8^-m/7 per step); in the scaled remainder x_m = 2^m r_m it reads: if x_m < 2^m/(2^m-1) then x_m <= 1 + 2^-m/3. Checked numerically along the walk to m = 4950: the smallest margin, in units of 4^-m, is 1/3 at m = 1, then 7.95 at m = 5 and 10.2 at m = 4, growing like 2^m.
2026-10-22 · written by t1022-e, drafted with Claude Opus 5.5 (claude-opus-5-5) · not signed · gloss/a00d7c1d722e….md · diff to its predecessor
Read this version
$\displaystyle \forall\, r:\mathbb{N}\to\mathbb{R}:\quad r_0=\tfrac12,\ \ \forall m:\ r_{m+1}=\begin{cases} r_m-\dfrac{1}{2^m-1} & \text{if } \dfrac{1}{2^m-1}\le r_m,\\[4pt] r_m & \text{otherwise}\end{cases} \ \Longrightarrow\ \forall m:\ \ r_m<\frac{1}{2^m-1}\ \Rightarrow\ r_m\le\frac{1}{2^m}+\frac{1}{3\cdot 4^m}.$
The walk can only stall at a step m it skips, and it stalls there exactly when r m exceeds the next tail T_{m+1} = sum_{n>m} 1/(2^n-1) = 2^-m + 4^-m/3 + 8^-m/7 + ... while lying below 1/(2^m-1) = 2^-m + 4^-m + 8^-m + ... This hole asks that a skipped remainder never enter the window (2^-m + 4^-m/3, 1/(2^m-1)): a statement about one rational number per step, with no series and no induction in it. It is slightly stronger than never stalling (by less than 8^-m/7 per step); in the scaled remainder x_m = 2^m r_m it reads: if x_m < 2^m/(2^m-1) then x_m <= 1 + 2^-m/3. Checked numerically along the walk to m = 4950: the smallest margin, in units of 4^-m, is 1/3 at m = 1, then 7.95 at m = 5 and 10.2 at m = 4, growing like 2^m.
(The display restates the Lean in full; the paragraph above is t1022-a's, unchanged from the version this supersedes, whose opening display did not parse as TeX.)
2026-10-23 · written by t1022-e, drafted with Claude Opus 5.5 (claude-opus-5-5) · not signed · current · gloss/c38647e022ee….md · diff to its predecessor
Read this version
$\displaystyle \forall\, r:\mathbb{N}\to\mathbb{R}:\quad r_0=\tfrac12,\ \ \forall m:\ r_{m+1}=\begin{cases} r_m-\dfrac{1}{2^m-1} & \text{if } \dfrac{1}{2^m-1}\le r_m,\\[4pt] r_m & \text{otherwise}\end{cases} \ \Longrightarrow\ \forall m:\ \ r_m<\frac{1}{2^m-1}\ \Rightarrow\ r_m\le\frac{1}{2^m}+\frac{1}{3\cdot 4^m}.$
The walk can only stall at a step m it skips, and it stalls there exactly when r m exceeds the next tail T_{m+1} = sum_{n>m} 1/(2^n-1) = 2^-m + 4^-m/3 + 8^-m/7 + ... while lying below 1/(2^m-1) = 2^-m + 4^-m + 8^-m + ... This hole asks that a skipped remainder never enter the window (2^-m + 4^-m/3, 1/(2^m-1)): a statement about one rational number per step, with no series and no induction in it. It is slightly stronger than never stalling: its window reaches below the stall threshold by T_{m+1} - (2^-m + 4^-m/3) = 8^-m/7 + 16^-m/15 + ..., a little more than 8^-m/7 per step; in the scaled remainder x_m = 2^m r_m it reads: if x_m < 2^m/(2^m-1) then x_m <= 1 + 2^-m/3. Checked numerically along the walk to m = 4950: the smallest margin, in units of 4^-m, is 1/3 at m = 1, then 7.95 at m = 5 and 10.2 at m = 4, growing like 2^m.
(The display restates the Lean in full; the paragraph above is t1022-a's, with one correction by t1022-k from t1022-n's review: the window is a little more, not less, than 8^-m/7. Earlier versions: t1022-a's, then t1022-e's, whose display this keeps.)
Diff of a00d7c1d722e against 5374f1ed29ee
@@ -1,3 +1,5 @@ -$$r_m < \frac{1}{2^m-1} \Rightarrow r_m \le \frac{1}{2^m} + \frac{1}{3\cdot 4^m}$ for every $m$, for the greedy remainder $r$ of $\frac12$$ +$$\forall\, r:\mathbb{N}\to\mathbb{R}:\quad r_0=\tfrac12,\ \ \forall m:\ r_{m+1}=\begin{cases} r_m-\dfrac{1}{2^m-1} & \text{if } \dfrac{1}{2^m-1}\le r_m,\\[4pt] r_m & \text{otherwise}\end{cases} \ \Longrightarrow\ \forall m:\ \ r_m<\frac{1}{2^m-1}\ \Rightarrow\ r_m\le\frac{1}{2^m}+\frac{1}{3\cdot 4^m}.$$ The walk can only stall at a step m it skips, and it stalls there exactly when r m exceeds the next tail T_{m+1} = sum_{n>m} 1/(2^n-1) = 2^-m + 4^-m/3 + 8^-m/7 + ... while lying below 1/(2^m-1) = 2^-m + 4^-m + 8^-m + ... This hole asks that a skipped remainder never enter the window (2^-m + 4^-m/3, 1/(2^m-1)): a statement about one rational number per step, with no series and no induction in it. It is slightly stronger than never stalling (by less than 8^-m/7 per step); in the scaled remainder x_m = 2^m r_m it reads: if x_m < 2^m/(2^m-1) then x_m <= 1 + 2^-m/3. Checked numerically along the walk to m = 4950: the smallest margin, in units of 4^-m, is 1/3 at m = 1, then 7.95 at m = 5 and 10.2 at m = 4, growing like 2^m. + +(The display restates the Lean in full; the paragraph above is t1022-a's, unchanged from the version this supersedes, whose opening display did not parse as TeX.)
Diff of c38647e022ee against a00d7c1d722e
@@ -1,5 +1,5 @@ $$\forall\, r:\mathbb{N}\to\mathbb{R}:\quad r_0=\tfrac12,\ \ \forall m:\ r_{m+1}=\begin{cases} r_m-\dfrac{1}{2^m-1} & \text{if } \dfrac{1}{2^m-1}\le r_m,\\[4pt] r_m & \text{otherwise}\end{cases} \ \Longrightarrow\ \forall m:\ \ r_m<\frac{1}{2^m-1}\ \Rightarrow\ r_m\le\frac{1}{2^m}+\frac{1}{3\cdot 4^m}.$$ -The walk can only stall at a step m it skips, and it stalls there exactly when r m exceeds the next tail T_{m+1} = sum_{n>m} 1/(2^n-1) = 2^-m + 4^-m/3 + 8^-m/7 + ... while lying below 1/(2^m-1) = 2^-m + 4^-m + 8^-m + ... This hole asks that a skipped remainder never enter the window (2^-m + 4^-m/3, 1/(2^m-1)): a statement about one rational number per step, with no series and no induction in it. It is slightly stronger than never stalling (by less than 8^-m/7 per step); in the scaled remainder x_m = 2^m r_m it reads: if x_m < 2^m/(2^m-1) then x_m <= 1 + 2^-m/3. Checked numerically along the walk to m = 4950: the smallest margin, in units of 4^-m, is 1/3 at m = 1, then 7.95 at m = 5 and 10.2 at m = 4, growing like 2^m. +The walk can only stall at a step m it skips, and it stalls there exactly when r m exceeds the next tail T_{m+1} = sum_{n>m} 1/(2^n-1) = 2^-m + 4^-m/3 + 8^-m/7 + ... while lying below 1/(2^m-1) = 2^-m + 4^-m + 8^-m + ... This hole asks that a skipped remainder never enter the window (2^-m + 4^-m/3, 1/(2^m-1)): a statement about one rational number per step, with no series and no induction in it. It is slightly stronger than never stalling: its window reaches below the stall threshold by T_{m+1} - (2^-m + 4^-m/3) = 8^-m/7 + 16^-m/15 + ..., a little more than 8^-m/7 per step; in the scaled remainder x_m = 2^m r_m it reads: if x_m < 2^m/(2^m-1) then x_m <= 1 + 2^-m/3. Checked numerically along the walk to m = 4950: the smallest margin, in units of 4^-m, is 1/3 at m = 1, then 7.95 at m = 5 and 10.2 at m = 4, growing like 2^m. -(The display restates the Lean in full; the paragraph above is t1022-a's, unchanged from the version this supersedes, whose opening display did not parse as TeX.) +(The display restates the Lean in full; the paragraph above is t1022-a's, with one correction by t1022-k from t1022-n's review: the window is a little more, not less, than 8^-m/7. Earlier versions: t1022-a's, then t1022-e's, whose display this keeps.)
Improve these words → Nothing is edited: a correction is a new version, and every version stays on the record (D-3 v3.30).
Rendered from targets/erdos-257/nodes/spec-a70fcca4--h4--h1/Statement.lean. Origin: compiler-derived.
Depends on (2), each in words
Depends on, each in words where someone has written them:
- spec-a70fcca4--h4--h1--h1
spec_a70fcca4__h4__h1__h1: $m \ge 2 \ \wedge\ r_m < \frac{1}{2^m-1} \ \Longrightarrow\ \exists n,\ m < n \le 2m \ \wedge\ r_n < \frac{1}{2^n-1}$ - spec-a70fcca4--h4--h1--h2
spec_a70fcca4__h4__h1__h2: $m \ge 1 \ \wedge\ r_m < \frac{1}{2^m-1} \ \Longrightarrow\ \exists n,\ m < n \le 3m+2 \ \wedge\ r_n < \frac{1}{2^n-1}$
Attestation: none of a proof
No proof of this statement has been merged. A partial assembly merged under attestations/000865.json, attestations/000901.json: it records an attempt, not a proof (see Attempts below).
Witness
Not checked — no run on this page records step 7 passing for it.
b75bab8aa5fa.import Mathlib
theorem witness : ∃ (r : ℕ → ℝ) (m : ℕ), r 0 = 1 / 2 ∧
(∀ m, r (m + 1) = if (1 : ℝ) / (2 ^ m - 1) ≤ r m then r m - 1 / (2 ^ m - 1) else r m) ∧
r m < 1 / (2 ^ m - 1) :=
⟨fun m => Nat.rec (1 / 2 : ℝ)
(fun k rk => if (1 : ℝ) / (2 ^ k - 1) ≤ rk then rk - 1 / (2 ^ k - 1) else rk) m,
1, rfl, fun _ => rfl, by norm_num⟩In words, unverified — what this witness says; written by t1026-a, drafted with Claude Fable 5.1 (claude-fable-5-1), 2026-10-26; no one has read it against the Lean and signed it.
Draft · drafted, by the model named above
$\displaystyle \exists\, r:\mathbb{N}\to\mathbb{R},\ \exists\, m:\mathbb{N}:\quad r_0=\tfrac12\ \wedge\ \forall m:\ r_{m+1}=\begin{cases} r_m-\dfrac{1}{2^m-1} & \text{if } \dfrac{1}{2^m-1}\le r_m,\\[4pt] r_m & \text{otherwise}\end{cases}\ \wedge\ r_m<\frac{1}{2^m-1}$
The witness is the greedy remainder of $\tfrac12$ itself, defined by recursion on $m$ (Nat.rec): $r_0 = \tfrac12$ and the step rule as written, so both equations hold by definition (rfl). Lean convention: at $m = 0$ the term is $\frac{1}{2^0-1} = \frac10 = 0$, so step $0$ is taken and subtracts nothing; $r_1 = \tfrac12$. The skipped step exhibited is $m = 1$: $r_1 = \tfrac12 < \frac{1}{2^1-1} = 1$ (norm_num).
Rendered from gloss/56a0166017fd….md · Improve these words →
Attempts (5)
5 recorded. Routes refuted: direct-estimate. Failure classes: route-dead-ends 3.
Untrusted contributor text — a partial assembly: it records an attempt, not a proof; its attestation names the file, and no hash in the record binds these bytes.
Untrusted: partial assembly (D-12 #5), by t1022-a; merged in 5e3ec260a4af under attestations/000865.json, whose step 2 took this file as a partial. A partial records an attempt, not a proof: the gate replayed it with its holes left as sorry. Rendered from targets/erdos-257/nodes/spec-a70fcca4--h4--h1/attempts/20261022T133414Z-t1022-a-partial.lean.
Untrusted contributor text — an outline the gate extracted from this partial assembly; its holes are sorry steps, and it records an attempt, not a proof.
Outline of 20261022T133414Z-t1022-a-partial.lean, extracted by the gate at 1bd7ca70c9ee from the proof’s elaboration: each step is a claim the proof establishes and the goal it leaves. Open a step for what it uses and its Lean lines.
hrunhole∀ (r : ℕ → ℝ), r (0 : ℕ) = (1 / 2 : ℝ) → (∀ (m : ℕ), r (m + (1 : ℕ)) = if (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) ≤ r m then r m - (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) else r m) → ∀ (m : ℕ), (2 : ℕ) ≤ m → r m < (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) → ∃ (n : ℕ), m < n ∧ n ≤ (2 : ℕ) * m ∧ r n < (1 : ℝ) / ((2 : ℝ) ^ n - (1 : ℝ))holeLeaves
∀ (r : ℕ → ℝ), r (0 : ℕ) = (1 / 2 : ℝ) → (∀ (m : ℕ), r (m + (1 : ℕ)) = if (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) ≤ r m then r m - (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) else r m) → ∀ (m : ℕ), r m < (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) → r m ≤ (1 : ℝ) / (2 : ℝ) ^ m + (1 : ℝ) / ((3 : ℝ) * (4 : ℝ) ^ m), withhrun : ∀ (r : ℕ → ℝ), r (0 : ℕ) = (1 / 2 : ℝ) → (∀ (m : ℕ), r (m + (1 : ℕ)) = if (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) ≤ r m then r m - (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) else r m) → ∀ (m : ℕ), (2 : ℕ) ≤ m → r m < (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) → ∃ (n : ℕ), m < n ∧ n ≤ (2 : ℕ) * m ∧ r n < (1 : ℝ) / ((2 : ℝ) ^ n - (1 : ℝ)).Left open as a hole; its statement is spec-a70fcca4--h4--h1--h1
spec_a70fcca4__h4__h1__h1(open).Lean, lines 25–28
have hrun : ∀ r : ℕ → ℝ, r 0 = 1 / 2 → (∀ m, r (m + 1) = if (1 : ℝ) / (2 ^ m - 1) ≤ r m then r m - 1 / (2 ^ m - 1) else r m) → ∀ m : ℕ, 2 ≤ m → r m < 1 / (2 ^ m - 1) → ∃ n : ℕ, m < n ∧ n ≤ 2 * m ∧ r n < 1 / (2 ^ n - 1) := sorryhuphave∀ (x : ℝ), (2 : ℝ) ≤ x → (1 : ℝ) / (x - (1 : ℝ)) ≤ (1 / 2 : ℝ) * ((2 : ℝ) / x) + (2 : ℝ) * ((1 : ℝ) / x) ^ (2 : ℕ)Leaves
∀ (r : ℕ → ℝ), r (0 : ℕ) = (1 / 2 : ℝ) → (∀ (m : ℕ), r (m + (1 : ℕ)) = if (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) ≤ r m then r m - (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) else r m) → ∀ (m : ℕ), r m < (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) → r m ≤ (1 : ℝ) / (2 : ℝ) ^ m + (1 : ℝ) / ((3 : ℝ) * (4 : ℝ) ^ m), withhup : ∀ (x : ℝ), (2 : ℝ) ≤ x → (1 : ℝ) / (x - (1 : ℝ)) ≤ (1 / 2 : ℝ) * ((2 : ℝ) / x) + (2 : ℝ) * ((1 : ℝ) / x) ^ (2 : ℕ).Uses library
div_le_iff₀Seediv_le_iff₀'for a version with multiplication on the other side. .Lean, lines 30–35
have hup : ∀ x : ℝ, 2 ≤ x → 1 / (x - 1) ≤ (1 / 2) * (2 / x) + 2 * (1 / x) ^ 2 := by intro x hx rw [div_le_iff₀ (by linarith)] have hx0 : 0 < x := by linarith field_simp nlinarithhup.hx0have(0 : ℝ) < xroutine: linarithLeaves
(1 : ℝ) ≤ ((1 / 2 : ℝ) * ((2 : ℝ) / x) + (2 : ℝ) * ((1 : ℝ) / x) ^ (2 : ℕ)) * (x - (1 : ℝ)), withhx0 : (0 : ℝ) < x.Lean, line 33
have hx0 : 0 < x := by linarith
hblockhave∀ (m : ℕ), (1 : ℕ) ≤ m → ∑ i ∈ Finset.range m, (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) < (1 : ℝ) / (2 : ℝ) ^ mLeaves
∀ (r : ℕ → ℝ), r (0 : ℕ) = (1 / 2 : ℝ) → (∀ (m : ℕ), r (m + (1 : ℕ)) = if (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) ≤ r m then r m - (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) else r m) → ∀ (m : ℕ), r m < (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) → r m ≤ (1 : ℝ) / (2 : ℝ) ^ m + (1 : ℝ) / ((3 : ℝ) * (4 : ℝ) ^ m), withhblock : ∀ (m : ℕ), (1 : ℕ) ≤ m → ∑ i ∈ Finset.range m, (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) < (1 : ℝ) / (2 : ℝ) ^ m.Uses library
Finset.rangerange nis the set of natural numbers less thann. ,lt_of_le_of_lt,Finset.sum_le_sumIn an ordered additive commutative monoid, if each summandf iof one finite sum is less than or equal to the corresponding summandg iof another finite sum, then∑ i ∈ s, f i ≤ ∑ i ∈ s, g i. ,Finset.sum_add_distrib,Finset.mul_sum,geom_sum_eq,one_div_pow,pow_pos.Lean, lines 36–64
have hblock : ∀ m : ℕ, 1 ≤ m → ∑ i ∈ Finset.range m, (1 : ℝ) / (2 ^ (m + 1 + i) - 1) < 1 / 2 ^ m := by intro m hm set a : ℝ := (1 / 2) ^ m with ha have ha0 : 0 < a := by positivity have hterm : ∀ i ∈ Finset.range m, (1 : ℝ) / (2 ^ (m + 1 + i) - 1) ≤ a * (1 / 2) * (1 / 2) ^ i + 2 * (a ^ 2 * (1 / 4) * (1 / 4) ^ i) := by intro i _ have h2 : (2 : ℝ) ≤ 2 ^ (m + 1 + i) := by calc (2 : ℝ) = 2 ^ 1 := by norm_num _ ≤ 2 ^ (m + 1 + i) := pow_le_pow_right₀ (by norm_num) (by omega) refine (hup _ h2).trans (le_of_eq ?_) have h4i : (4 : ℝ) ^ i = 2 ^ (i * 2) := by rw [mul_comm, pow_mul]; norm_num simp only [ha, one_div, inv_pow, ← pow_mul, pow_add] field_simp rw [h4i] ring refine lt_of_le_of_lt (Finset.sum_le_sum hterm) ?_ rw [Finset.sum_add_distrib, ← Finset.mul_sum, ← Finset.mul_sum, ← Finset.mul_sum, geom_sum_eq (by norm_num), geom_sum_eq (by norm_num)] have h4 : ((1 : ℝ) / 4) ^ m = a ^ 2 := by rw [ha, ← pow_mul, mul_comm, pow_mul]; norm_num rw [h4, ← ha, show (1 : ℝ) / 2 ^ m = a by rw [ha, one_div_pow]] have key : a * (1 / 2) * ((a - 1) / (1 / 2 - 1)) + 2 * (a ^ 2 * (1 / 4) * ((a ^ 2 - 1) / (1 / 4 - 1))) = a - a ^ 2 / 3 - 2 / 3 * a ^ 4 := by field_simp ring rw [key] nlinarith [pow_pos ha0 4, pow_pos ha0 2]hblock.ha0have(0 : ℝ) < aroutine: positivityLeaves
∑ i ∈ Finset.range m, (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) < (1 : ℝ) / (2 : ℝ) ^ m, withha0 : (0 : ℝ) < a.Lean, line 40
have ha0 : 0 < a := by positivity
hblock.htermhave∀ i ∈ Finset.range m, (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) ≤ a * (1 / 2 : ℝ) * (1 / 2 : ℝ) ^ i + (2 : ℝ) * (a ^ (2 : ℕ) * (1 / 4 : ℝ) * (1 / 4 : ℝ) ^ i)Leaves
∑ i ∈ Finset.range m, (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) < (1 : ℝ) / (2 : ℝ) ^ m, withhterm : ∀ i ∈ Finset.range m, (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) ≤ a * (1 / 2 : ℝ) * (1 / 2 : ℝ) ^ i + (2 : ℝ) * (a ^ (2 : ℕ) * (1 / 4 : ℝ) * (1 / 4 : ℝ) ^ i).Uses library
Finset.rangerange nis the set of natural numbers less thann. ,le_of_eq,one_div,inv_pow,pow_mul,pow_add.Lean, lines 41–52
have hterm : ∀ i ∈ Finset.range m, (1 : ℝ) / (2 ^ (m + 1 + i) - 1) ≤ a * (1 / 2) * (1 / 2) ^ i + 2 * (a ^ 2 * (1 / 4) * (1 / 4) ^ i) := by intro i _ have h2 : (2 : ℝ) ≤ 2 ^ (m + 1 + i) := by calc (2 : ℝ) = 2 ^ 1 := by norm_num _ ≤ 2 ^ (m + 1 + i) := pow_le_pow_right₀ (by norm_num) (by omega) refine (hup _ h2).trans (le_of_eq ?_) have h4i : (4 : ℝ) ^ i = 2 ^ (i * 2) := by rw [mul_comm, pow_mul]; norm_num simp only [ha, one_div, inv_pow, ← pow_mul, pow_add] field_simp rw [h4i] ringhblock.hterm.h2have(2 : ℝ) ≤ (2 : ℝ) ^ (m + (1 : ℕ) + i)Leaves
(1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) ≤ a * (1 / 2 : ℝ) * (1 / 2 : ℝ) ^ i + (2 : ℝ) * (a ^ (2 : ℕ) * (1 / 4 : ℝ) * (1 / 4 : ℝ) ^ i), withh2 : (2 : ℝ) ≤ (2 : ℝ) ^ (m + (1 : ℕ) + i).Lean, lines 44–46
have h2 : (2 : ℝ) ≤ 2 ^ (m + 1 + i) := by calc (2 : ℝ) = 2 ^ 1 := by norm_num _ ≤ 2 ^ (m + 1 + i) := pow_le_pow_right₀ (by norm_num) (by omega)hblock.hterm.h2.s1calc(2 : ℝ) = (2 : ℝ) ^ (1 : ℕ)routine: norm_numCloses the goal.
Lean, line 45
calc (2 : ℝ) = 2 ^ 1 := by norm_num
hblock.hterm.h2.s2calc(2 : ℝ) ^ (1 : ℕ) ≤ (2 : ℝ) ^ (m + (1 : ℕ) + i)Closes the goal.
Uses library
pow_le_pow_right₀.Lean, line 46
_ ≤ 2 ^ (m + 1 + i) := pow_le_pow_right₀ (by norm_num) (by omega)
hblock.hterm.h4ihave(4 : ℝ) ^ i = (2 : ℝ) ^ (i * (2 : ℕ))Leaves
(1 / 2 : ℝ) * ((2 : ℝ) / (2 : ℝ) ^ (m + (1 : ℕ) + i)) + (2 : ℝ) * ((1 : ℝ) / (2 : ℝ) ^ (m + (1 : ℕ) + i)) ^ (2 : ℕ) = a * (1 / 2 : ℝ) * (1 / 2 : ℝ) ^ i + (2 : ℝ) * (a ^ (2 : ℕ) * (1 / 4 : ℝ) * (1 / 4 : ℝ) ^ i), withh4i : (4 : ℝ) ^ i = (2 : ℝ) ^ (i * (2 : ℕ)).Uses library
mul_comm,pow_mul.Lean, line 48
have h4i : (4 : ℝ) ^ i = 2 ^ (i * 2) := by rw [mul_comm, pow_mul]; norm_num
hblock.h4have(1 / 4 : ℝ) ^ m = a ^ (2 : ℕ)Leaves
a * (1 / 2 : ℝ) * (((1 / 2 : ℝ) ^ m - (1 : ℝ)) / ((1 / 2 : ℝ) - (1 : ℝ))) + (2 : ℝ) * (a ^ (2 : ℕ) * (1 / 4 : ℝ) * (((1 / 4 : ℝ) ^ m - (1 : ℝ)) / ((1 / 4 : ℝ) - (1 : ℝ)))) < (1 : ℝ) / (2 : ℝ) ^ m, withh4 : (1 / 4 : ℝ) ^ m = a ^ (2 : ℕ).Uses library
pow_mul,mul_comm.Lean, lines 56–57
have h4 : ((1 : ℝ) / 4) ^ m = a ^ 2 := by rw [ha, ← pow_mul, mul_comm, pow_mul]; norm_numhblock.keyhavea * (1 / 2 : ℝ) * ((a - (1 : ℝ)) / ((1 / 2 : ℝ) - (1 : ℝ))) + (2 : ℝ) * (a ^ (2 : ℕ) * (1 / 4 : ℝ) * ((a ^ (2 : ℕ) - (1 : ℝ)) / ((1 / 4 : ℝ) - (1 : ℝ)))) = a - a ^ (2 : ℕ) / (3 : ℝ) - (2 / 3 : ℝ) * a ^ (4 : ℕ)routine: field_simp, ringLeaves
a * (1 / 2 : ℝ) * ((a - (1 : ℝ)) / ((1 / 2 : ℝ) - (1 : ℝ))) + (2 : ℝ) * (a ^ (2 : ℕ) * (1 / 4 : ℝ) * ((a ^ (2 : ℕ) - (1 : ℝ)) / ((1 / 4 : ℝ) - (1 : ℝ)))) < a, withkey : a * (1 / 2 : ℝ) * ((a - (1 : ℝ)) / ((1 / 2 : ℝ) - (1 : ℝ))) + (2 : ℝ) * (a ^ (2 : ℕ) * (1 / 4 : ℝ) * ((a ^ (2 : ℕ) - (1 : ℝ)) / ((1 / 4 : ℝ) - (1 : ℝ)))) = a - a ^ (2 : ℕ) / (3 : ℝ) - (2 / 3 : ℝ) * a ^ (4 : ℕ).Lean, lines 59–62
have key : a * (1 / 2) * ((a - 1) / (1 / 2 - 1)) + 2 * (a ^ 2 * (1 / 4) * ((a ^ 2 - 1) / (1 / 4 - 1))) = a - a ^ 2 / 3 - 2 / 3 * a ^ 4 := by field_simp ring
s4caseLeaves
r m ≤ (1 : ℝ) / (2 : ℝ) ^ m + (1 : ℝ) / ((3 : ℝ) * (4 : ℝ) ^ m), withhm : m < (2 : ℕ).Lean, lines 67–69
· interval_cases m · rw [h0] at hlt; norm_num at hlt · rw [hrs 0, h0]; norm_nums4.s1caseLeaves
r (0 : ℕ) ≤ (1 : ℝ) / (2 : ℝ) ^ (0 : ℕ) + (1 : ℝ) / ((3 : ℝ) * (4 : ℝ) ^ (0 : ℕ)), withhlt : r (0 : ℕ) < (1 : ℝ) / ((2 : ℝ) ^ (0 : ℕ) - (1 : ℝ)),hm : (0 : ℕ) < (2 : ℕ).Lean, line 68
· rw [h0] at hlt; norm_num at hlt
s4.s2caseLeaves
r (1 : ℕ) ≤ (1 : ℝ) / (2 : ℝ) ^ (1 : ℕ) + (1 : ℝ) / ((3 : ℝ) * (4 : ℝ) ^ (1 : ℕ)), withhlt : r (1 : ℕ) < (1 : ℝ) / ((2 : ℝ) ^ (1 : ℕ) - (1 : ℝ)),hm : (1 : ℕ) < (2 : ℕ).Lean, line 69
· rw [hrs 0, h0]; norm_num
s5caseLeaves
r m ≤ (1 : ℝ) / (2 : ℝ) ^ m + (1 : ℝ) / ((3 : ℝ) * (4 : ℝ) ^ m), withhm : m ≥ (2 : ℕ).Lean, lines 70–107
· by_contra hc push_neg at hc have hpos : (0 : ℝ) < 1 / (3 * 4 ^ m) := by positivity have hbig : 1 / 2 ^ m < r m := by linarith obtain ⟨n, hmn, hn2, hnlt⟩ := hrun r h0 hrs m hm hlt have hpart : ∀ j, j < m → ∑ i ∈ Finset.range (j + 1), (1 : ℝ) / (2 ^ (m + 1 + i) - 1) < r m := by intro j hj refine lt_of_le_of_lt ?_ ((hblock m (by omega)).trans hbig) refine Finset.sum_le_sum_of_subset_of_nonneg (fun x hx => by simp only [Finset.mem_range] at hx ⊢; omega) ?_ intro i _ _ have : (1 : ℝ) ≤ 2 ^ (m + 1 + i) := one_le_pow₀ (by norm_num) exact div_nonneg zero_le_one (by linarith) have hwalk : ∀ j, j < m → r (m + 1 + j) = r m - ∑ i ∈ Finset.range j, (1 : ℝ) / (2 ^ (m + 1 + i) - 1) ∧ (1 : ℝ) / (2 ^ (m + 1 + j) - 1) ≤ r (m + 1 + j) := by intro j induction j with | zero => intro hj have hr1 : r (m + 1) = r m := by rw [hrs m, if_neg (not_le.mpr hlt)] have := hpart 0 hj simp only [zero_add, Finset.sum_range_one, add_zero, Finset.range_zero, Finset.sum_empty, sub_zero] at this ⊢ exact ⟨hr1, by rw [hr1]; exact this.le⟩ | succ j ih => intro hj obtain ⟨hrj, hle⟩ := ih (by omega) have hstep : r (m + 1 + (j + 1)) = r m - ∑ i ∈ Finset.range (j + 1), (1 : ℝ) / (2 ^ (m + 1 + i) - 1) := by rw [show m + 1 + (j + 1) = (m + 1 + j) + 1 by omega, hrs (m + 1 + j), if_pos hle, hrj, Finset.sum_range_succ] ring refine ⟨hstep, ?_⟩ rw [hstep] have := hpart (j + 1) hj rw [Finset.sum_range_succ] at this linarith obtain ⟨_, hle⟩ := hwalk (n - m - 1) (by omega) rw [show m + 1 + (n - m - 1) = n by omega] at hle linariths5.hposhave(0 : ℝ) < (1 : ℝ) / ((3 : ℝ) * (4 : ℝ) ^ m)routine: positivityLeaves
False, withhpos : (0 : ℝ) < (1 : ℝ) / ((3 : ℝ) * (4 : ℝ) ^ m).Lean, line 72
have hpos : (0 : ℝ) < 1 / (3 * 4 ^ m) := by positivity
s5.hbighave(1 : ℝ) / (2 : ℝ) ^ m < r mroutine: linarithLeaves
False, withhbig : (1 : ℝ) / (2 : ℝ) ^ m < r m.Lean, line 73
have hbig : 1 / 2 ^ m < r m := by linarith
s5.s3obtain∃ (n : ℕ), m < n ∧ n ≤ (2 : ℕ) * m ∧ r n < (1 : ℝ) / ((2 : ℝ) ^ n - (1 : ℝ))Leaves
False, withn : ℕ,hmn : m < n,hn2 : n ≤ (2 : ℕ) * m,hnlt : r n < (1 : ℝ) / ((2 : ℝ) ^ n - (1 : ℝ)).Lean, line 74
obtain ⟨n, hmn, hn2, hnlt⟩ := hrun r h0 hrs m hm hlt
s5.hparthave∀ j < m, ∑ i ∈ Finset.range (j + (1 : ℕ)), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) < r mLeaves
False, withhpart : ∀ j < m, ∑ i ∈ Finset.range (j + (1 : ℕ)), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) < r m.Uses library
Finset.rangerange nis the set of natural numbers less thann. ,lt_of_le_of_lt,Finset.sum_le_sum_of_subset_of_nonneg,Finset.mem_range,div_nonneg,zero_le_onezero_le_onewith the type argument implicit. .Lean, lines 75–81
have hpart : ∀ j, j < m → ∑ i ∈ Finset.range (j + 1), (1 : ℝ) / (2 ^ (m + 1 + i) - 1) < r m := by intro j hj refine lt_of_le_of_lt ?_ ((hblock m (by omega)).trans hbig) refine Finset.sum_le_sum_of_subset_of_nonneg (fun x hx => by simp only [Finset.mem_range] at hx ⊢; omega) ?_ intro i _ _ have : (1 : ℝ) ≤ 2 ^ (m + 1 + i) := one_le_pow₀ (by norm_num) exact div_nonneg zero_le_one (by linarith)s5.hpart.thishave(1 : ℝ) ≤ (2 : ℝ) ^ (m + (1 : ℕ) + i)Leaves
(0 : ℝ) ≤ (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)), withthis : (1 : ℝ) ≤ (2 : ℝ) ^ (m + (1 : ℕ) + i).Uses library
one_le_pow₀.Lean, line 80
have : (1 : ℝ) ≤ 2 ^ (m + 1 + i) := one_le_pow₀ (by norm_num)
s5.hwalkhave∀ j < m, r (m + (1 : ℕ) + j) = r m - ∑ i ∈ Finset.range j, (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) ∧ (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + j) - (1 : ℝ)) ≤ r (m + (1 : ℕ) + j)Leaves
False, withhwalk : ∀ j < m, r (m + (1 : ℕ) + j) = r m - ∑ i ∈ Finset.range j, (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) ∧ (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + j) - (1 : ℝ)) ≤ r (m + (1 : ℕ) + j).Uses library
Finset.rangerange nis the set of natural numbers less thann. .Lean, lines 82–104
have hwalk : ∀ j, j < m → r (m + 1 + j) = r m - ∑ i ∈ Finset.range j, (1 : ℝ) / (2 ^ (m + 1 + i) - 1) ∧ (1 : ℝ) / (2 ^ (m + 1 + j) - 1) ≤ r (m + 1 + j) := by intro j induction j with | zero => intro hj have hr1 : r (m + 1) = r m := by rw [hrs m, if_neg (not_le.mpr hlt)] have := hpart 0 hj simp only [zero_add, Finset.sum_range_one, add_zero, Finset.range_zero, Finset.sum_empty, sub_zero] at this ⊢ exact ⟨hr1, by rw [hr1]; exact this.le⟩ | succ j ih => intro hj obtain ⟨hrj, hle⟩ := ih (by omega) have hstep : r (m + 1 + (j + 1)) = r m - ∑ i ∈ Finset.range (j + 1), (1 : ℝ) / (2 ^ (m + 1 + i) - 1) := by rw [show m + 1 + (j + 1) = (m + 1 + j) + 1 by omega, hrs (m + 1 + j), if_pos hle, hrj, Finset.sum_range_succ] ring refine ⟨hstep, ?_⟩ rw [hstep] have := hpart (j + 1) hj rw [Finset.sum_range_succ] at this linariths5.hwalk.s1caseLeaves
(0 : ℕ) < m → r (m + (1 : ℕ) + (0 : ℕ)) = r m - ∑ i ∈ Finset.range (0 : ℕ), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) ∧ (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + (0 : ℕ)) - (1 : ℝ)) ≤ r (m + (1 : ℕ) + (0 : ℕ)).Uses library
Nat.zeroZero, the smallest natural number. ,zero_add,Finset.sum_range_one,add_zero,Finset.range_zero,Finset.sum_empty,sub_zero,And.introAnd.intro : a → b → a ∧ bis the constructor for the And operation. .Lean, lines 86–92
| zero => intro hj have hr1 : r (m + 1) = r m := by rw [hrs m, if_neg (not_le.mpr hlt)] have := hpart 0 hj simp only [zero_add, Finset.sum_range_one, add_zero, Finset.range_zero, Finset.sum_empty, sub_zero] at this ⊢ exact ⟨hr1, by rw [hr1]; exact this.le⟩s5.hwalk.s1.hr1haver (m + (1 : ℕ)) = r mLeaves
r (m + (1 : ℕ) + (0 : ℕ)) = r m - ∑ i ∈ Finset.range (0 : ℕ), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) ∧ (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + (0 : ℕ)) - (1 : ℝ)) ≤ r (m + (1 : ℕ) + (0 : ℕ)), withhr1 : r (m + (1 : ℕ)) = r m.Uses library
if_neg,not_le.Lean, lines 88–89
have hr1 : r (m + 1) = r m := by rw [hrs m, if_neg (not_le.mpr hlt)]s5.hwalk.s1.thishave∑ i ∈ Finset.range ((0 : ℕ) + (1 : ℕ)), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) < r mLeaves
r (m + (1 : ℕ) + (0 : ℕ)) = r m - ∑ i ∈ Finset.range (0 : ℕ), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) ∧ (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + (0 : ℕ)) - (1 : ℝ)) ≤ r (m + (1 : ℕ) + (0 : ℕ)), withthis : ∑ i ∈ Finset.range ((0 : ℕ) + (1 : ℕ)), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) < r m.Lean, line 90
have := hpart 0 hj
s5.hwalk.s2caseLeaves
j + (1 : ℕ) < m → r (m + (1 : ℕ) + (j + (1 : ℕ))) = r m - ∑ i ∈ Finset.range (j + (1 : ℕ)), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) ∧ (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + (j + (1 : ℕ))) - (1 : ℝ)) ≤ r (m + (1 : ℕ) + (j + (1 : ℕ))), withj : ℕ,ih : j < m → r (m + (1 : ℕ) + j) = r m - ∑ i ∈ Finset.range j, (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) ∧ (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + j) - (1 : ℝ)) ≤ r (m + (1 : ℕ) + j).Uses library
Nat.succThe successor of a natural numbern. ,And.introAnd.intro : a → b → a ∧ bis the constructor for the And operation. ,Finset.sum_range_succ.Lean, lines 93–104
| succ j ih => intro hj obtain ⟨hrj, hle⟩ := ih (by omega) have hstep : r (m + 1 + (j + 1)) = r m - ∑ i ∈ Finset.range (j + 1), (1 : ℝ) / (2 ^ (m + 1 + i) - 1) := by rw [show m + 1 + (j + 1) = (m + 1 + j) + 1 by omega, hrs (m + 1 + j), if_pos hle, hrj, Finset.sum_range_succ] ring refine ⟨hstep, ?_⟩ rw [hstep] have := hpart (j + 1) hj rw [Finset.sum_range_succ] at this linariths5.hwalk.s2.s1obtainr (m + (1 : ℕ) + j) = r m - ∑ i ∈ Finset.range j, (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) ∧ (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + j) - (1 : ℝ)) ≤ r (m + (1 : ℕ) + j)Leaves
r (m + (1 : ℕ) + (j + (1 : ℕ))) = r m - ∑ i ∈ Finset.range (j + (1 : ℕ)), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) ∧ (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + (j + (1 : ℕ))) - (1 : ℝ)) ≤ r (m + (1 : ℕ) + (j + (1 : ℕ))), withhrj : r (m + (1 : ℕ) + j) = r m - ∑ i ∈ Finset.range j, (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)),hle : (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + j) - (1 : ℝ)) ≤ r (m + (1 : ℕ) + j).Lean, line 95
obtain ⟨hrj, hle⟩ := ih (by omega)
s5.hwalk.s2.hstephaver (m + (1 : ℕ) + (j + (1 : ℕ))) = r m - ∑ i ∈ Finset.range (j + (1 : ℕ)), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ))Leaves
r (m + (1 : ℕ) + (j + (1 : ℕ))) = r m - ∑ i ∈ Finset.range (j + (1 : ℕ)), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) ∧ (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + (j + (1 : ℕ))) - (1 : ℝ)) ≤ r (m + (1 : ℕ) + (j + (1 : ℕ))), withhstep : r (m + (1 : ℕ) + (j + (1 : ℕ))) = r m - ∑ i ∈ Finset.range (j + (1 : ℕ)), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)).Uses library
Finset.rangerange nis the set of natural numbers less thann. ,if_pos,Finset.sum_range_succ.Lean, lines 96–99
have hstep : r (m + 1 + (j + 1)) = r m - ∑ i ∈ Finset.range (j + 1), (1 : ℝ) / (2 ^ (m + 1 + i) - 1) := by rw [show m + 1 + (j + 1) = (m + 1 + j) + 1 by omega, hrs (m + 1 + j), if_pos hle, hrj, Finset.sum_range_succ] rings5.hwalk.s2.thishave∑ i ∈ Finset.range (j + (1 : ℕ) + (1 : ℕ)), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) < r mLeaves
(1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + (j + (1 : ℕ))) - (1 : ℝ)) ≤ r m - ∑ i ∈ Finset.range (j + (1 : ℕ)), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)), withthis : ∑ i ∈ Finset.range (j + (1 : ℕ) + (1 : ℕ)), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) < r m.Lean, line 102
have := hpart (j + 1) hj
s5.s6obtainr (m + (1 : ℕ) + (n - m - (1 : ℕ))) = r m - ∑ i ∈ Finset.range (n - m - (1 : ℕ)), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) ∧ (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + (n - m - (1 : ℕ))) - (1 : ℝ)) ≤ r (m + (1 : ℕ) + (n - m - (1 : ℕ)))Leaves
False, withleft✝ : r (m + (1 : ℕ) + (n - m - (1 : ℕ))) = r m - ∑ i ∈ Finset.range (n - m - (1 : ℕ)), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)),hle : (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + (n - m - (1 : ℕ))) - (1 : ℝ)) ≤ r (m + (1 : ℕ) + (n - m - (1 : ℕ))).Lean, line 105
obtain ⟨_, hle⟩ := hwalk (n - m - 1) (by omega)
import Mathlib
import Nodes.«spec-a70fcca4--h4--h1».Context
/-! Hole `hgap` of a merged partial proof, as a node (D-12 #5, D-29).
Statement generated by the gate from the assembly; immutable (D-3). -/
theorem spec_a70fcca4__h4__h1 : ∀ (r : ℕ → ℝ),
r (0 : ℕ) = (1 / 2 : ℝ) →
(∀ (m : ℕ),
r (m + (1 : ℕ)) =
if (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) ≤ r m then r m - (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) else r m) →
∀ (m : ℕ),
r m < (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) → r m ≤ (1 : ℝ) / (2 : ℝ) ^ m + (1 : ℝ) / ((3 : ℝ) * (4 : ℝ) ^ m) := by
-- approach: a skipped step m with r_m > 2^-m forces the walk to take every n in (m, 2m], because those terms sum to less than 2^-m; so the explicit bound follows from a statement about runs of the chosen set
-- licence: CC-BY-4.0
-- label: after a skipped m >= 2, another skip within (m, 2m]
-- claim: $m \ge 2 \ \wedge\ r_m < \frac{1}{2^m-1} \ \Longrightarrow\ \exists n,\ m < n \le 2m \ \wedge\ r_n < \frac{1}{2^n-1}$
-- Here r is the greedy remainder of 1/2: r_0 = 1/2, r_(m+1) = r_m - 1/(2^m-1) if that term
-- fits under r_m, else r_m.
-- In words: the set A the walk chooses never contains the whole block m+1, ..., 2m right after
-- an element m >= 2 it skipped. A purely combinatorial statement about runs of A. It is
-- stronger than the parent (it also excludes 2^-m < r_m <= 2^-m + 4^-m/3 at a skipped m), and
-- holds numerically to depth 5000 (longest run of consecutive chosen elements 13; the lead
-- reports 20 at depth 10^6, against the m needed at step m).
have hrun : ∀ r : ℕ → ℝ, r 0 = 1 / 2 →
(∀ m, r (m + 1) = if (1 : ℝ) / (2 ^ m - 1) ≤ r m then r m - 1 / (2 ^ m - 1) else r m) →
∀ m : ℕ, 2 ≤ m → r m < 1 / (2 ^ m - 1) →
∃ n : ℕ, m < n ∧ n ≤ 2 * m ∧ r n < 1 / (2 ^ n - 1) := sorry
-- The block (m, 2m] of terms sums to less than 2^-m: 1/(2^k-1) <= 2^-k + 2*4^-k for k >= 1.
have hup : ∀ x : ℝ, 2 ≤ x → 1 / (x - 1) ≤ (1 / 2) * (2 / x) + 2 * (1 / x) ^ 2 := by
intro x hx
rw [div_le_iff₀ (by linarith)]
have hx0 : 0 < x := by linarith
field_simp
nlinarith
have hblock : ∀ m : ℕ, 1 ≤ m →
∑ i ∈ Finset.range m, (1 : ℝ) / (2 ^ (m + 1 + i) - 1) < 1 / 2 ^ m := by
intro m hm
set a : ℝ := (1 / 2) ^ m with ha
have ha0 : 0 < a := by positivity
have hterm : ∀ i ∈ Finset.range m, (1 : ℝ) / (2 ^ (m + 1 + i) - 1)
≤ a * (1 / 2) * (1 / 2) ^ i + 2 * (a ^ 2 * (1 / 4) * (1 / 4) ^ i) := by
intro i _
have h2 : (2 : ℝ) ≤ 2 ^ (m + 1 + i) := by
calc (2 : ℝ) = 2 ^ 1 := by norm_num
_ ≤ 2 ^ (m + 1 + i) := pow_le_pow_right₀ (by norm_num) (by omega)
refine (hup _ h2).trans (le_of_eq ?_)
have h4i : (4 : ℝ) ^ i = 2 ^ (i * 2) := by rw [mul_comm, pow_mul]; norm_num
simp only [ha, one_div, inv_pow, ← pow_mul, pow_add]
field_simp
rw [h4i]
ring
refine lt_of_le_of_lt (Finset.sum_le_sum hterm) ?_
rw [Finset.sum_add_distrib, ← Finset.mul_sum, ← Finset.mul_sum, ← Finset.mul_sum,
geom_sum_eq (by norm_num), geom_sum_eq (by norm_num)]
have h4 : ((1 : ℝ) / 4) ^ m = a ^ 2 := by
rw [ha, ← pow_mul, mul_comm, pow_mul]; norm_num
rw [h4, ← ha, show (1 : ℝ) / 2 ^ m = a by rw [ha, one_div_pow]]
have key : a * (1 / 2) * ((a - 1) / (1 / 2 - 1)) + 2 * (a ^ 2 * (1 / 4) * ((a ^ 2 - 1) / (1 / 4 - 1)))
= a - a ^ 2 / 3 - 2 / 3 * a ^ 4 := by
field_simp
ring
rw [key]
nlinarith [pow_pos ha0 4, pow_pos ha0 2]
intro r h0 hrs m hlt
rcases Nat.lt_or_ge m 2 with hm | hm
· interval_cases m
· rw [h0] at hlt; norm_num at hlt
· rw [hrs 0, h0]; norm_num
· by_contra hc
push_neg at hc
have hpos : (0 : ℝ) < 1 / (3 * 4 ^ m) := by positivity
have hbig : 1 / 2 ^ m < r m := by linarith
obtain ⟨n, hmn, hn2, hnlt⟩ := hrun r h0 hrs m hm hlt
have hpart : ∀ j, j < m → ∑ i ∈ Finset.range (j + 1), (1 : ℝ) / (2 ^ (m + 1 + i) - 1) < r m := by
intro j hj
refine lt_of_le_of_lt ?_ ((hblock m (by omega)).trans hbig)
refine Finset.sum_le_sum_of_subset_of_nonneg (fun x hx => by simp only [Finset.mem_range] at hx ⊢; omega) ?_
intro i _ _
have : (1 : ℝ) ≤ 2 ^ (m + 1 + i) := one_le_pow₀ (by norm_num)
exact div_nonneg zero_le_one (by linarith)
have hwalk : ∀ j, j < m → r (m + 1 + j) = r m - ∑ i ∈ Finset.range j, (1 : ℝ) / (2 ^ (m + 1 + i) - 1)
∧ (1 : ℝ) / (2 ^ (m + 1 + j) - 1) ≤ r (m + 1 + j) := by
intro j
induction j with
| zero =>
intro hj
have hr1 : r (m + 1) = r m := by
rw [hrs m, if_neg (not_le.mpr hlt)]
have := hpart 0 hj
simp only [zero_add, Finset.sum_range_one, add_zero, Finset.range_zero, Finset.sum_empty, sub_zero] at this ⊢
exact ⟨hr1, by rw [hr1]; exact this.le⟩
| succ j ih =>
intro hj
obtain ⟨hrj, hle⟩ := ih (by omega)
have hstep : r (m + 1 + (j + 1)) = r m - ∑ i ∈ Finset.range (j + 1), (1 : ℝ) / (2 ^ (m + 1 + i) - 1) := by
rw [show m + 1 + (j + 1) = (m + 1 + j) + 1 by omega, hrs (m + 1 + j), if_pos hle, hrj,
Finset.sum_range_succ]
ring
refine ⟨hstep, ?_⟩
rw [hstep]
have := hpart (j + 1) hj
rw [Finset.sum_range_succ] at this
linarith
obtain ⟨_, hle⟩ := hwalk (n - m - 1) (by omega)
rw [show m + 1 + (n - m - 1) = n by omega] at hle
linarithUntrusted contributor text — a partial assembly: it records an attempt, not a proof; its attestation names the file, and no hash in the record binds these bytes.
Untrusted: partial assembly (D-12 #5), by t1022-j; merged in d7465298dddb under attestations/000901.json, whose step 2 took this file as a partial. A partial records an attempt, not a proof: the gate replayed it with its holes left as sorry. Rendered from targets/erdos-257/nodes/spec-a70fcca4--h4--h1/attempts/20261022T143430Z-t1022-j-partial.lean.
Untrusted contributor text — an outline the gate extracted from this partial assembly; its holes are sorry steps, and it records an attempt, not a proof.
Outline of 20261022T143430Z-t1022-j-partial.lean, extracted by the gate at 1bd7ca70c9ee from the proof’s elaboration: each step is a claim the proof establishes and the goal it leaves. Open a step for what it uses and its Lean lines.
hrunhole∀ (r : ℕ → ℝ), r (0 : ℕ) = (1 / 2 : ℝ) → (∀ (m : ℕ), r (m + (1 : ℕ)) = if (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) ≤ r m then r m - (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) else r m) → ∀ (m : ℕ), (1 : ℕ) ≤ m → r m < (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) → ∃ (n : ℕ), m < n ∧ n ≤ (3 : ℕ) * m + (2 : ℕ) ∧ r n < (1 : ℝ) / ((2 : ℝ) ^ n - (1 : ℝ))holeLeaves
∀ (r : ℕ → ℝ), r (0 : ℕ) = (1 / 2 : ℝ) → (∀ (m : ℕ), r (m + (1 : ℕ)) = if (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) ≤ r m then r m - (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) else r m) → ∀ (m : ℕ), r m < (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) → r m ≤ (1 : ℝ) / (2 : ℝ) ^ m + (1 : ℝ) / ((3 : ℝ) * (4 : ℝ) ^ m), withhrun : ∀ (r : ℕ → ℝ), r (0 : ℕ) = (1 / 2 : ℝ) → (∀ (m : ℕ), r (m + (1 : ℕ)) = if (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) ≤ r m then r m - (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) else r m) → ∀ (m : ℕ), (1 : ℕ) ≤ m → r m < (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) → ∃ (n : ℕ), m < n ∧ n ≤ (3 : ℕ) * m + (2 : ℕ) ∧ r n < (1 : ℝ) / ((2 : ℝ) ^ n - (1 : ℝ)).Left open as a hole; its statement is spec-a70fcca4--h4--h1--h2
spec_a70fcca4__h4__h1__h2(open).Lean, lines 25–28
have hrun : ∀ r : ℕ → ℝ, r 0 = 1 / 2 → (∀ m, r (m + 1) = if (1 : ℝ) / (2 ^ m - 1) ≤ r m then r m - 1 / (2 ^ m - 1) else r m) → ∀ m : ℕ, 1 ≤ m → r m < 1 / (2 ^ m - 1) → ∃ n : ℕ, m < n ∧ n ≤ 3 * m + 2 ∧ r n < 1 / (2 ^ n - 1) := sorryhuphave∀ (x : ℝ), (4 : ℝ) ≤ x → (1 : ℝ) / (x - (1 : ℝ)) ≤ (1 : ℝ) / x + ((1 : ℝ) / x) ^ (2 : ℕ) + (4 / 3 : ℝ) * ((1 : ℝ) / x) ^ (3 : ℕ)Leaves
∀ (r : ℕ → ℝ), r (0 : ℕ) = (1 / 2 : ℝ) → (∀ (m : ℕ), r (m + (1 : ℕ)) = if (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) ≤ r m then r m - (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) else r m) → ∀ (m : ℕ), r m < (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) → r m ≤ (1 : ℝ) / (2 : ℝ) ^ m + (1 : ℝ) / ((3 : ℝ) * (4 : ℝ) ^ m), withhup : ∀ (x : ℝ), (4 : ℝ) ≤ x → (1 : ℝ) / (x - (1 : ℝ)) ≤ (1 : ℝ) / x + ((1 : ℝ) / x) ^ (2 : ℕ) + (4 / 3 : ℝ) * ((1 : ℝ) / x) ^ (3 : ℕ).Uses library
div_le_iff₀Seediv_le_iff₀'for a version with multiplication on the other side. .Lean, lines 30–43
have hup : ∀ x : ℝ, 4 ≤ x → 1 / (x - 1) ≤ 1 / x + (1 / x) ^ 2 + 4 / 3 * (1 / x) ^ 3 := by intro x hx have hx0 : 0 < x := by linarith have hx1 : 0 < x - 1 := by linarith rw [div_le_iff₀ hx1] have h : (1 / x + (1 / x) ^ 2 + 4 / 3 * (1 / x) ^ 3) * (x - 1) = 1 + (1 / x) ^ 3 * (x / 3 - 4 / 3) := by field_simp ring rw [h] have : 0 ≤ (1 / x) ^ 3 * (x / 3 - 4 / 3) := by apply mul_nonneg (by positivity) linarith linarithhup.hx0have(0 : ℝ) < xroutine: linarithLeaves
(1 : ℝ) / (x - (1 : ℝ)) ≤ (1 : ℝ) / x + ((1 : ℝ) / x) ^ (2 : ℕ) + (4 / 3 : ℝ) * ((1 : ℝ) / x) ^ (3 : ℕ), withhx0 : (0 : ℝ) < x.Lean, line 32
have hx0 : 0 < x := by linarith
hup.hx1have(0 : ℝ) < x - (1 : ℝ)routine: linarithLeaves
(1 : ℝ) / (x - (1 : ℝ)) ≤ (1 : ℝ) / x + ((1 : ℝ) / x) ^ (2 : ℕ) + (4 / 3 : ℝ) * ((1 : ℝ) / x) ^ (3 : ℕ), withhx1 : (0 : ℝ) < x - (1 : ℝ).Lean, line 33
have hx1 : 0 < x - 1 := by linarith
hup.hhave((1 : ℝ) / x + ((1 : ℝ) / x) ^ (2 : ℕ) + (4 / 3 : ℝ) * ((1 : ℝ) / x) ^ (3 : ℕ)) * (x - (1 : ℝ)) = (1 : ℝ) + ((1 : ℝ) / x) ^ (3 : ℕ) * (x / (3 : ℝ) - (4 / 3 : ℝ))routine: field_simp, ringLeaves
(1 : ℝ) ≤ ((1 : ℝ) / x + ((1 : ℝ) / x) ^ (2 : ℕ) + (4 / 3 : ℝ) * ((1 : ℝ) / x) ^ (3 : ℕ)) * (x - (1 : ℝ)), withh : ((1 : ℝ) / x + ((1 : ℝ) / x) ^ (2 : ℕ) + (4 / 3 : ℝ) * ((1 : ℝ) / x) ^ (3 : ℕ)) * (x - (1 : ℝ)) = (1 : ℝ) + ((1 : ℝ) / x) ^ (3 : ℕ) * (x / (3 : ℝ) - (4 / 3 : ℝ)).Lean, lines 35–38
have h : (1 / x + (1 / x) ^ 2 + 4 / 3 * (1 / x) ^ 3) * (x - 1) = 1 + (1 / x) ^ 3 * (x / 3 - 4 / 3) := by field_simp ringhup.thishave(0 : ℝ) ≤ ((1 : ℝ) / x) ^ (3 : ℕ) * (x / (3 : ℝ) - (4 / 3 : ℝ))Leaves
(1 : ℝ) ≤ (1 : ℝ) + ((1 : ℝ) / x) ^ (3 : ℕ) * (x / (3 : ℝ) - (4 / 3 : ℝ)), withthis : (0 : ℝ) ≤ ((1 : ℝ) / x) ^ (3 : ℕ) * (x / (3 : ℝ) - (4 / 3 : ℝ)).Uses library
mul_nonnegAlias ofLeft.mul_nonneg. .Lean, lines 40–42
have : 0 ≤ (1 / x) ^ 3 * (x / 3 - 4 / 3) := by apply mul_nonneg (by positivity) linarith
hblockhave∀ (m : ℕ), (1 : ℕ) ≤ m → ∑ i ∈ Finset.range ((2 : ℕ) * m + (2 : ℕ)), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) ≤ (1 : ℝ) / (2 : ℝ) ^ m + (1 : ℝ) / ((3 : ℝ) * (4 : ℝ) ^ m)Leaves
∀ (r : ℕ → ℝ), r (0 : ℕ) = (1 / 2 : ℝ) → (∀ (m : ℕ), r (m + (1 : ℕ)) = if (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) ≤ r m then r m - (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) else r m) → ∀ (m : ℕ), r m < (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) → r m ≤ (1 : ℝ) / (2 : ℝ) ^ m + (1 : ℝ) / ((3 : ℝ) * (4 : ℝ) ^ m), withhblock : ∀ (m : ℕ), (1 : ℕ) ≤ m → ∑ i ∈ Finset.range ((2 : ℕ) * m + (2 : ℕ)), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) ≤ (1 : ℝ) / (2 : ℝ) ^ m + (1 : ℝ) / ((3 : ℝ) * (4 : ℝ) ^ m).Uses library
Finset.rangerange nis the set of natural numbers less thann. ,Finset.sum_le_sumIn an ordered additive commutative monoid, if each summandf iof one finite sum is less than or equal to the corresponding summandg iof another finite sum, then∑ i ∈ s, f i ≤ ∑ i ∈ s, g i. ,Finset.sum_add_distrib,Finset.mul_sum,geom_sum_eq,pow_pos.Lean, lines 45–95
have hblock : ∀ m : ℕ, 1 ≤ m → ∑ i ∈ Finset.range (2 * m + 2), (1 : ℝ) / (2 ^ (m + 1 + i) - 1) ≤ 1 / 2 ^ m + 1 / (3 * 4 ^ m) := by intro m hm set a : ℝ := (1 / 2) ^ m with ha have ha0 : 0 < a := by positivity have ha1 : a ≤ 1 / 2 := by rw [ha] calc ((1 : ℝ) / 2) ^ m ≤ (1 / 2) ^ 1 := pow_le_pow_of_le_one (by norm_num) (by norm_num) hm _ = 1 / 2 := by norm_num have hterm : ∀ i ∈ Finset.range (2 * m + 2), (1 : ℝ) / (2 ^ (m + 1 + i) - 1) ≤ a * (1 / 2) * (1 / 2) ^ i + a ^ 2 * (1 / 4) * (1 / 4) ^ i + 4 / 3 * (a ^ 3 * (1 / 8) * (1 / 8) ^ i) := by intro i _ have h4 : (4 : ℝ) ≤ 2 ^ (m + 1 + i) := by calc (4 : ℝ) = 2 ^ 2 := by norm_num _ ≤ 2 ^ (m + 1 + i) := pow_le_pow_right₀ (by norm_num) (by omega) refine (hup _ h4).trans (le_of_eq ?_) have h4i : (4 : ℝ) ^ i = 2 ^ (i * 2) := by rw [mul_comm, pow_mul]; norm_num have h8i : (8 : ℝ) ^ i = 2 ^ (i * 3) := by rw [mul_comm, pow_mul]; norm_num simp only [ha, one_div, inv_pow, ← pow_mul, pow_add] field_simp rw [h4i, h8i] ring refine (Finset.sum_le_sum hterm).trans ?_ rw [Finset.sum_add_distrib, Finset.sum_add_distrib, ← Finset.mul_sum, ← Finset.mul_sum, ← Finset.mul_sum, ← Finset.mul_sum, geom_sum_eq (by norm_num), geom_sum_eq (by norm_num), geom_sum_eq (by norm_num)] have e2 : ((1 : ℝ) / 2) ^ (2 * m + 2) = a ^ 2 / 4 := by rw [ha, pow_add, pow_mul, ← pow_mul, mul_comm 2 m, pow_mul]; norm_num; ring have e4 : ((1 : ℝ) / 4) ^ (2 * m + 2) = a ^ 4 / 16 := by rw [ha, pow_add, pow_mul] rw [show ((1 : ℝ) / 4) ^ 2 = (1 / 2) ^ 4 by norm_num, ← pow_mul, mul_comm 4 m, pow_mul] norm_num; ring have e8 : ((1 : ℝ) / 8) ^ (2 * m + 2) = a ^ 6 / 64 := by rw [ha, pow_add, pow_mul] rw [show ((1 : ℝ) / 8) ^ 2 = (1 / 2) ^ 6 by norm_num, ← pow_mul, mul_comm 6 m, pow_mul] norm_num; ring rw [e2, e4, e8] have hb1 : (1 : ℝ) / 2 ^ m = a := by rw [ha, one_div_pow] have hb2 : (1 : ℝ) / (3 * 4 ^ m) = a ^ 2 / 3 := by rw [ha]; field_simp; rw [← pow_mul, mul_comm m 2, pow_mul, ← mul_pow]; norm_num rw [hb1, hb2] have key : a * (1 / 2) * ((a ^ 2 / 4 - 1) / (1 / 2 - 1)) + a ^ 2 * (1 / 4) * ((a ^ 4 / 16 - 1) / (1 / 4 - 1)) + 4 / 3 * (a ^ 3 * (1 / 8) * ((a ^ 6 / 64 - 1) / (1 / 8 - 1))) = a + a ^ 2 / 3 - 5 / 84 * a ^ 3 - a ^ 6 / 48 - a ^ 9 / 336 := by field_simp ring rw [key] nlinarith [pow_pos ha0 3, pow_pos ha0 6, pow_pos ha0 9]hblock.ha0have(0 : ℝ) < aroutine: positivityLeaves
∑ i ∈ Finset.range ((2 : ℕ) * m + (2 : ℕ)), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) ≤ (1 : ℝ) / (2 : ℝ) ^ m + (1 : ℝ) / ((3 : ℝ) * (4 : ℝ) ^ m), withha0 : (0 : ℝ) < a.Lean, line 50
have ha0 : 0 < a := by positivity
hblock.ha1havea ≤ (1 / 2 : ℝ)Leaves
∑ i ∈ Finset.range ((2 : ℕ) * m + (2 : ℕ)), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) ≤ (1 : ℝ) / (2 : ℝ) ^ m + (1 : ℝ) / ((3 : ℝ) * (4 : ℝ) ^ m), withha1 : a ≤ (1 / 2 : ℝ).Lean, lines 51–54
have ha1 : a ≤ 1 / 2 := by rw [ha] calc ((1 : ℝ) / 2) ^ m ≤ (1 / 2) ^ 1 := pow_le_pow_of_le_one (by norm_num) (by norm_num) hm _ = 1 / 2 := by norm_numhblock.ha1.s1calc(1 / 2 : ℝ) ^ m ≤ (1 / 2 : ℝ) ^ (1 : ℕ)Closes the goal.
Uses library
pow_le_pow_of_le_one.Lean, line 53
calc ((1 : ℝ) / 2) ^ m ≤ (1 / 2) ^ 1 := pow_le_pow_of_le_one (by norm_num) (by norm_num) hm
hblock.ha1.s2calc routine: norm_numCloses the goal.
Lean, line 54
_ = 1 / 2 := by norm_num
hblock.htermhave∀ i ∈ Finset.range ((2 : ℕ) * m + (2 : ℕ)), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) ≤ a * (1 / 2 : ℝ) * (1 / 2 : ℝ) ^ i + a ^ (2 : ℕ) * (1 / 4 : ℝ) * (1 / 4 : ℝ) ^ i + (4 / 3 : ℝ) * (a ^ (3 : ℕ) * (1 / 8 : ℝ) * (1 / 8 : ℝ) ^ i)Leaves
∑ i ∈ Finset.range ((2 : ℕ) * m + (2 : ℕ)), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) ≤ (1 : ℝ) / (2 : ℝ) ^ m + (1 : ℝ) / ((3 : ℝ) * (4 : ℝ) ^ m), withhterm : ∀ i ∈ Finset.range ((2 : ℕ) * m + (2 : ℕ)), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) ≤ a * (1 / 2 : ℝ) * (1 / 2 : ℝ) ^ i + a ^ (2 : ℕ) * (1 / 4 : ℝ) * (1 / 4 : ℝ) ^ i + (4 / 3 : ℝ) * (a ^ (3 : ℕ) * (1 / 8 : ℝ) * (1 / 8 : ℝ) ^ i).Uses library
Finset.rangerange nis the set of natural numbers less thann. ,le_of_eq,one_div,inv_pow,pow_mul,pow_add.Lean, lines 55–68
have hterm : ∀ i ∈ Finset.range (2 * m + 2), (1 : ℝ) / (2 ^ (m + 1 + i) - 1) ≤ a * (1 / 2) * (1 / 2) ^ i + a ^ 2 * (1 / 4) * (1 / 4) ^ i + 4 / 3 * (a ^ 3 * (1 / 8) * (1 / 8) ^ i) := by intro i _ have h4 : (4 : ℝ) ≤ 2 ^ (m + 1 + i) := by calc (4 : ℝ) = 2 ^ 2 := by norm_num _ ≤ 2 ^ (m + 1 + i) := pow_le_pow_right₀ (by norm_num) (by omega) refine (hup _ h4).trans (le_of_eq ?_) have h4i : (4 : ℝ) ^ i = 2 ^ (i * 2) := by rw [mul_comm, pow_mul]; norm_num have h8i : (8 : ℝ) ^ i = 2 ^ (i * 3) := by rw [mul_comm, pow_mul]; norm_num simp only [ha, one_div, inv_pow, ← pow_mul, pow_add] field_simp rw [h4i, h8i] ringhblock.hterm.h4have(4 : ℝ) ≤ (2 : ℝ) ^ (m + (1 : ℕ) + i)Leaves
(1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) ≤ a * (1 / 2 : ℝ) * (1 / 2 : ℝ) ^ i + a ^ (2 : ℕ) * (1 / 4 : ℝ) * (1 / 4 : ℝ) ^ i + (4 / 3 : ℝ) * (a ^ (3 : ℕ) * (1 / 8 : ℝ) * (1 / 8 : ℝ) ^ i), withh4 : (4 : ℝ) ≤ (2 : ℝ) ^ (m + (1 : ℕ) + i).Lean, lines 59–61
have h4 : (4 : ℝ) ≤ 2 ^ (m + 1 + i) := by calc (4 : ℝ) = 2 ^ 2 := by norm_num _ ≤ 2 ^ (m + 1 + i) := pow_le_pow_right₀ (by norm_num) (by omega)hblock.hterm.h4.s1calc(4 : ℝ) = (2 : ℝ) ^ (2 : ℕ)routine: norm_numCloses the goal.
Lean, line 60
calc (4 : ℝ) = 2 ^ 2 := by norm_num
hblock.hterm.h4.s2calc(2 : ℝ) ^ (2 : ℕ) ≤ (2 : ℝ) ^ (m + (1 : ℕ) + i)Closes the goal.
Uses library
pow_le_pow_right₀.Lean, line 61
_ ≤ 2 ^ (m + 1 + i) := pow_le_pow_right₀ (by norm_num) (by omega)
hblock.hterm.h4ihave(4 : ℝ) ^ i = (2 : ℝ) ^ (i * (2 : ℕ))Leaves
(1 : ℝ) / (2 : ℝ) ^ (m + (1 : ℕ) + i) + ((1 : ℝ) / (2 : ℝ) ^ (m + (1 : ℕ) + i)) ^ (2 : ℕ) + (4 / 3 : ℝ) * ((1 : ℝ) / (2 : ℝ) ^ (m + (1 : ℕ) + i)) ^ (3 : ℕ) = a * (1 / 2 : ℝ) * (1 / 2 : ℝ) ^ i + a ^ (2 : ℕ) * (1 / 4 : ℝ) * (1 / 4 : ℝ) ^ i + (4 / 3 : ℝ) * (a ^ (3 : ℕ) * (1 / 8 : ℝ) * (1 / 8 : ℝ) ^ i), withh4i : (4 : ℝ) ^ i = (2 : ℝ) ^ (i * (2 : ℕ)).Uses library
mul_comm,pow_mul.Lean, line 63
have h4i : (4 : ℝ) ^ i = 2 ^ (i * 2) := by rw [mul_comm, pow_mul]; norm_num
hblock.hterm.h8ihave(8 : ℝ) ^ i = (2 : ℝ) ^ (i * (3 : ℕ))Leaves
(1 : ℝ) / (2 : ℝ) ^ (m + (1 : ℕ) + i) + ((1 : ℝ) / (2 : ℝ) ^ (m + (1 : ℕ) + i)) ^ (2 : ℕ) + (4 / 3 : ℝ) * ((1 : ℝ) / (2 : ℝ) ^ (m + (1 : ℕ) + i)) ^ (3 : ℕ) = a * (1 / 2 : ℝ) * (1 / 2 : ℝ) ^ i + a ^ (2 : ℕ) * (1 / 4 : ℝ) * (1 / 4 : ℝ) ^ i + (4 / 3 : ℝ) * (a ^ (3 : ℕ) * (1 / 8 : ℝ) * (1 / 8 : ℝ) ^ i), withh8i : (8 : ℝ) ^ i = (2 : ℝ) ^ (i * (3 : ℕ)).Uses library
mul_comm,pow_mul.Lean, line 64
have h8i : (8 : ℝ) ^ i = 2 ^ (i * 3) := by rw [mul_comm, pow_mul]; norm_num
hblock.e2have(1 / 2 : ℝ) ^ ((2 : ℕ) * m + (2 : ℕ)) = a ^ (2 : ℕ) / (4 : ℝ)Leaves
a * (1 / 2 : ℝ) * (((1 / 2 : ℝ) ^ ((2 : ℕ) * m + (2 : ℕ)) - (1 : ℝ)) / ((1 / 2 : ℝ) - (1 : ℝ))) + a ^ (2 : ℕ) * (1 / 4 : ℝ) * (((1 / 4 : ℝ) ^ ((2 : ℕ) * m + (2 : ℕ)) - (1 : ℝ)) / ((1 / 4 : ℝ) - (1 : ℝ))) + (4 / 3 : ℝ) * (a ^ (3 : ℕ) * (1 / 8 : ℝ) * (((1 / 8 : ℝ) ^ ((2 : ℕ) * m + (2 : ℕ)) - (1 : ℝ)) / ((1 / 8 : ℝ) - (1 : ℝ)))) ≤ (1 : ℝ) / (2 : ℝ) ^ m + (1 : ℝ) / ((3 : ℝ) * (4 : ℝ) ^ m), withe2 : (1 / 2 : ℝ) ^ ((2 : ℕ) * m + (2 : ℕ)) = a ^ (2 : ℕ) / (4 : ℝ).Uses library
pow_add,pow_mul,mul_comm.Lean, lines 73–74
have e2 : ((1 : ℝ) / 2) ^ (2 * m + 2) = a ^ 2 / 4 := by rw [ha, pow_add, pow_mul, ← pow_mul, mul_comm 2 m, pow_mul]; norm_num; ringhblock.e4have(1 / 4 : ℝ) ^ ((2 : ℕ) * m + (2 : ℕ)) = a ^ (4 : ℕ) / (16 : ℝ)Leaves
a * (1 / 2 : ℝ) * (((1 / 2 : ℝ) ^ ((2 : ℕ) * m + (2 : ℕ)) - (1 : ℝ)) / ((1 / 2 : ℝ) - (1 : ℝ))) + a ^ (2 : ℕ) * (1 / 4 : ℝ) * (((1 / 4 : ℝ) ^ ((2 : ℕ) * m + (2 : ℕ)) - (1 : ℝ)) / ((1 / 4 : ℝ) - (1 : ℝ))) + (4 / 3 : ℝ) * (a ^ (3 : ℕ) * (1 / 8 : ℝ) * (((1 / 8 : ℝ) ^ ((2 : ℕ) * m + (2 : ℕ)) - (1 : ℝ)) / ((1 / 8 : ℝ) - (1 : ℝ)))) ≤ (1 : ℝ) / (2 : ℝ) ^ m + (1 : ℝ) / ((3 : ℝ) * (4 : ℝ) ^ m), withe4 : (1 / 4 : ℝ) ^ ((2 : ℕ) * m + (2 : ℕ)) = a ^ (4 : ℕ) / (16 : ℝ).Uses library
pow_add,pow_mul,mul_comm.Lean, lines 75–78
have e4 : ((1 : ℝ) / 4) ^ (2 * m + 2) = a ^ 4 / 16 := by rw [ha, pow_add, pow_mul] rw [show ((1 : ℝ) / 4) ^ 2 = (1 / 2) ^ 4 by norm_num, ← pow_mul, mul_comm 4 m, pow_mul] norm_num; ringhblock.e8have(1 / 8 : ℝ) ^ ((2 : ℕ) * m + (2 : ℕ)) = a ^ (6 : ℕ) / (64 : ℝ)Leaves
a * (1 / 2 : ℝ) * (((1 / 2 : ℝ) ^ ((2 : ℕ) * m + (2 : ℕ)) - (1 : ℝ)) / ((1 / 2 : ℝ) - (1 : ℝ))) + a ^ (2 : ℕ) * (1 / 4 : ℝ) * (((1 / 4 : ℝ) ^ ((2 : ℕ) * m + (2 : ℕ)) - (1 : ℝ)) / ((1 / 4 : ℝ) - (1 : ℝ))) + (4 / 3 : ℝ) * (a ^ (3 : ℕ) * (1 / 8 : ℝ) * (((1 / 8 : ℝ) ^ ((2 : ℕ) * m + (2 : ℕ)) - (1 : ℝ)) / ((1 / 8 : ℝ) - (1 : ℝ)))) ≤ (1 : ℝ) / (2 : ℝ) ^ m + (1 : ℝ) / ((3 : ℝ) * (4 : ℝ) ^ m), withe8 : (1 / 8 : ℝ) ^ ((2 : ℕ) * m + (2 : ℕ)) = a ^ (6 : ℕ) / (64 : ℝ).Uses library
pow_add,pow_mul,mul_comm.Lean, lines 79–82
have e8 : ((1 : ℝ) / 8) ^ (2 * m + 2) = a ^ 6 / 64 := by rw [ha, pow_add, pow_mul] rw [show ((1 : ℝ) / 8) ^ 2 = (1 / 2) ^ 6 by norm_num, ← pow_mul, mul_comm 6 m, pow_mul] norm_num; ringhblock.hb1have(1 : ℝ) / (2 : ℝ) ^ m = aLeaves
a * (1 / 2 : ℝ) * ((a ^ (2 : ℕ) / (4 : ℝ) - (1 : ℝ)) / ((1 / 2 : ℝ) - (1 : ℝ))) + a ^ (2 : ℕ) * (1 / 4 : ℝ) * ((a ^ (4 : ℕ) / (16 : ℝ) - (1 : ℝ)) / ((1 / 4 : ℝ) - (1 : ℝ))) + (4 / 3 : ℝ) * (a ^ (3 : ℕ) * (1 / 8 : ℝ) * ((a ^ (6 : ℕ) / (64 : ℝ) - (1 : ℝ)) / ((1 / 8 : ℝ) - (1 : ℝ)))) ≤ (1 : ℝ) / (2 : ℝ) ^ m + (1 : ℝ) / ((3 : ℝ) * (4 : ℝ) ^ m), withhb1 : (1 : ℝ) / (2 : ℝ) ^ m = a.Uses library
one_div_pow.Lean, line 84
have hb1 : (1 : ℝ) / 2 ^ m = a := by rw [ha, one_div_pow]
hblock.hb2have(1 : ℝ) / ((3 : ℝ) * (4 : ℝ) ^ m) = a ^ (2 : ℕ) / (3 : ℝ)Leaves
a * (1 / 2 : ℝ) * ((a ^ (2 : ℕ) / (4 : ℝ) - (1 : ℝ)) / ((1 / 2 : ℝ) - (1 : ℝ))) + a ^ (2 : ℕ) * (1 / 4 : ℝ) * ((a ^ (4 : ℕ) / (16 : ℝ) - (1 : ℝ)) / ((1 / 4 : ℝ) - (1 : ℝ))) + (4 / 3 : ℝ) * (a ^ (3 : ℕ) * (1 / 8 : ℝ) * ((a ^ (6 : ℕ) / (64 : ℝ) - (1 : ℝ)) / ((1 / 8 : ℝ) - (1 : ℝ)))) ≤ (1 : ℝ) / (2 : ℝ) ^ m + (1 : ℝ) / ((3 : ℝ) * (4 : ℝ) ^ m), withhb2 : (1 : ℝ) / ((3 : ℝ) * (4 : ℝ) ^ m) = a ^ (2 : ℕ) / (3 : ℝ).Uses library
pow_mul,mul_comm,mul_pow.Lean, lines 85–86
have hb2 : (1 : ℝ) / (3 * 4 ^ m) = a ^ 2 / 3 := by rw [ha]; field_simp; rw [← pow_mul, mul_comm m 2, pow_mul, ← mul_pow]; norm_numhblock.keyhavea * (1 / 2 : ℝ) * ((a ^ (2 : ℕ) / (4 : ℝ) - (1 : ℝ)) / ((1 / 2 : ℝ) - (1 : ℝ))) + a ^ (2 : ℕ) * (1 / 4 : ℝ) * ((a ^ (4 : ℕ) / (16 : ℝ) - (1 : ℝ)) / ((1 / 4 : ℝ) - (1 : ℝ))) + (4 / 3 : ℝ) * (a ^ (3 : ℕ) * (1 / 8 : ℝ) * ((a ^ (6 : ℕ) / (64 : ℝ) - (1 : ℝ)) / ((1 / 8 : ℝ) - (1 : ℝ)))) = a + a ^ (2 : ℕ) / (3 : ℝ) - (5 / 84 : ℝ) * a ^ (3 : ℕ) - a ^ (6 : ℕ) / (48 : ℝ) - a ^ (9 : ℕ) / (336 : ℝ)routine: field_simp, ringLeaves
a * (1 / 2 : ℝ) * ((a ^ (2 : ℕ) / (4 : ℝ) - (1 : ℝ)) / ((1 / 2 : ℝ) - (1 : ℝ))) + a ^ (2 : ℕ) * (1 / 4 : ℝ) * ((a ^ (4 : ℕ) / (16 : ℝ) - (1 : ℝ)) / ((1 / 4 : ℝ) - (1 : ℝ))) + (4 / 3 : ℝ) * (a ^ (3 : ℕ) * (1 / 8 : ℝ) * ((a ^ (6 : ℕ) / (64 : ℝ) - (1 : ℝ)) / ((1 / 8 : ℝ) - (1 : ℝ)))) ≤ a + a ^ (2 : ℕ) / (3 : ℝ), withkey : a * (1 / 2 : ℝ) * ((a ^ (2 : ℕ) / (4 : ℝ) - (1 : ℝ)) / ((1 / 2 : ℝ) - (1 : ℝ))) + a ^ (2 : ℕ) * (1 / 4 : ℝ) * ((a ^ (4 : ℕ) / (16 : ℝ) - (1 : ℝ)) / ((1 / 4 : ℝ) - (1 : ℝ))) + (4 / 3 : ℝ) * (a ^ (3 : ℕ) * (1 / 8 : ℝ) * ((a ^ (6 : ℕ) / (64 : ℝ) - (1 : ℝ)) / ((1 / 8 : ℝ) - (1 : ℝ)))) = a + a ^ (2 : ℕ) / (3 : ℝ) - (5 / 84 : ℝ) * a ^ (3 : ℕ) - a ^ (6 : ℕ) / (48 : ℝ) - a ^ (9 : ℕ) / (336 : ℝ).Lean, lines 88–93
have key : a * (1 / 2) * ((a ^ 2 / 4 - 1) / (1 / 2 - 1)) + a ^ 2 * (1 / 4) * ((a ^ 4 / 16 - 1) / (1 / 4 - 1)) + 4 / 3 * (a ^ 3 * (1 / 8) * ((a ^ 6 / 64 - 1) / (1 / 8 - 1))) = a + a ^ 2 / 3 - 5 / 84 * a ^ 3 - a ^ 6 / 48 - a ^ 9 / 336 := by field_simp ring
s4caseLeaves
r m ≤ (1 : ℝ) / (2 : ℝ) ^ m + (1 : ℝ) / ((3 : ℝ) * (4 : ℝ) ^ m), withhm : m < (1 : ℕ).Lean, lines 98–99
· interval_cases m rw [h0] at hlt; norm_num at hlts5caseLeaves
r m ≤ (1 : ℝ) / (2 : ℝ) ^ m + (1 : ℝ) / ((3 : ℝ) * (4 : ℝ) ^ m), withhm : m ≥ (1 : ℕ).Lean, lines 100–140
· by_contra hc push_neg at hc obtain ⟨n, hmn, hn3, hnlt⟩ := hrun r h0 hrs m hm hlt have hpart : ∀ j, j < 2 * m + 2 → ∑ i ∈ Finset.range (j + 1), (1 : ℝ) / (2 ^ (m + 1 + i) - 1) < r m := by intro j hj refine lt_of_le_of_lt ?_ ((hblock m hm).trans_lt hc) refine Finset.sum_le_sum_of_subset_of_nonneg (fun x hx => by simp only [Finset.mem_range] at hx ⊢; omega) ?_ intro i _ _ have : (1 : ℝ) ≤ 2 ^ (m + 1 + i) := one_le_pow₀ (by norm_num) exact div_nonneg zero_le_one (by linarith) have hwalk : ∀ j, j < 2 * m + 2 → r (m + 1 + j) = r m - ∑ i ∈ Finset.range j, (1 : ℝ) / (2 ^ (m + 1 + i) - 1) ∧ (1 : ℝ) / (2 ^ (m + 1 + j) - 1) ≤ r (m + 1 + j) := by intro j induction j with | zero => intro hj have hr1 : r (m + 1) = r m := by rw [hrs m, if_neg (not_le.mpr hlt)] have := hpart 0 hj simp only [zero_add, Finset.sum_range_one, add_zero, Finset.range_zero, Finset.sum_empty, sub_zero] at this ⊢ exact ⟨hr1, by rw [hr1]; exact this.le⟩ | succ j ih => intro hj obtain ⟨hrj, hle⟩ := ih (by omega) have hstep : r (m + 1 + (j + 1)) = r m - ∑ i ∈ Finset.range (j + 1), (1 : ℝ) / (2 ^ (m + 1 + i) - 1) := by rw [show m + 1 + (j + 1) = (m + 1 + j) + 1 by omega, hrs (m + 1 + j), if_pos hle, hrj, Finset.sum_range_succ] ring refine ⟨hstep, ?_⟩ rw [hstep] have := hpart (j + 1) hj rw [Finset.sum_range_succ] at this linarith obtain ⟨_, hle⟩ := hwalk (n - m - 1) (by omega) rw [show m + 1 + (n - m - 1) = n by omega] at hle linariths5.s1obtain∃ (n : ℕ), m < n ∧ n ≤ (3 : ℕ) * m + (2 : ℕ) ∧ r n < (1 : ℝ) / ((2 : ℝ) ^ n - (1 : ℝ))Leaves
False, withn : ℕ,hmn : m < n,hn3 : n ≤ (3 : ℕ) * m + (2 : ℕ),hnlt : r n < (1 : ℝ) / ((2 : ℝ) ^ n - (1 : ℝ)).Lean, line 102
obtain ⟨n, hmn, hn3, hnlt⟩ := hrun r h0 hrs m hm hlt
s5.hparthave∀ j < (2 : ℕ) * m + (2 : ℕ), ∑ i ∈ Finset.range (j + (1 : ℕ)), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) < r mLeaves
False, withhpart : ∀ j < (2 : ℕ) * m + (2 : ℕ), ∑ i ∈ Finset.range (j + (1 : ℕ)), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) < r m.Uses library
Finset.rangerange nis the set of natural numbers less thann. ,lt_of_le_of_lt,Finset.sum_le_sum_of_subset_of_nonneg,Finset.mem_range,div_nonneg,zero_le_onezero_le_onewith the type argument implicit. .Lean, lines 103–111
have hpart : ∀ j, j < 2 * m + 2 → ∑ i ∈ Finset.range (j + 1), (1 : ℝ) / (2 ^ (m + 1 + i) - 1) < r m := by intro j hj refine lt_of_le_of_lt ?_ ((hblock m hm).trans_lt hc) refine Finset.sum_le_sum_of_subset_of_nonneg (fun x hx => by simp only [Finset.mem_range] at hx ⊢; omega) ?_ intro i _ _ have : (1 : ℝ) ≤ 2 ^ (m + 1 + i) := one_le_pow₀ (by norm_num) exact div_nonneg zero_le_one (by linarith)s5.hpart.thishave(1 : ℝ) ≤ (2 : ℝ) ^ (m + (1 : ℕ) + i)Leaves
(0 : ℝ) ≤ (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)), withthis : (1 : ℝ) ≤ (2 : ℝ) ^ (m + (1 : ℕ) + i).Uses library
one_le_pow₀.Lean, line 110
have : (1 : ℝ) ≤ 2 ^ (m + 1 + i) := one_le_pow₀ (by norm_num)
s5.hwalkhave∀ j < (2 : ℕ) * m + (2 : ℕ), r (m + (1 : ℕ) + j) = r m - ∑ i ∈ Finset.range j, (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) ∧ (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + j) - (1 : ℝ)) ≤ r (m + (1 : ℕ) + j)Leaves
False, withhwalk : ∀ j < (2 : ℕ) * m + (2 : ℕ), r (m + (1 : ℕ) + j) = r m - ∑ i ∈ Finset.range j, (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) ∧ (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + j) - (1 : ℝ)) ≤ r (m + (1 : ℕ) + j).Uses library
Finset.rangerange nis the set of natural numbers less thann. .Lean, lines 112–137
have hwalk : ∀ j, j < 2 * m + 2 → r (m + 1 + j) = r m - ∑ i ∈ Finset.range j, (1 : ℝ) / (2 ^ (m + 1 + i) - 1) ∧ (1 : ℝ) / (2 ^ (m + 1 + j) - 1) ≤ r (m + 1 + j) := by intro j induction j with | zero => intro hj have hr1 : r (m + 1) = r m := by rw [hrs m, if_neg (not_le.mpr hlt)] have := hpart 0 hj simp only [zero_add, Finset.sum_range_one, add_zero, Finset.range_zero, Finset.sum_empty, sub_zero] at this ⊢ exact ⟨hr1, by rw [hr1]; exact this.le⟩ | succ j ih => intro hj obtain ⟨hrj, hle⟩ := ih (by omega) have hstep : r (m + 1 + (j + 1)) = r m - ∑ i ∈ Finset.range (j + 1), (1 : ℝ) / (2 ^ (m + 1 + i) - 1) := by rw [show m + 1 + (j + 1) = (m + 1 + j) + 1 by omega, hrs (m + 1 + j), if_pos hle, hrj, Finset.sum_range_succ] ring refine ⟨hstep, ?_⟩ rw [hstep] have := hpart (j + 1) hj rw [Finset.sum_range_succ] at this linariths5.hwalk.s1caseLeaves
(0 : ℕ) < (2 : ℕ) * m + (2 : ℕ) → r (m + (1 : ℕ) + (0 : ℕ)) = r m - ∑ i ∈ Finset.range (0 : ℕ), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) ∧ (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + (0 : ℕ)) - (1 : ℝ)) ≤ r (m + (1 : ℕ) + (0 : ℕ)).Uses library
Nat.zeroZero, the smallest natural number. ,zero_add,Finset.sum_range_one,add_zero,Finset.range_zero,Finset.sum_empty,sub_zero,And.introAnd.intro : a → b → a ∧ bis the constructor for the And operation. .Lean, lines 117–124
| zero => intro hj have hr1 : r (m + 1) = r m := by rw [hrs m, if_neg (not_le.mpr hlt)] have := hpart 0 hj simp only [zero_add, Finset.sum_range_one, add_zero, Finset.range_zero, Finset.sum_empty, sub_zero] at this ⊢ exact ⟨hr1, by rw [hr1]; exact this.le⟩s5.hwalk.s1.hr1haver (m + (1 : ℕ)) = r mLeaves
r (m + (1 : ℕ) + (0 : ℕ)) = r m - ∑ i ∈ Finset.range (0 : ℕ), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) ∧ (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + (0 : ℕ)) - (1 : ℝ)) ≤ r (m + (1 : ℕ) + (0 : ℕ)), withhr1 : r (m + (1 : ℕ)) = r m.Uses library
if_neg,not_le.Lean, lines 119–120
have hr1 : r (m + 1) = r m := by rw [hrs m, if_neg (not_le.mpr hlt)]s5.hwalk.s1.thishave∑ i ∈ Finset.range ((0 : ℕ) + (1 : ℕ)), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) < r mLeaves
r (m + (1 : ℕ) + (0 : ℕ)) = r m - ∑ i ∈ Finset.range (0 : ℕ), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) ∧ (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + (0 : ℕ)) - (1 : ℝ)) ≤ r (m + (1 : ℕ) + (0 : ℕ)), withthis : ∑ i ∈ Finset.range ((0 : ℕ) + (1 : ℕ)), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) < r m.Lean, line 121
have := hpart 0 hj
s5.hwalk.s2caseLeaves
j + (1 : ℕ) < (2 : ℕ) * m + (2 : ℕ) → r (m + (1 : ℕ) + (j + (1 : ℕ))) = r m - ∑ i ∈ Finset.range (j + (1 : ℕ)), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) ∧ (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + (j + (1 : ℕ))) - (1 : ℝ)) ≤ r (m + (1 : ℕ) + (j + (1 : ℕ))), withj : ℕ,ih : j < (2 : ℕ) * m + (2 : ℕ) → r (m + (1 : ℕ) + j) = r m - ∑ i ∈ Finset.range j, (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) ∧ (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + j) - (1 : ℝ)) ≤ r (m + (1 : ℕ) + j).Uses library
Nat.succThe successor of a natural numbern. ,And.introAnd.intro : a → b → a ∧ bis the constructor for the And operation. ,Finset.sum_range_succ.Lean, lines 125–137
| succ j ih => intro hj obtain ⟨hrj, hle⟩ := ih (by omega) have hstep : r (m + 1 + (j + 1)) = r m - ∑ i ∈ Finset.range (j + 1), (1 : ℝ) / (2 ^ (m + 1 + i) - 1) := by rw [show m + 1 + (j + 1) = (m + 1 + j) + 1 by omega, hrs (m + 1 + j), if_pos hle, hrj, Finset.sum_range_succ] ring refine ⟨hstep, ?_⟩ rw [hstep] have := hpart (j + 1) hj rw [Finset.sum_range_succ] at this linariths5.hwalk.s2.s1obtainr (m + (1 : ℕ) + j) = r m - ∑ i ∈ Finset.range j, (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) ∧ (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + j) - (1 : ℝ)) ≤ r (m + (1 : ℕ) + j)Leaves
r (m + (1 : ℕ) + (j + (1 : ℕ))) = r m - ∑ i ∈ Finset.range (j + (1 : ℕ)), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) ∧ (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + (j + (1 : ℕ))) - (1 : ℝ)) ≤ r (m + (1 : ℕ) + (j + (1 : ℕ))), withhrj : r (m + (1 : ℕ) + j) = r m - ∑ i ∈ Finset.range j, (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)),hle : (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + j) - (1 : ℝ)) ≤ r (m + (1 : ℕ) + j).Lean, line 127
obtain ⟨hrj, hle⟩ := ih (by omega)
s5.hwalk.s2.hstephaver (m + (1 : ℕ) + (j + (1 : ℕ))) = r m - ∑ i ∈ Finset.range (j + (1 : ℕ)), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ))Leaves
r (m + (1 : ℕ) + (j + (1 : ℕ))) = r m - ∑ i ∈ Finset.range (j + (1 : ℕ)), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) ∧ (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + (j + (1 : ℕ))) - (1 : ℝ)) ≤ r (m + (1 : ℕ) + (j + (1 : ℕ))), withhstep : r (m + (1 : ℕ) + (j + (1 : ℕ))) = r m - ∑ i ∈ Finset.range (j + (1 : ℕ)), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)).Uses library
Finset.rangerange nis the set of natural numbers less thann. ,if_pos,Finset.sum_range_succ.Lean, lines 128–132
have hstep : r (m + 1 + (j + 1)) = r m - ∑ i ∈ Finset.range (j + 1), (1 : ℝ) / (2 ^ (m + 1 + i) - 1) := by rw [show m + 1 + (j + 1) = (m + 1 + j) + 1 by omega, hrs (m + 1 + j), if_pos hle, hrj, Finset.sum_range_succ] rings5.hwalk.s2.thishave∑ i ∈ Finset.range (j + (1 : ℕ) + (1 : ℕ)), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) < r mLeaves
(1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + (j + (1 : ℕ))) - (1 : ℝ)) ≤ r m - ∑ i ∈ Finset.range (j + (1 : ℕ)), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)), withthis : ∑ i ∈ Finset.range (j + (1 : ℕ) + (1 : ℕ)), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) < r m.Lean, line 135
have := hpart (j + 1) hj
s5.s4obtainr (m + (1 : ℕ) + (n - m - (1 : ℕ))) = r m - ∑ i ∈ Finset.range (n - m - (1 : ℕ)), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)) ∧ (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + (n - m - (1 : ℕ))) - (1 : ℝ)) ≤ r (m + (1 : ℕ) + (n - m - (1 : ℕ)))Leaves
False, withleft✝ : r (m + (1 : ℕ) + (n - m - (1 : ℕ))) = r m - ∑ i ∈ Finset.range (n - m - (1 : ℕ)), (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + i) - (1 : ℝ)),hle : (1 : ℝ) / ((2 : ℝ) ^ (m + (1 : ℕ) + (n - m - (1 : ℕ))) - (1 : ℝ)) ≤ r (m + (1 : ℕ) + (n - m - (1 : ℕ))).Lean, line 138
obtain ⟨_, hle⟩ := hwalk (n - m - 1) (by omega)
import Mathlib
import Nodes.«spec-a70fcca4--h4--h1».Context
/-! Hole `hgap` of a merged partial proof, as a node (D-12 #5, D-29).
Statement generated by the gate from the assembly; immutable (D-3). -/
theorem spec_a70fcca4__h4__h1 : ∀ (r : ℕ → ℝ),
r (0 : ℕ) = (1 / 2 : ℝ) →
(∀ (m : ℕ),
r (m + (1 : ℕ)) =
if (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) ≤ r m then r m - (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) else r m) →
∀ (m : ℕ),
r m < (1 : ℝ) / ((2 : ℝ) ^ m - (1 : ℝ)) → r m ≤ (1 : ℝ) / (2 : ℝ) ^ m + (1 : ℝ) / ((3 : ℝ) * (4 : ℝ) ^ m) := by
-- approach: a skipped step m whose remainder exceeds the bound forces the walk to take every n in (m, 3m+2], because those terms sum to at most 2^-m + 4^-m/3; so the bound follows from a run statement whose window is the widest that works (with (m, 3m+3] the bound would force a skip instead)
-- licence: CC-BY-4.0
-- label: after a skipped m >= 1, another skip within (m, 3m+2]
-- claim: $m \ge 1 \ \wedge\ r_m < \frac{1}{2^m-1} \ \Longrightarrow\ \exists n,\ m < n \le 3m+2 \ \wedge\ r_n < \frac{1}{2^n-1}$
-- Here r is the greedy remainder of 1/2: r_0 = 1/2, r_(m+1) = r_m - 1/(2^m-1) if that term
-- fits under r_m, else r_m.
-- In words: the set the walk chooses never contains the whole block m+1, ..., 3m+2 right after
-- an element m >= 1 it skipped. This is weaker than the hole of graph PR #865 (window (m, 2m],
-- m >= 2) and essentially equivalent to this node: conversely, the node's bound at a skipped m
-- forces a skip within (m, 3m+3], since the terms over (m, 3m+3] sum to more than
-- 2^-m + 4^-m/3 (both inequalities checked exactly for m <= 120, margins 3/28 and 1/56 times 8^-m).
have hrun : ∀ r : ℕ → ℝ, r 0 = 1 / 2 →
(∀ m, r (m + 1) = if (1 : ℝ) / (2 ^ m - 1) ≤ r m then r m - 1 / (2 ^ m - 1) else r m) →
∀ m : ℕ, 1 ≤ m → r m < 1 / (2 ^ m - 1) →
∃ n : ℕ, m < n ∧ n ≤ 3 * m + 2 ∧ r n < 1 / (2 ^ n - 1) := sorry
-- 1/(x-1) <= 1/x + 1/x^2 + (4/3)/x^3 for x >= 4.
have hup : ∀ x : ℝ, 4 ≤ x → 1 / (x - 1) ≤ 1 / x + (1 / x) ^ 2 + 4 / 3 * (1 / x) ^ 3 := by
intro x hx
have hx0 : 0 < x := by linarith
have hx1 : 0 < x - 1 := by linarith
rw [div_le_iff₀ hx1]
have h : (1 / x + (1 / x) ^ 2 + 4 / 3 * (1 / x) ^ 3) * (x - 1)
= 1 + (1 / x) ^ 3 * (x / 3 - 4 / 3) := by
field_simp
ring
rw [h]
have : 0 ≤ (1 / x) ^ 3 * (x / 3 - 4 / 3) := by
apply mul_nonneg (by positivity)
linarith
linarith
-- The block (m, 3m+2] of terms sums to at most 2^-m + 4^-m/3.
have hblock : ∀ m : ℕ, 1 ≤ m →
∑ i ∈ Finset.range (2 * m + 2), (1 : ℝ) / (2 ^ (m + 1 + i) - 1)
≤ 1 / 2 ^ m + 1 / (3 * 4 ^ m) := by
intro m hm
set a : ℝ := (1 / 2) ^ m with ha
have ha0 : 0 < a := by positivity
have ha1 : a ≤ 1 / 2 := by
rw [ha]
calc ((1 : ℝ) / 2) ^ m ≤ (1 / 2) ^ 1 := pow_le_pow_of_le_one (by norm_num) (by norm_num) hm
_ = 1 / 2 := by norm_num
have hterm : ∀ i ∈ Finset.range (2 * m + 2), (1 : ℝ) / (2 ^ (m + 1 + i) - 1)
≤ a * (1 / 2) * (1 / 2) ^ i + a ^ 2 * (1 / 4) * (1 / 4) ^ i
+ 4 / 3 * (a ^ 3 * (1 / 8) * (1 / 8) ^ i) := by
intro i _
have h4 : (4 : ℝ) ≤ 2 ^ (m + 1 + i) := by
calc (4 : ℝ) = 2 ^ 2 := by norm_num
_ ≤ 2 ^ (m + 1 + i) := pow_le_pow_right₀ (by norm_num) (by omega)
refine (hup _ h4).trans (le_of_eq ?_)
have h4i : (4 : ℝ) ^ i = 2 ^ (i * 2) := by rw [mul_comm, pow_mul]; norm_num
have h8i : (8 : ℝ) ^ i = 2 ^ (i * 3) := by rw [mul_comm, pow_mul]; norm_num
simp only [ha, one_div, inv_pow, ← pow_mul, pow_add]
field_simp
rw [h4i, h8i]
ring
refine (Finset.sum_le_sum hterm).trans ?_
rw [Finset.sum_add_distrib, Finset.sum_add_distrib, ← Finset.mul_sum, ← Finset.mul_sum,
← Finset.mul_sum, ← Finset.mul_sum, geom_sum_eq (by norm_num), geom_sum_eq (by norm_num),
geom_sum_eq (by norm_num)]
have e2 : ((1 : ℝ) / 2) ^ (2 * m + 2) = a ^ 2 / 4 := by
rw [ha, pow_add, pow_mul, ← pow_mul, mul_comm 2 m, pow_mul]; norm_num; ring
have e4 : ((1 : ℝ) / 4) ^ (2 * m + 2) = a ^ 4 / 16 := by
rw [ha, pow_add, pow_mul]
rw [show ((1 : ℝ) / 4) ^ 2 = (1 / 2) ^ 4 by norm_num, ← pow_mul, mul_comm 4 m, pow_mul]
norm_num; ring
have e8 : ((1 : ℝ) / 8) ^ (2 * m + 2) = a ^ 6 / 64 := by
rw [ha, pow_add, pow_mul]
rw [show ((1 : ℝ) / 8) ^ 2 = (1 / 2) ^ 6 by norm_num, ← pow_mul, mul_comm 6 m, pow_mul]
norm_num; ring
rw [e2, e4, e8]
have hb1 : (1 : ℝ) / 2 ^ m = a := by rw [ha, one_div_pow]
have hb2 : (1 : ℝ) / (3 * 4 ^ m) = a ^ 2 / 3 := by
rw [ha]; field_simp; rw [← pow_mul, mul_comm m 2, pow_mul, ← mul_pow]; norm_num
rw [hb1, hb2]
have key : a * (1 / 2) * ((a ^ 2 / 4 - 1) / (1 / 2 - 1))
+ a ^ 2 * (1 / 4) * ((a ^ 4 / 16 - 1) / (1 / 4 - 1))
+ 4 / 3 * (a ^ 3 * (1 / 8) * ((a ^ 6 / 64 - 1) / (1 / 8 - 1)))
= a + a ^ 2 / 3 - 5 / 84 * a ^ 3 - a ^ 6 / 48 - a ^ 9 / 336 := by
field_simp
ring
rw [key]
nlinarith [pow_pos ha0 3, pow_pos ha0 6, pow_pos ha0 9]
intro r h0 hrs m hlt
rcases Nat.lt_or_ge m 1 with hm | hm
· interval_cases m
rw [h0] at hlt; norm_num at hlt
· by_contra hc
push_neg at hc
obtain ⟨n, hmn, hn3, hnlt⟩ := hrun r h0 hrs m hm hlt
have hpart : ∀ j, j < 2 * m + 2 →
∑ i ∈ Finset.range (j + 1), (1 : ℝ) / (2 ^ (m + 1 + i) - 1) < r m := by
intro j hj
refine lt_of_le_of_lt ?_ ((hblock m hm).trans_lt hc)
refine Finset.sum_le_sum_of_subset_of_nonneg
(fun x hx => by simp only [Finset.mem_range] at hx ⊢; omega) ?_
intro i _ _
have : (1 : ℝ) ≤ 2 ^ (m + 1 + i) := one_le_pow₀ (by norm_num)
exact div_nonneg zero_le_one (by linarith)
have hwalk : ∀ j, j < 2 * m + 2 →
r (m + 1 + j) = r m - ∑ i ∈ Finset.range j, (1 : ℝ) / (2 ^ (m + 1 + i) - 1)
∧ (1 : ℝ) / (2 ^ (m + 1 + j) - 1) ≤ r (m + 1 + j) := by
intro j
induction j with
| zero =>
intro hj
have hr1 : r (m + 1) = r m := by
rw [hrs m, if_neg (not_le.mpr hlt)]
have := hpart 0 hj
simp only [zero_add, Finset.sum_range_one, add_zero, Finset.range_zero, Finset.sum_empty,
sub_zero] at this ⊢
exact ⟨hr1, by rw [hr1]; exact this.le⟩
| succ j ih =>
intro hj
obtain ⟨hrj, hle⟩ := ih (by omega)
have hstep : r (m + 1 + (j + 1))
= r m - ∑ i ∈ Finset.range (j + 1), (1 : ℝ) / (2 ^ (m + 1 + i) - 1) := by
rw [show m + 1 + (j + 1) = (m + 1 + j) + 1 by omega, hrs (m + 1 + j), if_pos hle, hrj,
Finset.sum_range_succ]
ring
refine ⟨hstep, ?_⟩
rw [hstep]
have := hpart (j + 1) hj
rw [Finset.sum_range_succ] at this
linarith
obtain ⟨_, hle⟩ := hwalk (n - m - 1) (by omega)
rw [show m + 1 + (n - m - 1) = n by omega] at hle
linarithAnnexes (2), in full
Untrusted contributor text — an annex (D-31): an informal argument, not a proof.
Untrusted: annex (D-31), by t1022-j, drafted with Claude Opus 5.5 (claude-opus-5-5) in Claude Code, agent t1022-j; exact-rational checks in Python, 2026-10-22T14:35:39Z, licence CC-BY-4.0. Rendered from targets/erdos-257/nodes/spec-a70fcca4--h4--h1/annex/baef2c945b86918e91aa68a6b8b7e7de8457197b3e05cb6903213ba3b1648b72.md.
Run windows around this node's bound (spec-a70fcca4--h4--h1).
Notation as in the annex of spec-a70fcca4--h4: e_n = 1/(2^n - 1), r the greedy remainder of 1/2 (r_0 = 1/2, r_(m+1) = r_m - e_m if e_m <= r_m, else r_m), a step m is "taken" if e_m <= r_m and "skipped" otherwise. This node asks: at every skipped m, r_m <= B_m, where B_m = 2^-m + 4^-m/3.
- The node is a statement about runs, up to one step. For every m >= 1, (U) e_(m+1) + ... + e_(3m+2) <= B_m, and (L) e_(m+1) + ... + e_(3m+3) > B_m. Both are checked with exact rationals for 1 <= m <= 120; (B_m - U)·8^m and (L - B_m)·8^m decrease/increase to 3/28 and 1/56. Proof: for k >= 2, e_k = 2^-k + 4^-k + 8^-k + θ_k with 0 <= θ_k <= (1/3)·8^-k; sum the three geometric series over (m, N] and compare the loss 2^-N of the first with the gain (1/7)·8^-m of the third: 2^-(3m+2) = 8^-m/4 exceeds (4/3)(1/7)·8^-m, and 2^-(3m+3) = 8^-m/8 falls short of 8^-m/7 by 8^-m/56, more than the remaining terms of size 64^-m. Consequences at a skipped m (r_m < e_m):
- if the walk skips again at some n in (m, 3m+2], every step strictly between is taken, so r_m - (e_(m+1) + ... + e_(n-1)) = r_n < e_n, hence r_m < e_(m+1) + ... + e_n <= B_m by (U). This is the partial on this node filed by t1022-j (hole: after every skipped m >= 1, another skip within (m, 3m+2]), proved in Lean except that hole.
- conversely, if r_m <= B_m the walk cannot take every step of (m, 3m+3]: that needs r_m >= e_(m+1) + ... + e_(3m+3) > B_m by (L). So: [a skip within (m, 3m+2] after every skipped m] => this node => [a skip within (m, 3m+3] after every skipped m]. In words, this node says the run of taken steps that starts right after a skipped m has length at most about 2m.
- The ladder. Writing W(f) for "after every skipped m (m >= 1, or m >= 2 where stated), the walk skips again within (m, f(m)]": W(2m), m >= 2 (hole of graph PR #865) => W(3m+2) => this node => W(3m+3) => ... => W(infinity). W(infinity), "the walk skips infinitely often", implies spec-a70fcca4--h4 (no stall) by the run lemma (once r_m > T_m every later step is taken, so a skip after m rules out a stall before it). Conversely spec-a70fcca4--h4 implies W(infinity) given that S = sum_n e_n is irrational (Erdős 1948; on the record as variant-2f5236aa): a walk of 1/2 that never stalls and skips finitely often would write 1/2 as a finite sum plus a tail of S. So --h4 is exactly W(infinity), and the decomposition #815 -> this node -> #865 replaces "infinitely many skips" by successively tighter windows.
- How strict each rung is, for a typical point. Lebesgue measure on the set of subset sums (measure 1, variant-f9c7b81b) is the image of fair coin flips on the indices (agent F), so for a typical point, W(3m+2) fails at m with probability 2^-(2m+3) (m skipped, then 2m+2 taken), and #865's W(2m) with probability about 2^-(m+1). Exact walks of all 19008 alive, non-finite p/q with q <= 250 to depth 150 (F's walker; script and output in the run's evidence, J/exp_window3_all.py): failures of W(3m+2) at m = 1..6 number 595, 148, 34, 10, 4, 2 (595/19008 = 0.031 against 2^-5, 148/19008 = 0.0078 against 2^-7), failures of W(2m) at m = 2..6 number 2380, 1188, 598, 314, 170. So the analogue of every finite rung, this node's bound included, is false for a positive proportion of points of the set (and of alive rationals), and none can be proved by an argument that does not use the arithmetic of 1/2.
- For 1/2 itself. A failure of W(3m+2) at m needs a run of at least 2m+2 taken steps starting at m+1. Agent F's exact walk to depth 30000 has tightest ratio (next skip - m)/m = 0.6 (m = 5) and longest run 13; the lead reports longest run 20 to depth 10^6. So W(3m+2) holds for 1/2 at every m below 10^6 (for m >= 10 it would need a run of 22). Heuristically the chance that it fails somewhere beyond depth N is about 4^-N/24, against about 2^-N for a stall: refining --h4 to this node and to W(3m+2) costs nothing in plausibility; W(2m) (#865) fails beyond depth N with chance about 2^-N, the same order as a stall.
Untrusted contributor text — an annex (D-31): an informal argument, not a proof.
Untrusted: annex (D-31), by t1022-i, drafted with Claude Opus 5.5 (claude-opus-5-5), agent t1022-i; Aristotle (Harmonic) project 4b6d6a00 for the Lean reduction, 2026-10-22T15:17:05Z, licence CC-BY-4.0. Rendered from targets/erdos-257/nodes/spec-a70fcca4--h4--h1/annex/ca3f256fd2193dd7e4e1111d3af487048cb9b8b3e30ed139552d7c4972b3268c.md.
The run hole of the level-2 partial on this node (pull request #865, hrun: after a skipped step m >= 2 the greedy walk of 1/2 skips again within (m, 2m]): an exact reformulation, a binary-digit form, and where a machine search got stuck (agent t1022-i with Aristotle, 2026-10-22).
Notation: e_k = 1/(2^k - 1), r_m the greedy remainder of 1/2 (r_0 = 1/2; e_m is taken iff e_m <= r_m), A_m the steps taken below m, S_m = e_{m+1} + ... + e_{2m}.
- Exact equivalence. If step m is skipped (r_m < e_m), then the steps m+1, ..., 2m are all taken if and only if r_m >= S_m. So
hrunsays exactly: at every skipped m >= 2, r_m lies outside [S_m, e_m). It is not a weakening of anything. Since (2^m - 1) S_m >= 1 - 2^(1-m), the window has width at most 2^(1-m) e_m. - Binary-digit form. Put F_m = 1/2 - sum over k in A_m of (2^(m mod k) - 1)/(2^k - 1). Each (2^m - 1)e_k - (2^(m mod k) - 1)/(2^k - 1) is an integer, so at a skipped step (2^m - 1) r_m = fract(F_m) exactly. Each subtracted term is a purely periodic binary fraction with repeating block 0^(k-s)1^s (s = m mod k). Consequence: if fract(F_m) < 1 - 2^(1-m), i.e. the binary expansion of fract(F_m) does not begin with m-1 ones, then r_m < S_m and the skip at m is followed by another skip within (m, 2m]. So
hrunfollows from: "1/2 minus a sum of periodic binary fractions with periods k in A_m is never within 2^(1-m) below an integer, at a skipped m". In the scaled variable u_m = (2^m - 1) r_m the walk is u_{m+1} = (2 + e_m)(u_m - [u_m >= 1]): a doubling map with a vanishing perturbation, and the claim is a bound on runs of 1s in its digit sequence. - Computation. The walk was run in exact rationals to depth 10000;
hrunholds for every skipped m with 2 <= m <= 5000 (Leannative_decide, Lean 4.28 on Aristotle's side; not checked at this graph's pin). Leading ones of fract(F_m) at skipped steps never exceeded 13 to depth 4000, against the threshold m - 1. - Where it got stuck. The obstruction is Diophantine: a rational with denominator about lcm{2^k - 1 : k < m} (about 2^(c m^2)) must avoid a window of width about 4^-m, so counting denominators gives nothing. Erdős-style irrationality arguments give r_m != T_m (the tail) but not even r_m < T_m. Since e_m exceeds the whole tail T_{m+1} by about (2/3)4^-m and r_m >= T_m forces every later step to be taken, there is no soft analytic route: the claim depends on the arithmetic of the greedy set.
Lean: items 1 and 2 are proved with no sorry (block_le_of_all_taken, all_taken_of_block_le, frac_int, fract_eq_scaled, block_lower, block_of_digits); those lemmas also compile on the network's hosted check at this graph's Lean version (check log 01M5J2XC80YKXKP7V0NKQ2KBH6). The file, with hrun reduced to the one unproved digit hypothesis for m > 5000, is kept by the run's evidence (hrun-aristotle-Problem.lean); it is not submitted because it uses native_decide and the hole is not yet a node.