@@ -86,22 +86,139 @@ lemma pairwiseDisjoint_𝓙₆ :
8686 have ss : (𝓙 (t u₁) ∩ Iic (𝓘 u₁)) ⊆ 𝓙 (t u₁) := inter_subset_left
8787 exact PairwiseDisjoint.subset (pairwiseDisjoint_𝓙 (𝔖 := t u₁)) ss
8888
89-
9089/-- The constant used in `thin_scale_impact`. This is denoted `s₁` in the proof of Lemma 7.6.3.
9190Has value `Z * n / (202 * a ^ 3) - 2` in the blueprint. -/
9291-- Todo: define this recursively in terms of previous constants
9392irreducible_def C7_6_3 (a n : ℕ) : ℝ := Z * n / (202 * a ^ 3 ) - 2
9493
95- -- if needed
96- lemma C7_6_3_pos [ProofData a q K σ₁ σ₂ F G] (h : 1 ≤ n) : 0 < C7_6_3 a n := by
97- sorry
94+ lemma nonneg_C7_6_3_add_two : 0 ≤ C7_6_3 a n + 2 := by
95+ simp_rw [C7_6_3, sub_add_cancel]; positivity
96+
97+ /-- Some preliminary relations for Lemma 7.6.3. -/
98+ lemma thin_scale_impact_prelims (hu₁ : u₁ ∈ t) (hJ : J ∈ 𝓙₆ t u₁)
99+ (hd : ¬Disjoint (ball (𝔠 p) (8 * D ^ 𝔰 p)) (ball (c J) (8 * D ^ s J)))
100+ (h : s J - C7_6_3 a n < 𝔰 p) :
101+ dist (𝔠 p) (c J) < 16 * D ^ (𝔰 p + C7_6_3 a n + 2 ) ∧
102+ ∃ J', J < J' ∧ s J' = s J + 1 ∧
103+ ∃ p ∈ t u₁, ↑(𝓘 p) ⊆ ball (c J') (100 * D ^ (s J' + 1 )) := by
104+ have b1 : dist (𝔠 p) (c J) < 16 * D ^ (𝔰 p + C7_6_3 a n + 2 ) := by
105+ calc
106+ _ < 8 * (D : ℝ) ^ 𝔰 p + 8 * D ^ s J := dist_lt_of_not_disjoint_ball hd
107+ _ ≤ 8 * D ^ (𝔰 p + C7_6_3 a n + 2 ) + 8 * D ^ (𝔰 p + C7_6_3 a n + 2 ) := by
108+ simp_rw [← Real.rpow_intCast]; gcongr (8 : ℝ) * D ^ ?_ + 8 * D ^ ?_
109+ · exact one_le_D
110+ · rw [add_assoc, le_add_iff_nonneg_right]; exact nonneg_C7_6_3_add_two
111+ · exact one_le_D
112+ · linarith
113+ _ ≤ _ := by rw [← two_mul, ← mul_assoc]; norm_num
114+ obtain ⟨q, mq⟩ := t.nonempty hu₁
115+ have qlt : 𝓘 q < 𝓘 u₁ := lt_of_le_of_ne (t.smul_four_le hu₁ mq).1 (t.𝓘_ne_𝓘 hu₁ mq)
116+ have u₁nm : 𝓘 u₁ ∉ 𝓙₆ t u₁ := by
117+ simp_rw [𝓙₆, mem_inter_iff, mem_Iic, le_rfl, and_true, 𝓙, mem_setOf, Maximal, not_and_or]; left
118+ rw [𝓙₀, mem_setOf]; push_neg; rw [Grid.lt_def] at qlt
119+ refine ⟨(scale_mem_Icc.1 .trans_lt qlt.2 ).ne',
120+ ⟨q, mq, qlt.1 .trans <| Grid_subset_ball.trans <| ball_subset_ball ?_⟩⟩
121+ change 4 * (D : ℝ) ^ (𝔰 u₁) ≤ 100 * D ^ (𝔰 u₁ + 1 ); gcongr
122+ exacts [by norm_num, one_le_D, by omega]
123+ have Jlt : J < 𝓘 u₁ := by apply lt_of_le_of_ne hJ.2 ; by_contra hh; subst hh; exact u₁nm hJ
124+ rw [Grid.lt_def] at Jlt; obtain ⟨J', lJ', sJ'⟩ := Grid.exists_scale_succ Jlt.2
125+ replace lJ' : J < J' := Grid.lt_def.mpr ⟨lJ'.1 , by omega⟩
126+ have J'nm : J' ∉ 𝓙₀ (t u₁) := by
127+ by_contra hh; apply absurd hJ.1 .2 ; push_neg; use J', hh, lJ'.le, not_le_of_lt lJ'
128+ rw [𝓙₀, mem_setOf] at J'nm; push_neg at J'nm; obtain ⟨p', mp', sp'⟩ := J'nm.2
129+ exact ⟨b1, ⟨J', lJ', sJ', ⟨p', mp', sp'⟩⟩⟩
130+
131+ /-- The key relation of Lemma 7.6.3, which will eventually be shown to lead to a contradiction. -/
132+ lemma thin_scale_impact_key (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂)
133+ (h2u : 𝓘 u₁ ≤ 𝓘 u₂) (hp : p ∈ t u₂ \ 𝔖₀ t u₁ u₂) (hJ : J ∈ 𝓙₆ t u₁)
134+ (hd : ¬Disjoint (ball (𝔠 p) (8 * D ^ 𝔰 p)) (ball (c J) (8 * D ^ s J)))
135+ (h : s J - C7_6_3 a n < 𝔰 p) :
136+ (2 : ℝ) ^ (Z * (n + 1 ) - 1 ) <
137+ 2 ^ (a * (100 * a ^ 2 * (C7_6_3 a n + 2 + 1 ) + 9 )) * 2 ^ ((Z : ℝ) * n / 2 ) := by
138+ obtain ⟨b1, ⟨J', lJ', sJ', ⟨p', mp', sp'⟩⟩⟩ := thin_scale_impact_prelims hu₁ hJ hd h
139+ have bZn : 4 ≤ Z * (n + 1 ) := by
140+ rw [← mul_one 4 ]; gcongr
141+ · exact four_le_Z (X := X)
142+ · exact Nat.le_add_left ..
143+ calc
144+ _ ≤ (2 : ℝ) ^ (Z * (n + 1 )) - 4 := by
145+ nth_rw 2 [← Nat.sub_add_cancel (show 1 ≤ Z * (n + 1 ) by omega)]
146+ rw [pow_succ, mul_two, add_sub_assoc, ← neg_add_le_iff_le_add, neg_add_cancel, sub_nonneg,
147+ show (4 : ℝ) = 2 ^ 2 by norm_num]
148+ apply pow_le_pow_right₀ one_le_two; omega
149+ _ < dist_(p') (𝒬 u₁) (𝒬 u₂) := by
150+ refine (sub_lt_sub (t.lt_dist hu₂ hu₁ hu.symm mp' ((t.𝓘_le_𝓘 hu₁ mp').trans h2u))
151+ (t.dist_lt_four hu₁ mp')).trans_le ((le_abs_self _).trans ?_)
152+ simp_rw [dist_comm, abs_sub_comm]; exact abs_dist_sub_le ..
153+ _ ≤ dist_{𝔠 p, 128 * D ^ (𝔰 p + C7_6_3 a n + 2 )} (𝒬 u₁) (𝒬 u₂) := by
154+ refine cdist_mono (ball_subset_Grid.trans sp' |>.trans (ball_subset_ball' ?_))
155+ calc
156+ _ ≤ (100 : ℝ) * D ^ (s J' + 1 ) + dist (c J') (c J) + dist (𝔠 p) (c J) := by
157+ rw [add_assoc]; gcongr; exact dist_triangle_right ..
158+ _ ≤ (100 : ℝ) * D ^ (s J' + 1 ) + 4 * D ^ s J' + 16 * D ^ (𝔰 p + C7_6_3 a n + 2 ) := by
159+ gcongr; · exact (mem_ball'.mp (Grid_subset_ball (lJ'.1 .1 Grid.c_mem_Grid))).le
160+ _ ≤ (100 : ℝ) * D ^ (𝔰 p + C7_6_3 a n + 2 ) + 4 * D ^ (𝔰 p + C7_6_3 a n + 2 ) +
161+ 16 * D ^ (𝔰 p + C7_6_3 a n + 2 ) := by
162+ rw [← sub_eq_iff_eq_add] at sJ'
163+ rw [← sJ', Int.cast_sub, Int.cast_one, sub_lt_iff_lt_add, sub_lt_iff_lt_add] at h
164+ simp_rw [← Real.rpow_intCast, Int.cast_add, Int.cast_one]
165+ gcongr 100 * (D : ℝ) ^ ?_ + 4 * D ^ ?_ + _
166+ exacts [one_le_D, by linarith only [h], one_le_D, by linarith only [h]]
167+ _ ≤ _ := by rw [← add_mul, ← add_mul]; gcongr; norm_num
168+ _ ≤ dist_{𝔠 p, 2 ^ (100 * a ^ 2 * ⌈C7_6_3 a n + 2 ⌉₊ + 9 ) * (D ^ 𝔰 p / 4 )} (𝒬 u₁) (𝒬 u₂) := by
169+ refine cdist_mono (ball_subset_ball ?_)
170+ rw [add_assoc, Real.rpow_add (by simp), Real.rpow_intCast,
171+ show (128 : ℝ) * (D ^ 𝔰 p * D ^ (C7_6_3 a n + 2 )) =
172+ D ^ (C7_6_3 a n + 2 ) * 2 ^ 9 * (D ^ 𝔰 p / 4 ) by ring]
173+ refine mul_le_mul_of_nonneg_right ?_ (by positivity)
174+ rw [pow_add, pow_mul _ (100 * a ^ 2 ), defaultD, ← Real.rpow_natCast _ ⌈_⌉₊, Nat.cast_pow,
175+ Nat.cast_ofNat]; gcongr
176+ · exact_mod_cast Nat.one_le_two_pow
177+ · exact Nat.le_ceil _
178+ _ ≤ (defaultA a) ^ (100 * a ^ 2 * ⌈C7_6_3 a n + 2 ⌉₊ + 9 ) * dist_(p) (𝒬 u₁) (𝒬 u₂) :=
179+ cdist_le_iterate (by unfold defaultD; positivity) ..
180+ _ ≤ _ := by
181+ obtain ⟨hp₁, hp₂⟩ := hp
182+ simp_rw [𝔖₀, mem_setOf, not_and_or, mem_union, hp₁, or_true, not_true_eq_false,
183+ false_or, not_le] at hp₂
184+ simp_rw [defaultA, Nat.cast_pow, Nat.cast_ofNat, ← pow_mul, ← Real.rpow_natCast 2 ]
185+ push_cast; gcongr
186+ · exact one_le_two
187+ · exact (Nat.ceil_lt_add_one_of_nonneg nonneg_C7_6_3_add_two).le
98188
99189/-- Lemma 7.6.3. -/
100190lemma thin_scale_impact (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂)
101191 (h2u : 𝓘 u₁ ≤ 𝓘 u₂) (hp : p ∈ t u₂ \ 𝔖₀ t u₁ u₂) (hJ : J ∈ 𝓙₆ t u₁)
102- (h : ¬ Disjoint (ball (𝔠 p) (8 * D ^ 𝔰 p)) (ball (c J) (8 * D ^ s J))) :
192+ (hd : ¬Disjoint (ball (𝔠 p) (8 * D ^ 𝔰 p)) (ball (c J) (8 * D ^ s J))) :
103193 𝔰 p ≤ s J - C7_6_3 a n := by
104- sorry
194+ by_contra! h
195+ have bZn : 4 ≤ Z * (n + 1 ) := by
196+ rw [← mul_one 4 ]; gcongr
197+ · exact four_le_Z (X := X)
198+ · exact Nat.le_add_left ..
199+ have key := thin_scale_impact_key hu₁ hu₂ hu h2u hp hJ hd h
200+ rw [← Real.rpow_natCast, ← Real.rpow_add zero_lt_two,
201+ Real.rpow_lt_rpow_left_iff one_lt_two, Nat.cast_sub (by omega), Nat.cast_mul, Nat.cast_add,
202+ Nat.cast_one, mul_add_one] at key
203+ nth_rw 1 [← add_halves ((Z : ℝ) * n)] at key
204+ rw [add_rotate, ← sub_add_eq_add_sub, add_lt_add_iff_right, C7_6_3, sub_add_cancel] at key
205+ have rearr : (a : ℝ) * (100 * a ^ 2 * (Z * n / (202 * a ^ 3 ) + 1 ) + 9 ) =
206+ Z * n / 2 * (100 / 101 ) * a ^ 3 / a ^ 3 + 100 * a ^ 3 + 9 * a := by ring
207+ have fla := four_le_a X
208+ rw [rearr, mul_div_cancel_right₀ _ (by norm_cast; positivity), add_assoc,
209+ ← sub_lt_iff_lt_add', sub_right_comm, add_sub_right_comm, ← mul_one_sub, div_mul_comm,
210+ show (1 - 100 / 101 ) / (2 : ℝ) = 202 ⁻¹ by norm_num, sub_lt_iff_lt_add] at key
211+ apply absurd key; rw [not_lt]
212+ suffices 100 * a ^ 3 + 9 * a + 1 ≤ (Z : ℝ) by
213+ apply this.trans; nth_rw 1 [← zero_add (Z : ℝ)]; gcongr; positivity
214+ norm_cast; rw [defaultZ]
215+ calc
216+ _ = 100 * a ^ 3 + 9 * a * 1 * 1 + 1 * 1 * 1 * 1 := by norm_num
217+ _ ≤ 100 * a ^ 3 + 9 * a * a * a + 1 * a * a * a := by gcongr <;> omega
218+ _ = 110 * a ^ 3 := by ring
219+ _ ≤ 2 ^ (7 + 3 * a) := by
220+ rw [pow_add, pow_mul']; gcongr; exacts [by norm_num, Nat.lt_two_pow_self.le]
221+ _ ≤ _ := by gcongr <;> omega
105222
106223/-- The constant used in `square_function_count`. -/
107224irreducible_def C7_6_4 (a : ℕ) (s : ℤ) : ℝ≥0 := 2 ^ (14 * (a : ℝ) + 1 ) * (8 * D ^ (- s)) ^ κ
0 commit comments