FormalConjectures/ErdosProblems/789.lean

GitHub source file

Explanation legend Lean4 Domain Explanation Language (L4DEL)

L4DEL explanations are a separate layer. They do not change the Lean source. Intuition is explanatory prose; numbered items are a reading path; sources link the wording back to evidence.

L4DEL
Lean4 Domain Explanation Language

Credit: The upstream authors and contributors retain credit for the project and mathematics. lean4-explainer only renders their pinned source and adds the separately disclosed explanation layer.

Project sources: Pinned project documentation, Formal Conjectures paper, arXiv v1

10 declarations, 8 contain sorry, 0 declared as axioms

Erdős Problem 789

In this problem, a function $h : \mathbb{N} \to\mathbb{N}$ is defined maximally by some counting property.

The problem asks to estimate $h(n)$. This has been interpreted here as asking for $\Theta(h(n))$. The principal version includes answer(sorry) for an unknown function.

Straus [Str66] proved that $h(n) \ll \sqrt{n}$. Erdős [Er62c] and Choi [Ch74b] proved that $(n\log(n))^{1/3} \ll h(n)$. Korsky [Ko26] improved this to $h(n) \gg \sqrt{n\log\log n/\log n}$. The variants record these bounds and the open question whether $h(n) = \Theta(\sqrt{n})$. The file proves Korsky's bound, following [Ko26], and derives from it the Erdős–Choi bound and $h(n) \neq O((n\log(n))^{1/3})$.

References:

Imports (1)
  1. def Erdos789.IsSubsetSumSeparatingCard Given a non-negative integer line 56 source

    Source documentation

    Given a non-negative integer $n$, we say $m$ is a separating cardinality of subset sums if, for any set $A$ of $n$ integers, there is some $B\subseteq A$ of size $\geq m$ such that subset sums of $B$ can only ever coincide when the subsets have the same cardinality.

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: Nat

    Proof uses: Finset, Int, Eq, Finset.card, Exists, And, LE.le, Finset.Nonempty, Finset.sum

    5 instances, coercions and auxiliary constants left out.

    def IsSubsetSumSeparatingCard (n m : ℕ) : Prop :=
    …
  2. def Erdos789.subsetSumThreshold The subset sum threshold $h(n)$, for each positive $n$, is the maximal separating cardinality of subset sums for $n$ line 62 source

    Source documentation

    The subset sum threshold $h(n)$, for each positive $n$, is the maximal separating cardinality of subset sums for $n$.

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: Nat

    Proof uses: SupSet.sSup, Set.ofPred, Erdos789.IsSubsetSumSeparatingCard

    1 instances, coercions and auxiliary constants left out.

    noncomputable def subsetSumThreshold (n : ℕ): ℕ :=
    …
  3. theorem Erdos789.erdos_789 Documented declaration: erdos_789 sorry line 73 source

    Source documentation

    Let $h(n)$ be maximal such that if $A\subseteq \mathbb{Z}$ with $\lvert A\rvert=n$ then there is $B\subseteq A$ with $\lvert B\rvert \geq h(n)$ such that if $a_1+\cdots+a_r=b_1+\cdots+b_s$ with $a_i,b_i\in B$ then $r=s$.

    Estimate $h(n)$.

    depends on sorry what this means

    Statement uses: Asymptotics.IsTheta, Nat, Real, Filter.atTop, Erdos789.subsetSumThreshold, sorryAx, Bool.false

    Proof uses: Lean.Name, Lean.Name.num, Lean.Name.str, Lean.Name.anonymous, OfNat.ofNat

    9 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

    Open to load the checked before-and-after goal states.

    theorem erdos_789 :
        (fun n ↦ (subsetSumThreshold n : ℝ)) =Θ[atTop] (answer(sorry) : ℕ → ℝ) := by
    …

    Mentions: Erdos789.subsetSumThreshold

  4. theorem Erdos789.erdos_789.variants.sq Documented declaration: sq sorry line 85 source

    Source documentation

    Let $h(n)$ be maximal such that if $A\subseteq \mathbb{Z}$ with $\lvert A\rvert=n$ then there is $B\subseteq A$ with $\lvert B\rvert \geq h(n)$ such that if $a_1+\cdots+a_r=b_1+\cdots+b_s$ with $a_i,b_i\in B$ then $r=s$.

    Is $h(n) = \Theta(\sqrt{n})$?

    depends on sorry what this means

    Statement uses: Asymptotics.IsTheta, Nat, Real, Filter.atTop, Erdos789.subsetSumThreshold, Real.sqrt

    Proof uses: sorryAx, Lean.Name, Bool.false, Lean.Name.num, Lean.Name.str, Lean.Name.anonymous, OfNat.ofNat

    9 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

    Open to load the checked before-and-after goal states.

    theorem erdos_789.variants.sq :
        (fun n ↦ (subsetSumThreshold n : ℝ)) =Θ[atTop] fun n ↦ √n := by
    …

    Mentions: Erdos789.subsetSumThreshold

  5. theorem Erdos789.erdos_789.variants.isBigO_sq Straus [Str66] proved that $h(n) \ll \sqrt{n}$ sorry line 91 source

    Source documentation

    Straus [Str66] proved that $h(n) \ll \sqrt{n}$.

    depends on sorry what this means

    Statement uses: Asymptotics.IsBigO, Nat, Real, Filter.atTop, Erdos789.subsetSumThreshold, Real.sqrt

    Proof uses: sorryAx, Lean.Name, Bool.false, Lean.Name.num, Lean.Name.str, Lean.Name.anonymous, OfNat.ofNat

    9 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

    Open to load the checked before-and-after goal states.

    theorem erdos_789.variants.isBigO_sq :
        (fun n ↦ (subsetSumThreshold n : ℝ)) =O[atTop] fun n ↦ √n := by
    …

    Mentions: Erdos789.subsetSumThreshold

  6. theorem Erdos789.erdos_789.variants.sq_isBigO By the solved variant erdos_789.variants.isBigO_sq, in order to prove erdos_789.variants.sq it suffices to show $\sqrt{n}=O(h(n))$ sorry line 98 source

    Source documentation

    By the solved variant erdos_789.variants.isBigO_sq, in order to prove erdos_789.variants.sq it suffices to show $\sqrt{n}=O(h(n))$.

    depends on sorry what this means

    Statement uses: Asymptotics.IsBigO, Nat, Real, Filter.atTop, Real.sqrt, Erdos789.subsetSumThreshold

    Proof uses: sorryAx, Lean.Name, Bool.false, Lean.Name.num, Lean.Name.str, Lean.Name.anonymous, OfNat.ofNat

    9 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

    Open to load the checked before-and-after goal states.

    theorem erdos_789.variants.sq_isBigO :
        (fun n : ℕ ↦ √n) =O[atTop] fun n ↦ (subsetSumThreshold n : ℝ) := by
    …

    Mentions: Erdos789.subsetSumThreshold

  7. theorem Erdos789.erdos_789.variants.sqrt_loglog_div_log_isBigO sorry line 106 source

    depends on sorry what this means

    Statement uses: Asymptotics.IsBigO, Nat, Real, Filter.atTop, Real.sqrt, HDiv.hDiv, HMul.hMul, Real.log, Erdos789.subsetSumThreshold

    Proof uses: sorryAx, Lean.Name, Bool.false, Lean.Name.num, Lean.Name.str, Lean.Name.anonymous, OfNat.ofNat

    19 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

    Open to load the checked before-and-after goal states.

  8. theorem Erdos789.erdos_789.variants.cube_root_linearithmic_isBigO sorry line 116 source

    depends on sorry what this means

    Statement uses: Asymptotics.IsBigO, Nat, Real, Filter.atTop, HPow.hPow, HMul.hMul, Real.log, HDiv.hDiv, OfNat.ofNat, Erdos789.subsetSumThreshold

    Proof uses: sorryAx, Lean.Name, Bool.false, Lean.Name.num, Lean.Name.str, Lean.Name.anonymous

    34 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

    Open to load the checked before-and-after goal states.

  9. theorem Erdos789.erdos_789.variants.isBigO_cube_root_linearithmic sorry line 125 source

    depends on sorry what this means

    Statement uses: Not, Asymptotics.IsBigO, Nat, Real, Filter.atTop, Erdos789.subsetSumThreshold, HPow.hPow, HMul.hMul, Real.log, HDiv.hDiv, OfNat.ofNat

    Proof uses: sorryAx, Lean.Name, Bool.false, Lean.Name.num, Lean.Name.str, Lean.Name.anonymous

    34 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

    Open to load the checked before-and-after goal states.

  10. theorem Erdos789.erdos_789.variants.cube_root_linearithmic sorry line 134 source

    depends on sorry what this means

    Statement uses: Not, Asymptotics.IsTheta, Nat, Real, Filter.atTop, Erdos789.subsetSumThreshold, HPow.hPow, HMul.hMul, Real.log, HDiv.hDiv, OfNat.ofNat

    Proof uses: sorryAx, Lean.Name, Bool.false, Lean.Name.num, Lean.Name.str, Lean.Name.anonymous

    34 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

    Open to load the checked before-and-after goal states.