FormalConjectures/ErdosProblems/1188.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

9 declarations, 1 contain sorry, 0 declared as axioms

Erdős Problem 1188

Reference: erdosproblems.com/1188

Imports (1)
  1. abbrev Erdos1188.CongruenceClass A congruence class (n, a) represents a (mod n) line 34 source

    Source documentation

    A congruence class (n, a) represents a (mod n).

    no axioms what this means

    Proof uses: Prod, Nat

    abbrev CongruenceClass := ℕ × ℕ
  2. def Erdos1188.ValidClass The modulus is > 1 and the residue is reduced line 37 source

    Source documentation

    The modulus is > 1 and the residue is reduced.

    no axioms what this means

    Statement uses: Erdos1188.CongruenceClass

    Proof uses: And, LE.le, Nat, OfNat.ofNat, Prod.fst, LT.lt, Prod.snd

    3 instances, coercions and auxiliary constants left out.

    def ValidClass (c : CongruenceClass) : Prop := 2 ≤ c.1 ∧ c.2 < c.1

    Mentions: c, Erdos1188.CongruenceClass

  3. def Erdos1188.Satisfies z lies in the class (n, a) line 40 source

    Source documentation

    z lies in the class (n, a).

    no axioms what this means

    Statement uses: Int, Erdos1188.CongruenceClass

    Proof uses: Eq, HMod.hMod, Prod.fst, Nat, Prod.snd

    4 instances, coercions and auxiliary constants left out.

    def Satisfies (z : ℤ) (c : CongruenceClass) : Prop := z % (c.1 : ℤ) = (c.2 : ℤ)

    Mentions: c, Erdos1188.CongruenceClass

  4. def Erdos1188.Covers Every integer satisfies some congruence of S line 43 source

    Source documentation

    Every integer satisfies some congruence of S.

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

    Statement uses: Finset, Erdos1188.CongruenceClass

    Proof uses: Int, Exists, And, Membership.mem, Erdos1188.Satisfies

    2 instances, coercions and auxiliary constants left out.

    def Covers (S : Finset CongruenceClass) : Prop := ∀ z : ℤ, ∃ c ∈ S, Satisfies z c

    Mentions: Erdos1188.CongruenceClass, c, Erdos1188.Satisfies

  5. def Erdos1188.HasDistinctModuli No two classes of S share a modulus line 46 source

    Source documentation

    No two classes of S share a modulus.

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

    Statement uses: Finset, Erdos1188.CongruenceClass

    Proof uses: Membership.mem, Eq, Nat, Prod.fst

    2 instances, coercions and auxiliary constants left out.

    def HasDistinctModuli (S : Finset CongruenceClass) : Prop :=
    …

    Mentions: Erdos1188.CongruenceClass

  6. def Erdos1188.IsMinimalDistinctCoveringSystem A minimal distinct covering system: valid classes with distinct moduli that cover ℤ, with no proper subset already covering line 51 source

    Source documentation

    A minimal distinct covering system: valid classes with distinct moduli that cover ℤ, with no proper subset already covering.

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

    Statement uses: Finset, Erdos1188.CongruenceClass

    Proof uses: And, Membership.mem, Erdos1188.ValidClass, Erdos1188.HasDistinctModuli, Erdos1188.Covers, LT.lt, Not

    5 instances, coercions and auxiliary constants left out.

    def IsMinimalDistinctCoveringSystem (S : Finset CongruenceClass) : Prop :=
    …

    Mentions: Erdos1188.CongruenceClass

  7. def Erdos1188.ClassesUpTo All classes (n, a) with 2 ≤ n ≤ x and a < n line 56 source

    Source documentation

    All classes (n, a) with 2 ≤ n ≤ x and a < n.

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

    Statement uses: Nat, Finset, Erdos1188.CongruenceClass

    Proof uses: Finset.biUnion, Finset.Icc, OfNat.ofNat, Finset.image, Prod.mk, Finset.range

    5 instances, coercions and auxiliary constants left out.

    def ClassesUpTo (x : ℕ) : Finset CongruenceClass :=
    …

    Mentions: Erdos1188.CongruenceClass

  8. def Erdos1188.coveringCount F(x): the number of minimal distinct covering systems all of whose moduli lie in [1, x] line 62 source

    Source documentation

    F(x): the number of minimal distinct covering systems all of whose moduli lie in [1, x].

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

    Statement uses: Nat

    Proof uses: Finset.card, Finset, Erdos1188.CongruenceClass, Finset.filter, Erdos1188.IsMinimalDistinctCoveringSystem, Classical.propDecidable, Finset.powerset, Erdos1188.ClassesUpTo

    noncomputable def coveringCount (x : ℕ) : ℕ :=
    …
  9. theorem Erdos1188.erdos_1188 Call a set of distinct integers sorry line 75 source

    Source documentation

    Call a set of distinct integers $1<n_1<\cdots<n_k$ with associated congruence classes $a_i\pmod{n_i}$ a distinct covering system if every integer satisfies at least one of these congruences. A minimal distinct covering system is one such that no proper subset forms a covering system. Let $F(x)$ count the number of minimal distinct covering systems with all moduli in $[1,x]$. Estimate $F(x)$.

    The estimate is log(log F(x)) / log x → 1.

    depends on sorry what this means

    Statement uses: Filter.Tendsto, Nat, Real, HDiv.hDiv, Real.log, Erdos1188.coveringCount, Filter.atTop, nhds, OfNat.ofNat

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

    23 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

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

    theorem erdos_1188 :
        Tendsto (fun x : ℕ => Real.log (Real.log (coveringCount x : ℝ)) / Real.log (x : ℝ))
          atTop (𝓝 1) := by
    …

    Mentions: Erdos1188.coveringCount