/-
Copyright 2025 The Formal Conjectures Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-/
import FormalConjecturesUtilErdős Problem 1097
References:
[Bo99] Bourgain, J., On the dimension of {K}akeya sets and related maximal inequalities. Geom. Funct. Anal. (1999), 256--282
[KaTa99] Katz, Nets Hawk and Tao, Terence, Bounds on arithmetic projections, and applications to the {K}akeya conjecture. Math. Res. Lett. (1999), 625--630.
[Le15] Lemm, Marius, New counterexamples for sums-differences. Proc. Amer. Math. Soc. (2015), 3863--3868.
[GGTW25] B. Georgiev, J. Gómez-Serrano, T. Tao, and A. Wagner, Mathematical exploration and discovery at scale. arXiv:2511.02864 (2025).
namespace Erdos1097
Given a finite set of integers A (modelled as a Finset ℤ), the set
CommonDifferencesThreeTermAP A consists of all integers d such that there
is a non-trivial three-term arithmetic progression a, b, c ∈ A with
b - a = d and c - b = d.
def CommonDifferencesThreeTermAP (A : Finset ℤ) : Set ℤ :=
{d : ℤ | d ≠ 0 ∧ ∃ a ∈ A, ∃ b ∈ A, ∃ c ∈ A, b - a = d ∧ c - b = d}The main conjecture: for any finite set of integers $A$ with $|A| = n$, the number of distinct common differences in three-term arithmetic progressions is $O(n^{3/2})$.
This conjecture was resolved negatively by showing that the problem is exactly equivalent to Bourgain's sums-differences question [Bo99], which was introduced as an arithmetic path towards the Kakeya conjecture. Under this equivalence:
The greatest achievable exponent for this problem is equal to the smallest constant $c$ achievable for Bourgain's sums-differences question: $$|A -_G B| \ll \max(|A|, |B|, |A +_G B|)^c$$
The $O(n^{3/2})$ prediction is disproved because the lower bound has been shown to satisfy $c \ge 1.77898$ (due to Zheng and AlphaEvolve [GGTW25], improving on Lemm [Le15]), which is strictly greater than $3/2 = 1.5$.
The best known upper bound is $c \le 11/6 \approx 1.833$ (due to Katz and Tao [KaTa99]).
While the specific $O(n^{3/2})$ prediction is resolved negatively, the general question of determining the exact optimal exponent $c$ remains open.
@[category research solved, AMS 11, formal_proof using formal_conjectures at
"https://github.com/mo271/formal-conjectures/blob/f13dd54b520cdf2136fdd3a04f0f9fa50e311358/FormalConjectures/ErdosProblems/1097.lean#L306"]
theorem erdos_1097 : answer(False) ↔ ∃ C > (0 : ℝ), ∀ (A : Finset ℤ),
(CommonDifferencesThreeTermAP A).ncard ≤ C * (A.card : ℝ) ^ (3 / 2 : ℝ) := ⊢ False ↔ ∃ C > 0, ∀ (A : Finset ℤ), ↑(CommonDifferencesThreeTermAP A).ncard ≤ C * ↑A.card ^ (3 / 2)
All goals completed! 🐙A weaker bound has been proven: there are always at most $n^2$ such values of $d$.
A:Finset ℤD:Finset ℤ := Finset.image (fun p ↦ p.2 - p.1) (A ×ˢ A)h_sub:CommonDifferencesThreeTermAP A ⊆ ↑D⊢ (CommonDifferencesThreeTermAP A).ncard ≤ A.card ^ 2
calc (CommonDifferencesThreeTermAP A).ncard
≤ (D : Set ℤ).ncard := Set.ncard_le_ncard h_sub D.finite_toSet
_ = D.card := Set.ncard_coe_finset _
_ ≤ (A ×ˢ A).card := Finset.card_image_le
_ = A.card * A.card := Finset.card_product _ _
_ = A.card ^ 2 := (sq _).symm
A trivial lower bound: for sufficiently large n there exist sets $A$ with $|A| = n$ that contain at least $\Omega(n)$
distinct common differences of three-term arithmetic progressions.
@[category textbook, AMS 11]
theorem erdos_1097.variants.lower_bound : ∃ c > (0 : ℝ), ∀ᶠ n in Filter.atTop, ∃ (A : Finset ℤ),
A.card = n ∧ c * (n : ℝ) ≤ (CommonDifferencesThreeTermAP A).ncard := by ⊢ ∃ c > 0, ∀ᶠ (n : ℕ) in Filter.atTop, ∃ A, A.card = n ∧ c * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard
refine ⟨1/4, by ⊢ 1 / 4 > 0 norm_num All goals completed! 🐙, ?_⟩
rw [Filter.eventually_atTop ⊢ ∃ a, ∀ (b : ℕ), a ≤ b → ∃ A, A.card = b ∧ 1 / 4 * ↑b ≤ ↑(CommonDifferencesThreeTermAP A).ncard ⊢ ∃ a, ∀ (b : ℕ), a ≤ b → ∃ A, A.card = b ∧ 1 / 4 * ↑b ≤ ↑(CommonDifferencesThreeTermAP A).ncard] ⊢ ∃ a, ∀ (b : ℕ), a ≤ b → ∃ A, A.card = b ∧ 1 / 4 * ↑b ≤ ↑(CommonDifferencesThreeTermAP A).ncard
refine ⟨4, fun n hn => ?_⟩ n:ℕhn:4 ≤ n⊢ ∃ A, A.card = n ∧ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard
refine ⟨(Finset.range n).image (fun k : ℕ => (k : ℤ)), ?_, ?_⟩ refine_1 n:ℕhn:4 ≤ n⊢ (Finset.image (fun k ↦ ↑k) (Finset.range n)).card = nrefine_2 n:ℕhn:4 ≤ n⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP (Finset.image (fun k ↦ ↑k) (Finset.range n))).ncard
· refine_1 n:ℕhn:4 ≤ n⊢ (Finset.image (fun k ↦ ↑k) (Finset.range n)).card = n rw [Finset.card_image_of_injective _ Nat.cast_injective, refine_1 n:ℕhn:4 ≤ n⊢ (Finset.range n).card = n All goals completed! 🐙 Finset.card_range refine_1 n:ℕhn:4 ≤ n⊢ n = n All goals completed! 🐙] All goals completed! 🐙
set A := (Finset.range n).image (fun k : ℕ => (k : ℤ)) refine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard
set k : ℕ := (n - 1) / 2 with hk_def refine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard
set D : Finset ℤ := (Finset.range k).image (fun i : ℕ => ((i + 1 : ℕ) : ℤ)) refine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard
have hk_ge_nat : 4 * k ≥ n := by ⊢ ∃ c > 0, ∀ᶠ (n : ℕ) in Filter.atTop, ∃ A, A.card = n ∧ c * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard refine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ n⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard simp [hk_def] n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)⊢ n ≤ 4 * ((n - 1) / 2)refine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ n⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard; omegarefine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ n⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncardrefine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ n⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard
have hD_card : D.card = k := by ⊢ ∃ c > 0, ∀ᶠ (n : ℕ) in Filter.atTop, ∃ A, A.card = n ∧ c * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard refine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = k⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard
rw [Finset.card_image_of_injective _, n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ n⊢ (Finset.range k).card = kn:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ n⊢ Function.Injective fun i ↦ ↑(i + 1) n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ n⊢ Function.Injective fun i ↦ ↑(i + 1)refine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = k⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard Finset.card_range n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ n⊢ k = kn:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ n⊢ Function.Injective fun i ↦ ↑(i + 1) n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ n⊢ Function.Injective fun i ↦ ↑(i + 1)refine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = k⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard] n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ n⊢ Function.Injective fun i ↦ ↑(i + 1)refine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = k⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard
intro a b h n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ na:ℕb:ℕh:(fun i ↦ ↑(i + 1)) a = (fun i ↦ ↑(i + 1)) b⊢ a = brefine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = k⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard
simp only at h n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ na:ℕb:ℕh:↑(a + 1) = ↑(b + 1)⊢ a = brefine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = k⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard
have : (a + 1 : ℤ) = (b + 1 : ℤ) := by ⊢ ∃ c > 0, ∀ᶠ (n : ℕ) in Filter.atTop, ∃ A, A.card = n ∧ c * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ na:ℕb:ℕh:↑(a + 1) = ↑(b + 1)this:↑a + 1 = ↑b + 1⊢ a = brefine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = k⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard exact_mod_cast h n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ na:ℕb:ℕh:↑(a + 1) = ↑(b + 1)this:↑a + 1 = ↑b + 1⊢ a = brefine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = k⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ na:ℕb:ℕh:↑(a + 1) = ↑(b + 1)this:↑a + 1 = ↑b + 1⊢ a = brefine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = k⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard
omegarefine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = k⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncardrefine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = k⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard
have h_finite : (CommonDifferencesThreeTermAP A).Finite := by ⊢ ∃ c > 0, ∀ᶠ (n : ℕ) in Filter.atTop, ∃ A, A.card = n ∧ c * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard refine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).Finite⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard
apply Set.Finite.subset
(Finset.image (fun p : ℤ × ℤ => p.2 - p.1) (A ×ˢ A)).finite_toSet n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = k⊢ CommonDifferencesThreeTermAP A ⊆ ↑(Finset.image (fun p ↦ p.2 - p.1) (A ×ˢ A))refine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).Finite⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard
rintro d ⟨-, a, ha, b, hb, -, -, hab, -⟩ n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kd:ℤa:ℤha:a ∈ Ab:ℤhb:b ∈ Ahab:b - a = d⊢ d ∈ ↑(Finset.image (fun p ↦ p.2 - p.1) (A ×ˢ A))refine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).Finite⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard
exact Finset.mem_coe.mpr (Finset.mem_image.mpr
⟨(a, b), Finset.mem_product.mpr ⟨ha, hb⟩, hab⟩)refine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).Finite⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncardrefine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).Finite⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard
have hD_sub : (D : Set ℤ) ⊆ CommonDifferencesThreeTermAP A := by ⊢ ∃ c > 0, ∀ᶠ (n : ℕ) in Filter.atTop, ∃ A, A.card = n ∧ c * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard refine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard
intro d hd n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).Finited:ℤhd:d ∈ ↑D⊢ d ∈ CommonDifferencesThreeTermAP Arefine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard
rw [Finset.mem_coe, n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).Finited:ℤhd:d ∈ D⊢ d ∈ CommonDifferencesThreeTermAP A n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).Finited:ℤhd:∃ a ∈ Finset.range k, ↑(a + 1) = d⊢ d ∈ CommonDifferencesThreeTermAP Arefine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard Finset.mem_image n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).Finited:ℤhd:∃ a ∈ Finset.range k, ↑(a + 1) = d⊢ d ∈ CommonDifferencesThreeTermAP A n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).Finited:ℤhd:∃ a ∈ Finset.range k, ↑(a + 1) = d⊢ d ∈ CommonDifferencesThreeTermAP Arefine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard] at hd n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).Finited:ℤhd:∃ a ∈ Finset.range k, ↑(a + 1) = d⊢ d ∈ CommonDifferencesThreeTermAP Arefine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard
obtain ⟨i, hi, rfl⟩ := hd n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).Finitei:ℕhi:i ∈ Finset.range k⊢ ↑(i + 1) ∈ CommonDifferencesThreeTermAP Arefine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard
rw [Finset.mem_range n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).Finitei:ℕhi:i < k⊢ ↑(i + 1) ∈ CommonDifferencesThreeTermAP A n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).Finitei:ℕhi:i < k⊢ ↑(i + 1) ∈ CommonDifferencesThreeTermAP Arefine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard] at hi n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).Finitei:ℕhi:i < k⊢ ↑(i + 1) ∈ CommonDifferencesThreeTermAP Arefine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard
have h2d_lt : 2 * (i + 1) < n := by ⊢ ∃ c > 0, ∀ᶠ (n : ℕ) in Filter.atTop, ∃ A, A.card = n ∧ c * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).Finitei:ℕhi:i < kh2d_lt:2 * (i + 1) < n⊢ ↑(i + 1) ∈ CommonDifferencesThreeTermAP Arefine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard simp [hk_def] at hi n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).Finitei:ℕhi:i < (n - 1) / 2⊢ 2 * (i + 1) < n n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).Finitei:ℕhi:i < kh2d_lt:2 * (i + 1) < n⊢ ↑(i + 1) ∈ CommonDifferencesThreeTermAP Arefine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard; omega n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).Finitei:ℕhi:i < kh2d_lt:2 * (i + 1) < n⊢ ↑(i + 1) ∈ CommonDifferencesThreeTermAP Arefine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).Finitei:ℕhi:i < kh2d_lt:2 * (i + 1) < n⊢ ↑(i + 1) ∈ CommonDifferencesThreeTermAP Arefine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard
refine ⟨by n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).Finitei:ℕhi:i < kh2d_lt:2 * (i + 1) < n⊢ ↑(i + 1) ≠ 0refine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard push_cast n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).Finitei:ℕhi:i < kh2d_lt:2 * (i + 1) < n⊢ ↑i + 1 ≠ 0refine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard; positivity All goals completed! 🐙refine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard, 0, ?_, ((i + 1 : ℕ) : ℤ), ?_,
((2 * (i + 1) : ℕ) : ℤ), ?_, by n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).Finitei:ℕhi:i < kh2d_lt:2 * (i + 1) < n⊢ ↑(i + 1) - 0 = ↑(i + 1)refine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard push_cast n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).Finitei:ℕhi:i < kh2d_lt:2 * (i + 1) < n⊢ ↑i + 1 - 0 = ↑i + 1refine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard; ring All goals completed! 🐙refine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard, by n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).Finitei:ℕhi:i < kh2d_lt:2 * (i + 1) < n⊢ ↑(2 * (i + 1)) - ↑(i + 1) = ↑(i + 1)refine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard push_cast n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).Finitei:ℕhi:i < kh2d_lt:2 * (i + 1) < n⊢ 2 * (↑i + 1) - (↑i + 1) = ↑i + 1refine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard; ring All goals completed! 🐙refine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard⟩
· refine_1 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).Finitei:ℕhi:i < kh2d_lt:2 * (i + 1) < n⊢ 0 ∈ Arefine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard exact Finset.mem_image.mpr ⟨0, Finset.mem_range.mpr (by n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).Finitei:ℕhi:i < kh2d_lt:2 * (i + 1) < n⊢ 0 < nrefine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard omega All goals completed! 🐙refine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard), by n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).Finitei:ℕhi:i < kh2d_lt:2 * (i + 1) < n⊢ ↑0 = 0refine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard push_cast All goals completed! 🐙refine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard⟩
· refine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).Finitei:ℕhi:i < kh2d_lt:2 * (i + 1) < n⊢ ↑(i + 1) ∈ Arefine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard exact Finset.mem_image.mpr ⟨i + 1, Finset.mem_range.mpr (by n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).Finitei:ℕhi:i < kh2d_lt:2 * (i + 1) < n⊢ i + 1 < nrefine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard omega All goals completed! 🐙refine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard), rfl⟩
· refine_3 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).Finitei:ℕhi:i < kh2d_lt:2 * (i + 1) < n⊢ ↑(2 * (i + 1)) ∈ Arefine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard exact Finset.mem_image.mpr ⟨2 * (i + 1), Finset.mem_range.mpr h2d_lt, rfl⟩refine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncardrefine_2 n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ 1 / 4 * ↑n ≤ ↑(CommonDifferencesThreeTermAP A).ncard
calc (1 / 4 : ℝ) * n
= (n : ℝ) / 4 := by n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ 1 / 4 * ↑n = ↑n / 4 ring All goals completed! 🐙
_ ≤ (k : ℝ) := by n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ ↑n / 4 ≤ ↑k
have : (4 : ℝ) * k ≥ n := by exact_mod_cast hk_ge_nat n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP Athis:4 * ↑k ≥ ↑n⊢ ↑n / 4 ≤ ↑k n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP Athis:4 * ↑k ≥ ↑n⊢ ↑n / 4 ≤ ↑k
linarith All goals completed! 🐙
_ = (D.card : ℝ) := by n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ ↑k = ↑D.card rw [hD_card n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ ↑k = ↑k All goals completed! 🐙] All goals completed! 🐙
_ = ((D : Set ℤ).ncard : ℝ) := by n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ ↑D.card = ↑(↑D).ncard rw [Set.ncard_coe_finset n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ ↑D.card = ↑D.card All goals completed! 🐙] All goals completed! 🐙
_ ≤ ((CommonDifferencesThreeTermAP A).ncard : ℝ) := by n:ℕhn:4 ≤ nA:Finset ℤ := Finset.image (fun k ↦ ↑k) (Finset.range n)k:ℕ := (n - 1) / 2hk_def:k = (n - 1) / 2D:Finset ℤ := Finset.image (fun i ↦ ↑(i + 1)) (Finset.range k)hk_ge_nat:4 * k ≥ nhD_card:D.card = kh_finite:(CommonDifferencesThreeTermAP A).FinitehD_sub:↑D ⊆ CommonDifferencesThreeTermAP A⊢ ↑(↑D).ncard ≤ ↑(CommonDifferencesThreeTermAP A).ncard
exact_mod_cast Set.ncard_le_ncard hD_sub h_finite All goals completed! 🐙end Erdos1097