diff --git a/Carleson/AntichainOperator.lean b/Carleson/AntichainOperator.lean index d37c7438..c7608b38 100644 --- a/Carleson/AntichainOperator.lean +++ b/Carleson/AntichainOperator.lean @@ -1,22 +1,21 @@ import Carleson.GridStructure -variable {π•œ : Type*} [_root_.RCLike π•œ] -variable {X : Type*} {A : ℝ} [PseudoMetricSpace X] [DoublingMeasure X A] -variable {D ΞΊ C : ℝ} {S : β„€} {o : X} -variable [FunctionDistances ℝ X] {Q : X β†’ Θ X} [TileStructure Q D ΞΊ C S o] +open scoped ShortVariables +variable {X : Type*} {a q : ℝ} {K : X β†’ X β†’ β„‚} {σ₁ Οƒβ‚‚ : X β†’ β„€} {F G : Set X} + [ProofData a q K σ₁ Οƒβ‚‚ F G] [TileStructure Q D ΞΊ S o] open scoped GridStructure open Set -- Lemma 6.1.1 lemma E_disjoint (Οƒ Οƒ' : X β†’ β„€) {𝔄 : Set (𝔓 X)} (h𝔄 : IsAntichain (·≀·) 𝔄) {p p' : 𝔓 X} - (hp : p ∈ 𝔄) (hp' : p' ∈ 𝔄) (hE : (E Οƒ Οƒ' p ∩ E Οƒ Οƒ' p').Nonempty) : p = p' := by + (hp : p ∈ 𝔄) (hp' : p' ∈ 𝔄) (hE : (E p ∩ E p').Nonempty) : p = p' := by set x := hE.some have hx := hE.some_mem simp only [E, mem_inter_iff, mem_setOf_eq] at hx wlog h𝔰 : 𝔰 p ≀ 𝔰 p' - Β· have hE' : (E Οƒ Οƒ' p' ∩ E Οƒ Οƒ' p).Nonempty := by simp only [inter_comm, hE] - exact eq_comm.mp (this (π•œ := π•œ) Οƒ Οƒ' h𝔄 hp' hp hE' hE'.some_mem (le_of_lt (not_le.mp h𝔰))) + Β· have hE' : (E p' ∩ E p).Nonempty := by simp only [inter_comm, hE] + exact eq_comm.mp (this Οƒ Οƒ' h𝔄 hp' hp hE' hE'.some_mem (le_of_lt (not_le.mp h𝔰))) obtain ⟨⟨hx𝓓p, hxΞ©p, _⟩ , hx𝓓p', hxΞ©p', _⟩ := hx have h𝓓 : 𝓓 (π“˜ p) βŠ† 𝓓 (π“˜ p') := (or_iff_left (not_disjoint_iff.mpr ⟨x, hx𝓓p, hx𝓓p'⟩)).mp (fundamental_dyadic h𝔰) diff --git a/Carleson/Defs.lean b/Carleson/Defs.lean index 9accbd1b..578fd846 100644 --- a/Carleson/Defs.lean +++ b/Carleson/Defs.lean @@ -10,6 +10,7 @@ noncomputable section These are mostly the definitions used to state the metric Carleson theorem. We should move them to separate files once we start proving things about them. -/ +section DoublingMeasure universe u variable {π•œ X : Type*} {A : ℝ} [_root_.RCLike π•œ] [PseudoMetricSpace X] [DoublingMeasure X A] @@ -139,6 +140,7 @@ def cancelPt [CompatibleFunctions π•œ X A] : X := def cancelPt_eq_zero [CompatibleFunctions π•œ X A] {f : Θ X} : f (cancelPt X) = 0 := CompatibleFunctions.eq_zero (π•œ := π•œ) |>.choose_spec f +-- not sure if needed lemma CompatibleFunctions.IsSeparable [CompatibleFunctions π•œ X A] : IsSeparable (range (coeΘ (X := X))) := sorry @@ -195,25 +197,30 @@ Reference: https://arxiv.org/abs/math/9910039 Lemma 3.6 - Lemma 3.9 -/ -/-- This is usually the value of the argument `A` in `DoublingMeasure` -and `CompatibleFunctions` -/ -@[simp] abbrev defaultA (a : ℝ) : ℝ := 2 ^ a -@[simp] def defaultD (a : ℝ) : ℝ := 2 ^ (100 * a ^ 2) -@[simp] def defaultΞΊ (a : ℝ) : ℝ := 2 ^ (- 10 * a) -@[simp] def defaultZ (a : ℝ) : ℝ := 2 ^ (12 * a) - /-- This can be useful to say that `β€–Tβ€– ≀ c`. -/ def NormBoundedBy {E F : Type*} [NormedAddCommGroup E] [NormedAddCommGroup F] (T : E β†’ F) (c : ℝ) : Prop := βˆ€ x, β€–T xβ€– ≀ c * β€–xβ€– +/-- An operator has strong type (p, q) if it is bounded as an operator on L^p β†’ L^q. +We write `HasStrongType T ΞΌ Ξ½ p p' c` to say that `T` has strong type (p, q) w.r.t. measures `ΞΌ`, `Ξ½` and constant `c`. -/ def HasStrongType {E E' Ξ± Ξ±' : Type*} [NormedAddCommGroup E] [NormedAddCommGroup E'] {_x : MeasurableSpace Ξ±} {_x' : MeasurableSpace Ξ±'} (T : (Ξ± β†’ E) β†’ (Ξ±' β†’ E')) (ΞΌ : Measure Ξ±) (Ξ½ : Measure Ξ±') (p p' : ℝβ‰₯0∞) (c : ℝβ‰₯0) : Prop := βˆ€ f : Ξ± β†’ E, Memβ„’p f p ΞΌ β†’ AEStronglyMeasurable (T f) Ξ½ ∧ snorm (T f) p' Ξ½ ≀ c * snorm f p ΞΌ +-- todo: define `HasWeakType` + +/-- A weaker version of `HasStrongType`, where we add additional assumptions on the function `f`. +Note(F): I'm not sure if this is an equivalent characterization of having weak type (p, q) -/ +def HasBoundedStrongType {E E' Ξ± Ξ±' : Type*} [NormedAddCommGroup E] [NormedAddCommGroup E'] + {_x : MeasurableSpace Ξ±} {_x' : MeasurableSpace Ξ±'} (T : (Ξ± β†’ E) β†’ (Ξ±' β†’ E')) + (ΞΌ : Measure Ξ±) (Ξ½ : Measure Ξ±') (p p' : ℝβ‰₯0∞) (c : ℝβ‰₯0) : Prop := + βˆ€ f : Ξ± β†’ E, Memβ„’p f p ΞΌ β†’ snorm f ∞ ΞΌ < ∞ β†’ ΞΌ (support f) < ∞ β†’ + AEStronglyMeasurable (T f) Ξ½ ∧ snorm (T f) p' Ξ½ ≀ c * snorm f p ΞΌ + set_option linter.unusedVariables false in -/-- The associated nontangential Calderon Zygmund operator -/ +/-- The associated nontangential Calderon Zygmund operator `T_*` -/ def ANCZOperator (K : X β†’ X β†’ β„‚) (f : X β†’ β„‚) (x : X) : ℝ := ⨆ (R₁ : ℝ) (Rβ‚‚ : ℝ) (h1 : R₁ < Rβ‚‚) (x' : X) (h2 : dist x x' ≀ R₁), β€–βˆ« y in {y | dist x' y ∈ Ioo R₁ Rβ‚‚}, K x' y * f yβ€–β‚Š |>.toReal @@ -230,3 +237,74 @@ Use `ENNReal.toReal` to get the corresponding real number. -/ def CarlesonOperator [FunctionDistances ℝ X] (K : X β†’ X β†’ β„‚) (f : X β†’ β„‚) (x : X) : ℝβ‰₯0∞ := ⨆ (Q : Θ X) (R₁ : ℝ) (Rβ‚‚ : ℝ) (_ : 0 < R₁) (_ : R₁ < Rβ‚‚), β†‘β€–βˆ« y in {y | dist x y ∈ Ioo R₁ Rβ‚‚}, K x y * f y * exp (I * Q y)β€–β‚Š + + +end DoublingMeasure + + +/-- This is usually the value of the argument `A` in `DoublingMeasure` +and `CompatibleFunctions` -/ +@[simp] abbrev defaultA (a : ℝ) : ℝ := 2 ^ a +@[simp] def defaultD (a : ℝ) : ℝ := 2 ^ (100 * a ^ 2) +@[simp] def defaultΞΊ (a : ℝ) : ℝ := 2 ^ (- 10 * a) +@[simp] def defaultZ (a : ℝ) : ℝ := 2 ^ (12 * a) + +/- A constant used on the boundedness of `T_*`. We generally assume +`HasBoundedStrongType (ANCZOperator K) volume volume 2 2 (C_Ts a)` +throughout this formalization. -/ +def C_Ts (a : ℝ) : ℝβ‰₯0 := 2 ^ a ^ 3 + +/-- Data common through most of chapters 2-9. -/ +class PreProofData {X : Type*} (a q : outParam ℝ) (K : outParam (X β†’ X β†’ β„‚)) + (σ₁ Οƒβ‚‚ : outParam (X β†’ β„€)) (F G : outParam (Set X)) where + m : PseudoMetricSpace X + d : DoublingMeasure X (2 ^ a) + ha : 4 ≀ a + cf : CompatibleFunctions ℝ X (2 ^ a) + c : IsCancellative X a⁻¹ + hasBoundedStrongType_T : HasBoundedStrongType (ANCZOperator K) volume volume 2 2 (C_Ts a) + hF : MeasurableSet F + hG : MeasurableSet G + m_σ₁ : Measurable σ₁ + m_Οƒβ‚‚ : Measurable Οƒβ‚‚ + f_σ₁ : Finite (range σ₁) + f_Οƒβ‚‚ : Finite (range Οƒβ‚‚) + hσ₁₂ : σ₁ ≀ Οƒβ‚‚ + Q : SimpleFunc X (Θ X) + hq : q ∈ Ioc 1 2 + + +export PreProofData (ha hasBoundedStrongType_T hF hG m_σ₁ m_Οƒβ‚‚ f_σ₁ f_Οƒβ‚‚ Q) +attribute [instance] PreProofData.m PreProofData.d PreProofData.cf PreProofData.c + +section ProofData + +variable {X : Type*} {a q : ℝ} {K : X β†’ X β†’ β„‚} {σ₁ Οƒβ‚‚ : X β†’ β„€} {F G : Set X} + +variable (X) in +def S_spec [PreProofData a q K σ₁ Οƒβ‚‚ F G] : βˆƒ n : β„•, βˆ€ x, -n ≀ σ₁ x ∧ Οƒβ‚‚ x ≀ n := sorry + +variable (X) in +open Classical in +def S [PreProofData a q K σ₁ Οƒβ‚‚ F G] : β„€ := Nat.find (S_spec X) + +lemma range_σ₁_subset [PreProofData a q K σ₁ Οƒβ‚‚ F G] : range σ₁ βŠ† Icc (- S X) (S X) := sorry + +lemma range_Οƒβ‚‚_subset [PreProofData a q K σ₁ Οƒβ‚‚ F G] : range Οƒβ‚‚ βŠ† Icc (- S X) (S X) := sorry + +end ProofData + +class ProofData {X : Type*} (a q : outParam ℝ) (K : outParam (X β†’ X β†’ β„‚)) + (σ₁ Οƒβ‚‚ : outParam (X β†’ β„€)) (F G : outParam (Set X)) extends PreProofData a q K σ₁ Οƒβ‚‚ F G where + F_subset : F βŠ† ball (cancelPt X) (defaultD a ^ S X) + G_subset : G βŠ† ball (cancelPt X) (defaultD a ^ S X) + +namespace ShortVariables + +set_option hygiene false +scoped notation "D" => defaultD a +scoped notation "ΞΊ" => defaultΞΊ a +scoped notation "o" => cancelPt X +scoped notation "S" => S X + +end ShortVariables diff --git a/Carleson/DiscreteCarleson.lean b/Carleson/DiscreteCarleson.lean index 8d80f119..36e6ce9d 100644 --- a/Carleson/DiscreteCarleson.lean +++ b/Carleson/DiscreteCarleson.lean @@ -12,32 +12,17 @@ def C2_2 (a : ℝ) (q : ℝ) : ℝ := 2 ^ (440 * a ^ 3) / (q - 1) ^ 4 lemma C2_2_pos (a q : ℝ) : C2_2 a q > 0 := sorry -def D2_2 (a : ℝ) : ℝ := 2 ^ (100 * a ^ 2) +open scoped ShortVariables +variable {X : Type*} {a q : ℝ} {K : X β†’ X β†’ β„‚} {σ₁ Οƒβ‚‚ : X β†’ β„€} {F G : Set X} -lemma D2_2_pos (a : ℝ) : D2_2 a > 0 := sorry +-- variable {X : Type*} {a : ℝ} [MetricSpace X] [DoublingMeasure X (2 ^ a)] [Inhabited X] +-- variable {Ο„ q q' D ΞΊ : ℝ} {Cβ‚€ C : ℝ} +-- variable [CompatibleFunctions ℝ X (2 ^ a)] [IsCancellative X Ο„] +-- variable {Q : X β†’ Θ X} {S : β„€} {o : X} [TileStructure Q D ΞΊ S o] +-- variable {F G : Set X} {σ₁ Οƒβ‚‚ : X β†’ β„€} {Q : X β†’ Θ X} +-- variable (K : X β†’ X β†’ β„‚) [IsCZKernel Ο„ K] -def ΞΊ2_2 (A : ℝ) (Ο„ q : ℝ) (C : ℝ) : ℝ := sorry - -lemma ΞΊ2_2_pos (A : ℝ) (Ο„ q : ℝ) (C : ℝ) : ΞΊ2_2 A Ο„ q C > 0 := sorry - -variable {X : Type*} {a : ℝ} [MetricSpace X] [DoublingMeasure X (2 ^ a)] [Inhabited X] -variable {Ο„ q q' D ΞΊ : ℝ} {Cβ‚€ C : ℝ} -variable [CompatibleFunctions ℝ X (2 ^ a)] [IsCancellative X Ο„] -variable {Q : X β†’ Θ X} {S : β„€} {o : X} [TileStructure Q D ΞΊ C S o] -variable {F G : Set X} {σ₁ Οƒβ‚‚ : X β†’ β„€} {Q : X β†’ Θ X} -variable (K : X β†’ X β†’ β„‚) [IsCZKernel Ο„ K] - --- todo: add some conditions that Οƒ and other functions have finite range? --- todo: fix statement -theorem discrete_carleson - (hA : 4 ≀ a) (hΟ„ : Ο„ ∈ Ioo 0 1) (hq : q ∈ Ioc 1 2) (hqq' : q.IsConjExponent q') - -- (hCβ‚€ : 0 < Cβ‚€) (hC : C2_2 A Ο„ q Cβ‚€ < C) (hD : D2_2 A Ο„ q Cβ‚€ < D) - (hΞΊ : ΞΊ ∈ Ioo 0 (ΞΊ2_2 (2 ^ a) Ο„ q Cβ‚€)) - (hF : MeasurableSet F) (hG : MeasurableSet G) - (h2F : IsBounded F) (h2G : IsBounded G) - (m_σ₁ : Measurable σ₁) (m_Οƒβ‚‚ : Measurable Οƒβ‚‚) - (hT : HasStrongType (ANCZOperator K) volume volume 2 2 1) - : +theorem discrete_carleson [ProofData a q K σ₁ Οƒβ‚‚ F G] [TileStructure Q D ΞΊ S o] : βˆƒ G', 2 * volume G' ≀ volume G ∧ βˆ€ f : X β†’ β„‚, (βˆ€ x, β€–f xβ€– ≀ F.indicator 1 x) β†’ - β€–βˆ« x in G \ G', βˆ‘' p, T K σ₁ Οƒβ‚‚ (ψ (D2_2 a)) p F 1 xβ€–β‚Š ≀ - C2_2 a q * (volume.real G) ^ (1 / q') * (volume.real F) ^ (1 / q) := by sorry + β€–βˆ« x in G \ G', βˆ‘' p, T p f xβ€–β‚Š ≀ + C2_2 a q * (volume.real G) ^ (1 - 1 / q) * (volume.real F) ^ (1 / q) := by sorry diff --git a/Carleson/GridStructure.lean b/Carleson/GridStructure.lean index 41200203..fedcf8bf 100644 --- a/Carleson/GridStructure.lean +++ b/Carleson/GridStructure.lean @@ -1,9 +1,11 @@ import Carleson.Defs +import Carleson.Psi -open Set MeasureTheory Metric Function Complex -open scoped NNReal ENNReal +open Set MeasureTheory Metric Function Complex Bornology +open scoped NNReal ENNReal ComplexConjugate noncomputable section +section DoublingMeasure variable {π•œ : Type*} [_root_.RCLike π•œ] variable {X : Type*} {A : ℝ} [PseudoMetricSpace X] [DoublingMeasure X A] @@ -12,7 +14,8 @@ variable (X) in I expect we prefer `𝓓 : ΞΉ β†’ Set X` over `𝓓 : Set (Set X)` Note: the `s` in this paper is `-s` of Christ's paper. -/ -class GridStructure (D ΞΊ C : outParam ℝ) (S : outParam β„€) (o : outParam X) where +class GridStructure + (D ΞΊ : outParam ℝ) (S : outParam β„€) (o : outParam X) where /-- indexing set for a grid structure -/ ΞΉ : Type* fintype_ΞΉ : Fintype ΞΉ @@ -29,7 +32,7 @@ class GridStructure (D ΞΊ C : outParam ℝ) (S : outParam β„€) (o : outParam X) ball_subset_𝓓 {i} : ball (c i) (D ^ s i / 4) βŠ† 𝓓 i 𝓓_subset_ball {i} : 𝓓 i βŠ† ball (c i) (4 * D ^ s i) small_boundary {i} {t : ℝ} (ht : D ^ (- S - s i) ≀ t) : - volume.real { x ∈ 𝓓 i | infDist x (𝓓 i)ᢜ ≀ t * D ^ s i } ≀ C * t ^ ΞΊ * volume.real (𝓓 i) + volume.real { x ∈ 𝓓 i | infDist x (𝓓 i)ᢜ ≀ t * D ^ s i } ≀ D * t ^ ΞΊ * volume.real (𝓓 i) export GridStructure (range_s_subset 𝓓_subset_biUnion fundamental_dyadic ball_subset_biUnion ball_subset_𝓓 𝓓_subset_ball small_boundary) @@ -38,7 +41,7 @@ variable {D ΞΊ C : ℝ} {S : β„€} {o : X} section GridStructure -variable [GridStructure X D ΞΊ C S o] +variable [GridStructure X D ΞΊ S o] variable (X) in def ΞΉ : Type* := GridStructure.ΞΉ X A @@ -56,7 +59,7 @@ def grid_existence {σ₁ Οƒβ‚‚ : X β†’ β„€} (hΟƒ : σ₁ ≀ Οƒβ‚‚) {F G : Set X} (hF : Measurable F) (hG : Measurable G) (h2F : F βŠ† ball o (D ^ S)) (h2G : G βŠ† ball o (D ^ S)) (hσ₁S : range σ₁ βŠ† Icc (-S) S) (hΟƒβ‚‚S : range Οƒβ‚‚ βŠ† Icc (-S) S) : - GridStructure X D ΞΊ C S o := + GridStructure X D ΞΊ S o := sorry -- instance homogeneousMeasurableSpace [Inhabited X] : MeasurableSpace C(X, ℝ) := @@ -69,7 +72,7 @@ def grid_existence {σ₁ Οƒβ‚‚ : X β†’ β„€} (hΟƒ : σ₁ ≀ Οƒβ‚‚) This is mostly separated out so that we can nicely define the notation `d_𝔭`. Note: compose `π“˜` with `𝓓` to get the `π“˜` of the paper. -/ class TileStructureData.{u} [FunctionDistances π•œ X] - (D ΞΊ C : outParam ℝ) (S : outParam β„€) (o : outParam X) extends GridStructure X D ΞΊ C S o where + (D ΞΊ : outParam ℝ) (S : outParam β„€) (o : outParam X) extends GridStructure X D ΞΊ S o where protected 𝔓 : Type u fintype_𝔓 : Fintype 𝔓 protected π“˜ : 𝔓 β†’ ΞΉ @@ -80,7 +83,7 @@ class TileStructureData.{u} [FunctionDistances π•œ X] export TileStructureData (Ξ© 𝒬) section -variable {Q : X β†’ C(X, β„‚)} [FunctionDistances π•œ X] [TileStructureData D ΞΊ C S o] +variable {Q : X β†’ C(X, β„‚)} [FunctionDistances π•œ X] [TileStructureData D ΞΊ S o] variable (X) in def 𝔓 := TileStructureData.𝔓 π•œ X A @@ -96,8 +99,8 @@ notation3 "ball_(" D "," 𝔭 ")" => @ball (WithFunctionDistance (𝔠 𝔭) (D /-- A tile structure. -/ class TileStructure [FunctionDistances ℝ X] (Q : outParam (X β†’ Θ X)) - (D ΞΊ C : outParam ℝ) (S : outParam β„€) (o : outParam X) - extends TileStructureData D ΞΊ C S o where + (D ΞΊ : outParam ℝ) (S : outParam β„€) (o : outParam X) + extends TileStructureData D ΞΊ S o where biUnion_Ξ© {i} : range Q βŠ† ⋃ p ∈ π“˜ ⁻¹' {i}, Ξ© p disjoint_Ξ© {p p'} (h : p β‰  p') (hp : π“˜ p = π“˜ p') : Disjoint (Ξ© p) (Ξ© p') relative_fundamental_dyadic {p p'} (h : 𝓓 (π“˜ p) βŠ† 𝓓 (π“˜ p')) : Disjoint (Ξ© p) (Ξ© p') ∨ Ξ© p' βŠ† Ξ© p @@ -106,46 +109,50 @@ class TileStructure [FunctionDistances ℝ X] (Q : outParam (X β†’ Θ X)) export TileStructure (biUnion_Ξ© disjoint_Ξ© relative_fundamental_dyadic cdist_subset subset_cdist) -def tile_existence {a : ℝ} [CompatibleFunctions ℝ X (2 ^ a)] [GridStructure X D ΞΊ C S o] +def tile_existence {a : ℝ} [CompatibleFunctions ℝ X (2 ^ a)] [GridStructure X D ΞΊ S o] (ha : 4 ≀ a) {σ₁ Οƒβ‚‚ : X β†’ β„€} (hΟƒ : σ₁ ≀ Οƒβ‚‚) (hσ₁ : Measurable σ₁) (hΟƒβ‚‚ : Measurable Οƒβ‚‚) {F G : Set X} (hF : Measurable F) (hG : Measurable G) (h2F : F βŠ† ball o (D ^ S)) (h2G : G βŠ† ball o (D ^ S)) (hσ₁S : range σ₁ βŠ† Icc (-S) S) (hΟƒβ‚‚S : range Οƒβ‚‚ βŠ† Icc (-S) S) (Q : SimpleFunc X (Θ X)) : - TileStructure Q D ΞΊ C S o := + TileStructure Q D ΞΊ S o := sorry -variable [FunctionDistances ℝ X] {Q : X β†’ Θ X} [TileStructure Q D ΞΊ C S o] +end DoublingMeasure + +open scoped ShortVariables +variable {X : Type*} {a q : ℝ} {K : X β†’ X β†’ β„‚} {σ₁ Οƒβ‚‚ : X β†’ β„€} {F G : Set X} + [ProofData a q K σ₁ Οƒβ‚‚ F G] [TileStructure Q D ΞΊ S o] /- The set `E` defined in Proposition 2.0.2. -/ -def E (σ₁ Οƒβ‚‚ : X β†’ β„€) (p : 𝔓 X) : Set X := +def E (p : 𝔓 X) : Set X := { x ∈ 𝓓 (π“˜ p) | Q x ∈ Ξ© p ∧ 𝔰 p ∈ Icc (σ₁ x) (Οƒβ‚‚ x) } section T -variable (K : X β†’ X β†’ β„‚) (σ₁ Οƒβ‚‚ : X β†’ β„€) (ψ : ℝ β†’ ℝ) (p : 𝔓 X) (F : Set X) +variable {p : 𝔓 X} {f : X β†’ β„‚} {q : ℝβ‰₯0∞} -/- The operator `T` defined in Proposition 2.0.2, considered on the set `F`. +/- The operator `T_𝔭` defined in Proposition 2.0.2, considered on the set `F`. It is the map `T ∘ (1_F * Β·) : f ↦ T (1_F * f)`, also denoted `T1_F` The operator `T` in Proposition 2.0.2 is therefore `applied to `(F := Set.univ)`. -/ -def T (f : X β†’ β„‚) : X β†’ β„‚ := - indicator (E σ₁ Οƒβ‚‚ p) +def T (p : 𝔓 X) (f : X β†’ β„‚) : X β†’ β„‚ := + indicator (E p) fun x ↦ ∫ y, exp (Q x x - Q x y) * K x y * ψ (D ^ (- 𝔰 p) * dist x y) * F.indicator f y -lemma Memβ„’p_T {f : X β†’ β„‚} {q : ℝβ‰₯0∞} (hf : Memβ„’p f q) : Memβ„’p (T K σ₁ Οƒβ‚‚ ψ p F f) q := - by sorry +-- lemma Memβ„’p_T (hf : Memβ„’p f q) : Memβ„’p (T p f) q := +-- by sorry -/- The operator `T`, defined on `L^2` maps. -/ -def Tβ‚‚ (f : X β†’β‚‚[volume] β„‚) : X β†’β‚‚[volume] β„‚ := - Memβ„’p.toLp (T K σ₁ Οƒβ‚‚ ψ p F f) <| Memβ„’p_T K σ₁ Οƒβ‚‚ ψ p F <| Lp.memβ„’p f +-- /- The operator `T`, defined on `L^2` maps. -/ +-- def Tβ‚‚ (f : X β†’β‚‚[volume] β„‚) : X β†’β‚‚[volume] β„‚ := +-- Memβ„’p.toLp (T K σ₁ Οƒβ‚‚ ψ p F f) <| Memβ„’p_T K σ₁ Οƒβ‚‚ ψ p F <| Lp.memβ„’p f -/- The operator `T`, defined on `L^2` maps as a continuous linear map. -/ -def TL : (X β†’β‚‚[volume] β„‚) β†’L[β„‚] (X β†’β‚‚[volume] β„‚) where - toFun := Tβ‚‚ K σ₁ Οƒβ‚‚ ψ p F - map_add' := sorry - map_smul' := sorry - cont := by sorry +-- /- The operator `T`, defined on `L^2` maps as a continuous linear map. -/ +-- def TL : (X β†’β‚‚[volume] β„‚) β†’L[β„‚] (X β†’β‚‚[volume] β„‚) where +-- toFun := Tβ‚‚ K σ₁ Οƒβ‚‚ ψ p F +-- map_add' := sorry +-- map_smul' := sorry +-- cont := by sorry end T @@ -172,16 +179,10 @@ def smul (l : ℝ) (p : 𝔓 X) : TileLike X := def TileLike.toTile (t : TileLike X) : Set (X Γ— Θ X) := t.fst Γ—Λ’ t.snd --- old --- lemma isAntichain_iff_disjoint (𝔄 : Set (𝔓 X)) : --- IsAntichain (·≀·) (toTileLike (X := X) '' 𝔄) ↔ --- βˆ€ p p', p ∈ 𝔄 β†’ p' ∈ 𝔄 β†’ p β‰  p' β†’ --- Disjoint (toTileLike (X := X) p).toTile (toTileLike p').toTile := sorry - -def E₁ (G : Set X) (Q : X β†’ Θ X) (t : TileLike X) : Set X := +def E₁ (t : TileLike X) : Set X := t.1 ∩ G ∩ Q ⁻¹' t.2 -def Eβ‚‚ (G : Set X) (Q : X β†’ Θ X) (l : ℝ) (p : 𝔓 X) : Set X := +def Eβ‚‚ (l : ℝ) (p : 𝔓 X) : Set X := 𝓓 (π“˜ p) ∩ G ∩ Q ⁻¹' ball_(D, p) (𝒬 p) l /-- `downClosure 𝔓'` is denoted `𝔓(𝔓') in the blueprint. It is the lower closure of `𝔓'` in `𝔓 X` w.r.t. to the relation `p ≀ p' := 𝓓 (π“˜ p) βŠ† 𝓓 (π“˜ p')`. @@ -190,18 +191,35 @@ def downClosure (𝔓' : Set (𝔓 X)) : Set (𝔓 X) := { p | βˆƒ p' ∈ 𝔓', 𝓓 (π“˜ p) βŠ† 𝓓 (π“˜ p') } /-- This density is defined to live in `ℝβ‰₯0∞`. Use `ENNReal.toReal` to get a real number. -/ -def dens₁ (a : ℝ) (G : Set X) (Q : X β†’ Θ X) (𝔓' : Set (𝔓 X)) : ℝβ‰₯0∞ := +def dens₁ (𝔓' : Set (𝔓 X)) : ℝβ‰₯0∞ := ⨆ (p ∈ 𝔓') (l β‰₯ (2 : ℝβ‰₯0)), l ^ (-a) * ⨆ (p' ∈ downClosure 𝔓') (_h2 : smul l p ≀ smul l p'), - volume (Eβ‚‚ G Q l p) / volume (𝓓 (π“˜ p)) + volume (Eβ‚‚ l p) / volume (𝓓 (π“˜ p)) /-- This density is defined to live in `ℝβ‰₯0∞`. Use `ENNReal.toReal` to get a real number. -/ -def densβ‚‚ (F : Set X) (𝔓' : Set (𝔓 X)) : ℝβ‰₯0∞ := +def densβ‚‚ (𝔓' : Set (𝔓 X)) : ℝβ‰₯0∞ := ⨆ (p ∈ 𝔓') (r β‰₯ 4 * D ^ 𝔰 p), volume (F ∩ ball (𝔠 p) r) / volume (ball (𝔠 p) r) -/- Move to AntichainOperator file -/ --- prop 3 +-- a small characterization that might be useful +lemma isAntichain_iff_disjoint (𝔄 : Set (𝔓 X)) : + IsAntichain (·≀·) (toTileLike (X := X) '' 𝔄) ↔ + βˆ€ p p', p ∈ 𝔄 β†’ p' ∈ 𝔄 β†’ p β‰  p' β†’ + Disjoint (toTileLike (X := X) p).toTile (toTileLike p').toTile := sorry + +/-- Constant appearing in Proposition 2.0.3. -/ +def C_2_0_3 (a q : ℝ) : ℝ := 2 ^ (150 * a ^ 3) / (q - 1) + +/-- Proposition 2.0.3 -/ +theorem antichain_operator {𝔄 : Set (𝔓 X)} {f g : X β†’ β„‚} {q : ℝ} + (hf : βˆ€ x, β€–f xβ€– ≀ F.indicator 1 x) + (hg : βˆ€ x, β€–g xβ€– ≀ G.indicator 1 x) + (h𝔄 : IsAntichain (·≀·) (toTileLike (X := X) '' 𝔄)) + : -- add conditions on q + β€–βˆ« x, conj (g x) * βˆ‘αΆ  p : 𝔄, T p f xβ€– ≀ + C_2_0_3 a q * (dens₁ 𝔄).toReal ^ ((q - 1) / (8 * a ^ 4)) * (densβ‚‚ 𝔄).toReal ^ (q⁻¹ - 2⁻¹) * + (snorm f 2 volume).toReal * (snorm g 2 volume).toReal := sorry + --below is old @@ -235,7 +253,7 @@ instance : Preorder (Tree X) := Preorder.lift Tree.carrier -- LaTeX note: $D ^ {s(p)}$ should be $D ^ {s(I(p))}$ class Tree.IsThin (𝔗 : Tree X) : Prop where - thin {p : 𝔓 X} (hp : p ∈ 𝔗) : ball (𝔠 p) (8 * A ^ 3 * D ^ 𝔰 p) βŠ† 𝓓 (π“˜ 𝔗.top) + thin {p : 𝔓 X} (hp : p ∈ 𝔗) : ball (𝔠 p) (8 * a/-fix-/ * D ^ 𝔰 p) βŠ† 𝓓 (π“˜ 𝔗.top) alias Tree.thin := Tree.IsThin.thin diff --git a/Carleson/MetricCarleson.lean b/Carleson/MetricCarleson.lean index 52807ab7..30b630dd 100644 --- a/Carleson/MetricCarleson.lean +++ b/Carleson/MetricCarleson.lean @@ -6,7 +6,7 @@ open MeasureTheory Measure NNReal Metric Complex Set Function BigOperators open scoped ENNReal noncomputable section -/- The constant used in theorem1_2 -/ +/- The constant used in `metric_carleson` -/ def C1_2 (a q : ℝ) : ℝ := 2 ^ (450 * a ^ 3) / (q - 1) ^ 5 lemma C1_2_pos {a q : ℝ} (hq : 1 < q) : 0 < C1_2 a q := by @@ -29,8 +29,7 @@ lemma C1_2_pos {a q : ℝ} (hq : 1 < q) : 0 < C1_2 a q := by section -- todo: old code -variable {X : Type*} {a : ℝ} [MetricSpace X] - [DoublingMeasure X (2 ^ a)] [Inhabited X] +variable {X : Type*} {a : ℝ} [MetricSpace X] [DoublingMeasure X (2 ^ a)] [Inhabited X] variable {Ο„ q q' : ℝ} {C : ℝ} variable {F G : Set X} variable (K : X β†’ X β†’ β„‚) @@ -133,11 +132,7 @@ theorem metric_carleson [CompatibleFunctions ℝ X (2 ^ a)] [IsCancellative X (2 ^ a)] [IsCZKernel a K] (ha : 4 ≀ a) (hq : q ∈ Ioc 1 2) (hqq' : q.IsConjExponent q') (hF : MeasurableSet F) (hG : MeasurableSet G) - -- (h2F : volume F ∈ Ioo 0 ∞) (h2G : volume G ∈ Ioo 0 ∞) - -- (hT : NormBoundedBy (ANCZOperatorLp 2 K) (2 ^ a ^ 3)) - (hT : βˆ€ (g : X β†’ β„‚) (hg : Memβ„’p g ∞ volume) (h2g : volume (support g) < ∞) - (h3g : Memβ„’p g 2 volume), - snorm (ANCZOperator K g) 2 volume ≀ 2 ^ a ^ 3 * snorm g 2 volume) + (hT : HasBoundedStrongType (ANCZOperator K) volume volume 2 2 (C_Ts a)) (f : X β†’ β„‚) (hf : βˆ€ x, β€–f xβ€– ≀ F.indicator 1 x) : ∫⁻ x in G, CarlesonOperator K f x ≀ ENNReal.ofReal (C1_2 a q) * (volume G) ^ q'⁻¹ * (volume F) ^ q⁻¹ := by diff --git a/Carleson/Psi.lean b/Carleson/Psi.lean index 1a789318..65b4648f 100644 --- a/Carleson/Psi.lean +++ b/Carleson/Psi.lean @@ -12,6 +12,9 @@ variable {D : ℝ} {s : β„€} {K : X β†’ X β†’ β„‚} {x y : X} def ψ (D x : ℝ) : ℝ := max 0 <| min 1 <| min (4 * D * x - 1) (2 - 2 * x) +set_option hygiene false +scoped[ShortVariables] notation "ψ" => ψ (defaultD a) + lemma support_ψ : support (ψ D) = Ioo (4 * D)⁻¹ 2⁻¹ := sorry lemma lipschitzWith_ψ (D : ℝβ‰₯0) : LipschitzWith (4 * D) (ψ D) := sorry diff --git a/Carleson/Theorem1_1/Carleson_on_the_real_line.lean b/Carleson/Theorem1_1/Carleson_on_the_real_line.lean index 11bfe0cf..2c66fd0f 100644 --- a/Carleson/Theorem1_1/Carleson_on_the_real_line.lean +++ b/Carleson/Theorem1_1/Carleson_on_the_real_line.lean @@ -449,9 +449,7 @@ instance h6 : IsCZKernel 4 K where measurable := Hilbert_kernel_measurable /- Lemma ?-/ -lemma h3 (g : ℝ β†’ β„‚) (hg : Memβ„’p g ∞ volume) (h2g : volume (support g) < ∞) - (h3g : Memβ„’p g 2 volume) : - snorm (ANCZOperator K g) 2 volume ≀ 2 ^ (4 : ℝ) ^ 3 * snorm g 2 volume := sorry +lemma h3 : HasBoundedStrongType (ANCZOperator K) volume volume 2 2 (C_Ts 4) := sorry diff --git a/blueprint/.gitignore b/blueprint/.gitignore index a50e5c81..6f63206e 100644 --- a/blueprint/.gitignore +++ b/blueprint/.gitignore @@ -14,3 +14,6 @@ __pycache__ *.mtc *.mtc0 build +*.bcf +*.bbl +*.toc \ No newline at end of file diff --git a/blueprint/src/chapter/main.tex b/blueprint/src/chapter/main.tex index b3170a1c..b3df5868 100644 --- a/blueprint/src/chapter/main.tex +++ b/blueprint/src/chapter/main.tex @@ -301,6 +301,8 @@ \chapter{Proof of Metric Space Carleson, overview} For any dyadic cube $I$ and any $t$ with $tD^{s(I)} \ge D^{-S}$, \begin{equation} \label{eq-small-boundary} + % Note(Georges Gonthier): The D in the RHS can be replaced by 2. + % We can do the same in the statement and proof of {boundary-measure}. \mu(\{x \in I \ : \ \rho(x, X \setminus I) \leq t D^{s(I)}\}) \le D t^\kappa \mu(I)\,. \end{equation} @@ -1823,10 +1825,12 @@ \section{Organisation of the tiles}\label{subsectilesorg} \begin{equation}\label{definegone} G_1:=\bigcup_{\fp\in \fP_{F,G} }\scI(\fp)\, . \end{equation} -For an integer $\lambda\ge 0$, define $A(\lambda,k,n)$ to be the set of all $x\in X$ such that +For an integer $\lambda\ge 0$, define $A(\lambda,k,n)$ to be the set +of all $x\in X$ such that \begin{equation} \label{eq-Aoverlap-def} - \sum_{\fp \in \mathfrak{M}(k,n)}\mathbf{1}_{\scI(\fp)}(x)>1+\lambda 2^{n+1} + % remark(F): replaced > by \ge + \sum_{\fp \in \mathfrak{M}(k,n)}\mathbf{1}_{\scI(\fp)}(x)\ge 1+\lambda 2^{n+1} \end{equation} and define \begin{equation}\label{definegone2} @@ -2119,23 +2123,25 @@ \section{Proof of the Exceptional Sets Lemma} \uses{John-Nirenberg} We have \begin{equation}\label{eq-musum} - \sum_{\mathfrak{m} \in \mathfrak{M}(k,n)} \mu(\scI(\mathfrak{m}))\le 2^{n+1}2^{k+1}\mu(G). + % Note(Georges Gonthier): new factor suggested by + \sum_{\mathfrak{m} \in \mathfrak{M}(k,n)} \mu(\scI(\mathfrak{m}))\le 2^{n+k+3}\mu(G). \end{equation} \end{lemma} \begin{proof} - We write the left-hand side of \eqref{eq-musum} +% Note(Georges Gonthier): sum should start at 0, not 1 + We write the left-hand side of \eqref{eq-musum} \begin{equation} - \int \sum_{\mathfrak{m} \in \mathfrak{M}(k,n)} \mathbf{1}_{\scI(\mathfrak{m})}(x) \, d\mu(x) \le -2^{n+1} \sum_{\lambda=1}^{|\mathfrak{M}|}\mu(A(\lambda, k,n))\,. + \int \sum_{\mathfrak{m} \in \mathfrak{M}(k,n)} \mathbf{0}_{\scI(\mathfrak{m})}(x) \, d\mu(x) \le +2^{n+1} \sum_{\lambda=0}^{|\mathfrak{M}|}\mu(A(\lambda, k,n))\,. \end{equation} Using \Cref{John-Nirenberg} and then summing a geometric series, we estimate this by \begin{equation} \le -2^{n+1}\sum_{\lambda=1}^{|\mathfrak{M}|} +2^{n+1}\sum_{\lambda=0}^{|\mathfrak{M}|} 2^{k+1-\lambda}\mu(G) \le -2^{n+1}2^{k+1}\mu(G)\, . +2^{n+1}2^{k+2}\mu(G)\, . \end{equation} This proves the lemma. \end{proof} @@ -2262,7 +2268,7 @@ \section{Proof of the Exceptional Sets Lemma} \begin{lemma}[third exception] \label{third-exception} -\uses{tree-count,boundary-exception} +\uses{tree-count,boundary-exception, top-tiles} We have \begin{equation} \mu(G_3)\le 2^{-4} \mu(G)\, . @@ -2376,17 +2382,18 @@ \section{Auxiliary lemmas} \label{wiggle-order-3} \uses{wiggle-order-1, wiggle-order-2} The following implications hold for all $\fq, \fq' \in \fP$: + % Note: some fixes were suggested by Georges Gonthier \begin{equation} \label{eq-sc1} - \fq \lesssim \fq' \ \text{and} \ \lambda \ge 1 \implies \lambda \fq \lesssim \lambda \fq'\,, + \fq \le \fq' \ \text{and} \ \lambda \ge 2 \implies \lambda \fq \lesssim \lambda \fq'\,, \end{equation} \begin{equation} \label{eq-sc2} - 10\fq \lesssim \fq' \ \text{and} \ \fq \ne \fq' \implies 100 \fq \lesssim 100 \fq'\,, + 10\fq \lesssim \fq' \ \text{and} \ \scI(\fq) \ne \scI(\fq') \implies 100 \fq \lesssim 100 \fq'\,, \end{equation} \begin{equation} \label{eq-sc3} - 2\fq \lesssim \fq' \ \text{and} \ \fq \ne \fq' \implies 4 \fq \lesssim 500 \fq'\,. + 2\fq \lesssim \fq' \ \text{and} \ \scI(\fq) \ne \scI(\fq') \implies 4 \fq \lesssim 500 \fq'\,. \end{equation} \end{lemma}