/- 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 41

Reference: erdosproblems.com/41

open Filter Setnamespace Erdos41variable {α : Type} [AddCommMonoid α]

NtupleCondition A n says that the sum of n elements of A determines the summands, counted with multiplicity and up to permutation.

Multisets allow a summand to occur more than once, while multiset equality identifies precisely the trivial coincidences obtained by reordering the summands.

def NtupleCondition (A : Set α) (n : ) : Prop := I J : Multiset α, ( i I, i A) ( j J, j A) I.card = n J.card = n I.sum = J.sum I = J

Let $A \subset \mathbb{N}$ be an infinite set such that the triple sums $a+b+c$ are all distinct for $a,b,c \in A$ (aside from the trivial coincidences). Is it true that $$\liminf_{N \to \infty} \frac{\lvert A \cap {1,\ldots,N}\rvert}{N^{1/3}}=0?$$

@[category research open, AMS 11] theorem erdos_41 (A : Set ) (h_triple : NtupleCondition A 3) (h_infinite : A.Infinite) : Filter.atTop.liminf (fun N => (A Icc 1 N).ncard / (N : )^(1/3 : )) = 0 := A:Set h_triple:NtupleCondition A 3h_infinite:A.Infiniteliminf (fun N (A Icc 1 N).ncard / N ^ (1 / 3)) atTop = 0 All goals completed! 🐙

Erdős proved that if the pairwise sums $a+b$ are all distinct aside from the trivial coincidences, then $$\liminf_{N \to \infty} \frac{\lvert A \cap {1,\ldots,N}\rvert}{N^{1/2}}=0.$$

@[category research solved, AMS 11] theorem erdos_41.variants.pairwise (A : Set ) (hA₂ : NtupleCondition A 2) (hA : A.Infinite) : Filter.atTop.liminf (fun N => (A Icc 1 N).ncard / (N : ).sqrt) = 0 := A:Set hA₂:NtupleCondition A 2hA:A.Infiniteliminf (fun N (A Icc 1 N).ncard / N) atTop = 0 All goals completed! 🐙end Erdos41