Skip to content

Commit 4948e4d

Browse files
authored
define vol in ENNReal (#260)
* Define `vol` in the root namespace that lives in `ENNReal`. `Real.vol` is still available. * put `C_K` in `NNReal` * prove `ENNReal`-versions of the `IsOneSidedKernel`-axioms. Replace the axiom in `IsTwoSidedKernel` with its `ENNReal` version. (Doing that for `IsOneSidedKernel` is a todo.) * Prove `ENNReal` version of `kernel_bound`. (The old version is `kernel_bound_old`.)
1 parent ee78b45 commit 4948e4d

File tree

6 files changed

+125
-52
lines changed

6 files changed

+125
-52
lines changed

Carleson/Antichain/AntichainOperator.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ lemma norm_Ks_le' {x y : X} {𝔄 : Set (𝔓 X)} (p : 𝔄) (hxE : x ∈ E ↑p
146146
have h8Dpow_pos : 0 < 8 * (D : ℝ) ^ 𝔰 p.1 := mul_defaultD_pow_pos _ (by linarith) _
147147
have hdist_cp : dist x (𝔠 p) ≤ 4*D ^ 𝔰 p.1 := le_of_lt (mem_ball.mp (Grid_subset_ball hxE.1))
148148
have h : ‖Ks (𝔰 p.1) x y‖₊ ≤ (2 : ℝ≥0)^(a^3) / volume.nnreal (ball x (D ^ (𝔰 p.1 - 1)/4)) := by
149-
apply le_trans (NNReal.coe_le_coe.mpr kernel_bound)
149+
apply le_trans (NNReal.coe_le_coe.mpr kernel_bound_old)
150150
rw [NNReal.coe_div, NNReal.coe_pow, NNReal.coe_ofNat, ← NNReal.val_eq_coe, measureNNReal_val]
151151
exact div_le_div_of_nonneg_left (pow_nonneg zero_le_two _)
152152
(measure_ball_pos_real x _ (div_pos (zpow_pos (defaultD_pos _) _) zero_lt_four))

Carleson/Classical/CarlesonOnTheRealLine.lean

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -486,12 +486,24 @@ instance real_van_der_Corput : IsCancellative ℝ (defaultτ 4) where
486486
norm_cast
487487

488488

489+
-- remove?
489490
lemma Real.vol_real_eq {x y : ℝ} : Real.vol x y = 2 * |x - y| := by
490-
rw [Real.vol, measureReal_def, Real.dist_eq, Real.volume_ball, ENNReal.toReal_ofReal (by linarith [abs_nonneg (x-y)])]
491+
rw [Real.vol, measureReal_def, Real.dist_eq, Real.volume_ball,
492+
ENNReal.toReal_ofReal (by linarith [abs_nonneg (x-y)])]
491493

494+
-- proof can be simplified with enorm lemma
495+
lemma Real.vol_eq {x y : ℝ} : vol x y = 2 * ‖x - y‖ₑ := by
496+
rw [vol, Real.volume_ball, ofReal_mul (by positivity), ← edist_dist, edist_eq_enorm_sub,
497+
ofReal_ofNat]
498+
499+
-- remove?
492500
lemma Real.vol_real_symm {x y : ℝ} : Real.vol x y = Real.vol y x := by
493501
rw [Real.vol_real_eq, Real.vol_real_eq, abs_sub_comm]
494502

503+
-- proof can be simplified with enorm lemma
504+
lemma Real.vol_symm {x y : ℝ} : vol x y = vol y x := by
505+
simp_rw [Real.vol_eq, ← ofReal_norm, norm_sub_rev]
506+
495507
instance isOneSidedKernelHilbert : IsOneSidedKernel 4 K where
496508
/- uses Hilbert_kernel_bound -/
497509
norm_K_le_vol_inv := by
@@ -529,11 +541,11 @@ instance isOneSidedKernelHilbert : IsOneSidedKernel 4 K where
529541
instance isTwoSidedKernelHilbert : IsTwoSidedKernel 4 K where
530542
norm_K_sub_le' := by
531543
intro x x' y h
532-
rw [Hilbert_kernel_conj_symm, @Hilbert_kernel_conj_symm y x', ← map_sub, Complex.norm_conj,
533-
dist_comm x y, Real.vol_real_symm]
534544
rw [dist_comm x y] at h
535-
exact isOneSidedKernelHilbert.norm_K_sub_le h
536-
#synth DoublingMeasure ℝ _
545+
rw [Hilbert_kernel_conj_symm, @Hilbert_kernel_conj_symm y x', ← map_sub, ← ofReal_norm,
546+
Complex.norm_conj, edist_comm x y, Real.vol_symm, ofReal_norm_eq_enorm]
547+
exact enorm_K_sub_le (K := K) h
548+
537549
local notation "T" => carlesonOperatorReal K
538550

539551
--TODO : change name to reflect that this only holds for a specific instance of CarlesonOperaterReal?

Carleson/Defs.lean

Lines changed: 62 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import Carleson.ToMathlib.DoublingMeasure
22
import Carleson.ToMathlib.WeakType
3+
import Carleson.ToMathlib.Data.ENNReal
34
import Mathlib.Algebra.Order.Group.Int
45
import Mathlib.Analysis.CStarAlgebra.Classes
56
import Mathlib.Data.Int.Star
67

7-
open MeasureTheory Measure NNReal Metric Complex Set TopologicalSpace Bornology Function
8-
open scoped ENNReal
8+
open MeasureTheory Measure Metric Complex Set TopologicalSpace Bornology Function ENNReal
9+
open scoped NNReal
910
noncomputable section
1011

1112
-- todo: rename and protect `Real.RCLike`
@@ -173,11 +174,24 @@ class IsCancellative (τ : ℝ) [CompatibleFunctions ℝ X A] : Prop where
173174

174175
export IsCancellative (norm_integral_exp_le)
175176

176-
/-- The "volume function" `V`. Note that we will need to assume
177-
`IsFiniteMeasureOnCompacts` and `ProperSpace` to actually know that this volume is finite. -/
178-
def Real.vol {X : Type*} [PseudoMetricSpace X] [MeasureSpace X] (x y : X) : ℝ :=
177+
/-- The "volume function" `V`. Preferably use `vol` instead. -/
178+
protected def Real.vol {X : Type*} [PseudoMetricSpace X] [MeasureSpace X] (x y : X) : ℝ :=
179179
volume.real (ball x (dist x y))
180180

181+
/-- The "volume function" `V`. We will need to assume
182+
`IsFiniteMeasureOnCompacts` and `ProperSpace` to actually know that this volume is finite. -/
183+
def vol {X : Type*} [PseudoMetricSpace X] [MeasureSpace X] (x y : X) : ℝ≥0∞ :=
184+
volume (ball x (dist x y))
185+
186+
lemma Real.vol_def {X : Type*} [PseudoMetricSpace X] [MeasureSpace X] {x y : X} :
187+
Real.vol x y = (vol x y).toReal := rfl
188+
189+
lemma ofReal_vol {X : Type*} [PseudoMetricSpace X] [MeasureSpace X] [ProperSpace X]
190+
[IsFiniteMeasureOnCompacts (volume : Measure X)] {x y : X} :
191+
ENNReal.ofReal (Real.vol x y) = vol x y := by
192+
simp_rw [Real.vol_def, ENNReal.ofReal_toReal_eq_iff, vol]
193+
apply measure_ball_ne_top
194+
181195
-- /-- In Mathlib we only have the operator norm for continuous linear maps,
182196
-- and `T_*` is not linear.
183197
-- Here is the norm for an arbitrary map `T` between normed spaces
@@ -245,22 +259,24 @@ lemma mul_defaultD_pow_pos (a : ℕ) {r : ℝ} (hr : 0 < r) (z : ℤ) : 0 < r *
245259
section Kernel
246260

247261
variable {X : Type*} {a : ℕ} {K : X → X → ℂ} [PseudoMetricSpace X] [MeasureSpace X]
248-
open Real (vol)
249262
open Function
250263

251264
/-- The constant used twice in the definition of the Calderon-Zygmund kernel. -/
252-
@[simp] def C_K (a : ℝ) : ℝ := 2 ^ a ^ 3
265+
@[simp] def C_K (a : ℝ) : ℝ0 := 2 ^ a ^ 3
253266

254-
lemma C_K_pos (a : ℝ) : 0 < C_K a := by unfold C_K; positivity
267+
lemma C_K_pos {a : ℝ} : 0 < C_K a := NNReal.rpow_pos (by norm_num)
268+
lemma C_K_pos_real {a : ℝ} : 0 < (C_K a : ℝ) := C_K_pos
255269

256270
/-- `K` is a one-sided Calderon-Zygmund kernel
257271
In the formalization `K x y` is defined everywhere, even for `x = y`. The assumptions on `K` show
258-
that `K x x = 0`. -/
272+
that `K x x = 0`.
273+
274+
Todo: maybe make enorm_K_le_vol_inv + enorm_K_sub_le + K_eq_zero_of_dist_eq_zero the axioms. -/
259275
class IsOneSidedKernel (a : outParam ℕ) (K : X → X → ℂ) : Prop where
260276
measurable_K : Measurable (uncurry K)
261-
norm_K_le_vol_inv (x y : X) : ‖K x y‖ ≤ C_K a / vol x y
277+
norm_K_le_vol_inv (x y : X) : ‖K x y‖ ≤ C_K a / Real.vol x y
262278
norm_K_sub_le {x y y' : X} (h : 2 * dist y y' ≤ dist x y) :
263-
‖K x y - K x y'‖ ≤ (dist y y' / dist x y) ^ (a : ℝ)⁻¹ * (C_K a / vol x y)
279+
‖K x y - K x y'‖ ≤ (dist y y' / dist x y) ^ (a : ℝ)⁻¹ * (C_K a / Real.vol x y)
264280

265281
export IsOneSidedKernel (measurable_K norm_K_le_vol_inv norm_K_sub_le)
266282

@@ -278,27 +294,47 @@ lemma measurable_K_left [IsOneSidedKernel a K] (y : X) : Measurable (K · y) :=
278294
lemma measurable_K_right [IsOneSidedKernel a K] (x : X) : Measurable (K x) :=
279295
measurable_K.of_uncurry_left
280296

281-
lemma integrableOn_K_Icc [IsOpenPosMeasure (volume : Measure X)] [ProperSpace X]
297+
lemma enorm_K_le_vol_inv [ProperSpace X] [IsFiniteMeasureOnCompacts (volume : Measure X)]
298+
[IsOneSidedKernel a K] (x y : X) : ‖K x y‖ₑ ≤ (C_K a : ℝ≥0∞) / vol x y := by
299+
rw [← ofReal_norm, ← ofReal_vol, ← ofReal_coe_nnreal]
300+
refine le_trans ?_ (ofReal_div_le measureReal_nonneg)
301+
gcongr
302+
apply norm_K_le_vol_inv
303+
304+
305+
lemma enorm_K_sub_le [ProperSpace X] [IsFiniteMeasureOnCompacts (volume : Measure X)]
306+
[IsOneSidedKernel a K] {x y y' : X} (h : 2 * dist y y' ≤ dist x y) :
307+
‖K x y - K x y'‖ₑ ≤ (edist y y' / edist x y) ^ (a : ℝ)⁻¹ * (C_K a / vol x y) := by
308+
simp_rw [← ofReal_norm, ← ofReal_vol, ← ofReal_coe_nnreal, edist_dist]
309+
calc
310+
_ ≤ ENNReal.ofReal ((dist y y' / dist x y) ^ (a : ℝ)⁻¹ * (C_K a / Real.vol x y)) := by
311+
gcongr; apply norm_K_sub_le h
312+
_ ≤ _ := by
313+
rw [ENNReal.ofReal_mul']; swap
314+
· exact div_nonneg NNReal.zero_le_coe measureReal_nonneg
315+
gcongr
316+
· rw [← ENNReal.ofReal_rpow_of_nonneg (by positivity) (by positivity)]
317+
gcongr
318+
apply ofReal_div_le (by positivity)
319+
· exact ofReal_div_le measureReal_nonneg
320+
321+
lemma integrableOn_K_Icc [IsOpenPosMeasure (volume : Measure X)]
322+
[IsFiniteMeasureOnCompacts (volume : Measure X)] [ProperSpace X]
282323
[Regular (volume : Measure X)] [IsOneSidedKernel a K] {x : X} {r R : ℝ} (hr : r > 0) :
283324
IntegrableOn (K x) {y | dist x y ∈ Icc r R} volume := by
284325
use Measurable.aestronglyMeasurable (measurable_K_right x)
285326
rw [hasFiniteIntegral_def]
286327
calc ∫⁻ (y : X) in {y | dist x y ∈ Icc r R}, ‖K x y‖ₑ
287-
_ ≤ ∫⁻ (y : X) in {y | dist x y ∈ Icc r R},
288-
ENNReal.ofReal (C_K a / volume.real (ball x r)) := by
328+
_ ≤ ∫⁻ (y : X) in {y | dist x y ∈ Icc r R}, C_K a / volume (ball x r) := by
289329
refine setLIntegral_mono measurable_const (fun y hy ↦ ?_)
290-
rw [← ofReal_norm]
291-
refine ENNReal.ofReal_le_ofReal <| (norm_K_le_vol_inv x y).trans ?_
330+
refine (enorm_K_le_vol_inv x y).trans ?_
331+
rw [vol]
292332
gcongr
293-
· exact (C_K_pos a).le
294-
· rw [measureReal_def]
295-
apply ENNReal.toReal_pos (ne_of_gt <| measure_ball_pos volume x hr)
296-
exact measure_ball_ne_top x r
297-
· exact measureReal_mono (ball_subset_ball hy.1)
333+
exact hy.1
298334
_ < _ := by
299-
rw [lintegral_const]
300-
apply ENNReal.mul_lt_top ENNReal.ofReal_lt_top
301-
rw [Measure.restrict_apply MeasurableSet.univ, univ_inter]
335+
rw [setLIntegral_const]
336+
apply ENNReal.mul_lt_top (ENNReal.div_lt_top ENNReal.coe_ne_top _); swap
337+
· simp_rw [← pos_iff_ne_zero, measure_ball_pos _ _ hr]
302338
refine (Ne.lt_top fun h ↦ ?_)
303339
have : {y | dist x y ∈ Icc r R} ⊆ closedBall x R := by
304340
intro y ⟨_, hy⟩
@@ -310,7 +346,7 @@ In the formalization `K x y` is defined everywhere, even for `x = y`. The assump
310346
that `K x x = 0`. -/
311347
class IsTwoSidedKernel (a : outParam ℕ) (K : X → X → ℂ) extends IsOneSidedKernel a K where
312348
norm_K_sub_le' {x x' y : X} (h : 2 * dist x x' ≤ dist x y) :
313-
‖K x y - K x' y‖ ≤ (dist x x' / dist x y) ^ (a : ℝ)⁻¹ * (C_K a / vol x y)
349+
‖K x y - K x' y‖ ≤ (edist x x' / edist x y) ^ (a : ℝ)⁻¹ * (C_K a / vol x y)
314350

315351
export IsTwoSidedKernel (norm_K_sub_le')
316352

@@ -364,7 +400,7 @@ lemma le_cdist_iterate {x : X} {r : ℝ} (hr : 0 ≤ r) (f g : Θ X) (k : ℕ) :
364400
| succ k ih =>
365401
trans 2 * dist_{x, (defaultA a) ^ k * r} f g
366402
· rw [pow_succ', mul_assoc]
367-
exact (mul_le_mul_left zero_lt_two).mpr ih
403+
exact (_root_.mul_le_mul_left zero_lt_two).mpr ih
368404
· convert le_cdist (ball_subset_ball _) using 1
369405
· exact dist_congr rfl (by rw [← mul_assoc, pow_succ'])
370406
· nth_rw 1 [← one_mul ((defaultA a) ^ k * r)]; gcongr

Carleson/Psi.lean

Lines changed: 30 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -369,8 +369,8 @@ def C2_1_3 (a : ℝ≥0) : ℝ≥0 := 2 ^ (102 * (a : ℝ) ^ 3)
369369
/-- The constant appearing in part 3 of Lemma 2.1.3. -/
370370
def D2_1_3 (a : ℝ≥0) : ℝ≥0 := 2 ^ (150 * (a : ℝ) ^ 3)
371371

372-
--1.0.14.
373-
lemma kernel_bound {s : ℤ} {x y : X} :
372+
/-- preferably use `kernel_bound` instead. -/
373+
lemma kernel_bound_old {s : ℤ} {x y : X} :
374374
‖Ks s x y‖₊ ≤ 2 ^ a ^ 3 / volume.nnreal (ball x (dist x y)) := by
375375
change ‖K x y * ψ (D ^ (-s) * dist x y)‖ ≤ 2 ^ a ^ 3 / volume.real (ball x (dist x y))
376376
apply le_trans <| calc
@@ -382,6 +382,17 @@ lemma kernel_bound {s : ℤ} {x y : X} :
382382
unfold C_K
383383
norm_cast
384384

385+
-- 1.0.14.
386+
lemma kernel_bound {s : ℤ} {x y : X} : ‖Ks s x y‖ₑ ≤ C_K a / vol x y := by
387+
change ‖K x y * ψ (D ^ (-s) * dist x y)‖ₑ ≤ C_K a / volume (ball x (dist x y))
388+
calc
389+
‖K x y * ψ (D ^ (-s) * dist x y)‖ₑ
390+
= ‖K x y‖ₑ * ‖(ψ (D ^ (-s) * dist x y) : ℂ)‖ₑ := enorm_mul ..
391+
_ ≤ ‖K x y‖ₑ * 1 := by
392+
gcongr; rw [← ofReal_norm, norm_real]; norm_cast; exact abs_ψ_le_one D _
393+
_ ≤ ‖K x y‖ₑ := by rw [mul_one]
394+
_ ≤ _ := enorm_K_le_vol_inv x y
395+
385396
variable (s)
386397

387398
/-- Apply `volume_ball_two_le_same` `n` times. -/
@@ -411,17 +422,20 @@ lemma Metric.measure_ball_pos_real (x : X) (r : ℝ) (hr : r > 0) : volume.real
411422
include a q K σ₁ σ₂ F G in
412423
lemma K_eq_K_of_dist_eq_zero {x y y' : X} (hyy' : dist y y' = 0) :
413424
K x y = K x y' := by
414-
suffices ‖K x y - K x y'‖ = 0 by rwa [norm_sub_eq_zero_iff] at this
415-
suffices ‖K x y - K x y'‖ ≤ 0 from le_antisymm this (norm_nonneg (K x y - K x y'))
416-
convert norm_K_sub_le (K := K) (x := x) (y := y) (y' := y')
425+
suffices ‖K x y - K x y'‖ = 0 by rwa [enorm_eq_zero, sub_eq_zero] at this
426+
suffices ‖K x y - K x y'‖0 from le_antisymm this (zero_le _)
427+
convert enorm_K_sub_le (K := K) (x := x) (y := y) (y' := y')
417428
(by simp only [hyy', mul_zero, dist_nonneg])
418-
suffices (0 : ℝ) ^ (a : ℝ)⁻¹ = 0 by simp [hyy', this]
419-
simp [inv_ne_zero (show (a : ℝ) ≠ 0 by norm_cast; linarith [four_le_a X])]
429+
replace hyy' : edist y y' = 0 := by rw [edist_dist, hyy', ENNReal.ofReal_zero]
430+
suffices (0 : ℝ≥0∞) ^ (a : ℝ)⁻¹ = 0 by simp [hyy', this]
431+
have : 0 < a := by linarith [four_le_a X]
432+
simp [this]
420433

421434
include a q K σ₁ σ₂ F G in
422435
lemma K_eq_zero_of_dist_eq_zero {x y : X} (hxy : dist x y = 0) :
423436
K x y = 0 :=
424-
norm_le_zero_iff.1 (by simpa [hxy, Real.vol] using norm_K_le_vol_inv x y)
437+
norm_le_zero_iff.1 <| by
438+
simpa [hxy, Real.vol, ENNReal.div_zero] using norm_K_le_vol_inv (K := K) x y
425439

426440
variable {s}
427441

@@ -450,13 +464,14 @@ private lemma div_vol_le₀ {x y : X} {c : ℝ} (hc : c > 0) (hK : Ks s x y ≠
450464
(2 ^ (2 * a + 100 * a ^ 3)) * c / volume.real (ball x (D ^ s)) := by
451465
simpa using div_vol_le hc (mem_Icc.1 (dist_mem_Icc_of_Ks_ne_zero hK)).1 0
452466

467+
-- preferably use `enorm_K_le`
453468
lemma norm_K_le {s : ℤ} {x y : X} (n : ℕ) (hxy : dist x y ≥ D ^ (s - 1) / 4) :
454469
‖K x y‖ ≤ 2 ^ ((2 + n) * (a : ℝ) + 101 * a ^ 3) / volume.real (ball x (2 ^ n * D ^ s)) := by
455470
by_cases h : dist x y = 0
456471
· rw [K_eq_zero_of_dist_eq_zero h, norm_zero]; positivity
457472
apply (norm_K_le_vol_inv x y).trans
458473
unfold C_K
459-
apply le_trans (div_vol_le (by positivity) hxy n)
474+
apply le_trans (div_vol_le (by norm_cast; positivity) hxy n)
460475
apply div_le_div_of_nonneg_right _ measureReal_nonneg
461476
exact_mod_cast le_of_eq (by ring)
462477

@@ -616,7 +631,6 @@ private lemma norm_Ks_sub_Ks_le₀₀ {s : ℤ} {x y y' : X} (hK : Ks s x y ≠
616631
(hyy' : 2 * dist y y' ≤ dist x y) : ‖K x y - K x y'‖ * |ψ (D ^ (-s) * dist x y')| ≤
617632
(2 : ℝ) ^ (1 + 102 * a + 101 * a ^ 3) / volume.real (ball x (D ^ s)) *
618633
(dist y y' / D ^ s) ^ (a : ℝ)⁻¹ := by
619-
have CKa0 : C_K a > 0 := by unfold C_K; positivity
620634
have D1 := D1 X
621635
have d0 : dist x y > 0 :=
622636
lt_of_lt_of_le (by positivity) (mem_Icc.1 (dist_mem_Icc_of_Ks_ne_zero hK)).1
@@ -635,7 +649,7 @@ private lemma norm_Ks_sub_Ks_le₀₀ {s : ℤ} {x y y' : X} (hK : Ks s x y ≠
635649
have : (dist y y' / dist x y) ^ (a : ℝ)⁻¹ ≤ (dist y y' / D ^ s * (4 * D)) ^ (a : ℝ)⁻¹ := by
636650
apply Real.rpow_le_rpow (div_nonneg dist_nonneg dist_nonneg) this (by positivity)
637651
rw [Real.mul_rpow (div_nonneg dist_nonneg (Ds0 X s).le) (fourD0 D1).le] at this
638-
apply le_trans <| mul_le_mul this (div_vol_le₀ CKa0 hK) (by positivity) (by positivity)
652+
apply le_trans <| mul_le_mul this (div_vol_le₀ C_K_pos_real hK) (by simp; positivity) (by positivity)
639653
rw [(by ring : (dist y y' / D ^ s) ^ (a : ℝ)⁻¹ * (4 * D) ^ (a : ℝ)⁻¹ *
640654
(2 ^ (2 * a + 100 * a ^ 3) * C_K a / volume.real (ball x (D ^ s))) =
641655
(4 * D) ^ (a : ℝ)⁻¹ * 2 ^ (2 * a + 100 * a ^ 3) * C_K a / volume.real (ball x (D ^ s)) *
@@ -663,9 +677,8 @@ private lemma norm_Ks_sub_Ks_le₀₁ {s : ℤ} {x y y' : X} (hK : Ks s x y ≠
663677
rw [this]
664678
refine mul_le_mul ?_ ψ_ineq (abs_nonneg _) (by positivity)
665679
apply le_trans <| norm_K_le_vol_inv x y
666-
unfold C_K
667-
apply le_of_le_of_eq <| div_vol_le₀ (by positivity) hK
668-
rw_mod_cast [← pow_add, (show 2 * a + 100 * a ^ 3 + a ^ 3 = 2 * a + 101 * a ^ 3 by ring)]
680+
apply le_of_le_of_eq <| div_vol_le₀ C_K_pos_real hK
681+
rw_mod_cast [C_K, ← pow_add, (show 2 * a + 100 * a ^ 3 + a ^ 3 = 2 * a + 101 * a ^ 3 by ring)]
669682

670683
-- Special case of `norm_Ks_sub_Ks_le`
671684
private lemma norm_Ks_sub_Ks_le₀ {s : ℤ} {x y y' : X} (hK : Ks s x y ≠ 0)
@@ -848,8 +861,8 @@ lemma integrable_Ks_x {s : ℤ} {x : X} (hD : 1 < (D : ℝ)) : Integrable (Ks s
848861
positivity
849862
· simp only [hy, reduceIte, K₀]
850863
apply (norm_K_le_vol_inv x y).trans
864+
rw [Real.vol]
851865
gcongr
852-
· exact (C_K_pos a).le
853866
· exact measure_ball_pos_real x _ (div_pos (Ds0 X s) (fourD0 hD))
854-
· exact ENNReal.toReal_mono (measure_ball_ne_top x (dist x y)) <|
855-
measure_mono <| ball_subset_ball (lt_of_not_ge hy).le
867+
· exact measure_ball_ne_top x (dist x y)
868+
· exact le_of_not_le hy

Carleson/ToMathlib/Data/ENNReal.lean

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,18 @@ variable {α ι : Type*} {s : Set ι} {t : Finset α}
1212

1313
namespace ENNReal
1414

15+
attribute [simp] ofReal_of_nonpos
16+
-- protect ENNReal.mul_le_mul_left
17+
18+
theorem ofReal_inv_le {x : ℝ} : ENNReal.ofReal x⁻¹ ≤ (ENNReal.ofReal x)⁻¹ := by
19+
obtain hx|hx := lt_or_le 0 x <;> simp [ofReal_inv_of_pos, hx]
20+
21+
theorem ofReal_div_le {x y : ℝ} (hy : 0 ≤ y) :
22+
ENNReal.ofReal (x / y) ≤ ENNReal.ofReal x / ENNReal.ofReal y := by
23+
simp_rw [div_eq_mul_inv, ofReal_mul' (inv_nonneg.2 hy)]
24+
gcongr
25+
apply ofReal_inv_le
26+
1527
lemma coe_biSup {f : ι → ℝ≥0} (hf : BddAbove (range f)) :
1628
⨆ x ∈ s, f x = ⨆ x ∈ s, (f x : ℝ≥0∞) := by
1729
simp_rw [bddAbove_def, mem_range, forall_exists_index, forall_apply_eq_imp_iff] at hf

Carleson/TwoSidedCarleson/MainTheorem.lean

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ noncomputable section
99
/-- The constant used in `two_sided_metric_carleson`.
1010
Has value `2 ^ (452 * a ^ 3) / (q - 1) ^ 6` in the blueprint. -/
1111
-- todo: put C_K in NNReal?
12-
def C10_0_1 (a : ℕ) (q : ℝ≥0) : ℝ≥0 := (C_K a, C_K_pos _ |>.le⟩) ^ 2 * C1_0_2 a q
12+
def C10_0_1 (a : ℕ) (q : ℝ≥0) : ℝ≥0 := (C_K a) ^ 2 * C1_0_2 a q
1313

1414
lemma C10_0_1_pos {a : ℕ} {q : ℝ≥0} (hq : 1 < q) : 0 < C10_0_1 a q :=
15-
_root_.mul_pos (pow_two_pos_of_ne_zero
16-
(by simp_rw [ne_eq, ← NNReal.coe_eq_zero, NNReal.coe_mk, C_K_pos _ |>.ne', not_false_eq_true])) (C1_0_2_pos hq)
15+
mul_pos (pow_two_pos_of_ne_zero <| by simp_rw [ne_eq, C_K_pos.ne', not_false_eq_true])
16+
(C1_0_2_pos hq)
1717

1818
variable {X : Type*} {a : ℕ} [MetricSpace X] [DoublingMeasure X (defaultA a : ℕ)]
1919
variable {τ C r R : ℝ} {q q' : ℝ≥0}

0 commit comments

Comments
 (0)