fpvandoorn/carleson
Source indexedtheorem Β· leanprover/lean4:v4.32.0
forest_operator
Carleson.ForestOperator.Forests Β· Carleson/ForestOperator/Forests.lean:1017 to 1063
Mathematical statement
Exact Lean statement
theorem forest_operator {n : β} (π : Forest X n) {f g : X β β}
(hf : Measurable f) (h2f : β x, βf xβ β€ F.indicator 1 x)
(hg : Measurable g) (h2g : β x, βg xβ β€ G.indicator 1 x) :
ββ« x, conj (g x) * β u with u β π, carlesonSum (π u) f xββ β€
C2_0_4 a q n * (densβ (β u β π, π u)) ^ (qβ»ΒΉ - 2β»ΒΉ) *
eLpNorm f 2 volume * eLpNorm g 2 volumeComplete declaration
Lean source
Full Lean sourceLean 4
theorem forest_operator {n : β} (π : Forest X n) {f g : X β β} (hf : Measurable f) (h2f : β x, βf xβ β€ F.indicator 1 x) (hg : Measurable g) (h2g : β x, βg xβ β€ G.indicator 1 x) : ββ« x, conj (g x) * β u with u β π, carlesonSum (π u) f xββ β€ C2_0_4 a q n * (densβ (β u β π, π u)) ^ (qβ»ΒΉ - 2β»ΒΉ) * eLpNorm f 2 volume * eLpNorm g 2 volume := by have g_part := π.forest_operator_g hf h2f hg h2g -- ^ (2 - 2 / q) have f_part := π.forest_operator_f hf h2f hg h2g -- ^ (2 / q - 1) rcases (q_le_two X).eq_or_lt with rfl | hq Β· rw [sub_self, ENNReal.rpow_zero, mul_one, C2_0_4, C2_0_4_base] rw [Forest.G2_0_4] at g_part; convert g_part using 6; ring have egpos : 0 < 2 - 2 / q := by rw [sub_pos]; nth_rw 2 [show 2 = (2 : β) / 1 by norm_num] exact div_lt_div_of_pos_left zero_lt_two zero_lt_one (one_lt_q X) have efpos : 0 < 2 / q - 1 := by rwa [sub_pos, one_lt_div (zero_lt_one.trans (one_lt_q X))] rw [β ENNReal.rpow_le_rpow_iff egpos] at g_part rw [β ENNReal.rpow_le_rpow_iff efpos] at f_part have key := mul_le_mul' g_part f_part have esum : 2 - 2 / q + (2 / q - 1) = 1 := by ring rw [β ENNReal.rpow_add_of_nonneg _ _ egpos.le efpos.le, esum, ENNReal.rpow_one, mul_assoc, mul_assoc _ (eLpNorm f 2 volume), ENNReal.mul_rpow_of_nonneg _ _ egpos.le, ENNReal.mul_rpow_of_nonneg _ _ efpos.le, mul_mul_mul_comm, β ENNReal.rpow_add_of_nonneg _ _ egpos.le efpos.le, esum, ENNReal.rpow_one, β mul_assoc, ENNReal.mul_rpow_of_nonneg _ _ efpos.le, β mul_assoc, β ENNReal.rpow_mul, show 2β»ΒΉ * (2 / q - 1) = qβ»ΒΉ - 2β»ΒΉ by ring] at key apply key.trans; gcongr calc _ β€ ((2 : ββ₯0β) ^ ((3 * π + 15 + 5 * (π / 4)) * a ^ 3)) ^ (2 - 2 / q) * (2 ^ (-(n / 2 : β))) ^ (2 - 2 / q) * (2 ^ ((3 * π + 15 + 5 * (π / 4)) * a ^ 3)) ^ (2 / q - 1) := by rw [Forest.G2_0_4, ENNReal.coe_mul, ENNReal.coe_pow, ENNReal.coe_rpow_of_ne_zero two_ne_zero, Forest.C2_0_4_aux] simp only [ENNReal.coe_ofNat] rw [ENNReal.mul_rpow_of_nonneg _ _ egpos.le] simp only [ENNReal.coe_pow, ENNReal.coe_ofNat] gcongr _ * (2 ^ ?_) ^ _ Β· norm_num have : π / 2 β€ 2 * (π / 4) + 1 := by lia grw [this] ring_nf lia _ = _ := by rw [β mul_rotate, β ENNReal.rpow_add_of_nonneg _ _ efpos.le egpos.le, add_comm (2/q - 1), esum, ENNReal.rpow_one, β ENNReal.rpow_mul, C2_0_4, C2_0_4_base, ENNReal.coe_mul, ENNReal.coe_pow, ENNReal.coe_rpow_of_ne_zero two_ne_zero, neg_div, show -(n / 2) * (2 - 2 / q) = -(1 - 1 / q) * n by ring] congr; rw [sub_div, div_self (q_pos X).ne']