fpvandoorn/carleson
Source indexedlemma Β· leanprover/lean4:v4.32.0
TileStructure.Forest.quarter_add_two_mul_D_mul_card_le
Carleson.ForestOperator.LargeSeparation Β· Carleson/ForestOperator/LargeSeparation.lean:289 to 381
Mathematical statement
Exact Lean statement
lemma quarter_add_two_mul_D_mul_card_le (hJ : J β πβ
t uβ uβ) :
1 / 4 + 2 * (D : β) * {J' β (πβ
t uβ uβ).toFinset |
Β¬Disjoint (ball (c J) (8 * D ^ s J)) (ball (c J') (8 * D ^ s J'))}.card β€ C7_5_2 aComplete declaration
Lean source
Full Lean sourceLean 4
lemma quarter_add_two_mul_D_mul_card_le (hJ : J β πβ
t uβ uβ) : 1 / 4 + 2 * (D : β) * {J' β (πβ
t uβ uβ).toFinset | Β¬Disjoint (ball (c J) (8 * D ^ s J)) (ball (c J') (8 * D ^ s J'))}.card β€ C7_5_2 a := by set V := {J' β (πβ
t uβ uβ).toFinset | Β¬Disjoint (ball (c J) (8 * D ^ s J)) (ball (c J') (8 * D ^ s J'))} suffices V.card β€ 2 ^ (2 * π * a ^ 3 + 7 * a) by calc _ β€ 1 / 4 + 2 * (D : β) * 2 ^ (2 * π * a ^ 3 + 7 * a) := by gcongr; norm_cast _ β€ 2 ^ (π * a ^ 2 + 1 + (2 * π * a ^ 3 + 7 * a)) + 2 ^ (π * a ^ 2 + 1 + (2 * π * a ^ 3 + 7 * a)) := by rw [defaultD, Nat.cast_pow, Nat.cast_ofNat, β pow_succ', β pow_add] gcongr; trans 1 Β· norm_num Β· norm_cast; exact Nat.one_le_two_pow _ β€ _ := by rw [C7_5_2] norm_cast apply add_le_pow_two le_rfl le_rfl ?_ have := four_le_a X ring_nf suffices π * a ^ 2 + 7 * a + 2 β€ a ^ 3 * 2 + a ^ 3 * (π / 4) by linarith calc _ β€ (4 * (π / 4) + 3) * a ^ 2 + 7 * a + a := by gcongr Β· lia Β· linarith _ = (π / 4) * 4 * a ^ 2 + 3 * a ^ 2 + 2 * 4 * a := by ring _ β€ (π / 4) * a * a ^ 2 + 3 * a ^ 2 + 2 * a * a := by gcongr _ = (π / 4) * a ^ 3 + 5 * a ^ 2 := by ring _ β€ (π / 4) * a ^ 3 + 2 * 4 * a ^ 2 := by gcongr; norm_num _ β€ (π / 4) * a ^ 3 + 2 * a * a ^ 2 := by gcongr _ = _ := by ring have dbl : β J' β V, volume (ball (c J) (9 * D ^ (s J + 1))) β€ 2 ^ (2 * π * a ^ 3 + 7 * a) * volume (ball (c J') (D ^ s J' / 4)) := fun J' mJ' β¦ by simp_rw [V, Finset.mem_filter, mem_toFinset] at mJ' have hs := moderate_scale_change hJ mJ'.1 mJ'.2 rw [disjoint_comm] at mJ' have hs' := moderate_scale_change mJ'.1 hJ mJ'.2 calc _ β€ 2 ^ (2 * π * a ^ 3) * volume (ball (c J') (18 * D ^ s J')) := by have db : dist (c J') (c J) + 9 * D ^ (s J + 1) β€ D ^ 2 * (18 * D ^ s J') := calc _ β€ 8 * (D : β) ^ s J' + 8 * D ^ s J + 9 * D ^ (s J + 1) := by gcongr; exact (dist_lt_of_not_disjoint_ball mJ'.2).le _ β€ 8 * (D : β) ^ (s J + 1) + D ^ (s J + 1) + 9 * D ^ (s J + 1) := by gcongr; exacts [one_le_realD a, by lia, by rw [zpow_add_oneβ (by simp), mul_comm 8]; gcongr; exact eight_le_realD X] _ β€ _ := by rw [β add_one_mul, β add_mul, β mul_assoc, β mul_rotate, β zpow_natCast, β zpow_addβ (by simp), mul_comm _ 18, show (8 : β) + 1 + 9 = 18 by norm_num] gcongr 18 * (D : β) ^ ?_; exacts [one_le_realD a, by lia] convert measure_ball_le_of_dist_le' (ΞΌ := volume) (by simp) db simp_rw [As, defaultA, defaultD, Nat.cast_pow, Nat.cast_ofNat, β pow_mul, Real.logb_pow, Real.logb_self_eq_one one_lt_two, mul_one, Nat.ceil_natCast, ENNReal.coe_pow, ENNReal.coe_ofNat] ring _ β€ 2 ^ (2 * π * a ^ 3 + 7 * a) * volume (ball (c J') (18 / 128 * D ^ s J')) := by nth_rw 1 [show (18 : β) * D ^ s J' = 2 ^ 7 * (18 / 128 * D ^ s J') by ring] rw [pow_add, mul_assoc, mul_assoc]; gcongr convert! measure_ball_two_le_same_iterate (ΞΌ := volume) (c J') _ 7 using 2 unfold defaultA; norm_cast; rw [β pow_mul'] _ β€ _ := by rw [div_eq_inv_mul _ 4]; gcongr; norm_num replace dbl : V.card * volume (ball (c J) (9 * D ^ (s J + 1))) β€ 2 ^ (2 * π * a ^ 3 + 7 * a) * volume (ball (c J) (9 * D ^ (s J + 1))) := by calc _ β€ 2 ^ (2 * π * a ^ 3 + 7 * a) * β J' β V, volume (ball (c J') (D ^ s J' / 4)) := by rw [Finset.mul_sum, β nsmul_eq_mul, β Finset.sum_const]; exact Finset.sum_le_sum dbl _ = 2 ^ (2 * π * a ^ 3 + 7 * a) * volume (β J' β V, ball (c J') (D ^ s J' / 4)) := by congr; refine (measure_biUnion_finset ?_ fun _ _ β¦ measurableSet_ball).symm have Vs : V β (t.πβ
uβ uβ).toFinset := Finset.filter_subset .. rw [subset_toFinset] at Vs exact (pairwiseDisjoint_πβ
.subset Vs).mono fun _ β¦ ball_subset_Grid _ β€ _ := by gcongr; refine iUnionβ_subset fun J' mJ' β¦ ball_subset_ball' ?_ simp_rw [V, Finset.mem_filter, mem_toFinset] at mJ' have hs := moderate_scale_change hJ mJ'.1 mJ'.2 rw [disjoint_comm] at mJ' have hs' := moderate_scale_change mJ'.1 hJ mJ'.2 calc _ β€ (D : β) ^ s J' / 4 + (8 * D ^ s J' + 8 * D ^ s J) := by gcongr; exact (dist_lt_of_not_disjoint_ball mJ'.2).le _ β€ (D : β) ^ (s J + 1) / 4 + (8 * D ^ (s J + 1) + (8 * D / 25) * D ^ s J) := by have : (8 : β) β€ 8 * D / 25 := by rw [le_div_iffβ (by norm_num)]; gcongr; exact twentyfive_le_realD X gcongr; exacts [one_le_realD a, by lia, one_le_realD a, by lia] _ β€ _ := by rw [show 8 * (D : β) / 25 * D ^ s J = 8 / 25 * (D ^ s J * D) by ring, β zpow_add_oneβ (by simp), β add_mul, div_eq_inv_mul, β add_mul] gcongr; norm_num have vpos : 0 < volume (ball (c J) (9 * D ^ (s J + 1))) := by apply measure_ball_pos volume; unfold defaultD; positivity rw [ENNReal.mul_le_mul_iff_left vpos.ne' measure_ball_lt_top.ne] at dbl exact_mod_cast dbl