/- Copyright 2025 The Formal Conjectures Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -/ import FormalConjecturesUtil

Erdős Problem 316

References:

namespace Erdos316

Is it true that if $A \subseteq \mathbb{N}\setminus{1}$ is a finite set with $\sum_{n \in A} \frac{1}{n} < 2$ then there is a partition $A=A_1 \sqcup A_2$ such that $\sum_{n \in A_i} \frac{1}{n} < 1$ for $i=1,2$?

This is not true in general, as shown by Sándor [Sa97].

The minimal counterexample is ${2,3,4,5,6,7,10,11,13,14,15}$, found by Tom Stobart.

This was formalized in Lean by Mehta.

@[category research solved, AMS 5 11, formal_proof using lean4 at "https://github.com/google-deepmind/formal-conjectures/blob/main/FormalConjectures/ErdosProblems/316.lean"] theorem erdos_316 : answer(False) A : Finset , 0 A 1 A n A, (1 / n : ) < 2 (A₁ A₂ : Finset ), Disjoint A₁ A₂ A = A₁ A₂ n A₁, (1 / n : ) < 1 n A₂, (1 / n : ) < 1 := False (A : Finset ), 0 A 1 A n A, 1 / n < 2 A₁ A₂, Disjoint A₁ A₂ A = A₁ A₂ n A₁, 1 / n < 1 n A₂, 1 / n < 1 False (A : Finset ), 0 A 1 A n A, 1 / n < 2 A₁ A₂, Disjoint A₁ A₂ A = A₁ A₂ n A₁, 1 / n < 1 n A₂, 1 / n < 1 x, (_ : 0 x) (_ : 1 x) (_ : x x, (↑x)⁻¹ < 2), (x_1 x_2 : Finset ), Disjoint x_1 x_2 x = x_1 x_2 x x_1, (↑x)⁻¹ < 1 1 x x_2, (↑x)⁻¹ A:Finset := {2, 3, 4, 5, 6, 7, 10, 11, 13, 14, 15} x, (_ : 0 x) (_ : 1 x) (_ : x x, (↑x)⁻¹ < 2), (x_1 x_2 : Finset ), Disjoint x_1 x_2 x = x_1 x_2 x x_1, (↑x)⁻¹ < 1 1 x x_2, (↑x)⁻¹ refine A, A:Finset := {2, 3, 4, 5, 6, 7, 10, 11, 13, 14, 15}0 A All goals completed! 🐙, A:Finset := {2, 3, 4, 5, 6, 7, 10, 11, 13, 14, 15}1 A All goals completed! 🐙, A:Finset := {2, 3, 4, 5, 6, 7, 10, 11, 13, 14, 15} x A, (↑x)⁻¹ < 2 All goals completed! 🐙, ?_ suffices h : B A, n B, (n : )⁻¹ < 1 1 n A \ B, (n : )⁻¹ A:Finset := {2, 3, 4, 5, 6, 7, 10, 11, 13, 14, 15}h: B A, n B, (↑n)⁻¹ < 1 1 n A \ B, (↑n)⁻¹ := ?m.173 (x x_1 : Finset ), Disjoint x x_1 A = x x_1 x x, (↑x)⁻¹ < 1 1 x x_1, (↑x)⁻¹ A:Finset := {2, 3, 4, 5, 6, 7, 10, 11, 13, 14, 15}h: B A, n B, (↑n)⁻¹ < 1 1 n A \ B, (↑n)⁻¹ := ?m.173B:Finset C:Finset hBC:Disjoint B ChA:A = B Chlt: x B, (↑x)⁻¹ < 11 x C, (↑x)⁻¹ have : C = A \ B := A:Finset := {2, 3, 4, 5, 6, 7, 10, 11, 13, 14, 15}h: B A, n B, (↑n)⁻¹ < 1 1 n A \ B, (↑n)⁻¹ := ?m.173 (x x_1 : Finset ), Disjoint x x_1 A = x x_1 x x, (↑x)⁻¹ < 1 1 x x_1, (↑x)⁻¹ All goals completed! 🐙 exact this h B (A:Finset := {2, 3, 4, 5, 6, 7, 10, 11, 13, 14, 15}h: B A, n B, (↑n)⁻¹ < 1 1 n A \ B, (↑n)⁻¹ := ?m.173B:Finset C:Finset hBC:Disjoint B ChA:A = B Chlt: x B, (↑x)⁻¹ < 1this:C = A \ B := Eq.mpr (id (congrArg (fun _a => C = _a \ B) hA)) (Eq.mpr (id (congrArg (fun _a => C = _a) (Finset.union_sdiff_cancel_left hBC))) (Eq.refl C))B A All goals completed! 🐙) hlt All goals completed! 🐙

This is not true if $A$ is a multiset, for example $2,3,3,5,5,5,5$.

@[category textbook, AMS 5 11] lemma erdos_316.variants.multiset : A : Multiset , 0 A 1 A (A.map ((1 : ) / ·)).sum < 2 (A₁ A₂ : Multiset ), A = A₁ + A₂ 1 (A₁.map ((1 : ) / ·)).sum 1 (A₂.map ((1 : ) / ·)).sum := A, 0 A 1 A (Multiset.map (fun x => 1 / x) do let a A pure a).sum < 2 (A₁ A₂ : Multiset ), A = A₁ + A₂ 1 (Multiset.map (fun x => 1 / x) do let a A₁ pure a).sum 1 (Multiset.map (fun x => 1 / x) do let a A₂ pure a).sum A:Multiset := {2, 3, 3, 5, 5, 5, 5} A, 0 A 1 A (Multiset.map (fun x => 1 / x) do let a A pure a).sum < 2 (A₁ A₂ : Multiset ), A = A₁ + A₂ 1 (Multiset.map (fun x => 1 / x) do let a A₁ pure a).sum 1 (Multiset.map (fun x => 1 / x) do let a A₂ pure a).sum refine A, A:Multiset := {2, 3, 3, 5, 5, 5, 5}0 A All goals completed! 🐙, A:Multiset := {2, 3, 3, 5, 5, 5, 5}1 A All goals completed! 🐙, A:Multiset := {2, 3, 3, 5, 5, 5, 5}(Multiset.map (fun x => 1 / x) do let a A pure a).sum < 2 All goals completed! 🐙, ?_ suffices h : B A.powerset, 1 (B.map (fun x (x : )⁻¹)).sum 1 ((A - B).map (fun x (x : )⁻¹)).sum A:Multiset := {2, 3, 3, 5, 5, 5, 5}h: B A.powerset, 1 (Multiset.map (fun x => x⁻¹) do let a B pure a).sum 1 (Multiset.map (fun x => x⁻¹) do let a A - B pure a).sum := ?m.147 (A₁ A₂ : Multiset ), A = A₁ + A₂ 1 (Multiset.map (fun x => 1 / x) do let a A₁ pure a).sum 1 (Multiset.map (fun x => 1 / x) do let a A₂ pure a).sum intro B A:Multiset := {2, 3, 3, 5, 5, 5, 5}h: B A.powerset, 1 (Multiset.map (fun x => x⁻¹) do let a B pure a).sum 1 (Multiset.map (fun x => x⁻¹) do let a A - B pure a).sum := ?m.147B:Multiset C:Multiset A = B + C 1 (Multiset.map (fun x => 1 / x) do let a B pure a).sum 1 (Multiset.map (fun x => 1 / x) do let a C pure a).sum A:Multiset := {2, 3, 3, 5, 5, 5, 5}h: B A.powerset, 1 (Multiset.map (fun x => x⁻¹) do let a B pure a).sum 1 (Multiset.map (fun x => x⁻¹) do let a A - B pure a).sum := ?m.147B:Multiset C:Multiset hBC:A = B + C1 (Multiset.map (fun x => 1 / x) do let a B pure a).sum 1 (Multiset.map (fun x => 1 / x) do let a C pure a).sum have : C = A - B := A:Multiset := {2, 3, 3, 5, 5, 5, 5}h: B A.powerset, 1 (Multiset.map (fun x => x⁻¹) do let a B pure a).sum 1 (Multiset.map (fun x => x⁻¹) do let a A - B pure a).sum := ?m.147 (A₁ A₂ : Multiset ), A = A₁ + A₂ 1 (Multiset.map (fun x => 1 / x) do let a A₁ pure a).sum 1 (Multiset.map (fun x => 1 / x) do let a A₂ pure a).sum All goals completed! 🐙 A:Multiset := {2, 3, 3, 5, 5, 5, 5}B:Multiset C:Multiset hBC:A = B + Cthis:C = A - B := of_eq_true (Eq.trans (congrArg (Eq C) (Eq.trans (congrArg (fun x => x - B) hBC) (add_tsub_cancel_left B C))) (eq_self C))h: B A.powerset, 1 (Multiset.map (fun x => (↑x)⁻¹) B).sum 1 (Multiset.map (fun x => (↑x)⁻¹) (A - B)).sum1 (Multiset.map (fun x => (↑x)⁻¹) B).sum 1 (Multiset.map (fun x => (↑x)⁻¹) C).sum exact this h B (A:Multiset := {2, 3, 3, 5, 5, 5, 5}B:Multiset C:Multiset hBC:A = B + Cthis:C = A - B := of_eq_true (Eq.trans (congrArg (Eq C) (Eq.trans (congrArg (fun x => x - B) hBC) (add_tsub_cancel_left B C))) (eq_self C))h: B A.powerset, 1 (Multiset.map (fun x => (↑x)⁻¹) B).sum 1 (Multiset.map (fun x => (↑x)⁻¹) (A - B)).sumB A.powerset All goals completed! 🐙) All goals completed! 🐙

This is not true in general, as shown by Sándor [Sa97], who observed that the proper divisors of $120$ form a counterexample. More generally, Sándor shows that for any $n\geq 2$ there exists a finite set $A\subseteq \mathbb{N}\backslash{1}$ with $\sum_{k\in A}\frac{1}{k} < n$ and no partition into $n$ parts each of which has $\sum_{k\in A_i}\frac{1}{k}<1$.

@[category research solved, AMS 5 11] theorem declaration uses 'sorry'erdos_316.variants.generalized (n : ) (hn : 2 n) : A : Finset , A.Nonempty 0 A 1 A k A, (1 / k : ) < n P : Finpartition A, P.parts.card = n p P.parts, 1 n p, (1 / n : ) := n:hn:2 n A, A.Nonempty 0 A 1 A k A, 1 / k < n (P : Finpartition A), P.parts.card = n p P.parts, 1 n p, 1 / n All goals completed! 🐙 end Erdos316