FormalConjectures/ErdosProblems/346.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, 3 contain sorry, 0 declared as axioms

Erdős Problem 346

References:

Imports (1)
  1. theorem Erdos346.erdos_346 Is it true that for every lacunary, strongly complete sequence A that is not complete whenever infinitely many terms are removed from it, lim A (n + 1) / A n = (1 + √5) / 2? sorry line 45 source

    Source documentation

    Is it true that for every lacunary, strongly complete sequence A that is not complete whenever infinitely many terms are removed from it, lim A (n + 1) / A n = (1 + √5) / 2?

    The answer is no. A counterexample recorded at [erdosproblems.com/346] has all successive ratios at least 6 / 5, but has subsequences of successive ratios tending to two different limits, (1 + √5) / 2 and (1 + √5) / 2 + 1 / 4.

    depends on sorry what this means

    Statement uses: Iff, False, Nat, IsLacunary, IsAddStronglyCompleteNatSeq, Set, LE.le, Set.range, Set.Infinite, Not, IsAddComplete, SDiff.sdiff, Filter.Tendsto, Real, HDiv.hDiv, HAdd.hAdd, OfNat.ofNat, Filter.atTop, nhds, Real.sqrt

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

    42 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

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

    theorem erdos_346 : answer(False) ↔ ∀ {A : ℕ → ℕ}, IsLacunary A → IsAddStronglyCompleteNatSeq A →
        (∀ B : Set ℕ, B ⊆ range A → B.Infinite → ¬ IsAddComplete (range A \ B)) →
        Tendsto (fun n => A (n + 1) / (A n : ℝ)) atTop (𝓝 ((1 + √5) / 2)) := by
    …

    Mentions: IsLacunary, IsAddStronglyCompleteNatSeq, IsAddComplete

  2. def Erdos346.f We define a sequence f by the formula f n = n.fib - (- 1) ^ n line 51 source

    Source documentation

    We define a sequence f by the formula f n = n.fib - (- 1) ^ n.

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

    Statement uses: Nat

    Proof uses: ite, Even, HSub.hSub, Nat.fib, OfNat.ofNat, HAdd.hAdd

    6 instances, coercions and auxiliary constants left out.

    def f (n : ℕ) : ℕ := if Even n then n.fib - 1 else n.fib + 1
    …
  3. theorem Erdos346.erdos_346.variants.f_isLacunary The sequence f is lacunary line 55 source

    Source documentation

    The sequence f is lacunary.

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

    Statement uses: IsLacunary, Erdos346.f

    Proof uses: Exists.intro, Real, And, GT.gt, OfNat.ofNat, Filter.Eventually, Nat, LT.lt, HMul.hMul, HAdd.hAdd, Filter.atTop, HDiv.hDiv, And.intro, Mathlib.Meta.NormNum.isNNRat_lt_true, Mathlib.Meta.NormNum.IsNat.to_isNNRat, Mathlib.Meta.NormNum.isNat_ofNat, Nat.cast_one, Mathlib.Meta.NormNum.isNNRat_div, Mathlib.Meta.NormNum.isNNRat_mul, Inv.inv and 115 more

    119 instances, coercions and auxiliary constants left out.

    Tactic trace: 38 steps

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

    theorem erdos_346.variants.f_isLacunary : IsLacunary f := by
    …

    Mentions: IsLacunary, Erdos346.f

  4. theorem Erdos346.erdos_346.variants.f_isAddStronglyCompleteNatSeq The sequence f is strongly complete, and this is proved in [Gr64d] sorry line 87 source

    Source documentation

    The sequence f is strongly complete, and this is proved in [Gr64d].

    depends on sorry what this means

    Statement uses: IsAddStronglyCompleteNatSeq, Nat, Erdos346.f

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

    5 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

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

    theorem erdos_346.variants.f_isAddStronglyCompleteNatSeq : IsAddStronglyCompleteNatSeq f := by
    …

    Mentions: IsAddStronglyCompleteNatSeq, Erdos346.f

  5. theorem Erdos346.erdos_346.variants.f_add_two The recurrence f (m + 2) = f (m + 1) + f m - (-1) ^ m for m ≥ 1, written without subtraction line 93 source

    Source documentation

    The recurrence f (m + 2) = f (m + 1) + f m - (-1) ^ m for m ≥ 1, written without subtraction.

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

    Statement uses: Nat, LE.le, OfNat.ofNat, Eq, HAdd.hAdd, Erdos346.f, ite, Even

    Proof uses: Nat.fib, Iff.mpr, LT.lt, Nat.fib_pos, Decidable.byContradiction, Not, Nat.fib_add_two, dite, of_eq_true, Eq.trans, False, True, congrArg, eq_true, not_true_eq_false, not_false_eq_true, Iff, congr, iff_self, Eq.mpr and 7 more

    22 instances, coercions and auxiliary constants left out.

    Tactic trace: 19 steps

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

    theorem erdos_346.variants.f_add_two (m : ℕ) (hm : 1 ≤ m) :
        f (m + 2) + (if Even m then 1 else 0) = f (m + 1) + f m + (if Even m then 0 else 1) := by
    …

    Mentions: Erdos346.f

  6. theorem Erdos346.erdos_346.variants.sum_range_f f 0 + ⋯ + f (m - 1) = f (m + 1) - [m even] for m ≥ 1; this is [Gr64d, Eq. (1)] line 110 source

    Source documentation

    f 0 + ⋯ + f (m - 1) = f (m + 1) - [m even] for m ≥ 1; this is [Gr64d, Eq. (1)].

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

    Statement uses: Nat, LE.le, OfNat.ofNat, Eq, HAdd.hAdd, Finset.sum, Finset.range, Erdos346.f, ite, Even

    Proof uses: Nat.recAux, Decidable.byContradiction, Not, GT.gt, Or, Nat.eq_zero_or_pos, of_decide_eq_true, id, Bool, Decidable.decide, Bool.true, Eq.refl, Eq.symm, Erdos346.erdos_346.variants.f_add_two, dite, of_eq_true, Eq.trans, True, congrFun', congrArg and 15 more

    24 instances, coercions and auxiliary constants left out.

    Tactic trace: 16 steps

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

    theorem erdos_346.variants.sum_range_f (m : ℕ) (hm : 1 ≤ m) :
        ∑ i ∈ Finset.range m, f i + (if Even m then 1 else 0) = f (m + 1) := by
    …

    Mentions: Erdos346.f

  7. theorem Erdos346.erdos_346.variants.f_strictMono f is strictly increasing from index 4 on line 129 source

    Source documentation

    f is strictly increasing from index 4 on.

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

    Statement uses: StrictMono, Nat, Erdos346.f, HAdd.hAdd, OfNat.ofNat

    Proof uses: strictMono_nat_of_lt_succ, id, LT.lt, Eq, ite, Even, Erdos346.erdos_346.variants.f_add_two, Decidable.byContradiction, LE.le, Not, Nat.fib, le_trans, of_decide_eq_true, Bool, Decidable.decide, Bool.true, Eq.refl, Nat.fib_mono, dite, Iff.mp and 10 more

    29 instances, coercions and auxiliary constants left out.

    Tactic trace: 25 steps

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

    theorem erdos_346.variants.f_strictMono : StrictMono fun k => f (4 + k) := by
    …

    Mentions: Erdos346.f

  8. theorem Erdos346.erdos_346.variants.f_not_isAddComplete The sequence f is not complete whenever infinitely many terms are removed from it, and this is proved in [Gr64d] line 151 source

    Source documentation

    The sequence f is not complete whenever infinitely many terms are removed from it, and this is proved in [Gr64d].

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

    Statement uses: Set, Nat, LE.le, Set.range, Erdos346.f, Set.Infinite, Not, IsAddComplete, SDiff.sdiff

    Proof uses: not_isAddComplete_range_diff_of_sum_range_le, OfNat.ofNat, Erdos346.erdos_346.variants.f_strictMono, Eq, HAdd.hAdd, Finset.sum, Finset.range, ite, Even, Erdos346.erdos_346.variants.sum_range_f, Decidable.byContradiction

    14 instances, coercions and auxiliary constants left out.

    Tactic trace: 3 steps

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

    theorem erdos_346.variants.f_not_isAddComplete {B : Set ℕ} (h : B ⊆ range f) (hB : B.Infinite) :
        ¬ IsAddComplete (range f \ B) :=
    …

    Mentions: Erdos346.f, IsAddComplete

  9. theorem Erdos346.erdos_346.variants.gt_goldenRatio_not_IsAddComplete Erdős and Graham [ErGr80] remark that it is easy to see that if A (n + 1) / A n > (1 + √5) / 2 then the second property is automatically satisfied line 159 source

    Source documentation

    Erdős and Graham [ErGr80] remark that it is easy to see that if A (n + 1) / A n > (1 + √5) / 2 then the second property is automatically satisfied.

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

    Statement uses: Nat, LT.lt, Real, HMul.hMul, HDiv.hDiv, HAdd.hAdd, OfNat.ofNat, Real.sqrt, Set, LE.le, Set.range, Set.Infinite, Not, IsAddComplete, SDiff.sdiff

    Proof uses: Eq, Eq.mpr, HPow.hPow, id, congrArg, Mathlib.Meta.NormNum.isNat_eq_true, Mathlib.Meta.NormNum.isNat_ofNat, Eq.refl, Mathlib.Meta.NormNum.instAtLeastTwo, Mathlib.Meta.NormNum.isNat_pow, Mathlib.Meta.NormNum.IsNatPowT.run, Mathlib.Meta.NormNum.IsNatPowT.bit0, Real.sqrt_sq, Mathlib.Meta.NormNum.isNat_le_true, Nat.cast_zero, Bool, Bool.true, lt_of_not_ge, Mathlib.Tactic.Linarith.lt_irrefl, Eq.mp and 103 more

    154 instances, coercions and auxiliary constants left out.

    Tactic trace: 35 steps

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

    theorem erdos_346.variants.gt_goldenRatio_not_IsAddComplete {A : ℕ → ℕ}
        (hA : ∀ n, (1 + √5) / 2 * A n < A (n + 1)) {B : Set ℕ} (h : B ⊆ range A) (hB : B.Infinite) :
        ¬ IsAddComplete (range A \ B) := by
    …

    Mentions: IsAddComplete

  10. theorem Erdos346.erdos_346.variants.example Documented declaration: example sorry line 194 source

    Source documentation

    Erdős and Graham [ErGr80] also say that it is not hard to construct very irregular sequences satisfying the aforementioned properties: there is a strictly increasing sequence A that is strongly complete and not complete whenever infinitely many terms are removed from it, but with $\liminf_n A(n+1)/A(n) = 1$ and $\limsup_n A(n+1)/A(n) = \infty$.

    depends on sorry what this means

    Statement uses: Exists, Nat, And, StrictMono, IsAddStronglyCompleteNatSeq, Set, LE.le, Set.range, Set.Infinite, Not, IsAddComplete, SDiff.sdiff, Eq, Real, Filter.liminf, HDiv.hDiv, HAdd.hAdd, OfNat.ofNat, Filter.atTop, ENNReal and 2 more

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

    48 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

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

    theorem erdos_346.variants.example : ∃ A : ℕ → ℕ, StrictMono A ∧ IsAddStronglyCompleteNatSeq A ∧
        (∀ B : Set ℕ, B ⊆ range A → B.Infinite → ¬ IsAddComplete (range A \ B)) ∧
        liminf (fun n => A (n + 1) / (A n : ℝ)) atTop = 1 ∧
        limsup (fun n => A (n + 1) / (A n : ENNReal)) atTop = ⊤ := by
    …

    Mentions: IsAddStronglyCompleteNatSeq, IsAddComplete