Problems / erdos-257 / variant-41d1f19b
long gaps ⇒ irrational
variant-41d1f19b
proved
Restated as hole h_long_gaps of erdos-257 (split by 20261023T133841Z-t1023-f1-partial.lean).
$\displaystyle \forall A \subseteq \mathbb{N}:\quad A \text{ infinite},\ 0 \notin A,\ \Bigl(\forall C \in \mathbb{N}\ \exists m \in A:\ C + \sum_{a \in A,\ a < m} a \le m\Bigr) \ \Longrightarrow\ \sum_{n \in A} \frac{1}{2^n - 1} \notin \mathbb{Q}.$
In the Lean the finite set $\{a \in A : a < m\}$ is given as a Finset $F$ with $a \in F \iff a \in A \wedge a < m$. The sum on the right is over the elements of $A$; $0 \notin A$ excludes Lean's junk value at $n = 0$.
Lean
theorem Opn.erdos_257_long_gaps :
∀ (A : Set ℕ), A.Infinite → 0 ∉ A →
(∀ C : ℕ, ∃ m ∈ A, ∃ F : Finset ℕ, (∀ a, a ∈ F ↔ a ∈ A ∧ a < m) ∧ C + ∑ a ∈ F, a ≤ m) →
Irrational (∑' n : A, (1 : ℝ) / (2 ^ n.1 - 1)) := 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 →
How it was proved
Proved by Proof.lean, checked by the kernel. Its attestation, 000917, records the gate’s run.
The proof step by step (outline)
Checked by the kernel — an outline of the attested proof below: attestations/000917.json, merge commit 903332347889.
Outline of Proof.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.
s1obtain∃ m ∈ A, ∃ (F : Finset ℕ), (∀ (a : ℕ), a ∈ F ↔ a ∈ A ∧ a < m) ∧ C + ∑ a ∈ F, a ≤ mLeaves
∃ m ∈ A, ∃ (L : ℕ), (0 : ℕ) < L ∧ (∀ a ∈ A, a < m → (2 : ℕ) ^ a - (1 : ℕ) ∣ L) ∧ (2 : ℕ) ^ C * L ≤ (2 : ℕ) ^ m, withm : ℕ,hmA : m ∈ A,F : Finset ℕ,hF : ∀ (a : ℕ), a ∈ F ↔ a ∈ A ∧ a < m,hCm : C + ∑ a ∈ F, a ≤ m.Lean, line 165
obtain ⟨m, hmA, F, hF, hCm⟩ := hA C
targets/erdos-257/nodes/variant-41d1f19b/Proof.lean, line 165 at
903332347889↗s2caseLeaves
(0 : ℕ) < ∏ a ∈ F, ((2 : ℕ) ^ a - (1 : ℕ)).Uses library
Finset.prod_pos.Lean, lines 167–171
· apply Finset.prod_pos intro a ha have ha0 : a ≠ 0 := fun h => h0 (h ▸ ((hF a).1 ha).1) have := Nat.one_lt_two_pow ha0 omegatargets/erdos-257/nodes/variant-41d1f19b/Proof.lean, lines 167–171 at
903332347889↗s2.ha0havea ≠ (0 : ℕ)Leaves
(0 : ℕ) < (2 : ℕ) ^ a - (1 : ℕ), withha0 : a ≠ (0 : ℕ).Lean, line 169
have ha0 : a ≠ 0 := fun h => h0 (h ▸ ((hF a).1 ha).1)
targets/erdos-257/nodes/variant-41d1f19b/Proof.lean, line 169 at
903332347889↗s2.thishave(1 : ℕ) < (2 : ℕ) ^ aLeaves
(0 : ℕ) < (2 : ℕ) ^ a - (1 : ℕ), withthis : (1 : ℕ) < (2 : ℕ) ^ a.Uses library
Nat.one_lt_two_pow.Lean, line 170
have := Nat.one_lt_two_pow ha0
targets/erdos-257/nodes/variant-41d1f19b/Proof.lean, line 170 at
903332347889↗
s3caseLeaves
∀ a ∈ A, a < m → (2 : ℕ) ^ a - (1 : ℕ) ∣ ∏ a ∈ F, ((2 : ℕ) ^ a - (1 : ℕ)).Uses library
Finset.dvd_prod_of_mem,And.introAnd.intro : a → b → a ∧ bis the constructor for the And operation. .Lean, lines 172–173
· intro a ha ham exact Finset.dvd_prod_of_mem _ ((hF a).2 ⟨ha, ham⟩)targets/erdos-257/nodes/variant-41d1f19b/Proof.lean, lines 172–173 at
903332347889↗s4caseLeaves
(2 : ℕ) ^ C * ∏ a ∈ F, ((2 : ℕ) ^ a - (1 : ℕ)) ≤ (2 : ℕ) ^ m.Lean, lines 174–179
· have hL : ∏ a ∈ F, (2 ^ a - 1) ≤ 2 ^ (∑ a ∈ F, a) := by rw [← Finset.prod_pow_eq_pow_sum] exact Finset.prod_le_prod' (fun a _ => Nat.sub_le _ _) calc 2 ^ C * ∏ a ∈ F, (2 ^ a - 1) ≤ 2 ^ C * 2 ^ (∑ a ∈ F, a) := Nat.mul_le_mul_left _ hL _ = 2 ^ (C + ∑ a ∈ F, a) := by rw [pow_add] _ ≤ 2 ^ m := Nat.pow_le_pow_right (by norm_num) hCmtargets/erdos-257/nodes/variant-41d1f19b/Proof.lean, lines 174–179 at
903332347889↗s4.hLhave∏ a ∈ F, ((2 : ℕ) ^ a - (1 : ℕ)) ≤ (2 : ℕ) ^ ∑ a ∈ F, aLeaves
(2 : ℕ) ^ C * ∏ a ∈ F, ((2 : ℕ) ^ a - (1 : ℕ)) ≤ (2 : ℕ) ^ m, withhL : ∏ a ∈ F, ((2 : ℕ) ^ a - (1 : ℕ)) ≤ (2 : ℕ) ^ ∑ a ∈ F, a.Uses library
Finset.prod_pow_eq_pow_sum,Finset.prod_le_prod'In an ordered commutative monoid, if each factorf iof one finite product is less than or equal to the corresponding factorg iof another finite product, then∏ i ∈ s, f i ≤ ∏ i ∈ s, g i. ,Nat.sub_le.Lean, lines 174–176
· have hL : ∏ a ∈ F, (2 ^ a - 1) ≤ 2 ^ (∑ a ∈ F, a) := by rw [← Finset.prod_pow_eq_pow_sum] exact Finset.prod_le_prod' (fun a _ => Nat.sub_le _ _)targets/erdos-257/nodes/variant-41d1f19b/Proof.lean, lines 174–176 at
903332347889↗s4.s2calc(2 : ℕ) ^ C * ∏ a ∈ F, ((2 : ℕ) ^ a - (1 : ℕ)) ≤ (2 : ℕ) ^ C * (2 : ℕ) ^ ∑ a ∈ F, aCloses the goal.
Uses library
Nat.mul_le_mul_left.Lean, line 177
calc 2 ^ C * ∏ a ∈ F, (2 ^ a - 1) ≤ 2 ^ C * 2 ^ (∑ a ∈ F, a) := Nat.mul_le_mul_left _ hL
targets/erdos-257/nodes/variant-41d1f19b/Proof.lean, line 177 at
903332347889↗s4.s3calcCloses the goal.
Uses library
pow_add.Lean, line 178
_ = 2 ^ (C + ∑ a ∈ F, a) := by rw [pow_add]
targets/erdos-257/nodes/variant-41d1f19b/Proof.lean, line 178 at
903332347889↗s4.s4calc(2 : ℕ) ^ (C + ∑ a ∈ F, a) ≤ (2 : ℕ) ^ mCloses the goal.
Uses library
Nat.pow_le_pow_right.Lean, line 179
_ ≤ 2 ^ m := Nat.pow_le_pow_right (by norm_num) hCm
targets/erdos-257/nodes/variant-41d1f19b/Proof.lean, line 179 at
903332347889↗
The proof in Lean (Proof.lean)
Checked by the kernel — these bytes are the ones its attestation names: attestations/000917.json, merge commit 903332347889.
artifact_hash of the attestation below, so these are the bytes the gate checked. Rendered from targets/erdos-257/nodes/variant-41d1f19b/Proof.lean, sha256 481fd166f7cd.import Mathlib
import Nodes.«variant-41d1f19b».Context
private lemma lac_f_nonneg (n : ℕ) : 0 ≤ (1 : ℝ) / (2 ^ n - 1) := by
apply div_nonneg zero_le_one
have : (1 : ℝ) ≤ 2 ^ n := one_le_pow₀ (by norm_num)
linarith
private lemma lac_f_le (n : ℕ) : (1 : ℝ) / (2 ^ n - 1) ≤ 2 * (1 / 2) ^ n := by
rcases Nat.eq_zero_or_pos n with rfl | hn
· norm_num
· have h2 : (2 : ℝ) ≤ 2 ^ n := by
calc (2 : ℝ) = 2 ^ 1 := by norm_num
_ ≤ 2 ^ n := pow_le_pow_right₀ (by norm_num) hn
have hpos : (0 : ℝ) < 2 ^ n - 1 := by linarith
have hp : (0 : ℝ) < 2 ^ n := by positivity
rw [one_div_pow, div_le_iff₀ hpos]
have e : (2 : ℝ) * (1 / 2 ^ n) * (2 ^ n - 1) = 2 - 2 / 2 ^ n := by
field_simp
have h3 : 2 / (2 : ℝ) ^ n ≤ 1 := (div_le_one hp).mpr h2
linarith
private lemma lac_summable : Summable (fun n : ℕ => (1 : ℝ) / (2 ^ n - 1)) :=
Summable.of_nonneg_of_le lac_f_nonneg lac_f_le
((summable_geometric_of_lt_one (by norm_num) (by norm_num)).mul_left 2)
private lemma lac_tail_le (A : Set ℕ) (m : ℕ) :
∑' k : ℕ, A.indicator (fun n : ℕ => (1 : ℝ) / (2 ^ n - 1)) (k + m) ≤ 4 * (1 / 2) ^ m := by
classical
have hrw : ∀ k : ℕ, 2 * (1 / 2 : ℝ) ^ (k + m) = (2 * (1 / 2) ^ m) * (1 / 2) ^ k := by
intro k; rw [pow_add]; ring
have hg : Summable (fun k : ℕ => 2 * (1 / 2 : ℝ) ^ (k + m)) := by
simp_rw [hrw]
exact (summable_geometric_of_lt_one (by norm_num) (by norm_num)).mul_left _
have hle : ∀ k, A.indicator (fun n : ℕ => (1 : ℝ) / (2 ^ n - 1)) (k + m)
≤ 2 * (1 / 2 : ℝ) ^ (k + m) := by
intro k
rw [Set.indicator_apply]
split_ifs
· exact lac_f_le _
· positivity
have hs : Summable (fun k : ℕ => A.indicator (fun n : ℕ => (1 : ℝ) / (2 ^ n - 1)) (k + m)) :=
Summable.of_nonneg_of_le (fun k => Set.indicator_nonneg (fun n _ => lac_f_nonneg n) _) hle hg
calc _ ≤ ∑' k : ℕ, 2 * (1 / 2 : ℝ) ^ (k + m) := Summable.tsum_le_tsum hle hs hg
_ = 4 * (1 / 2) ^ m := by
simp_rw [hrw]
rw [tsum_mul_left, tsum_geometric_of_lt_one (by norm_num) (by norm_num)]
norm_num
ring
private lemma liou_int (L : ℕ) (F : Finset ℕ) (hF : ∀ a ∈ F, 2 ^ a - 1 ∣ L)
(hF0 : ∀ a ∈ F, a ≠ 0) :
∃ N : ℤ, (L : ℝ) * ∑ a ∈ F, (1 : ℝ) / (2 ^ a - 1) = N := by
rw [Finset.mul_sum]
have : ∀ a ∈ F, ∃ c : ℤ, (L : ℝ) * (1 / ((2 : ℝ) ^ a - 1)) = c := by
intro a ha
obtain ⟨c, hc⟩ := hF a ha
refine ⟨c, ?_⟩
have h1 : (1 : ℝ) < 2 ^ a := one_lt_pow₀ (by norm_num) (hF0 a ha)
have h0 : (2 : ℝ) ^ a - 1 ≠ 0 := by linarith
have hc' : (L : ℝ) = ((2 : ℝ) ^ a - 1) * c := by
have h2 : 1 ≤ 2 ^ a := Nat.one_le_two_pow
rw [hc]; push_cast [Nat.cast_sub h2]; ring
rw [hc']; field_simp
norm_cast
choose c hc using this
refine ⟨∑ a ∈ F.attach, c a.1 a.2, ?_⟩
push_cast
rw [← Finset.sum_attach F]
exact Finset.sum_congr rfl (fun a _ => hc a.1 a.2)
private lemma r2_liou :
∀ (A : Set ℕ), A.Infinite → 0 ∉ A →
(∀ C : ℕ, ∃ m ∈ A, ∃ L : ℕ, 0 < L ∧ (∀ a ∈ A, a < m → 2 ^ a - 1 ∣ L) ∧ 2 ^ C * L ≤ 2 ^ m) →
Irrational (∑' n : A, (1 : ℝ) / (2 ^ n.1 - 1)) := by
classical
intro A _ h0 hA
rintro ⟨r, hr⟩
have hsum : Summable (A.indicator (fun n : ℕ => (1 : ℝ) / (2 ^ n - 1))) :=
lac_summable.indicator A
have hrA : (r : ℝ) = ∑' n, A.indicator (fun n : ℕ => (1 : ℝ) / (2 ^ n - 1)) n :=
hr.trans (tsum_subtype A (fun n : ℕ => (1 : ℝ) / (2 ^ n - 1)))
set q : ℕ := r.den with hq
obtain ⟨m, hmA, L, hL0, hLdvd, hLm⟩ := hA (4 * q)
have hm1 : 1 ≤ m := by
rcases Nat.eq_zero_or_pos m with h | h
· exact absurd (h ▸ hmA) h0
· exact h
set F := (Finset.range m).filter (· ∈ A) with hF
have hsplit := hsum.sum_add_tsum_nat_add m
have hfin : ∑ i ∈ Finset.range m, A.indicator (fun n : ℕ => (1 : ℝ) / (2 ^ n - 1)) i
= ∑ a ∈ F, (1 : ℝ) / (2 ^ a - 1) := by
rw [hF, Finset.sum_filter]
simp [Set.indicator_apply]
set T := ∑' i, A.indicator (fun n : ℕ => (1 : ℝ) / (2 ^ n - 1)) (i + m) with hT
have hTs : Summable (fun i => A.indicator (fun n : ℕ => (1 : ℝ) / (2 ^ n - 1)) (i + m)) :=
(summable_nat_add_iff m).mpr hsum
have hTpos : 0 < T := by
apply Summable.tsum_pos hTs (fun i => Set.indicator_nonneg (fun n _ => lac_f_nonneg n) _) 0
rw [zero_add, Set.indicator_of_mem hmA]
have : (1 : ℝ) < 2 ^ m := one_lt_pow₀ (by norm_num) (by omega)
apply div_pos one_pos; linarith
have hTle : T ≤ 4 * (1 / 2) ^ m := lac_tail_le A m
have hrT : (r : ℝ) = (∑ a ∈ F, (1 : ℝ) / (2 ^ a - 1)) + T := by
rw [hrA, ← hsplit, hfin]
obtain ⟨N, hN⟩ := liou_int L F
(fun a ha => hLdvd a (Finset.mem_filter.1 ha).2 (Finset.mem_range.1 (Finset.mem_filter.1 ha).1))
(fun a ha h => h0 (h ▸ (Finset.mem_filter.1 ha).2))
have hPpos : (0 : ℝ) < L := by exact_mod_cast hL0
have hqr : (r : ℝ) * q = r.num := by
rw [hq]; exact_mod_cast Rat.mul_den_eq_num r
have hZ : (q : ℝ) * L * T = ((L : ℤ) * r.num - q * N : ℤ) := by
push_cast
rw [← hN, ← hqr]
have : T = r - ∑ a ∈ F, (1 : ℝ) / (2 ^ a - 1) := by linarith
rw [this]; ring
have hqpos : (0 : ℝ) < q := by
rw [hq]; exact_mod_cast r.den_pos
have hpos : (0 : ℝ) < (q : ℝ) * L * T := by positivity
have hge : (1 : ℝ) ≤ (q : ℝ) * L * T := by
rw [hZ] at hpos ⊢
have : (0 : ℤ) < (L : ℤ) * r.num - q * N := by exact_mod_cast hpos
exact_mod_cast this
have hLm' : (2 : ℝ) ^ (4 * q) * L ≤ 2 ^ m := by exact_mod_cast hLm
have hbig : (4 * q : ℝ) < 2 ^ (4 * q) := by
have h1 : 4 * q < 2 ^ (4 * q) := Nat.lt_two_pow_self
exact_mod_cast h1
have h2m : (2 : ℝ) ^ m * (1 / 2) ^ m = 1 := by rw [← mul_pow]; norm_num
have hupper : (q : ℝ) * L * T < 1 := by
have hA1 : (q : ℝ) * L * T ≤ q * L * (4 * (1 / 2) ^ m) :=
mul_le_mul_of_nonneg_left hTle (by positivity)
have hA2 : (2 : ℝ) ^ (4 * q) * ((q : ℝ) * L * (4 * (1 / 2) ^ m))
≤ 4 * q * (2 ^ m * (1 / 2) ^ m) := by
have := mul_le_mul_of_nonneg_right hLm' (by positivity : (0 : ℝ) ≤ 4 * q * (1 / 2) ^ m)
nlinarith [this]
rw [h2m, mul_one] at hA2
have hpow : (0 : ℝ) < 2 ^ (4 * q) := by positivity
have : (q : ℝ) * L * (4 * (1 / 2) ^ m) < 1 := by
by_contra hc
have hc2 := not_lt.mp hc
nlinarith
linarith
linarith
/-- Erdős 257 for sets with arbitrarily long gaps: let `A` be an infinite set of positive
integers such that, for every `C`, some `m ∈ A` exceeds the sum of all elements of `A` below it
by at least `C`. Then `∑_{n ∈ A} 1/(2^n - 1)` is irrational.
The hypothesis allows long dense blocks between the gaps, so the reciprocal sum `∑_{n ∈ A} 1/n`
may diverge: for `A = ⋃_j [X_j, 2X_j]` with `X_{j+1} = 4X_j^2` each block contributes more than
`1/2` to it, while the elements below `X_{j+1}` sum to less than `3X_j^2`. Such sets are covered
neither by Erdős (Math. Student 36, 1968), whose sets have summable reciprocals, nor by the
periodic and multiplicative cases listed in the literature record.
Proof (Liouville's criterion, `Opn.erdos_257_liouville_criterion`, with the product of the
`2^a - 1` over the elements below `m` as the common denominator, which is at most
`2^(m - C)`). -/
theorem Opn.erdos_257_long_gaps :
∀ (A : Set ℕ), A.Infinite → 0 ∉ A →
(∀ C : ℕ, ∃ m ∈ A, ∃ F : Finset ℕ, (∀ a, a ∈ F ↔ a ∈ A ∧ a < m) ∧ C + ∑ a ∈ F, a ≤ m) →
Irrational (∑' n : A, (1 : ℝ) / (2 ^ n.1 - 1)) := by
intro A hinf h0 hA
apply r2_liou A hinf h0
intro C
obtain ⟨m, hmA, F, hF, hCm⟩ := hA C
refine ⟨m, hmA, ∏ a ∈ F, (2 ^ a - 1), ?_, ?_, ?_⟩
· apply Finset.prod_pos
intro a ha
have ha0 : a ≠ 0 := fun h => h0 (h ▸ ((hF a).1 ha).1)
have := Nat.one_lt_two_pow ha0
omega
· intro a ha ham
exact Finset.dvd_prod_of_mem _ ((hF a).2 ⟨ha, ham⟩)
· have hL : ∏ a ∈ F, (2 ^ a - 1) ≤ 2 ^ (∑ a ∈ F, a) := by
rw [← Finset.prod_pow_eq_pow_sum]
exact Finset.prod_le_prod' (fun a _ => Nat.sub_le _ _)
calc 2 ^ C * ∏ a ∈ F, (2 ^ a - 1) ≤ 2 ^ C * 2 ^ (∑ a ∈ F, a) := Nat.mul_le_mul_left _ hL
_ = 2 ^ (C + ∑ a ∈ F, a) := by rw [pow_add]
_ ≤ 2 ^ m := Nat.pow_le_pow_right (by norm_num) hCmWhat is known
Work on it
No explainer yet. This proof written as a journal would print it, labelled unverified, is the next thing a writer could add, by pull request (D-3, D-36; the guide shows how).
How to contribute → · Pull requests in flight ↗ · See it in the problem’s graph →
Record
Statement: the Lean file and its words (1 version)
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.«variant-41d1f19b».Context
/-- Erdős 257 for sets with arbitrarily long gaps: let `A` be an infinite set of positive
integers such that, for every `C`, some `m ∈ A` exceeds the sum of all elements of `A` below it
by at least `C`. Then `∑_{n ∈ A} 1/(2^n - 1)` is irrational.
The hypothesis allows long dense blocks between the gaps, so the reciprocal sum `∑_{n ∈ A} 1/n`
may diverge: for `A = ⋃_j [X_j, 2X_j]` with `X_{j+1} = 4X_j^2` each block contributes more than
`1/2` to it, while the elements below `X_{j+1}` sum to less than `3X_j^2`. Such sets are covered
neither by Erdős (Math. Student 36, 1968), whose sets have summable reciprocals, nor by the
periodic and multiplicative cases listed in the literature record.
Proof (Liouville's criterion, `Opn.erdos_257_liouville_criterion`, with the product of the
`2^a - 1` over the elements below `m` as the common denominator, which is at most
`2^(m - C)`). -/
theorem Opn.erdos_257_long_gaps :
∀ (A : Set ℕ), A.Infinite → 0 ∉ A →
(∀ C : ℕ, ∃ m ∈ A, ∃ F : Finset ℕ, (∀ a, a ∈ F ↔ a ∈ A ∧ a < m) ∧ C + ∑ a ∈ F, a ≤ m) →
Irrational (∑' n : A, (1 : ℝ) / (2 ^ n.1 - 1)) := 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-b, drafted with Claude Opus 5.5 via Claude Code, 2026-10-22; no one has read it against the Lean and signed it.
Draft · drafted, by the model named above
$\displaystyle \forall A \subseteq \mathbb{N}:\quad A \text{ infinite},\ 0 \notin A,\ \Bigl(\forall C \in \mathbb{N}\ \exists m \in A:\ C + \sum_{a \in A,\ a < m} a \le m\Bigr) \ \Longrightarrow\ \sum_{n \in A} \frac{1}{2^n - 1} \notin \mathbb{Q}.$
In the Lean the finite set $\{a \in A : a < m\}$ is given as a Finset $F$ with $a \in F \iff a \in A \wedge a < m$. The sum on the right is over the elements of $A$; $0 \notin A$ excludes Lean's junk value at $n = 0$.
Rendered from gloss/63d3b216fc2c….md · Improve these words →
Rendered from targets/erdos-257/nodes/variant-41d1f19b/Statement.lean. Origin: variant (partial).
Attestation: pass, 7 of 7 checks
Checked by the kernel — the gate’s record of the run: attestations/000917.json, merge commit 903332347889.
Verdict pass, from attestations/000917.json.
- Submitter
t1022-b- Toolchain
- leanprover/lean4:v4.33.1 (hash
f54d0bc916bf76a7fae460ce9d078ccd1f74aeb4fd12c4b6546bca28b6aa1c63) - Mathlib
- 0df444a360eaa60ab8c11dca51a86af692955474
- Reviewer
- none needed (intermediate)
| Step | Check | Result |
|---|---|---|
| 1 | toolchain | pass |
| 2 | paths | pass |
| 4 | kernel-replay | pass |
| 5 | axioms | pass |
| 6 | hazards | pass |
| 7 | witness | pass |
| 8 | deps | pass |
Witness
Checked by the kernel — step 7 passed in the run its attestation records: attestations/000917.json, merge commit 903332347889.
f35401223308.import Mathlib
theorem witness : ∃ (A : Set ℕ), A.Infinite ∧ (0 : ℕ) ∉ A ∧
∀ C : ℕ, ∃ m ∈ A, ∃ F : Finset ℕ, (∀ a, a ∈ F ↔ a ∈ A ∧ a < m) ∧ C + ∑ a ∈ F, a ≤ m := by
have hsum : ∀ k : ℕ, k + ∑ j ∈ Finset.range k, 4 ^ j ≤ 4 ^ k := by
intro k
induction k with
| zero => simp
| succ k ih =>
rw [Finset.sum_range_succ, pow_succ]
have : 1 ≤ 4 ^ k := Nat.one_le_pow _ _ (by norm_num)
omega
have hinj : Function.Injective (fun k : ℕ => 4 ^ k) := Nat.pow_right_injective (by norm_num)
refine ⟨Set.range (fun k : ℕ => 4 ^ k), Set.infinite_range_of_injective hinj, ?_, ?_⟩
· rintro ⟨k, hk⟩
exact absurd hk (by positivity)
· intro C
refine ⟨4 ^ C, ⟨C, rfl⟩, (Finset.range C).image (fun k : ℕ => 4 ^ k), ?_, ?_⟩
· intro a
simp only [Finset.mem_image, Finset.mem_range, Set.mem_range]
constructor
· rintro ⟨j, hj, rfl⟩
exact ⟨⟨j, rfl⟩, Nat.pow_lt_pow_right (by norm_num) hj⟩
· rintro ⟨⟨j, rfl⟩, hj⟩
exact ⟨j, (Nat.pow_lt_pow_iff_right (by norm_num)).1 hj, rfl⟩
· rw [Finset.sum_image (fun x _ y _ h => hinj h)]
exact hsum CNo gloss yet: no one has written in words what this witness says (D-3 v3.30); the Lean above is the witness. How to write one →
Relation to the problem’s statement
Checked by the kernel — checked at admission (D-30); no proof of the node is implied.
400dfd4ed2f9.-- relation: partial
import Mathlib
/-! The variant is a partial form of the root (D-30, `partial`): the root, for every infinite
set, specialises to the sets with arbitrarily long gaps. -/
theorem relation :
(∀ (A : Set ℕ), A.Infinite → Irrational (∑' n : A, (1 : ℝ) / (2 ^ n.1 - 1))) →
(∀ (A : Set ℕ), A.Infinite → 0 ∉ A →
(∀ C : ℕ, ∃ m ∈ A, ∃ F : Finset ℕ, (∀ a, a ∈ F ↔ a ∈ A ∧ a < m) ∧ C + ∑ a ∈ F, a ≤ m) →
Irrational (∑' n : A, (1 : ℝ) / (2 ^ n.1 - 1))) := by
intro h A hA _ _
exact h A hANo gloss yet: no one has written in words what this relation says (D-3 v3.30); the Lean above is the relation. How to write one →
Acknowledged findings (1)
Untrusted contributor text — the prover’s justification for a finding.
Untrusted: acknowledgment of a div-zero finding at 1 / (2 ^ ↑n - 1)
Real division; the hypothesis 0 ∉ A keeps every divisor 2^n - 1 positive, so the junk value at n = 0 never enters the sum (same reading as the root's acknowledgement).