fpvandoorn/carleson
Source indexedlemma Β· leanprover/lean4:v4.32.0
TileStructure.Forest.square_function_count
Carleson.ForestOperator.RemainingTiles Β· Carleson/ForestOperator/RemainingTiles.lean:241 to 366
Source documentation
Lemma 7.6.4.
Exact Lean statement
lemma square_function_count (hJ : J β πβ t uβ) {s' : β€} :
β¨β» x in J, (β I with s I = s J - s' β§ Disjoint (I : Set X) (π uβ) β§
Β¬Disjoint (J : Set X) (ball (c I) (8 * D ^ s I)),
(ball (c I) (8 * D ^ s I)).indicator 1 x) ^ 2 βvolume β€ C7_6_4 a s'Complete declaration
Lean source
Full Lean sourceLean 4
lemma square_function_count (hJ : J β πβ t uβ) {s' : β€} : β¨β» x in J, (β I with s I = s J - s' β§ Disjoint (I : Set X) (π uβ) β§ Β¬Disjoint (J : Set X) (ball (c I) (8 * D ^ s I)), (ball (c I) (8 * D ^ s I)).indicator 1 x) ^ 2 βvolume β€ C7_6_4 a s' := by rcases lt_or_ge (βS + s J) s' with hs' | hs' Β· suffices ({I : Grid X | s I = s J - s' β§ Disjoint (I : Set X) (π uβ) β§ Β¬Disjoint (J : Set X) (ball (c I) (8 * D ^ s I)) } : Finset (Grid X)) = β
by rw [this] simp only [Finset.sum_empty, ne_eq, OfNat.ofNat_ne_zero, not_false_eq_true, zero_pow, laverage_zero, zero_le] simp only [Finset.filter_eq_empty_iff, Finset.mem_univ, not_and, Decidable.not_not, true_implies] intros I hI have : -S β€ s I := (range_s_subset β¨I, rflβ©).1 linarith have : NeZero (volume.restrict (J : Set X) univ) := β¨by rw [Measure.restrict_apply_univ] exact ((measure_ball_pos _ _ (by simp only [defaultD, Nat.cast_pow, Nat.cast_ofNat, defaultA, Nat.ofNat_pos, div_pos_iff_of_pos_right]; positivity)).trans_le (measure_mono (ΞΌ := volume) (ball_subset_Grid (i := J)))).ne'β© have : IsFiniteMeasure (volume.restrict (J : Set X)) := β¨by rw [Measure.restrict_apply_univ] exact volume_coeGrid_lt_topβ© let π (sβ x) : Set (Grid X) := { I | x β ball (c I) (8 * D ^ s I) β§ s I = sβ } let supp : Set X := { x β J | Metric.infEDist x JαΆ β€ 8 * (D ^ (s J - s')) } have hsupp : supp β J := fun x hx β¦ hx.1 have vsupp : volume.real supp β€ 2 * (β8 * βD ^ (-s')) ^ ΞΊ * volume.real (J : Set X) := by simp only [supp, sub_eq_neg_add, ENNReal.zpow_add (x := D) (by simp) (by finiteness), β mul_assoc] convert! small_boundary (i := J) (t := 8 * βD ^ (-s')) ?_ Β· simp only [ENNReal.coe_mul, ENNReal.coe_ofNat] rw [ENNReal.coe_zpow (by simp)] norm_num Β· rw [show (8 : ββ₯0) = 2 ^ 3 by norm_num] simp only [defaultD, Nat.cast_pow, Nat.cast_ofNat, defaultA, β zpow_natCast, β zpow_mul, β zpow_addβ (show (2 : ββ₯0) β 0 by norm_num)] gcongr Β· norm_num Β· simp only [Nat.cast_mul, Nat.cast_pow, mul_neg, le_add_neg_iff_add_le, β mul_add] refine (Int.mul_nonpos_of_nonneg_of_nonpos (by positivity) ?_).trans (by norm_num) rwa [β sub_nonpos, sub_eq_neg_add, neg_add] at hs' have vsupp : volume supp β€ ENNReal.ofReal (2 * (β8 * βD ^ (-s')) ^ ΞΊ) * volume (J : Set X) := by apply ENNReal.ofReal_le_ofReal at vsupp rwa [Measure.real, Measure.real, ENNReal.ofReal_mul (by positivity), ENNReal.ofReal_toReal (volume_coeGrid_lt_top.ne), ENNReal.ofReal_toReal ((measure_mono hsupp).trans_lt volume_coeGrid_lt_top).ne] at vsupp have estβ (sβ x) : (π sβ x).toFinset.card β€ (defaultA a) ^ 7 := by apply Nat.cast_le (Ξ± := β).mp have : 0 < volume.real (ball x (9 * βD ^ sβ)) := ENNReal.toReal_pos (measure_ball_pos _ _ (by simpa using by positivity)).ne' (by finiteness) refine le_of_mul_le_mul_right (a := volume.real (ball x (9 * D ^ sβ))) ?_ this transitivity (defaultA a) ^ 7 * β I β π sβ x, volume.real (ball (c I) (D ^ s I / 4)) Β· rw [Finset.mul_sum, β nsmul_eq_mul, β Finset.sum_const] refine Finset.sum_le_sum fun I hI β¦ ?_ simp only [mem_toFinset] at hI apply le_trans _ (measureReal_ball_two_le_same_iterate (ΞΌ := volume) (c I) (D ^ s I / 4) 7) refine measureReal_mono ?_ (by finiteness) apply ball_subset_ball' refine (add_le_add le_rfl hI.1.le).trans ?_ rw [div_eq_mul_one_div, mul_comm _ (1 / 4), hI.2, β add_mul, β mul_assoc] gcongr linarith have disj : (π sβ x).PairwiseDisjoint fun I : Grid X β¦ ball (c I) (D ^ s I / 4) := by intros Iβ hIβ Iβ hIβ e exact disjoint_of_subset ball_subset_Grid ball_subset_Grid ((eq_or_disjoint (hIβ.2.trans hIβ.2.symm)).resolve_left e) rw [β measureReal_biUnion_finset (by simpa only [coe_toFinset] using disj) (fun _ _ β¦ measurableSet_ball) (by finiteness)] simp only [Nat.cast_pow, Nat.cast_ofNat] gcongr Β· finiteness Β· simp only [mem_toFinset, iUnion_subset_iff] intro I hI apply ball_subset_ball' rw [dist_comm, div_eq_mul_one_div, mul_comm] refine (add_le_add le_rfl hI.1.le).trans ?_ rw [β add_mul, hI.2] gcongr linarith simp_rw [β Nat.cast_le (Ξ± := ββ₯0β)] at estβ have estβ (x) (hx : x β J) : (β I with s I = s J - s' β§ Disjoint (I : Set X) (π uβ) β§ Β¬Disjoint (J : Set X) (ball (c I) (8 * D ^ s I)), (ball (c I) (8 * D ^ s I)).indicator (1 : X β ββ₯0β) x) β€ if x β supp then (defaultA a) ^ 7 else 0 := by split_ifs with hx' Β· rw [Finset.sum_indicator_eq_sum_filter] simp only [Pi.one_apply, Finset.sum_const, nsmul_eq_mul, mul_one] refine le_trans ?_ (estβ (s J - s') x) gcongr intro I simp_rw [Finset.filter_filter, Finset.mem_filter_univ, mem_toFinset] exact fun H β¦ β¨H.2, H.1.1β© Β· have (I : Grid X) : ball (c I) (8 * D ^ s I) = Metric.eball (c I) (8 * D ^ s I) := by trans Metric.eball (c I) (show ββ₯0 from β¨8 * D ^ s I, by positivityβ©) Β· rw [Metric.eball_coe]; rfl Β· congr! simp only [ENNReal.coe_nnreal_eq, β Real.rpow_intCast] erw [ENNReal.ofReal_mul (by norm_num)] rw [β ENNReal.ofReal_rpow_of_pos (by simp), ENNReal.ofReal_natCast] norm_num simp_rw [this] simp only [CharP.cast_eq_zero, nonpos_iff_eq_zero, Finset.sum_eq_zero_iff, Finset.mem_filter, Finset.mem_univ, true_and, indicator_apply_eq_zero, Metric.mem_eball, Pi.one_apply, one_ne_zero, imp_false, not_lt, and_imp] intro I e hIβ _ simp only [Grid.mem_def, mem_setOf_eq, not_and, not_le, supp, β e] at hx' exact (hx' hx).le.trans (iInfβ_le (c I) fun h β¦ Set.disjoint_iff.mp hIβ β¨Grid.c_mem_Grid, hJ.2.1 hβ©) have estβ' (x) (hx : x β J) : _ β€ supp.indicator (fun _ β¦ (β(defaultA a ^ 7 : β) : ββ₯0β) ^ 2) x := (pow_left_mono 2 <| estβ x hx).trans (by simp [Set.indicator_apply]) refine (setLaverage_mono' coeGrid_measurable estβ').trans ?_ rw [laverage_eq, ENNReal.div_le_iff (NeZero.ne _) (by finiteness)] refine (lintegral_indicator_const_le _ _).trans ?_ rw [Measure.restrict_apply' coeGrid_measurable, Measure.restrict_apply_univ, Set.inter_eq_left.mpr (fun x hx β¦ hx.1)] refine ((ENNReal.mul_le_mul_iff_right (by simp) (ne_of_beq_false rfl).symm).mpr vsupp).trans ?_ rw [β mul_assoc, ENNReal.ofReal, β ENNReal.coe_natCast, β ENNReal.coe_pow, β ENNReal.coe_mul] gcongr rw [Real.toNNReal_mul (by positivity), Real.toNNReal_rpow_of_nonneg (by positivity), Real.toNNReal_mul (by positivity), β Real.rpow_intCast, Real.toNNReal_rpow_of_nonneg (by positivity), Real.toNNReal_natCast] simp only [Nat.cast_pow, Nat.cast_ofNat, Real.toNNReal_ofNat, Int.cast_neg, β pow_mul] rw [β mul_assoc, β pow_succ, C7_6_4, β NNReal.rpow_natCast, β NNReal.rpow_intCast, Int.cast_neg] congr! simp [mul_assoc, mul_comm (G := β) 14]