Skip to main content
fpvandoorn/carleson
Source indexedlemma · leanprover/lean4:v4.32.0

john_nirenberg

Carleson.Discrete.ExceptionalSet · Carleson/Discrete/ExceptionalSet.lean:312 to 355

Source documentation

Lemma 5.2.5

Exact Lean statement

lemma john_nirenberg : volume (setA (X := X) l k n) ≤ 2 ^ (k + 1 - l : ℤ) * volume G

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
lemma john_nirenberg : volume (setA (X := X) l k n)  2 ^ (k + 1 - l : ) * volume G := by  induction l with  | zero =>    calc      _  volume (⋃ i  𝓒 (X := X) k, (i : Set X)) := measure_mono setA_subset_iUnion_𝓒      _  _ := by        rw [ ENNReal.rpow_intCast, show (k + 1 - (0 : ) : ) = (k + 1 : ) by simp]        exact_mod_cast dense_cover k  | succ l ih =>    suffices 2 * volume (setA (X := X) (l + 1) k n)  volume (setA (X := X) l k n) by      rw [ ENNReal.mul_le_mul_iff_right (a := 2) (by simp) (by simp),  mul_assoc]      apply this.trans      convert! ih using 2; nth_rw 1 [ zpow_one 2,  ENNReal.zpow_add (by simp) (by simp)]      congr 1; lia    calc      _ = 2 * ∑ L  Grid.maxCubes (MsetA (X := X) l k n),          volume (setA (X := X) (l + 1) k n ∩ L) := by        congr; rw [ measure_biUnion_finset]        · congr with x; constructor <;> intro h          · obtain L', mL' := dyadic_union h            have := mem_of_mem_of_subset mL'.1 (mL'.2.trans setA_subset_setA)            rw [ iUnion_MsetA_eq_setA, mem_iUnion₂] at this            obtain M, mM, lM := this            obtain L, mL, lL := Grid.exists_maximal_supercube mM            rw [mem_iUnion₂]; use L, mL            exact mem_of_mem_of_subset mL'.1 mL'.2, mem_of_mem_of_subset lM lL.1          · rw [mem_iUnion₂] at h; obtain i, _, mi₂ := h; exact mem_of_mem_inter_left mi₂        · exact fun i mi j mj hn             ((Grid.maxCubes_pairwiseDisjoint mi mj hn).inter_left' _).inter_right' _        · exact fun _ _  measurable_setA.inter coeGrid_measurable      _  ∑ L  Grid.maxCubes (MsetA (X := X) l k n), volume (L : Set X) := by        rw [Finset.mul_sum]; exact Finset.sum_le_sum fun L mL  john_nirenberg_aux2 mL      _ = _ := by        rw [ measure_biUnion_finset Grid.maxCubes_pairwiseDisjoint (fun _ _  coeGrid_measurable)]        congr with x; constructor <;> intro h        · rw [mem_iUnion₂] at h; obtain i, mi₁, mi₂ := h          simp only [Grid.maxCubes, Finset.mem_filter, MsetA, Finset.mem_univ, true_and] at mi₁          exact mem_of_mem_of_subset mi₂ mi₁.1        · obtain L', mL' := dyadic_union h          have := mem_of_mem_of_subset mL'.1 mL'.2          rw [ iUnion_MsetA_eq_setA, mem_iUnion₂] at this          obtain M, mM, lM := this          obtain L, mL, lL := Grid.exists_maximal_supercube mM          rw [mem_iUnion₂]; use L, mL, mem_of_mem_of_subset lM lL.1