Problems / erdos-257 / spec-5e2e0890--h2
lexicographic comparison of subset sums
spec-5e2e0890--h2 spec_5e2e0890__h2
proved
Hole h3 of spec-5e2e0890 (split by 20261020T203245Z-fable-1020-e257-a-partial.lean).
$\displaystyle g \ge 0 \text{ summable}, \sum_{k \ge 0} g(n+1+k) < g(n), n \in S \setminus T, S \cap [0,n) = T \cap [0,n) \implies \sum_{T} g < \sum_{S} g$
Split both sums at $n$: the parts below $n$ agree, the $S$ side has $g(n)$ in addition, and the rest of the $T$ side is a tail bounded by the gap.
Lean
theorem spec_5e2e0890__h2 : ∀ (A B : Set ℕ),
(0 : ℕ) ∉ A →
(0 : ℕ) ∉ B →
∑' (n : (↑A : Type)), (1 : ℝ) / ((2 : ℝ) ^ (↑n : ℕ) - (1 : ℝ)) =
∑' (n : (↑B : Type)), (1 : ℝ) / ((2 : ℝ) ^ (↑n : ℕ) - (1 : ℝ)) →
∀ (g : ℕ → ℝ),
Summable g →
(∀ (m : ℕ), (0 : ℝ) ≤ g m) →
∀ (S T : Set ℕ),
∀ n ∈ S,
n ∉ T →
(∀ m < n, m ∈ S ↔ m ∈ T) →
∑' (k : ℕ), g (n + (1 : ℕ) + k) < g n →
∑' (m : (↑T : Type)), g (↑m : ℕ) < ∑' (m : (↑S : Type)), g (↑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
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/221369be4391….md, written by t1022-e, drafted with Claude Opus 5.5 (claude-opus-5-5), 2026-10-22.
Overview
Draft · drafted, by the model named above
The hypotheses about $A$ and $B$ are carried along and not used. The content: let $g \ge 0$ be summable, $n \in S$, $n \notin T$, $S$ and $T$ agree on $\{m : m < n\}$, and $\sum_{k\ge0} g(n+1+k) < g(n)$. Split $T$ into its part below $n$ and its part above $n$ (it does not contain $n$), and $S$ into its part below $n$ and $\{n\}$ plus the rest. The parts below $n$ coincide; the part of $T$ above $n$ has sum at most the whole tail $\sum_{m>n} g(m) < g(n)$; so $\sum_T g < \sum_S g$.
Read it step by step (2 more sections)
Preparations
Draft · drafted, by the model named above
Every restriction of $g$ to a subset $U \subseteq \mathbb{N}$ is summable. Agreement below $n$ gives $\{m<n\}\cap S = \{m<n\}\cap T$. Since $n \notin T$, every $m \in T$ is either below $n$ or above it: $T \subseteq (\{m<n\}\cap T) \cup \{m > n\}$. In the other direction $(\{m<n\}\cap S)\cup\{n\} \subseteq S$. The sum of $g$ over $\{m > n\}$ is $\sum_{k\ge0} g(n+1+k)$, by the bijection $k \mapsto n+1+k$ from $\mathbb{N}$ onto $\{m>n\}$. Because $g \ge 0$, the sum over a subset is at most the sum over a larger set. Finally $\{m<n\}\cap T$ is disjoint from $\{m>n\}$, and $\{m<n\}\cap S$ from $\{n\}$.
The chain of inequalities
Draft · drafted, by the model named above
$$\sum_{T} g \;\le\; \sum_{\{m<n\}\cap T} g + \sum_{m>n} g(m) \;=\; \sum_{\{m<n\}\cap T} g + \sum_{k\ge0} g(n+1+k) \;<\; \sum_{\{m<n\}\cap T} g + g(n)$$ $$=\; \sum_{\{m<n\}\cap S} g + \sum_{\{n\}} g \;=\; \sum_{(\{m<n\}\cap S)\cup\{n\}} g \;\le\; \sum_S g .$$ The first and last steps are monotonicity under inclusion, the sums over unions split by disjointness, the strict step is the hypothesis $\sum_{k\ge0} g(n+1+k) < g(n)$, and the middle equality uses $\{m<n\}\cap T = \{m<n\}\cap S$ and the one-point sum $\sum_{\{n\}} g = g(n)$.
History: 1 version on record
2026-10-22 · written by t1022-e, drafted with Claude Opus 5.5 (claude-opus-5-5) · not signed · current · explainer/221369be4391….md · the first version of its chain
Read this version
Overview
The hypotheses about $A$ and $B$ are carried along and not used. The content: let $g \ge 0$ be summable, $n \in S$, $n \notin T$, $S$ and $T$ agree on $\{m : m < n\}$, and $\sum_{k\ge0} g(n+1+k) < g(n)$. Split $T$ into its part below $n$ and its part above $n$ (it does not contain $n$), and $S$ into its part below $n$ and $\{n\}$ plus the rest. The parts below $n$ coincide; the part of $T$ above $n$ has sum at most the whole tail $\sum_{m>n} g(m) < g(n)$; so $\sum_T g < \sum_S g$.
Preparations (hsum hL hT_sub hS_sup htail hmono hdisj1 hdisj2)
Every restriction of $g$ to a subset $U \subseteq \mathbb{N}$ is summable. Agreement below $n$ gives $\{m<n\}\cap S = \{m<n\}\cap T$. Since $n \notin T$, every $m \in T$ is either below $n$ or above it: $T \subseteq (\{m<n\}\cap T) \cup \{m > n\}$. In the other direction $(\{m<n\}\cap S)\cup\{n\} \subseteq S$. The sum of $g$ over $\{m > n\}$ is $\sum_{k\ge0} g(n+1+k)$, by the bijection $k \mapsto n+1+k$ from $\mathbb{N}$ onto $\{m>n\}$. Because $g \ge 0$, the sum over a subset is at most the sum over a larger set. Finally $\{m<n\}\cap T$ is disjoint from $\{m>n\}$, and $\{m<n\}\cap S$ from $\{n\}$.
The chain of inequalities (s9 s10 s11 s12 s13 s14 s15)
$$\sum_{T} g \;\le\; \sum_{\{m<n\}\cap T} g + \sum_{m>n} g(m) \;=\; \sum_{\{m<n\}\cap T} g + \sum_{k\ge0} g(n+1+k) \;<\; \sum_{\{m<n\}\cap T} g + g(n)$$ $$=\; \sum_{\{m<n\}\cap S} g + \sum_{\{n\}} g \;=\; \sum_{(\{m<n\}\cap S)\cup\{n\}} g \;\le\; \sum_S g .$$ The first and last steps are monotonicity under inclusion, the sums over unions split by disjointness, the strict step is the hypothesis $\sum_{k\ge0} g(n+1+k) < g(n)$, and the middle equality uses $\{m<n\}\cap T = \{m<n\}\cap S$ and the one-point sum $\sum_{\{n\}} g = g(n)$.
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 was proved
Proved by Proof.lean, checked by the kernel. Its attestation, 000787, records the gate’s run.
The proof step by step (outline)
Checked by the kernel — an outline of the attested proof below: attestations/000787.json, merge commit b45cc74b68bb.
Outline of Proof.lean, extracted by the gate at f824b6fc425c 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.
hsumhave∀ (U : Set ℕ), Summable fun (m : (↑U : Type)) => g (↑m : ℕ)Leaves
∑' (m : (↑T : Type)), g (↑m : ℕ) < ∑' (m : (↑S : Type)), g (↑m : ℕ), withhsum : ∀ (U : Set ℕ), Summable fun (m : (↑U : Type)) => g (↑m : ℕ).Uses library
SetA set is a collection of elements of some typeα. ,SummableSummable fmeans thatfhas some (infinite) sum with respect toL. .Lean, line 23
have hsum : ∀ U : Set ℕ, Summable (fun m : U => g m) := fun U => hg.subtype U
targets/erdos-257/nodes/spec-5e2e0890--h2/Proof.lean, line 23 at
b45cc74b68bb↗hLhave{m : ℕ | m < n} ∩ S = {m : ℕ | m < n} ∩ TLeaves
∑' (m : (↑T : Type)), g (↑m : ℕ) < ∑' (m : (↑S : Type)), g (↑m : ℕ), withhL : {m : ℕ | m < n} ∩ S = {m : ℕ | m < n} ∩ T.Uses library
SetA set is a collection of elements of some typeα. ,Set.mem_inter_iff,Set.mem_setOf_eqAlias ofSet.mem_ofPred_eq. ,and_congr_right.Lean, lines 24–27
have hL : ({m | m < n} ∩ S : Set ℕ) = {m | m < n} ∩ T := by ext m simp only [Set.mem_inter_iff, Set.mem_setOf_eq] exact and_congr_right (hagree m)targets/erdos-257/nodes/spec-5e2e0890--h2/Proof.lean, lines 24–27 at
b45cc74b68bb↗hT_subhaveT ⊆ {m : ℕ | m < n} ∩ T ∪ {m : ℕ | n < m}Leaves
∑' (m : (↑T : Type)), g (↑m : ℕ) < ∑' (m : (↑S : Type)), g (↑m : ℕ), withhT_sub : T ⊆ {m : ℕ | m < n} ∩ T ∪ {m : ℕ | n < m}.Uses library
lt_trichotomy.Lean, lines 28–33
have hT_sub : T ⊆ ({m | m < n} ∩ T) ∪ {m | n < m} := by intro m hm rcases lt_trichotomy m n with hlt | rfl | hgt · exact Or.inl ⟨hlt, hm⟩ · exact absurd hm hnT · exact Or.inr hgttargets/erdos-257/nodes/spec-5e2e0890--h2/Proof.lean, lines 28–33 at
b45cc74b68bb↗hT_sub.s1caseLeaves
m ∈ {m : ℕ | m < n} ∩ T ∪ {m : ℕ | n < m}, withhlt : m < n.Uses library
Or.inlOr.inlis "left injection" into anOr. ,And.introAnd.intro : a → b → a ∧ bis the constructor for the And operation. .Lean, line 31
· exact Or.inl ⟨hlt, hm⟩
targets/erdos-257/nodes/spec-5e2e0890--h2/Proof.lean, line 31 at
b45cc74b68bb↗hT_sub.s2caseLeaves
m ∈ {m_1 : ℕ | m_1 < m} ∩ T ∪ {m_1 : ℕ | m < m_1}, withhnS : m ∈ S,hnT : m ∉ T,hagree : ∀ m_1 < m, m_1 ∈ S ↔ m_1 ∈ T,hgap : ∑' (k : ℕ), g (m + (1 : ℕ) + k) < g m,hL : {m_1 : ℕ | m_1 < m} ∩ S = {m_1 : ℕ | m_1 < m} ∩ T.Uses library
absurdAnything follows from two contradictory hypotheses. .Lean, line 32
· exact absurd hm hnT
targets/erdos-257/nodes/spec-5e2e0890--h2/Proof.lean, line 32 at
b45cc74b68bb↗hT_sub.s3caseLeaves
m ∈ {m : ℕ | m < n} ∩ T ∪ {m : ℕ | n < m}, withhgt : n < m.Uses library
Or.inrOr.inris "right injection" into anOr. .Lean, line 33
· exact Or.inr hgt
targets/erdos-257/nodes/spec-5e2e0890--h2/Proof.lean, line 33 at
b45cc74b68bb↗
hS_suphave{m : ℕ | m < n} ∩ S ∪ {n} ⊆ SLeaves
∑' (m : (↑T : Type)), g (↑m : ℕ) < ∑' (m : (↑S : Type)), g (↑m : ℕ), withhS_sup : {m : ℕ | m < n} ∩ S ∪ {n} ⊆ S.Lean, lines 34–39
have hS_sup : ({m | m < n} ∩ S) ∪ {n} ⊆ S := by intro m hm rcases hm with ⟨_, hm⟩ | hm · exact hm · rw [Set.mem_singleton_iff] at hm exact hm ▸ hnStargets/erdos-257/nodes/spec-5e2e0890--h2/Proof.lean, lines 34–39 at
b45cc74b68bb↗hS_sup.s1caseLeaves
m ∈ S, withleft✝ : m ∈ {m : ℕ | m < n},hm : m ∈ S.Lean, line 37
· exact hm
targets/erdos-257/nodes/spec-5e2e0890--h2/Proof.lean, line 37 at
b45cc74b68bb↗hS_sup.s2case printed form did not read back: shown as its Lean lines only· rw [Set.mem_singleton_iff] at hm exact hm ▸ hnStargets/erdos-257/nodes/spec-5e2e0890--h2/Proof.lean, lines 38–39 at
b45cc74b68bb↗
htailhave∑' (m : (↑{m : ℕ | n < m} : Type)), g (↑m : ℕ) = ∑' (k : ℕ), g (n + (1 : ℕ) + k)Leaves
∑' (m : (↑T : Type)), g (↑m : ℕ) < ∑' (m : (↑S : Type)), g (↑m : ℕ), withhtail : ∑' (m : (↑{m : ℕ | n < m} : Type)), g (↑m : ℕ) = ∑' (k : ℕ), g (n + (1 : ℕ) + k).Uses library
Subtype.mk,Set.mem_setOf_eqAlias ofSet.mem_ofPred_eq. ,Subtype.ext,Equiv.tsum_eq.Lean, lines 40–52
have htail : ∑' m : {m | n < m}, g m = ∑' k : ℕ, g (n + 1 + k) := by let e : ℕ ≃ {m : ℕ | n < m} := { toFun := fun k => ⟨n + 1 + k, by simp only [Set.mem_setOf_eq]; omega⟩ invFun := fun m => m.1 - (n + 1) left_inv := fun k => by simp only; omega right_inv := fun m => by apply Subtype.ext have := m.2 simp only [Set.mem_setOf_eq] at this simp only omega } rw [← Equiv.tsum_eq e] rfltargets/erdos-257/nodes/spec-5e2e0890--h2/Proof.lean, lines 40–52 at
b45cc74b68bb↗htail.thishave printed form did not read back: shown as its Lean lines only
hmonohave∀ (U V : Set ℕ), U ⊆ V → ∑' (m : (↑U : Type)), g (↑m : ℕ) ≤ ∑' (m : (↑V : Type)), g (↑m : ℕ)Leaves
∑' (m : (↑T : Type)), g (↑m : ℕ) < ∑' (m : (↑S : Type)), g (↑m : ℕ), withhmono : ∀ (U V : Set ℕ), U ⊆ V → ∑' (m : (↑U : Type)), g (↑m : ℕ) ≤ ∑' (m : (↑V : Type)), g (↑m : ℕ).Uses library
SetA set is a collection of elements of some typeα. ,Summable.tsum_le_tsum_of_inj,Set.inclusioninclusionis the "identity" function between two subsetssandt, wheres ⊆ t,Set.inclusion_injective,le_rflA version ofle_reflwhere the argument is implicit .Lean, lines 53–56
have hmono : ∀ U V : Set ℕ, U ⊆ V → ∑' m : U, g m ≤ ∑' m : V, g m := by intro U V hUV exact Summable.tsum_le_tsum_of_inj (Set.inclusion hUV) (Set.inclusion_injective hUV) (fun c _ => hg0 c) (fun i => le_rfl) (hsum U) (hsum V)targets/erdos-257/nodes/spec-5e2e0890--h2/Proof.lean, lines 53–56 at
b45cc74b68bb↗hdisj1haveDisjoint ({m : ℕ | m < n} ∩ T) {m : ℕ | n < m}Leaves
∑' (m : (↑T : Type)), g (↑m : ℕ) < ∑' (m : (↑S : Type)), g (↑m : ℕ), withhdisj1 : Disjoint ({m : ℕ | m < n} ∩ T) {m : ℕ | n < m}.Uses library
DisjointTwo elements of a lattice are disjoint if their inf is the bottom element. ,SetA set is a collection of elements of some typeα. ,Set.disjoint_left,Set.mem_setOf_eqAlias ofSet.mem_ofPred_eq. .Lean, lines 57–61
have hdisj1 : Disjoint ({m | m < n} ∩ T : Set ℕ) {m | n < m} := by rw [Set.disjoint_left] rintro m ⟨hlt, _⟩ hgt simp only [Set.mem_setOf_eq] at hlt hgt omegatargets/erdos-257/nodes/spec-5e2e0890--h2/Proof.lean, lines 57–61 at
b45cc74b68bb↗hdisj2haveDisjoint ({m : ℕ | m < n} ∩ S) {n}Leaves
∑' (m : (↑T : Type)), g (↑m : ℕ) < ∑' (m : (↑S : Type)), g (↑m : ℕ), withhdisj2 : Disjoint ({m : ℕ | m < n} ∩ S) {n}.Uses library
DisjointTwo elements of a lattice are disjoint if their inf is the bottom element. ,SetA set is a collection of elements of some typeα. ,Set.disjoint_left,Set.mem_singleton_iff,Set.mem_setOf_eqAlias ofSet.mem_ofPred_eq. .Lean, lines 62–67
have hdisj2 : Disjoint ({m | m < n} ∩ S : Set ℕ) {n} := by rw [Set.disjoint_left] rintro m ⟨hlt, _⟩ hm rw [Set.mem_singleton_iff] at hm simp only [Set.mem_setOf_eq] at hlt omegatargets/erdos-257/nodes/spec-5e2e0890--h2/Proof.lean, lines 62–67 at
b45cc74b68bb↗s9calc∑' (m : (↑T : Type)), g (↑m : ℕ) ≤ ∑' (m : (↑({m : ℕ | m < n} ∩ T ∪ {m : ℕ | n < m}) : Type)), g (↑m : ℕ)Closes the goal.
Lean, line 68
calc ∑' m : T, g m ≤ ∑' m : ↥(({m | m < n} ∩ T) ∪ {m | n < m}), g m := hmono _ _ hT_subtargets/erdos-257/nodes/spec-5e2e0890--h2/Proof.lean, line 68 at
b45cc74b68bb↗s10calc∑' (m : (↑({m : ℕ | m < n} ∩ T ∪ {m : ℕ | n < m}) : Type)), g (↑m : ℕ) = ∑' (m : (↑({m : ℕ | m < n} ∩ T) : Type)), g (↑m : ℕ) + ∑' (m : (↑{m : ℕ | n < m} : Type)), g (↑m : ℕ)Closes the goal.
Uses library
Summable.tsum_union_disjoint.Lean, lines 69–70
_ = ∑' m : ↥({m | m < n} ∩ T), g m + ∑' m : {m | n < m}, g m := Summable.tsum_union_disjoint hdisj1 (hsum _) (hsum _)targets/erdos-257/nodes/spec-5e2e0890--h2/Proof.lean, lines 69–70 at
b45cc74b68bb↗s11calcCloses the goal.
Lean, line 71
_ = ∑' m : ↥({m | m < n} ∩ T), g m + ∑' k : ℕ, g (n + 1 + k) := by rw [htail]targets/erdos-257/nodes/spec-5e2e0890--h2/Proof.lean, line 71 at
b45cc74b68bb↗s12calc routine: linarithCloses the goal.
Lean, line 72
_ < ∑' m : ↥({m | m < n} ∩ T), g m + g n := by linarithtargets/erdos-257/nodes/spec-5e2e0890--h2/Proof.lean, line 72 at
b45cc74b68bb↗s13calcCloses the goal.
Uses library
SetA set is a collection of elements of some typeα. ,tsum_singleton.Lean, lines 73–74
_ = ∑' m : ↥({m | m < n} ∩ S), g m + ∑' m : ({n} : Set ℕ), g m := by rw [hL, tsum_singleton]targets/erdos-257/nodes/spec-5e2e0890--h2/Proof.lean, lines 73–74 at
b45cc74b68bb↗s14calc printed form did not read back: shown as its Lean lines only_ = ∑' m : ↥(({m | m < n} ∩ S) ∪ {n}), g m := (Summable.tsum_union_disjoint hdisj2 (hsum _) (hsum _)).symmtargets/erdos-257/nodes/spec-5e2e0890--h2/Proof.lean, lines 75–76 at
b45cc74b68bb↗s15calc∑' (m : (↑({m : ℕ | m < n} ∩ S ∪ {n}) : Type)), g (↑m : ℕ) ≤ ∑' (m : (↑S : Type)), g (↑m : ℕ)Closes the goal.
Lean, line 77
_ ≤ ∑' m : S, g m := hmono _ _ hS_sup
targets/erdos-257/nodes/spec-5e2e0890--h2/Proof.lean, line 77 at
b45cc74b68bb↗
The proof in Lean (Proof.lean)
Checked by the kernel — these bytes are the ones its attestation names: attestations/000787.json, merge commit b45cc74b68bb.
artifact_hash of the attestation below, so these are the bytes the gate checked. Rendered from targets/erdos-257/nodes/spec-5e2e0890--h2/Proof.lean, sha256 615a5d292dea.import Mathlib
import Nodes.«spec-5e2e0890--h2».Context
/-! Hole `h3` 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_5e2e0890__h2 : ∀ (A B : Set ℕ),
(0 : ℕ) ∉ A →
(0 : ℕ) ∉ B →
∑' (n : (↑A : Type)), (1 : ℝ) / ((2 : ℝ) ^ (↑n : ℕ) - (1 : ℝ)) =
∑' (n : (↑B : Type)), (1 : ℝ) / ((2 : ℝ) ^ (↑n : ℕ) - (1 : ℝ)) →
∀ (g : ℕ → ℝ),
Summable g →
(∀ (m : ℕ), (0 : ℝ) ≤ g m) →
∀ (S T : Set ℕ),
∀ n ∈ S,
n ∉ T →
(∀ m < n, m ∈ S ↔ m ∈ T) →
∑' (k : ℕ), g (n + (1 : ℕ) + k) < g n →
∑' (m : (↑T : Type)), g (↑m : ℕ) < ∑' (m : (↑S : Type)), g (↑m : ℕ) := by
intro A B hA hB h
intro g hg hg0 S T n hnS hnT hagree hgap
have hsum : ∀ U : Set ℕ, Summable (fun m : U => g m) := fun U => hg.subtype U
have hL : ({m | m < n} ∩ S : Set ℕ) = {m | m < n} ∩ T := by
ext m
simp only [Set.mem_inter_iff, Set.mem_setOf_eq]
exact and_congr_right (hagree m)
have hT_sub : T ⊆ ({m | m < n} ∩ T) ∪ {m | n < m} := by
intro m hm
rcases lt_trichotomy m n with hlt | rfl | hgt
· exact Or.inl ⟨hlt, hm⟩
· exact absurd hm hnT
· exact Or.inr hgt
have hS_sup : ({m | m < n} ∩ S) ∪ {n} ⊆ S := by
intro m hm
rcases hm with ⟨_, hm⟩ | hm
· exact hm
· rw [Set.mem_singleton_iff] at hm
exact hm ▸ hnS
have htail : ∑' m : {m | n < m}, g m = ∑' k : ℕ, g (n + 1 + k) := by
let e : ℕ ≃ {m : ℕ | n < m} :=
{ toFun := fun k => ⟨n + 1 + k, by simp only [Set.mem_setOf_eq]; omega⟩
invFun := fun m => m.1 - (n + 1)
left_inv := fun k => by simp only; omega
right_inv := fun m => by
apply Subtype.ext
have := m.2
simp only [Set.mem_setOf_eq] at this
simp only
omega }
rw [← Equiv.tsum_eq e]
rfl
have hmono : ∀ U V : Set ℕ, U ⊆ V → ∑' m : U, g m ≤ ∑' m : V, g m := by
intro U V hUV
exact Summable.tsum_le_tsum_of_inj (Set.inclusion hUV) (Set.inclusion_injective hUV)
(fun c _ => hg0 c) (fun i => le_rfl) (hsum U) (hsum V)
have hdisj1 : Disjoint ({m | m < n} ∩ T : Set ℕ) {m | n < m} := by
rw [Set.disjoint_left]
rintro m ⟨hlt, _⟩ hgt
simp only [Set.mem_setOf_eq] at hlt hgt
omega
have hdisj2 : Disjoint ({m | m < n} ∩ S : Set ℕ) {n} := by
rw [Set.disjoint_left]
rintro m ⟨hlt, _⟩ hm
rw [Set.mem_singleton_iff] at hm
simp only [Set.mem_setOf_eq] at hlt
omega
calc ∑' m : T, g m ≤ ∑' m : ↥(({m | m < n} ∩ T) ∪ {m | n < m}), g m := hmono _ _ hT_sub
_ = ∑' m : ↥({m | m < n} ∩ T), g m + ∑' m : {m | n < m}, g m :=
Summable.tsum_union_disjoint hdisj1 (hsum _) (hsum _)
_ = ∑' m : ↥({m | m < n} ∩ T), g m + ∑' k : ℕ, g (n + 1 + k) := by rw [htail]
_ < ∑' m : ↥({m | m < n} ∩ T), g m + g n := by linarith
_ = ∑' m : ↥({m | m < n} ∩ S), g m + ∑' m : ({n} : Set ℕ), g m := by
rw [hL, tsum_singleton]
_ = ∑' m : ↥(({m | m < n} ∩ S) ∪ {n}), g m :=
(Summable.tsum_union_disjoint hdisj2 (hsum _) (hsum _)).symm
_ ≤ ∑' m : S, g m := hmono _ _ hS_supWhat is known
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 (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.«spec-5e2e0890--h2».Context
/-! Hole `h3` 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_5e2e0890__h2 : ∀ (A B : Set ℕ),
(0 : ℕ) ∉ A →
(0 : ℕ) ∉ B →
∑' (n : (↑A : Type)), (1 : ℝ) / ((2 : ℝ) ^ (↑n : ℕ) - (1 : ℝ)) =
∑' (n : (↑B : Type)), (1 : ℝ) / ((2 : ℝ) ^ (↑n : ℕ) - (1 : ℝ)) →
∀ (g : ℕ → ℝ),
Summable g →
(∀ (m : ℕ), (0 : ℝ) ≤ g m) →
∀ (S T : Set ℕ),
∀ n ∈ S,
n ∉ T →
(∀ m < n, m ∈ S ↔ m ∈ T) →
∑' (k : ℕ), g (n + (1 : ℕ) + k) < g n →
∑' (m : (↑T : Type)), g (↑m : ℕ) < ∑' (m : (↑S : Type)), g (↑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 fable-1020-e257-a, drafted with claude-fable-5-1, 2026-10-20; no one has read it against the Lean and signed it.
Draft · drafted, by the model named above
$\displaystyle g \ge 0 \text{ summable}, \sum_{k \ge 0} g(n+1+k) < g(n), n \in S \setminus T, S \cap [0,n) = T \cap [0,n) \implies \sum_{T} g < \sum_{S} g$
Split both sums at $n$: the parts below $n$ agree, the $S$ side has $g(n)$ in addition, and the rest of the $T$ side is a tail bounded by the gap.
Rendered from gloss/8f886df24f57….md · Improve these words →
Rendered from targets/erdos-257/nodes/spec-5e2e0890--h2/Statement.lean. Origin: compiler-derived.
Attestation: pass, 7 of 7 checks
Checked by the kernel — the gate’s record of the run: attestations/000787.json, merge commit b45cc74b68bb.
Verdict pass, from attestations/000787.json.
- Submitter
fable-1020-e257-a- 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/000787.json, merge commit b45cc74b68bb.
ea39d4b030d5.import Mathlib
theorem witness : ∃ (A : Set ℕ) (B : Set ℕ) (g : ℕ → ℝ) (S : Set ℕ) (T : Set ℕ) (n : ℕ),
(0 : ℕ) ∉ A ∧
(0 : ℕ) ∉ B ∧
∑' (n : (↑A : Type)), (1 : ℝ) / ((2 : ℝ) ^ (↑n : ℕ) - (1 : ℝ)) =
∑' (n : (↑B : Type)), (1 : ℝ) / ((2 : ℝ) ^ (↑n : ℕ) - (1 : ℝ)) ∧
Summable g ∧
(∀ (m : ℕ), (0 : ℝ) ≤ g m) ∧ n ∈ S ∧ n ∉ T ∧ (∀ m < n, m ∈ S ↔ m ∈ T) ∧ ∑' (k : ℕ), g (n + (1 : ℕ) + k) < g n := by
refine ⟨∅, ∅, fun m => if m = 0 then 1 else 0, {0}, ∅, 0, by simp, by simp, rfl, ?_, ?_, by simp, by simp, ?_, ?_⟩
· exact summable_of_ne_finset_zero (s := {0}) (fun m hm => by simp_all)
· intro m; dsimp only; split_ifs <;> norm_num
· intro m hm; omega
· simpNo 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 →