Conjectura
Beta.Proofs cannot be submitted yet. The corpus is open to read, and we are looking for researchers to maintain a subject area.Maintaining a field →
← problemsCB008openMathematics/ Combinatorics

The Erdős conjecture on arithmetic progressions

Maintainer — open

If the reciprocals of a set diverge, does it contain arbitrarily long progressions?

Motivation

Erdős' $3000 problem — his largest prize, and unclaimed.

It would imply the Green–Tao theorem on primes (since the reciprocals of the primes diverge) and Szemerédi's theorem. The Green–Tao proof works by treating the primes as a dense subset of a pseudorandom set, which uses structure a general divergent-reciprocal set has no reason to have.

Paul Erdős. $3000 prize, his largest.

Lean API
import Mathlib.Algebra.Order.BigOperators.Group.Finset
import Mathlib.Analysis.SpecialFunctions.Pow.Real
import Conjectura.Defs.Mathematics.Combinatorics.ArithmeticProgression

namespace Conjectura.CB008

/-- If the reciprocals of a set of naturals diverge, does it contain arbitrarily long
arithmetic progressions? Erdős offered $3000, his largest prize. The case of the
primes is the Green–Tao theorem; the general statement is open. -/
def goal : Prop :=
  ∀ (A : Set ℕ) [DecidablePred (· ∈ A)],
    (∀ C : ℝ, ∃ N : ℕ,
        C < ∑ n ∈ Finset.range N, (if n ∈ A then (1 : ℝ) / n else 0)) →
      ∀ k : ℕ, ContainsAPOfLength A k

end Conjectura.CB008
Definition3
contains an arithmetic progression of length `k`Conjectura.Combinatorics.ContainsAPOfLength

A set of naturals contains an arithmetic progression of length k when some a and positive common difference d place all of a, a+d, …, a+(k-1)d inside it.

def ContainsAPOfLength (S : Set ℕ) (k : ℕ) : Prop :=
  ∃ a d : ℕ, 0 < d ∧ ∀ i < k, a + i * d ∈ S
SetSet

abbrev

rangeFinset.range

def

Related work0
    For your AI
    Download as .md
    I am proving a theorem in Lean 4 and submitting it to Conjectura.
    
    ## Problem CB008 — The Erdős conjecture on arithmetic progressions
    
    If the reciprocals of a set diverge, does it contain arbitrarily long progressions?
    
    ## Environment (fixed — do not assume anything newer)
    
    - Lean toolchain: `leanprover/lean4:v4.33.0-rc1`
    - Mathlib: `v4.33.0-rc1`
    
    If a lemma you want does not exist in that Mathlib, prove it inline instead of
    importing something newer.
    
    ## The exact statement I must prove
    
    ```lean
    theorem solution : ∀ (A : Set ℕ) [DecidablePred (· ∈ A)],
        (∀ C : ℝ, ∃ N : ℕ, C < ∑ n ∈ Finset.range N, (if n ∈ A then (1 : ℝ) / n else 0)) →
          ∀ k : ℕ, ContainsAPOfLength A k := by
      sorry
    ```
    
    ## The file I submit
    
    ```lean
    import Conjectura.Problems.CB008.Statement
    
    namespace Submission
    
    theorem solution : Conjectura.CB008.goal := by
      sorry
    
    end Submission
    
    ```
    
    ## The Lean definitions of every term in this problem
    
    These are the actual definitions your proof will be checked against. Do not
    substitute your own version of any of them.
    
    ### contains an arithmetic progression of length `k`
    
    A set of naturals contains an arithmetic progression of length `k` when some `a` and positive common difference `d` place all of `a, a+d, …, a+(k-1)d` inside it.
    
    ```lean
    Conjectura.Combinatorics.ContainsAPOfLength
    -- unfolds to:
    def ContainsAPOfLength (S : Set ℕ) (k : ℕ) : Prop :=
      ∃ a d : ℕ, 0 < d ∧ ∀ i < k, a + i * d ∈ S
    ```
    Defined in this corpus.
    
    ### Set
    
    abbrev
    
    ```lean
    Set
    ```
    Defined in Mathlib.
    
    ### range
    
    def
    
    ```lean
    Finset.range
    ```
    Defined in Mathlib.
    
    ## Rules — submissions violating these are rejected automatically
    
    1. **Do not change the name or type of `solution`.** It must satisfy the
       statement above exactly.
    2. **Do not redefine or shadow anything from the problem's Statement module.**
       Declaring your own `goal`, or redefining a name it depends on, produces a
       proof of a *different* statement and is rejected. This is the single most
       common rejection.
    3. **No `sorry`** anywhere, including in helper lemmas. It surfaces as the
       axiom `sorryAx` and is detected transitively through imports.
    4. **No `native_decide`** — it surfaces as `Lean.ofReduceBool` and is not
       accepted, because it trusts compiled code rather than the kernel.
    5. Only these axioms are permitted: `propext`, `Classical.choice`,
       `Quot.sound`.
    6. Follow Mathlib style: hypotheses left of the colon, explicit types,
       `snake_case` theorem names, `UpperCamelCase` types.
    
    ## What I want from you
    
    Here is my argument in informal mathematics:
    
    > [PASTE YOUR PROOF SKETCH HERE]
    
    Turn it into Lean 4 that compiles under the environment above and satisfies the
    statement exactly. Where you are unsure a lemma exists in this Mathlib version,
    say so explicitly rather than guessing a name.

    Submissions are not open yet

    Conjectura is in beta. You can read every statement, every definition and the Lean behind them, and download the exact files the checker uses — but proofs are not being accepted yet.

    The reason is a deliberate order of operations. Accepting a proof means running a stranger’s code and standing behind a verdict, and no statement here yet carries a researcher’s name. A machine-checked answer to a question nobody has vouched for is worth very little, so the vouching comes first.

    The English write-ups are also switched off during the beta. Nothing on this page is generated by a model.

    Discussion

    • Nothing yet.

    Sign in to take part.