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

two_sided_metric_carleson_hasStrongType

Carleson.TwoSidedCarleson.RestrictedWeakType · Carleson/TwoSidedCarleson/RestrictedWeakType.lean:126 to 255

Source documentation

The constant used in two_sided_metric_carleson_hasStrongType. -/ lemma C_carleson_hasStrongType_pos {a : ℕ} {q : ℝ≥0} : 0 < C_carleson_hasStrongType a q := C_LorentzInterpolation_pos

/- Theorem 10.0.1, reformulation

Exact Lean statement

theorem two_sided_metric_carleson_hasStrongType
  [Countable (Θ X)] (ha : 4 ≤ a) (hq : q ∈ Ioo 1 2)
    (hT : ∀ r > 0, HasBoundedStrongType (czOperator K r) 2 2 volume volume (C_Ts a)) :
      HasStrongType (carlesonOperator K) q q volume volume
        (C_carleson_hasStrongType a q)

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
theorem two_sided_metric_carleson_hasStrongType  [Countable (Θ X)] (ha : 4  a) (hq : q  Ioo 1 2)    (hT :  r > 0, HasBoundedStrongType (czOperator K r) 2 2 volume volume (C_Ts a)) :      HasStrongType (carlesonOperator K) q q volume volume        (C_carleson_hasStrongType a q) := by  --TODO: change parameters of constant to something reasonable  set q₀ := (q + 2) / 2  set q₁ := (q + 1) / 2  set t := (interpolation_param q₀⁻¹ q₁⁻¹ q⁻¹).toNNReal  have one_eq : (1 : 0) = 1 / 2 + 1 / 2 := by rw [ add_div]; simp  have two_eq : (2 : 0) = 3 / 2 + 1 / 2 := by rw [ add_div]; refine NNReal.eq ?_; norm_num  have hq₀ : q₀  Ioo 1 2 := by    unfold q₀    rw [add_div]    constructor    · norm_num      exact zero_lt_one.trans hq.1    · norm_num      nth_rw 2 [ one_add_one_eq_two]      gcongr      rw [ div_self_of_invertible 2]      gcongr      exact hq.2  have hq₁ : q₁  Ioo 1 2 := by    unfold q₁    rw [add_div]    constructor    · nth_rw 1 [one_eq]      gcongr      exact hq.1    · nth_rw 3 [two_eq]      gcongr      apply hq.2.trans      norm_num  have q₀_ne_q₁ : q₀  q₁ := by    unfold q₀ q₁    rw [ne_eq, div_eq_div_iff (by norm_num) (by norm_num)]    simp  have q_pos : 0 < q := lt_trans zero_lt_one hq.1  have q₀_pos : 0 < q₀ := lt_trans zero_lt_one hq₀.1  have q₁_pos : 0 < q₁ := lt_trans zero_lt_one hq₁.1  have h : interpolation_param (↑q₀)⁻¹ (↑q₁)⁻¹ (↑q)⁻¹  Ioo 0 1 := by    apply interpolation_param_mem_Ioo    simp only [mem_Ioo]    rw [ NNReal.coe_inv,  NNReal.coe_inv,  NNReal.coe_inv]    rw [NNReal.coe_lt_coe, NNReal.coe_lt_coe, inv_lt_inv₀ q₀_pos q_pos, inv_lt_inv₀ q_pos q₁_pos]    constructor    · unfold q₀      rw [lt_div_iff₀ zero_lt_two, mul_two]      gcongr      exact hq.2    · unfold q₁      rw [div_lt_iff₀ zero_lt_two, mul_two]      gcongr      exact hq.1  have ht : t  Ioo 0 1 := by    unfold t    simp only [mem_Ioo, Real.toNNReal_pos, Real.toNNReal_lt_one]    rwa [ mem_Ioo]  have hqq₀q₁ : q⁻¹ = (1 - t) / q₀ + t / q₁ := by    have : q⁻¹.toReal = ((1 - t) / q₀ + t / q₁).toReal := by      push_cast      rw [NNReal.coe_sub ht.2.le, Real.coe_toNNReal _ h.1.le]      exact @interpolation_param_interpolation q₀⁻¹ q₁⁻¹ q⁻¹ (by simpa)    rwa [ Real.toNNReal_eq_toNNReal_iff (by simp) (by positivity),      Real.toNNReal_coe, Real.toNNReal_coe] at this  have lorentzType_q₀ :      HasLorentzType (carlesonOperator K) q₀ 1 q₀ ⊤ volume volume (4 * (C10_0_1 a q₀) / q₀) := by    apply two_sided_metric_carleson_hasLorentzType ha hq₀ hT  have lorentzType_q₁ :      HasLorentzType (carlesonOperator K) q₁ 1 q₁ ⊤ volume volume (4 * (C10_0_1 a q₁) / q₁) := by    apply two_sided_metric_carleson_hasLorentzType ha hq₁ hT  have helper {p : 0} (hp : 0 < p): (4 * (C10_0_1 a p) / p) = ENNReal.ofNNReal (4 * (C10_0_1 a p) / p) := by    norm_cast    rw [ENNReal.coe_div hp.ne']  rw [helper q₀_pos] at lorentzType_q₀  rw [helper q₁_pos] at lorentzType_q₁  -- use interpolation for Lorentz spaces  rename_i m kernel cf cancel count  have : IsOneSidedKernel a K := by infer_instance  set kpd : KernelProofData a K := KernelProofData.mk d ha cf this  rw [hasStrongType_iff_hasLorentzType]  unfold C_carleson_hasStrongType  convert exists_hasLorentzType_real_interpolation _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ lorentzType_q₀ lorentzType_q₁ _ _  · simp [hq₀.1.le]  · simp [hq₁.1.le]  · rfl  · rfl  · simp [hq₀.1.le]  · simp [hq₁.1.le]  · exact OrderTop.le_top 1  · exact OrderTop.le_top 1  · rw [coe_ne_coe]    exact q₀_ne_q₁  · rw [coe_ne_coe]    exact q₀_ne_q₁  · exact zero_lt_one' 0  · exact ht  · apply div_pos _ q₀_pos    apply _root_.mul_pos    · norm_num    apply C10_0_1_pos hq₀.1  · apply div_pos _ q₁_pos    apply _root_.mul_pos    · norm_num    apply C10_0_1_pos hq₁.1  · norm_cast    rw [ ENNReal.coe_div q₁_pos.ne',  ENNReal.coe_div q₀_pos.ne',         ENNReal.coe_inv q_pos.ne',  ENNReal.coe_add]    norm_cast  · norm_cast    rw [ ENNReal.coe_div q₀_pos.ne',  ENNReal.coe_div q₁_pos.ne',  ENNReal.coe_inv q_pos.ne',  ENNReal.coe_add]    norm_cast  · intro f hf    apply (carlesonOperator_measurable _).aestronglyMeasurable    apply (hf.memLp _).locallyIntegrable <;> simp [hq.1.le, q_pos]  · unfold AESubadditiveOn    intro f g hf hg    simp only [enorm_eq_self, coe_one, one_mul]    apply Filter.Eventually.of_forall    intro x    apply carlesonOperator_add_le_add_carlesonOperator    · rcases hf with hf | hf      · apply (hf.memLp _).locallyIntegrable <;> simp [hq₀.1.le]      · apply (hf.memLp _).locallyIntegrable <;> simp [hq₁.1.le]    · rcases hg with hg | hg      · apply (hg.memLp _).locallyIntegrable <;> simp [hq₀.1.le]      · apply (hg.memLp _).locallyIntegrable <;> simp [hq₁.1.le]  · simp only [coe_pos]    exact lt_trans (zero_lt_one' 0) hq.1