FormalConjectures/Wikipedia/RudinsConjecture.lean
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:
- Wikipedia
- [Ru60] Rudin, W., Trigonometric series with gaps, J. Math. Mech. 9 (1960), 203–227.
- González-Jiménez, E. and Xarles, X., On a conjecture of Rudin on squares in arithmetic progressions, LMS J. Comput. Math. 17 (2014), 58–76.
Imports (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 sourceSource 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:
NatProof uses:
Set.ncard,Set.ofPred,And,LT.lt,IsSquare,HAdd.hAdd,HMul.hMul5 instances, coercions and auxiliary constants left out.
noncomputable abbrev Q (N q a : ℕ) : ℕ := {n : ℕ | n < N ∧ IsSquare (q * n + a)}.ncard - def
RudinsConjecture.IsNontrivialA 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 sourceSource 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:
NatProof uses:
And,LE.le,OfNat.ofNat,Nat.Coprime,Ne,Prod,Prod.mk2 instances, coercions and auxiliary constants left out.
def IsNontrivial (q a : ℕ) : Prop := …
- 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 sourceSource 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:
NatProof uses:
SupSet.sSup,Set.ofPred,Exists,And, RudinsConjecture.IsNontrivial,Eq, RudinsConjecture.Q1 instances, coercions and auxiliary constants left out.
noncomputable def Qmax (N : ℕ) : ℕ := …
- theorem
RudinsConjecture.isNontrivial_24_1Sanity check: the progression $24 n + 1$ is non-trivial line 54 sourceSource 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,NatProof 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.decide14 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
- theorem
RudinsConjecture.Q_zeroSanity check: there are no squares among the first0terms of any progression line 59 sourceSource documentation
Sanity check: there are no squares among the first
0terms of any progression.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Eq, RudinsConjecture.Q,OfNat.ofNatProof 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_self14 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
- theorem
RudinsConjecture.Q_six_twentyfour_oneDocumented declaration: Q_six_twentyfour_one line 67 sourceSource documentation
Sanity check pinning
Qto a concrete value: among the first6terms of24 n + 1, namely1, 25, 49, 73, 97, 121, exactly four are perfect squares (1, 25, 49, 121), soQ 6 24 1 = 4. This validates the definition ofQand matches the claim that24 n + 1is the extremal progression.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Eq,Nat, RudinsConjecture.Q,OfNat.ofNatProof 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.leand 97 more142 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
- theorem
RudinsConjecture.rudins_conjectureRudin's conjecture sorry line 101 sourceSource 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.sqrtProof uses:
sorryAx,Lean.Name,Bool.false,Lean.Name.num,Lean.Name.str,Lean.Name.anonymous,OfNat.ofNat9 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
- theorem
RudinsConjecture.rudins_conjecture_strongA 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 sourceSource 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.QmaxProof uses:
sorryAx,Lean.Name,Bool.false,Lean.Name.num,Lean.Name.str,Lean.Name.anonymous4 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
- theorem
RudinsConjecture.rudins_conjecture_uniqueThe 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 sourceSource 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.QmaxProof uses:
sorryAx,Lean.Name,Bool.false,Lean.Name.num,Lean.Name.str,Lean.Name.anonymous4 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