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

Rudin's conjecture on squares in arithmetic progressions

References:

Imports (1)
  1. abbrev RudinsConjecture.Q $Q(N; q, a)$ is the number of perfect squares among the first $N$ terms of the arithmetic progression $\{q n + a : 0 \le n < N\}$ line 39 source

    Source documentation

    $Q(N; q, a)$ is the number of perfect squares among the first $N$ terms of the arithmetic progression $\{q n + a : 0 \le n < N\}$.

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

    Statement uses: Nat

    Proof uses: Set.ncard, Set.ofPred, And, LT.lt, IsSquare, HAdd.hAdd, HMul.hMul

    5 instances, coercions and auxiliary constants left out.

    noncomputable abbrev Q (N q a : ℕ) : ℕ := {n : ℕ | n < N ∧ IsSquare (q * n + a)}.ncard
  2. def RudinsConjecture.IsNontrivial A pair $(q, a)$ describes a non-trivial arithmetic progression if $q, a \ge 1$, $\gcd(q, a) = 1$, and $(q, a) \neq (1, 1)$ line 43 source

    Source documentation

    A pair $(q, a)$ describes a non-trivial arithmetic progression if $q, a \ge 1$, $\gcd(q, a) = 1$, and $(q, a) \neq (1, 1)$.

    no axioms what this means

    Statement uses: Nat

    Proof uses: And, LE.le, OfNat.ofNat, Nat.Coprime, Ne, Prod, Prod.mk

    2 instances, coercions and auxiliary constants left out.

    def IsNontrivial (q a : ℕ) : Prop :=
    …
  3. def RudinsConjecture.Qmax $Q(N) = \max Q(N; q, a)$, the largest number of perfect squares occurring among the first $N$ terms of any non-trivial arithmetic progression line 49 source

    Source documentation

    $Q(N) = \max Q(N; q, a)$, the largest number of perfect squares occurring among the first $N$ terms of any non-trivial arithmetic progression. The supremum is over a set of naturals that is bounded above by $N$ (each progression has only $N$ terms), so it is attained.

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

    Statement uses: Nat

    Proof uses: SupSet.sSup, Set.ofPred, Exists, And, RudinsConjecture.IsNontrivial, Eq, RudinsConjecture.Q

    1 instances, coercions and auxiliary constants left out.

    noncomputable def Qmax (N : ℕ) : ℕ :=
    …
  4. theorem RudinsConjecture.isNontrivial_24_1 Sanity check: the progression $24 n + 1$ is non-trivial line 54 source

    Source documentation

    Sanity check: the progression $24 n + 1$ is non-trivial.

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

    Statement uses: RudinsConjecture.IsNontrivial, OfNat.ofNat, Nat

    Proof uses: And.intro, LE.le, And, Nat.Coprime, Ne, Prod, Prod.mk, Mathlib.Meta.NormNum.isNat_le_true, Mathlib.Meta.NormNum.isNat_ofNat, Eq.refl, Bool, Bool.true, of_decide_eq_true, id, Eq, Decidable.decide

    14 instances, coercions and auxiliary constants left out.

    Tactic trace: 5 steps

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

    theorem isNontrivial_24_1 : IsNontrivial 24 1 := by
    …

    Mentions: RudinsConjecture.IsNontrivial

  5. theorem RudinsConjecture.Q_zero Sanity check: there are no squares among the first 0 terms of any progression line 59 source

    Source documentation

    Sanity check: there are no squares among the first 0 terms of any progression.

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

    Statement uses: Nat, Eq, RudinsConjecture.Q, OfNat.ofNat

    Proof uses: of_eq_true, Eq.trans, True, congrFun', congrArg, Set.ncard, Set.ofPred, And, LT.lt, IsSquare, HAdd.hAdd, HMul.hMul, EmptyCollection.emptyCollection, Set, False, funext, false_and, Set.ncard_empty, eq_self

    14 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

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

    theorem Q_zero (q a : ℕ) : Q 0 q a = 0 := by
    …

    Mentions: RudinsConjecture.Q

  6. theorem RudinsConjecture.Q_six_twentyfour_one Documented declaration: Q_six_twentyfour_one line 67 source

    Source documentation

    Sanity check pinning Q to a concrete value: among the first 6 terms of 24 n + 1, namely 1, 25, 49, 73, 97, 121, exactly four are perfect squares (1, 25, 49, 121), so Q 6 24 1 = 4. This validates the definition of Q and matches the claim that 24 n + 1 is the extremal progression.

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

    Statement uses: Eq, Nat, RudinsConjecture.Q, OfNat.ofNat

    Proof uses: id, Set, Set.ofPred, And, LT.lt, IsSquare, HAdd.hAdd, HMul.hMul, Insert.insert, Singleton.singleton, Set.ext, Eq.mpr, Iff, Membership.mem, Or, congrArg, Eq.trans, Iff.intro, dite, LE.le and 97 more

    142 instances, coercions and auxiliary constants left out.

    Tactic trace: 53 steps

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

    theorem Q_six_twentyfour_one : Q 6 24 1 = 4 := by
    …

    Mentions: RudinsConjecture.Q

  7. theorem RudinsConjecture.rudins_conjecture Rudin's conjecture sorry line 101 source

    Source documentation

    Rudin's conjecture. The maximal number of squares among the first $N$ terms of a non-trivial arithmetic progression grows at most like $\sqrt{N}$: $$Q(N) = O(\sqrt{N}).$$

    depends on sorry what this means

    Statement uses: Asymptotics.IsBigO, Nat, Real, Filter.atTop, RudinsConjecture.Qmax, 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 rudins_conjecture :
        (fun N : ℕ => (Qmax N : ℝ)) =O[atTop] fun N : ℕ => Real.sqrt N := by
    …

    Mentions: RudinsConjecture.Qmax

  8. theorem RudinsConjecture.rudins_conjecture_strong A stronger form of Rudin's conjecture: for every $N \ge 6$, the arithmetic progression $24 n + 1$ attains the maximum $Q(N)$ sorry line 110 source

    Source documentation

    A stronger form of Rudin's conjecture: for every $N \ge 6$, the arithmetic progression $24 n + 1$ attains the maximum $Q(N)$.

    depends on sorry what this means

    Statement uses: Nat, LE.le, OfNat.ofNat, Eq, RudinsConjecture.Q, RudinsConjecture.Qmax

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

    4 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

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

    theorem rudins_conjecture_strong (N : ℕ) (hN : 6 ≤ N) : Q N 24 1 = Qmax N := by
    …

    Mentions: RudinsConjecture.Q, RudinsConjecture.Qmax

  9. theorem RudinsConjecture.rudins_conjecture_unique The strongest form of Rudin's conjecture also asserts uniqueness: for $N \ge 6$, any non-trivial arithmetic progression attaining the maximum $Q(N)$ has common difference $24$ sorry line 119 source

    Source documentation

    The strongest form of Rudin's conjecture also asserts uniqueness: for $N \ge 6$, any non-trivial arithmetic progression attaining the maximum $Q(N)$ has common difference $24$. (Its initial term is then forced by $\gcd(24, a) = 1$; the progression $24n + 1$ is the canonical representative.)

    depends on sorry what this means

    Statement uses: Nat, LE.le, OfNat.ofNat, RudinsConjecture.IsNontrivial, Eq, RudinsConjecture.Q, RudinsConjecture.Qmax

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

    4 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

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

    theorem rudins_conjecture_unique (N : ℕ) (hN : 6 ≤ N) (q a : ℕ)
        (hqa : IsNontrivial q a) (hmax : Q N q a = Qmax N) : q = 24 := by
    …

    Mentions: RudinsConjecture.IsNontrivial, RudinsConjecture.Q, RudinsConjecture.Qmax