fpvandoorn/carleson
Source indexedlemma Β· leanprover/lean4:v4.32.0
Antichain.stack_density
Carleson.Antichain.AntichainTileCount Β· Carleson/Antichain/AntichainTileCount.lean:171 to 291
Source documentation
Lemma 6.3.2.
Exact Lean statement
lemma stack_density (π : Set (π X)) (Ο : Ξ X) (N : β) (L : Grid X) :
β p β π_aux π Ο N with π p = L, volume (E p β© G) β€
2^(a * (N + 5)) * densβ (π : Set (π X)) * volume (L : Set X)Complete declaration
Lean source
Full Lean sourceLean 4
lemma stack_density (π : Set (π X)) (Ο : Ξ X) (N : β) (L : Grid X) : β p β π_aux π Ο N with π p = L, volume (E p β© G) β€ 2^(a * (N + 5)) * densβ (π : Set (π X)) * volume (L : Set X) := by -- Def. 6.3.17 set π' : Set (π X) := {p β (π_aux π Ο N) | π p = L} with π'_def have hI : β {q q' : π X} (hq : q β π') (hq' : q' β π'), π q = π q' := fun hq hq' β¦ by simp only [π'_def, π_aux] at hq hq' rw [hq.2, hq'.2] have heq : β p β (π_aux π Ο N).toFinset with π p = L, volume (E p β© G) = β p β π'.toFinset, volume (E p β© G) := by congr; aesop by_cases hπ' : π'.Nonempty Β· -- Ineq. 6.3.18 have h_aux : β (p : π X) (hp : p β π'.toFinset), volume (E p β© G) β€ 2^a * densβ (π' : Set (π X)) * volume (L : Set X) := by intro p hp rw [mem_toFinset] at hp calc volume (E p β© G) _ β€ volume (Eβ 2 p) := by gcongr; intro x hx refine β¨β¨hx.1.1, hx.2β©, ?_β© apply @ball_subset_ball _ instPseudoMetricSpaceWithFunctionDistance _ 1 2 (by norm_num) exact subset_cball hx.1.2.1 _ β€ 2^a * densβ (π' : Set (π X)) * volume (L : Set X) := by have hIL : π p = L := by simp_rw [β hp.2] have h2a : ((2 : ββ₯0β) ^ a)β»ΒΉ = 2^(-(a : β€)) := by rw [β zpow_natCast, ENNReal.zpow_neg] rw [β ENNReal.div_le_iff (ne_of_gt (hIL βΈ volume_coeGrid_pos (defaultD_pos a))) (by finiteness), β ENNReal.div_le_iff' (NeZero.ne (2 ^ a)) (by finiteness), ENNReal.div_eq_inv_mul, h2a, densβ] refine le_iSupβ_of_le p hp ?_ refine le_iSupβ_of_le 2 le_rfl ?_ gcongr Β· norm_cast Β· refine le_iSupβ_of_le p (mem_lowerCubes.mpr β¨p, hp, le_refl _β©) ?_ refine le_iSup_of_le (le_refl _) ?_ gcongr Β· simp Β· rw [hIL] let p : π X := hπ'.choose have hp : p β π' := hπ'.choose_spec -- Ineq. 6.3.19 have hth : β (Ξ' : Finset (Ξ X)), Ξ'.card β€ 2^(a*(N+4)) β§ ball_(p) Ο (2^(N+1)) β β Ο' β Ξ', ball_(p) Ο' 0.2 := by have hs : ball_(p) Ο (2^(N+1)) β ball_(p) Ο (2^(N+4)*0.2) := by have hN4 : (2 : β) ^ (N + 4) = 2 ^ (N + 1) * 2 ^ 3 := by ring refine ball_subset_ball ?_ rw [β mul_one ((2 : β)^ (N + 1) ), hN4, mul_assoc, mul_le_mul_iff_of_pos_left (by positivity)] norm_num have hballs : BallsCoverBalls (WithFunctionDistance (π p) (βD ^ π° p / 4)) (2 ^ (N + 4) * 0.2) 0.2 (defaultA a ^ (N + 4)) := ballsCoverBalls_iterate_nat simp only [BallsCoverBalls, coveredByBalls_iff, defaultA, β pow_mul] at hballs obtain β¨Ξ', hΞ'_card, hΞ'_coverβ© := hballs Ο exact β¨Ξ', hΞ'_card, subset_trans hs hΞ'_coverβ© obtain β¨Ξ', hΞ'_card, hΞ'_coverβ© := hth have hex : β (p' : π X) (hp' : p' β π'), β (Ο' : Ξ X) (hΟ' : Ο' β Ξ'), π¬ p' β ball_(p) Ο' 0.2 := fun p' hp' β¦ by have hp'_in : π¬ p' β ball_(p) Ο (2 ^ (N + 1)) := ball_eq_of_grid_eq (hI hp hp') βΈ (lt_one_add _).trans hp'.1.2.2 have hp'_in' := hΞ'_cover hp'_in simp only [mem_iUnion] at hp'_in' exact hp'_in' -- Claim 6.3.20 have hcap : β (q q' : π X) (hq : q β π') (hq' : q' β π') (hqq' : q β q') (Ο' : Ξ X) (hΟ' : Ο' β Ξ'), Ο' β ball_(p) (π¬ q) (0.2 : β) β© ball_(p) (π¬ q') (0.2 : β) := by intro q q' hq hq' hqq' Ο' hΟ' have hdis := disjoint_Ξ© hqq' (hI hq hq') simp only [disjoint_iff, inf_eq_inter, bot_eq_empty] at hdis intro hint have h5 : (0.2 : β) = 5β»ΒΉ := by norm_num rw [h5] at hint have hsub : Ο' β (Ξ© q) β© (Ξ© q') := mem_of_subset_of_mem (inter_subset_inter (ball_eq_of_grid_eq (hI hp hq) βΈ cball_subset) (ball_eq_of_grid_eq (hI hp hq') βΈ cball_subset)) hint rw [hdis] at hsub exact hsub have hcard : π'.toFinset.card β€ 2^(a*(N+4)) := by -- We only care about the restriction of f to π' set f : π X β Ξ X := fun q β¦ if hq : q β π' then (hex q hq).choose else Ο with hf_def refine (Finset.card_le_card_of_injOn f (fun q hq β¦ ?_) ?_).trans hΞ'_card Β· simp_rw [hf_def, dif_pos (mem_toFinset.mp hq)] exact (hex q (mem_toFinset.mp hq)).choose_spec.1 Β· intro q hq q' hq' hf simp only [coe_toFinset] at hq hq' have hfq : f q = (hex q hq).choose := by simp only [hf_def, dif_pos hq] have hfq' : f q' = (hex q' hq').choose := by simp only [hf_def, dif_pos hq'] specialize hcap q q' hq hq' contrapose! hcap refine β¨hcap, β¨(hex q hq).choose, β¨(hex q hq).choose_spec.1, ?_β©β©β© constructor <;> simp only [mem_ball] Β· rw [dist_comm] exact (hex q hq).choose_spec.2 Β· rw [dist_comm, β hfq, hf, hfq'] exact (hex q' hq').choose_spec.2 -- Ineq. 6.3.16 calc β p β (π_aux π Ο N).toFinset with π p = L, volume (E p β© G) _ = β p β π'.toFinset, volume (E p β© G) := heq _ β€ β p β π'.toFinset, 2^a * densβ (π' : Set (π X)) * volume (L : Set X) := Finset.sum_le_sum h_aux _ = π'.toFinset.card * (2^a * densβ (π' : Set (π X)) * volume (L : Set X)) := by rw [Finset.sum_const, nsmul_eq_mul] _ β€ 2 ^ (a * (N + 5)) * densβ (π' : Set (π X)) * volume (L : Set X) := by simp only [β mul_assoc] gcongr norm_cast calc π'.toFinset.card * 2 ^ a _ β€ 2 ^ (a * (N + 4)) * 2 ^ a := mul_le_mul_left hcard _ _ = 2 ^ (a * (N + 5)) := by ring _ β€ 2 ^ (a * (N + 5)) * densβ (π : Set (π X)) * volume (L : Set X) := by have hss : π' β π := by calc π' _ β π_aux π Ο N := sep_subset _ _ _ β π := sep_subset _ _ gcongr exact densβ_mono hss Β· rw [heq] have : π'.toFinset = β
:= by rw [Set.toFinset_eq_empty] exact not_nonempty_iff_eq_empty.mp hπ' rw [this, Finset.sum_empty] exact zero_le