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

S_truncation

Carleson.MetricCarleson.Truncation · Carleson/MetricCarleson/Truncation.lean:261 to 365

Source documentation

Lemma 3.0.3. B is the blueprint's S.

Exact Lean statement

lemma S_truncation
    [IsCancellative X (defaultτ a)] {B : ℕ} (hq : q ∈ Ioc 1 2) (hqq' : q.HolderConjugate q')
    (bF : IsBounded F) (bG : IsBounded G) (mF : MeasurableSet F) (mG : MeasurableSet G)
    (mf : Measurable f) (nf : (‖f ·‖) ≤ F.indicator 1)
    (BST_T_Q : ∀ θ : Θ X, HasBoundedStrongType (linearizedNontangentialOperator Q θ K · ·)
      2 2 volume volume (C_Ts a)) :
    ∫⁻ x in G, ⨆ s₁ ∈ Finset.Icc (-B : ℤ) B, ⨆ s₂ ∈ Finset.Icc s₁ B, ‖T_S Q s₁ s₂ f x‖ₑ ≤
    C3_0_4 a q * volume G ^ (q' : ℝ)⁻¹ * volume F ^ (q : ℝ)⁻¹

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
lemma S_truncation    [IsCancellative X (defaultτ a)] {B : } (hq : q  Ioc 1 2) (hqq' : q.HolderConjugate q')    (bF : IsBounded F) (bG : IsBounded G) (mF : MeasurableSet F) (mG : MeasurableSet G)    (mf : Measurable f) (nf : (‖f ·‖)  F.indicator 1)    (BST_T_Q :  θ : Θ X, HasBoundedStrongType (linearizedNontangentialOperator Q θ K · ·)      2 2 volume volume (C_Ts a)) :    ∫⁻ x in G, ⨆ s₁  Finset.Icc (-B : ) B, ⨆ s₂  Finset.Icc s₁ B, ‖T_S Q s₁ s₂ f x‖ₑ     C3_0_4 a q * volume G ^ (q' : )⁻¹ * volume F ^ (q : )⁻¹ := by  -- Define `T1'` and `T1` and prove their measurability  let T1' (x : X) (s' : ) := ⨆ s₂  Finset.Icc s' B, ‖T_S Q s' s₂ f x‖ₑ  have mT1' {n : } : Measurable (T1' · n) :=    Measurable.iSup fun _  Measurable.iSup fun _  (measurable_T_S mf).enorm  let T1 (x : X) := ⨆ s₁  Finset.Icc (-B : ) B, T1' x s₁  have mT1 : Measurable T1 := Measurable.iSup fun _  Measurable.iSup fun _  mT1'  -- For each `x` define a candidate set of values for `σ₁ x`;  -- the final value is the minimum in this set. Also prove measurability of membership  let candσ₁ (x : X) := (Finset.Icc (-B : ) B).filter (T1 x = T1' x ·)  have necσ₁ (x : X) : (candσ₁ x).Nonempty := by    rw [Finset.filter_nonempty_iff]    obtain s', ms', hs' := (Finset.Icc (-B : ) B).exists_max_image (T1' x) 0, by simp    use s', ms'; apply le_antisymm    · exact iSup₂_le hs'    · apply le_biSup _ ms'  have scσ₁ (x : X) : candσ₁ x  Finset.Icc (-B) B := by simp [candσ₁]  have mcσ₁ {n : } : Measurable (n  candσ₁ ·) := by    simp_rw [candσ₁, Finset.mem_filter, Finset.mem_Icc]    apply measurable_const.and; rw [ measurableSet_setOf]; exact measurableSet_eq_fun mT1 mT1'  -- Define `σ₁` and prove its measurability and finite range  let σ₁ (x : X) := (candσ₁ x).min' (necσ₁ x)  have eσ₁ (x : X) : σ₁ x  candσ₁ x := (candσ₁ x).min'_mem (necσ₁ x)  have minσ₁ (x : X) {n : } (hn : n  candσ₁ x) : σ₁ x  n := (candσ₁ x).min'_le _ hn  have mσ₁ : Measurable σ₁ := by    classical    refine measurable_to_countable' fun n  ?_    have eqv : σ₁ ⁻¹' {n} =        candσ₁ ⁻¹' ((Finset.Icc (-B : ) B).powerset.filter fun c  n  c   m  c, n  m) := by      ext x      simp_rw [mem_preimage, mem_singleton_iff, Finset.coe_filter, Finset.mem_powerset,        mem_setOf_eq, scσ₁, true_and]      constructor <;> intro h      · rw [ h]; exact eσ₁ x, fun m  minσ₁ x      · rw [ (candσ₁ x).le_min'_iff (necσ₁ x)] at h; obtain h₁, h₂ : n  σ₁ x := h        exact le_antisymm ((candσ₁ x).min'_le _ h₁) h₂    simp_rw [eqv, Finset.coe_filter, Finset.mem_powerset, preimage_setOf_eq, measurableSet_setOf]    refine Measurable.and ?_ (mcσ₁.and (Measurable.forall fun m  mcσ₁.imp measurable_const))    simp [scσ₁]  have rσ₁ : (range σ₁).Finite := by    suffices range σ₁  Set.Icc (-B) B by exact (finite_Icc (-B : ) B).subset this    simp_rw [range_subset_iff, mem_Icc,  Finset.mem_Icc]; exact fun x  scσ₁ x (eσ₁ x)  -- Incorporate `σ₁` into the main integral  simp_rw [candσ₁, Finset.mem_filter, Finset.mem_Icc] at eσ₁  change ∫⁻ x in G, T1 x  _  conv_lhs => enter [2, x]; rw [(eσ₁ x).2]  -- Work analogously to define `σ₂`  let candσ₂ (x : X) :=    (Finset.Icc (σ₁ x) B).filter (fun s'' :   T1' x (σ₁ x) = ‖T_S Q (σ₁ x) s'' f x‖ₑ)  have necσ₂ (x : X) : (candσ₂ x).Nonempty := by    rw [Finset.filter_nonempty_iff]    obtain s', ms', hs' := (Finset.Icc (σ₁ x) B).exists_max_image      (‖T_S Q (σ₁ x) · f x‖ₑ) σ₁ x, by simpa using (eσ₁ x).1.2    use s', ms'; apply le_antisymm    · exact iSup₂_le hs'    · apply le_biSup _ ms'  have scσ₂ (x : X) : candσ₂ x  Finset.Icc (-B : ) B :=    subset_trans (by simp [candσ₂]) (Finset.Icc_subset_Icc_left (eσ₁ x).1.1)  have mcσ₂ {n : } : Measurable (n  candσ₂ ·) := by    simp_rw [candσ₂, Finset.mem_filter, Finset.mem_Icc]    apply Measurable.and    · apply Measurable.and ?_ measurable_const      rw [ measurableSet_setOf]; exact measurableSet_le mσ₁ measurable_const    · rw [ measurableSet_setOf]; apply measurableSet_eq_fun      · apply Measurable.comp (f := fun x  (x, σ₁ x)) (g := fun p  T1' p.1 p.2)        · exact measurable_from_prod_countable_left fun _  mT1'        · exact measurable_id.prodMk mσ₁      · apply Measurable.enorm        apply (Measurable.comp (f := fun x  (x, σ₁ x)) (g := fun p  T_S Q p.2 n f p.1))        · exact measurable_from_prod_countable_left fun _  measurable_T_S mf        · exact measurable_id.prodMk mσ₁  -- Work analogously to prove `σ₂`'s properties  let σ₂ (x : X) := (candσ₂ x).min' (necσ₂ x)  have eσ₂ (x : X) : σ₂ x  candσ₂ x := (candσ₂ x).min'_mem (necσ₂ x)  have minσ₂ (x : X) {n : } (hn : n  candσ₂ x) : σ₂ x  n := (candσ₂ x).min'_le _ hn  have mσ₂ : Measurable σ₂ := by    classical    refine measurable_to_countable' fun n  ?_    have eqv : σ₂ ⁻¹' {n} =        candσ₂ ⁻¹' ((Finset.Icc (-B : ) B).powerset.filter fun c  n  c   m  c, n  m) := by      ext x      simp_rw [mem_preimage, mem_singleton_iff, Finset.coe_filter, Finset.mem_powerset,        mem_setOf_eq, scσ₂, true_and]      constructor <;> intro h      · rw [ h]; exact eσ₂ x, fun m  minσ₂ x      · rw [ (candσ₂ x).le_min'_iff (necσ₂ x)] at h; obtain h₁, h₂ : n  σ₂ x := h        exact le_antisymm ((candσ₂ x).min'_le _ h₁) h₂    simp_rw [eqv, Finset.coe_filter, Finset.mem_powerset, preimage_setOf_eq, measurableSet_setOf]    refine Measurable.and ?_ (mcσ₂.and (Measurable.forall fun m  mcσ₂.imp measurable_const))    simp [scσ₂]  have rσ₂ : (range σ₂).Finite := by    suffices range σ₂  Set.Icc (-B) B by exact (finite_Icc (-B : ) B).subset this    simp_rw [range_subset_iff, mem_Icc,  Finset.mem_Icc]; exact fun x  scσ₂ x (eσ₂ x)  simp_rw [candσ₂, Finset.mem_filter, Finset.mem_Icc] at eσ₂  have lσ : σ₁  σ₂ := by intro x; exact (eσ₂ x).1.1  -- Complete the reduction  conv_lhs => enter [2, x]; rw [(eσ₂ x).2]  exact linearized_truncation hq hqq' bF bG mF mG mf nf mσ₁ mσ₂ rσ₁ rσ₂ lσ BST_T_Q