Zulip Chat Archive
Stream: Carleson
Topic: Outstanding Tasks, V1
Floris van Doorn (Jun 21 2024 at 14:43):
There is a CONTRIBUTING file that contains some useful tips. (Some links only work after the current build has completed.)
Normal-sized tasks:
- :check: (Edward van de Meent) Three simple lemmas about comparing volumes of balls w.r.t. a doubling measure: carleson#volume_ball_le_same, carleson#volume_ball_le_of_dist_le and carleson#volume_ball_le_of_subset. These are not explicitly in the blueprint, but will be needed for Lemma 4.1.1 and Lemma 4.1.2.
- :check: (Jeremy Tan) Lemma 2.1.1 is a combinatorial lemma. I expect it is easiest to prove carleson#Ξ.mk_le_of_le_dist first and then conclude carleson#Ξ.card_le_of_le_dist and carleson#Ξ.finite_of_le_dist from it.
- :check: (Jeremy Tan) Lemma 2.1.2: two Lean lemmas about doing some approximations in a metric space.
- :play: (James Sundstrom) Lemma 2.1.3: three Lean lemmas computing bounds on a binary function. It might be useful to also fill some other sorry's in the file
Psi.lean
. - :check: (Jeremy Tan) A simple combinatorial lemma about balls covering other balls: carleson#CoveredByBalls.trans (used in Lemma 2.1.1)
- :new: Lemma 4.0.3: this requires manipulating some integrals, and also require stating/proving that a bunch more things are integrable.
- :new: Proposition 2.0.1: the proof is located above and below Lemma 4.0.3. It is not long, but requires quite some manipulation with integrals.
- :check: (Jeremy Tan) Show that
π X
is almost a docs#SuccOrder: Defineπ.succ
and prove the 4 lemmas below it. - :play: (Bhavik Mehta) Define
π©
by Zorn's lemma and prove the properties about it (up to and including the finiteness and inhabited instances). The finiteness comes from a variant ofΞ.finite_of_le_dist
. - :check: (Bhavik Mehta) Prove Lemma 4.2.1 (simple exercise in a metric space)
- :check: (Jeremy Tan) Prove Lemma 4.2.2 (short, but maybe a bit tricky to use the definitions
Ξ©β
andΞ©β_aux
) - :check: (Jeremy Tan) Prove Lemma 4.2.3
- :check: (Jeremy Tan) Prove Lemma 4.0.2 from the lemmas in Section 4.2 (quite long, but splits naturally into 5 parts).
- :check: (Edward van de Meent) Prove lemma 4.1.1 and 4.1.2.
- :check: (Jim Portegies) Proof basic properties about the distribution function carleson#MeasureTheory.distribution up to carleson#ContinuousLinearMap.distribution_le . This requires some simple measure theory. The proofs are in Folland, Real Analysis. section 6.3.
- :check: (Mauricio Collares) (roughly already in Mathlib) Proof a more general layer-cake principle carleson#MeasureTheory.lintegral_norm_pow_eq_measure_lt which generalizes docs#MeasureTheory.lintegral_comp_eq_lintegral_meas_lt_mul . Also please prove the three corollaries below. This is Lemma 9.0.1 in the blueprint.
- :new: Proof the lemmas about carleson#MeasureTheory.wnorm and carleson#MeasureTheory.MemWβp (optional: develop more API, following docs#MeasureTheory.snorm and docs#MeasureTheory.Lp and similar notions).
Large tasks. I will be splitting up these tasks into smaller subtasks, but feel free to already work on that. It is especially useful if you start by splitting it up by stating all definitions and lemmas.
- L1. :play: (Floris) Chapter 9 which proves Proposition 2.0.6: Vitali covering and the Hardy-Littlewood maximal equality. Some related things are already in Mathlib, like a special case of the layercake formula. Try to do this in Mathlib-generality, so that it can be added to Mathlib. The versions of the proposition we need for this project have already been stated.
- L2. Chapter 8: HΓΆlder cancellative condition proving Proposition 2.0.5.
- L3. :play: (Edward van de Meent) Prove Lemma 4.0.1, the proof is in Section 4.1
- L4. :play: (Floris)
Prove Lemma 4.0.2. The proof is in section 4.2(this is now tasks 8-13). - L5. Proposition 2.0.4 proven in chapter 7.
- L6. :play: (MarΓa InΓ©s de Frutos FernΓ‘ndez) Proposition 2.0.3, proven in chapter 6.
- L7. :play: (Floris) Proposition 2.0.2, proven in chapter 5. Beware: We have found some mistakes in the lemmas in chapter 5, which need to be fixed. Some of these are pointed out in the source file for the blueprint
- L8. Prove Carleson's theorem for doubling metric measure spaces from the work done in chapters 4-9. This is done in chapter 3.
- L9. :play: (Leo Diedering) Derive the classical Carleson's theorem from the general version. This is done in chapter 10.
- L10. :play: (Jim Portegies) Prove the Real interpolation theorem: carleson#MeasureTheory.exists_hasStrongType_real_interpolation. This is an important theorem that is not explicitly mentioned in the blueprint, but will be used a few times. The proof can be found in
Folland, Real Analysis. Modern Techniques and Their Applications, section 6.4, theorem 6.28. It requires quite a lot of analysis and has a 3-page proof.
Edward van de Meent (Jun 21 2024 at 18:29):
i'd like to try my hand at some of the lemmas in 4.1. for now i'd like to claim 4.1.1 and 4.1.2
Terence Tao (Jun 21 2024 at 19:02):
I wonder if there are some "quick win" goals that could be used as milestones for the project. I see that you already have the Hardy-Littlewood maximal inequality in there as an early milestone for instance. What about say Fejer's theorem for convergence of Cesaro averages of Fourier series - would that be something that could be integrated into the project? Or some of the other foundational results of Calderon-Zygmund theory? Or a general form of the Cotlar-Knapp-Stein lemma?
Floris van Doorn (Jun 21 2024 at 20:12):
Oh, there are definitely some much simpler things we could proof first, along the way, even if they are not strictly needed for the final result. I'm happy to incorporate them to this project as well (although anyone working on them can just as well directly put it into Mathlib)
I have a separate project where I'm doing some more basic Fourier analysis with some students: https://github.com/fpvandoorn/BonnAnalysis/
That project is mostly to try to formalize interpolation theorems. The real (Marcinkiewicz) interpolation theorem will also be useful for the proof here.
Jeremy Tan (Jun 22 2024 at 04:49):
I'm going to try my hand at 2.1.1 and 5.3.4
Jeremy Tan (Jun 22 2024 at 05:56):
but how can I actually get 1.0.11 from ProofData
? It's an instance so I had to name it
Ruben Van de Velde (Jun 22 2024 at 07:47):
I had a look at 3. Lemma 2.1.2. I was wondering if it's true that (I : Set X) = (J : Set X)
implies I = J
?
Edward van de Meent (Jun 22 2024 at 08:38):
I think so, if the coercion is via a SetLike
instance
Ruben Van de Velde (Jun 22 2024 at 08:41):
It's not, it's just a plain coercion: http://florisvandoorn.com/carleson/docs/Carleson/GridStructure.html#instCoe%F0%9D%93%93Set
Edward van de Meent (Jun 22 2024 at 09:21):
then, from what i can tell, no. i can imagine that it would be nice to have though
Ruben Van de Velde (Jun 22 2024 at 09:48):
My question was whether it was true, not if it had been formalized yet
Vincent Beffara (Jun 22 2024 at 09:54):
Wouldn't it be equivalent to saying that GridStructure.coeπ
is injective?
Edward van de Meent (Jun 22 2024 at 10:03):
it would. which would be exactly the last field needed for a SetLike
instance.
From the comment in the declaration of GridStructure
, i believe it is something that can safely be assumed.
Vincent Beffara (Jun 22 2024 at 10:06):
From what I understand (just discovering the code), it does not follow from the assumptions that are already present but can be safely added to the structure.
Edward van de Meent (Jun 22 2024 at 10:07):
yes, exactly
Vincent Beffara (Jun 22 2024 at 10:16):
Unless later in proofs, what is really needed is the injectivity of the map from i
to (coeπ i, s i, c i)
but for some reason it is useful to have the same set occur at two different scales, or with a different marked center.
Jeremy Tan (Jun 22 2024 at 12:29):
Never mind, I retract my prior claim
Floris van Doorn (Jun 22 2024 at 12:39):
It is indeed intended that GridStructure.coeπ
is injective. I just added that hypothesis to the structure. Thanks for the correction.
Note: when s i β s j
then you can already conclude that coeπ i β coeπ j
, by ball_subset_π
and π_subset_ball
(for D > 16
, which we will assume)
Floris van Doorn (Jun 22 2024 at 15:32):
I have split task L4 into 6 smaller tasks: 8-13. There are plenty of tasks for anyone :smile:
Bhavik Mehta (Jun 22 2024 at 15:33):
Jeremy Tan said:
Never mind, I retract my prior claim
To clarify, does this mean you're unclaiming 2.1.1 and 5.3.4, or is there another claim?
Jeremy Tan (Jun 22 2024 at 15:46):
Actually, scrap that. I'll go ahead anyway, nothing is retracted
Jeremy Tan (Jun 22 2024 at 15:46):
My first concern though is how to get the blueprint properties in Lean
Floris van Doorn (Jun 22 2024 at 15:52):
What do you mean by that? You can get the properties out of ProofData
just by using the field names, e.g.
have : 4 β€ a := four_le_a X
Jeremy Tan (Jun 22 2024 at 17:06):
1.0.11 doesn't seem to have such a field name associated to it, but it's 1am here
Floris van Doorn (Jun 22 2024 at 17:12):
1.0.11 is CompatibleFunctions.ballsCoverBalls
Jeremy Tan (Jun 23 2024 at 04:42):
OK, I think the proof of 2.1.1 is wrong
Jeremy Tan (Jun 23 2024 at 04:44):
If I apply 1.0.11 $k$ times with
have pmul := BallsCoverBalls.pow_mul (k := k) (r := r) fun r β¦
CompatibleFunctions.ballsCoverBalls (x := xβ) (r := R) (R := r)
I only get that the large ball is covered by $2^{ka}$ balls of radius r, not r / 2
Jeremy Tan (Jun 23 2024 at 05:11):
Yes 2.1.1 is wrong as stated
Floris van Doorn (Jun 23 2024 at 09:35):
You are correct, k
should be replaced by k+1
in the conclusion.
Vincent Beffara (Jun 23 2024 at 09:45):
Floris van Doorn said:
It is indeed intended that
GridStructure.coeπ
is injective. I just added that hypothesis to the structure. Thanks for the correction.
Note: whens i β s j
then you can already conclude thatcoeπ i β coeπ j
, byball_subset_π
andπ_subset_ball
(forD > 16
, which we will assume)
Ah indeed I was missing the assumption that D > 16
. BTW why did you choose this representation with a family indexed by an embedded type π
rather than something like this?
variable (X) in
structure tile (D : β) where
toSet : Set X
s : β€
c : X
ball_subset : ball c (D ^ s / 4) β toSet
subset_ball : toSet β ball c (4 * D ^ s)
variable (X) in
class GridStructure' (D ΞΊ : outParam β) (S : outParam β€) (o : outParam X) where
π : Finset (tile X D)
range_s_subset : β D β π, D.s β Icc (-S) S
-- ... the other properties
Bhavik Mehta (Jun 23 2024 at 10:04):
I'd like to claim 9 and 10
Bhavik Mehta (Jun 23 2024 at 12:12):
I've made a PR for 10, but 9 is heavily dependent on the precise form that 2.1.1 comes out as, so I'll wait on Jeremy for that to be completed.
Bhavik Mehta (Jun 23 2024 at 13:06):
lemma large_dist_of_disjoint_balls {z z' : Ξ X} {xβ R}
(h : Disjoint (ball_{xβ, R} z Cπ©) (ball_{xβ, R} z' Cπ©)) : 2 * Cπ© β€ dist_{xβ, R} z z' :=
sorry
This statement would be useful for the construction of π© - is it true? (In particular, I think this is used implicitly when proving the finiteness bound on sets satisfying 4.2.1 and 4.2.2
Floris van Doorn (Jun 23 2024 at 13:34):
@Vincent Beffara There are two differences in your approach:
(1) bundle every cube in the grid into one structure
(2) Use a Finset
instead of an indexing Fintype
.
I must say I didn't do an exhaustive comparison between different representations, and maybe your representation is better. I generally like to work with (indexed) families of objects compared to collections (i.e. a (fin)set), but packaging the elements into a structure might be a good idea...
Floris van Doorn (Jun 23 2024 at 13:35):
(a note on terminology: elements in π
are called cubes, we also have a TileStructure
whose inhabitants are called tiles)
Floris van Doorn (Jun 23 2024 at 13:47):
Bhavik Mehta said:
I've made a PR for 10, but 9 is heavily dependent on the precise form that 2.1.1 comes out as, so I'll wait on Jeremy for that to be completed.
If it helps, I just separated out the constant that appears in Lemma 2.1.1. Feel free to work on task 9 using that constant. But maybe you are wondering about the rest of the formulation.
Floris van Doorn (Jun 23 2024 at 13:47):
@Jeremy Tan I fixed the constant for Lemma 2.1.1 in the Lean formalization
Floris van Doorn (Jun 23 2024 at 13:48):
Bhavik Mehta said:
lemma large_dist_of_disjoint_balls {z z' : Ξ X} {xβ R} (h : Disjoint (ball_{xβ, R} z Cπ©) (ball_{xβ, R} z' Cπ©)) : 2 * Cπ© β€ dist_{xβ, R} z z' := sorry
This statement would be useful for the construction of π© - is it true? (In particular, I think this is used implicitly when proving the finiteness bound on sets satisfying 4.2.1 and 4.2.2
Oh, good question. That doesn't hold in arbitrary metric spaces... Let me think about it (I will see Christoph Thiele tomorrow, so I can also ask him if I don't figure it out).
Floris van Doorn (Jun 23 2024 at 13:53):
I think it doesn't hold as currently stated. But the main usage for the distance is the local oscillation (LHS of (1.0.7)), and so we can probably assume that the distance comes from a seminorm...
Bhavik Mehta (Jun 23 2024 at 13:54):
I see - I'll leave that as a sorry for now and continue?
Bhavik Mehta (Jun 23 2024 at 13:57):
If you are thinking about this already - it may alternatively be the case that this isn't needed for \MCZ, but I think something like it is necessary to transfer from eqn 4.2.2 to something satisfying the preconditions of Lemma 2.1.1. An alternative approach is to note that the proof of Lemma 2.1.1 doesn't need that the distance is large, only that certain balls intersect with Z in limited capacity; so maybe 2.1.1 can be strengthened by relaxing that hypothesis?
Floris van Doorn (Jun 23 2024 at 14:02):
Those are good points. This problem might indeed be fixed by strengthening 2.1.1, but I'll discuss it tomorrow, because it might still lead to problems elsewhere.
Bhavik Mehta (Jun 23 2024 at 14:06):
Things like lower-secant-bound and dirichlet-kernel are marked as green on the blueprint but they don't seem to have attached Lean declarations or proofs. Are these available somewhere?
Floris van Doorn (Jun 23 2024 at 14:41):
Bhavik Mehta said:
Things like lower-secant-bound and dirichlet-kernel are marked as green on the blueprint but they don't seem to have attached Lean declarations or proofs. Are these available somewhere?
Good point. @Leo Diedering, could you add \lean{}
commands to every result of chapter 10 that you've stated already in Lean?
Pietro Monticone (Jun 23 2024 at 15:13):
Opened PR adding missing \lean{}
placeholders and filling some of them (e.g. lower-secant-bound
, but not dirichlet-kernel
because I'm not sure if it's supposed to take multiple declarations as arguments).
Jeremy Tan (Jun 23 2024 at 19:16):
@Floris van Doorn so I've completed almost all the proof for 2.1.1, except...
lemma Ξ.finite_and_mk_le_of_le_dist {xβ : X} {r R : β} (hr : 0 < r) {f : Ξ X} {k : β}
{π© : Set (Ξ X)} (hπ© : π© β ball_{xβ, R} f (r * 2 ^ k))
(h2π© : β z z', z β π© β z' β π© β z β z' β r β€ dist_{xβ, R} z z') :
π©.Finite β§ Cardinal.mk π© β€ C2_1_1 k a := by
have pmul := (BallsCoverBalls.pow_mul (k := k + 1) (r := r / 2) fun r β¦
CompatibleFunctions.ballsCoverBalls (x := xβ) (r := R) (R := r)) f
rw [show 2 ^ (k + 1) * (r / 2) = r * 2 ^ k by ring, coveredByBalls_iff] at pmul
obtain β¨π©', cπ©', uπ©'β© := pmul
classical
let g : Ξ X β Finset (Ξ X) := fun z β¦ π©'.filter (z β ball_{xβ, R} Β· (r / 2))
have g_pd : π©.PairwiseDisjoint g := fun z hz z' hz' hne β¦ by
refine Finset.disjoint_filter.mpr fun c hc mz mz' β¦ ?_
simp_rw [mem_ball] at mz mz'
have := (dist_triangle_right (Ξ± := WithFunctionDistance xβ R) ..).trans_lt
(add_lt_add_of_lt_of_lt mz mz')
rw [add_halves, lt_iff_not_le] at this
exact absurd (h2π© z z' hz hz' hne) this
have g_ne : β z, z β π© β (g z).Nonempty := fun z hz β¦ by
obtain β¨c, hcβ© := mem_iUnion.mp <| mem_of_mem_of_subset hz (hπ©.trans uπ©')
simp only [mem_iUnion, exists_prop] at hc
use c; simpa only [g, Finset.mem_filter]
have g_injOn : π©.InjOn g := fun z hz z' hz' e β¦ by
have : z β z' β Disjoint (g z) (g z') := g_pd hz hz'
rw [β e, Finset.disjoint_self_iff_empty] at this
exact not_ne_iff.mp <| this.mt <| Finset.nonempty_iff_ne_empty.mp (g_ne z hz)
have g_subset : g '' π© β π©'.powerset.toSet := fun gz hgz β¦ by
rw [mem_image] at hgz
obtain β¨z, hzβ© := hgz
simp_rw [Finset.coe_powerset, mem_preimage, mem_powerset_iff, Finset.coe_subset, β hz.2, g,
Finset.filter_subset]
have fπ© : (g '' π©).Finite := Finite.subset π©'.powerset.finite_toSet g_subset
rw [Set.finite_image_iff g_injOn] at fπ©
refine β¨fπ©, ?_β©
lift π© to Finset (Ξ X) using fπ©
simp_rw [Cardinal.mk_fintype, Finset.coe_sort_coe, Fintype.card_coe]
norm_cast
classical calc
_ = β u β π©, 1 := by simp
_ β€ β u β π©, (g u).card := Finset.sum_le_sum fun z hz β¦ Finset.card_pos.mpr (g_ne z hz)
_ = (π©.biUnion g).card := (Finset.card_biUnion (fun z hz z' hz' β¦ g_pd hz hz')).symm
_ β€ π©'.card := by
refine Finset.card_le_card fun _ h β¦ ?_
rw [Finset.mem_biUnion] at h
exact Finset.mem_of_subset (by simp [g]) h.choose_spec.2
_ β€ β2 ^ aββ ^ (k + 1) := cπ©'
_ β€ _ := by
rw [C2_1_1, mul_comm, pow_mul]
apply pow_le_pow_left'
-- β2 ^ aββ β€ 2 ^ βaββ - FALSE (take e.g. a = 1.9)
sorry
Jeremy Tan (Jun 23 2024 at 19:17):
At the end of it all it reduces to β2 ^ aββ β€ 2 ^ βaββ
, but that is false β indeed the reverse inequality is true
Jeremy Tan (Jun 23 2024 at 19:19):
can I commit this straight to your repo or do you need to give me permission first?
Jeremy Tan (Jun 23 2024 at 19:20):
But if the constant is 2 ^ ((k + 1) * (βaββ + 1))
it works
Edward van de Meent (Jun 23 2024 at 19:37):
is there a reason why the doubling in DoublingMeasure
is about volume.real
rather than volume
itself?
Edward van de Meent (Jun 23 2024 at 19:37):
because i find myself rather using the latter
YaΓ«l Dillies (Jun 23 2024 at 20:10):
Jeremy Tan said:
can I commit this straight to your repo or do you need to give me permission first?
Note that you can always open a PR
Bhavik Mehta (Jun 23 2024 at 20:16):
(deleted)
Mauricio Collares (Jun 23 2024 at 20:25):
Jeremy Tan said:
At the end of it all it reduces to
β2 ^ aββ β€ 2 ^ βaββ
, but that is false β indeed the reverse inequality is true
In the blueprint, a
is a natural number. I suspect it became of type β
in the formalization to avoid a few casts, which led to unintended side effects.
Floris van Doorn (Jun 23 2024 at 22:37):
Mauricio Collares said:
Jeremy Tan said:
At the end of it all it reduces to
β2 ^ aββ β€ 2 ^ βaββ
, but that is false β indeed the reverse inequality is trueIn the blueprint,
a
is a natural number. I suspect it became of typeβ
in the formalization to avoid a few casts, which led to unintended side effects.
This is exactly what happened. We're mostly using a
as a real number, but then I put the floor in the wrong place.
@Jeremy Tan Thank you for the proof! Can you replace the constant by 2 ^ ((k + 1) * βaββ)
?
Floris van Doorn (Jun 23 2024 at 22:40):
Edward van de Meent said:
is there a reason why the doubling in
DoublingMeasure
is aboutvolume.real
rather thanvolume
itself?
When starting on this project I was hoping to stay in Real
as much as possible. However, that turned out to be less convenient than I hoped.
Please add the ENNReal
inequality as a lemma
Terence Tao (Jun 23 2024 at 23:43):
For what it's worth, the PFR project developed some API for Real
-valued measures rather than ENNReal
-valued measures, see https://teorth.github.io/pfr/docs/PFR/ForMathlib/MeasureReal.html . In principle this is supposed to go into Mathlib eventually, but that's a low priority right now. But I guess you could import it here if it would be a net help.
Jeremy Tan (Jun 24 2024 at 00:36):
Floris van Doorn said:
Can you replace the constant by
2 ^ ((k + 1) * βaββ)
?
def C2_1_1 (k : β) (a : β) : β := 2 ^ ((k + 1) * βaββ) -- todo: fix in blueprint
-- Note: See also/prove card_le_of_le_dist in DoublingMeasure.
lemma Ξ.finite_and_mk_le_of_le_dist {xβ : X} {r R : β} {f : Ξ X} {k : β}
{π© : Set (Ξ X)} (hπ© : π© β ball_{xβ, R} f (r * 2 ^ k))
(h2π© : β z z', z β π© β z' β π© β z β z' β r β€ dist_{xβ, R} z z') :
π©.Finite β§ Cardinal.mk π© β€ C2_1_1 k a := by
have pmul := (BallsCoverBalls.pow_mul (k := k + 1) (r := r / 2) fun r β¦
CompatibleFunctions.ballsCoverBalls (x := xβ) (r := R) (R := r)) f
rw [show 2 ^ (k + 1) * (r / 2) = r * 2 ^ k by ring, coveredByBalls_iff] at pmul
obtain β¨π©', cπ©', uπ©'β© := pmul
classical
let g : Ξ X β Finset (Ξ X) := fun z β¦ π©'.filter (z β ball_{xβ, R} Β· (r / 2))
have g_pd : π©.PairwiseDisjoint g := fun z hz z' hz' hne β¦ by
refine Finset.disjoint_filter.mpr fun c _ mz mz' β¦ ?_
simp_rw [mem_ball] at mz mz'
have := (dist_triangle_right (Ξ± := WithFunctionDistance xβ R) ..).trans_lt
(add_lt_add_of_lt_of_lt mz mz')
rw [add_halves, lt_iff_not_le] at this
exact absurd (h2π© z z' hz hz' hne) this
have g_ne : β z, z β π© β (g z).Nonempty := fun z hz β¦ by
obtain β¨c, hcβ© := mem_iUnion.mp <| mem_of_mem_of_subset hz (hπ©.trans uπ©')
simp only [mem_iUnion, exists_prop] at hc
use c; simpa only [g, Finset.mem_filter]
have g_injOn : π©.InjOn g := fun z hz z' hz' e β¦ by
have : z β z' β Disjoint (g z) (g z') := g_pd hz hz'
rw [β e, Finset.disjoint_self_iff_empty] at this
exact not_ne_iff.mp <| this.mt <| Finset.nonempty_iff_ne_empty.mp (g_ne z hz)
have g_subset : g '' π© β π©'.powerset.toSet := fun gz hgz β¦ by
rw [mem_image] at hgz
obtain β¨z, hzβ© := hgz
simp_rw [Finset.coe_powerset, mem_preimage, mem_powerset_iff, Finset.coe_subset, β hz.2, g,
Finset.filter_subset]
have fπ© : (g '' π©).Finite := Finite.subset π©'.powerset.finite_toSet g_subset
rw [Set.finite_image_iff g_injOn] at fπ©
refine β¨fπ©, ?_β©
lift π© to Finset (Ξ X) using fπ©
simp_rw [Cardinal.mk_fintype, Finset.coe_sort_coe, Fintype.card_coe]
norm_cast
classical calc
_ = β _ β π©, 1 := by simp
_ β€ β u β π©, (g u).card := Finset.sum_le_sum fun z hz β¦ Finset.card_pos.mpr (g_ne z hz)
_ = (π©.biUnion g).card := (Finset.card_biUnion (fun z hz z' hz' β¦ g_pd hz hz')).symm
_ β€ π©'.card := by
refine Finset.card_le_card fun _ h β¦ ?_
rw [Finset.mem_biUnion] at h
exact Finset.mem_of_subset (by simp [g]) h.choose_spec.2
_ β€ β2 ^ aββ ^ (k + 1) := cπ©'
_ β€ _ := by
rw [C2_1_1, mul_comm, pow_mul]
apply pow_le_pow_left'
exact_mod_cast (Nat.floor_le (by positivity)).trans
(Real.rpow_le_rpow_of_exponent_le one_le_two (Nat.le_ceil a))
Jeremy Tan (Jun 24 2024 at 02:45):
I have now proved normal-sized task 5 from the list:
lemma CoveredByBalls.trans (h : CoveredByBalls s n r)
(h2 : BallsCoverBalls X r r' m) : CoveredByBalls s (n * m) r' := by
obtain β¨b0, hb0, hs0β© := h
rw [coveredByBalls_iff]
have := fun x β¦ ((coveredByBalls_iff ..).mp (h2 x))
classical
use b0.biUnion fun x β¦ (this x).choose
refine β¨?_, fun p hp β¦ ?_β©
Β· calc
_ β€ β x β b0, (this x).choose.card := card_biUnion_le ..
_ β€ β _ β b0, m := sum_le_sum fun x _ β¦ (this x).choose_spec.1
_ β€ _ := by
rw [sum_const_nat fun x β¦ congrFun rfl]
exact Nat.mul_le_mul_right m hb0
Β· obtain β¨b, _, hbβ© := Set.mem_iUnionβ.mp (hs0 hp)
have tmp := ((this b).choose_spec.2) hb
rw [Set.mem_iUnionβ] at tmp β’
obtain β¨c, _, hcβ© := tmp
use c, (by rw [mem_biUnion]; use b), hc
Floris van Doorn (Jun 24 2024 at 07:15):
Terence Tao said:
For what it's worth, the PFR project developed some API for
Real
-valued measures rather thanENNReal
-valued measures, see https://teorth.github.io/pfr/docs/PFR/ForMathlib/MeasureReal.html . In principle this is supposed to go into Mathlib eventually, but that's a low priority right now. But I guess you could import it here if it would be a net help.
Yes, I'm using the same code in this project, though good old-fashioned copy-paste.
Floris van Doorn (Jun 24 2024 at 07:15):
@Jeremy Tan Thanks! Please open pull requests with these lemmas.
Jeremy Tan (Jun 24 2024 at 07:55):
but CONTRIBUTING.md says
To publish your changes on Github, you need to be added as a contributor to this repository. Make a Github account if you don't have one already and send your Github account per email to Floris. I will add you.
so do I have to be added as a contributor first?
Kim Morrison (Jun 24 2024 at 08:03):
That is probably just wrong, and you can make a PR from a fork?
Jeremy Tan (Jun 24 2024 at 08:12):
@Kim Morrison :squared_ok: https://github.com/fpvandoorn/carleson/pull/38
Floris van Doorn (Jun 24 2024 at 10:43):
@Jeremy Tan Thanks for pointing that out. Those are old instructions when there were only a few contributors. Now I think switching to a pull-request model is better. I changed the README file. And thanks for your pull request!
Floris van Doorn (Jun 24 2024 at 15:11):
Georges Gonthier is carefully reading the blueprint, and found two simplifications:
(1) @Bhavik Mehta: We should be able to define π©
to be a subset of range Q
(and then π©_subset
is reformulated as only covering range Q
). This has two advantages:
- It simplifies the finiteness condition: it is a subset of a finite set
- We then get that
range π¬ β range Q
, which should simplify/fix proofs elsewhere.
PS: I'm quite sure we don't needmaximal_π©_card
, onlymaximal_π©
.
(2) @Pietro Monticone We're probably changing the construction of the grid structure a little bit so that there is only 1 tile at level S with center o
(then we might not cover all of ball o (D ^ S)
, but should be able to cover the ball with half the radius, which is good enough). This will simplify proofs elsewhere.
Bhavik Mehta (Jun 24 2024 at 15:58):
Ah, only covering range Q is super helpful, thanks for pointing that out!
Edward van de Meent (Jun 24 2024 at 21:13):
i've finished 4.1.1 and 4.1.2, and made a PR.
I don't know how to work the blueprint though, so those changes aren't included
Floris van Doorn (Jun 24 2024 at 22:09):
Edward van de Meent said:
i've finished 4.1.1 and 4.1.2, and made a PR.
I don't know how to work the blueprint though, so those changes aren't included
Great, thanks! I'll make the changes to the blueprint after I merge your PR.
Edward van de Meent (Jun 25 2024 at 08:57):
i believe i've gone through all comments on the PR, and it's ready for another review
Edward van de Meent (Jun 25 2024 at 08:58):
ah, i see it's been merged :tada:
Edward van de Meent (Jun 25 2024 at 14:14):
i'd like to claim 4.1.3 please
Floris van Doorn (Jun 25 2024 at 14:41):
@Pietro Monticone is also planning to work further section 4.1 (see top post here, task L3). Can you coordinate with him that you're not doing double work?
Edward van de Meent (Jun 25 2024 at 14:42):
ah yes, good point...
Edward van de Meent (Jun 25 2024 at 14:43):
i'm currently mostly concerned with getting good defs for I1
, I2
, ...
Pietro Monticone (Jun 25 2024 at 14:45):
I'm sorry I've not been fast enough. I am currently very busy with my exams over the next few weeks.
Floris van Doorn (Jun 25 2024 at 14:45):
Important Note: the definition of carleson#GridStructure and carleson#TileStructure just changed, both in Lean and in the blueprint. A GridStructure now has a (unique) maximal element. For a tile structure, we added the condition range π¬ β range Q
.
They now have slightly stronger conditions, but the constructions in chapter 4 should be adapted accordingly.
This means that some proofs in chapter 6 will become simpler (this is not yet incorporated in the blueprint).
Floris van Doorn (Jun 25 2024 at 14:46):
Don't worry @Pietro Monticone. I understand that everyone only has limited time for this project.
If you prefer, Edward can continue on Section 4, and then I'll find another not-analysis-heavy task for you later.
Pietro Monticone (Jun 25 2024 at 14:49):
Floris van Doorn said:
Don't worry Pietro Monticone. I understand that everyone only has limited time for this project.
If you prefer, Edward can continue on Section 4, and then I'll find another not-analysis-heavy task for you later.
Sounds good to me.
Floris van Doorn (Jun 25 2024 at 14:59):
I added three tasks 15-17 towards the real interpolation theorem. If someone wants a bigger project (but still a lot smaller than a whole chapter of the blueprint) that requires a lot of intergral manipulations, feel free to claim task L10, to prove the real interpolation theorem itself.
Jim Portegies (Jun 25 2024 at 15:07):
Floris van Doorn said:
I added three tasks 15-17 towards the real interpolation theorem. If someone wants a bigger project (but still a lot smaller than a whole chapter of the blueprint) that requires a lot of intergral manipulations, feel free to claim task L10, to prove the real interpolation theorem itself.
Hi all, I'm relatively new to lean (but do have some experience with CoQ), I'd love to contribute. Could task 15 be a good place to start?
Johan Commelin (Jun 25 2024 at 15:34):
Hi @Jim Portegies, welcome! Great to see you here :smiley:
Floris van Doorn (Jun 25 2024 at 16:01):
Welcome! Yes, I think task 15 is a good starter task! I think a significant part will be to find the relevant lemmas in the library (e.g. docs#MeasureTheory.measure_union_le ).
Jim Portegies (Jun 25 2024 at 16:22):
Perfect! Could I work on task 15 then?
Floris van Doorn (Jun 25 2024 at 17:04):
Yes, I added you to the list!
Floris van Doorn (Jun 25 2024 at 21:52):
Floris van Doorn said:
It is indeed intended that
GridStructure.coeπ
is injective. I just added that hypothesis to the structure. Thanks for the correction.
Note: whens i β s j
then you can already conclude thatcoeπ i β coeπ j
, byball_subset_π
andπ_subset_ball
(forD > 16
, which we will assume)
@Edward van de Meent I take back what I said above. My argument is invalid.
It is true that if s i = s j + 1
then coeπ j β ball (c j) Rβ β ball (c i) Rβ β coeπ i
with Rβ > 2^1596 * Rβ
. However, that doesn't actually imply that ball (c i) Rβ
is strictly larger than ball (c j) Rβ
, since we're just in an (somewhat) arbitrary metric space. I will remove the injectivity of coeπ
later. The pair (coeπ, s)
will be injective.
This might require some precision on the formulation of some lemmas.
Floris van Doorn (Jun 25 2024 at 22:24):
Ok, I pushed this change. Whenever you see I β J
you should probably translate it to I β€ J
. Lean now has both notions on π X
, but they're not equivalent. (β€
is stronger)
Jeremy Tan (Jun 26 2024 at 07:47):
4.2.2 and 4.2.3 are done https://github.com/fpvandoorn/carleson/pull/43
Floris van Doorn (Jun 26 2024 at 08:55):
That's great! Thanks! Are you planning to continue on Lemma 4.0.2? No pressure, but if you are, then I'll add your name to it so that nobody else claims it.
Jeremy Tan (Jun 26 2024 at 09:12):
I think I'm going to continue on 4.0.2, but already the maths is getting very complicated
Mauricio Collares (Jun 26 2024 at 12:19):
Can I try my hand at Lemma 9.0.1 (carleson#MeasureTheory.lintegral_norm_pow_eq_measure_lt)?
MarΓa InΓ©s de Frutos FernΓ‘ndez (Jun 26 2024 at 13:44):
Floris van Doorn said:
This means that some proofs in chapter 6 will become simpler (this is not yet incorporated in the blueprint).
Does this apply to any of the proofs in Section 6.1?
Floris van Doorn (Jun 26 2024 at 13:56):
My understanding is that this commit did these simplifications, so they should be live now. It seems that Section 6.1 was not touched.
It is possible that there are still some roundabout arguments. The refactor allows us to conclude from IsMax i
that i = topCube
. Before there were a few case distinctions when reasoning about these maximal cubes/top cubes.
Jeremy Tan (Jun 27 2024 at 16:06):
Second part of tile existence lemma is now done https://github.com/fpvandoorn/carleson/pull/44
Jeremy Tan (Jun 27 2024 at 16:06):
but man that was insanely tough
Floris van Doorn (Jun 27 2024 at 17:33):
Great! Thanks!
Jeremy Tan (Jun 28 2024 at 04:31):
I cannot follow the argument here. Shouldn't it be "Thus, by (4.2.3), there exists z' β \mathcal{Z}(I)
with x β B_{IΒ°}(z', 0.7)
", and similarly for the inclusion after that?
Jeremy Tan (Jun 28 2024 at 04:32):
If this step is correct I don't see how Equation (4.2.3) justifies it
Jeremy Tan (Jun 28 2024 at 04:33):
(https://github.com/fpvandoorn/carleson/pull/46)
Jeremy Tan (Jun 28 2024 at 04:35):
The proof seems to imply that Q(x) = Ο
Jeremy Tan (Jun 28 2024 at 07:53):
Floris van Doorn said:
I will remove the injectivity of
coeπ
later. The pair(coeπ, s)
will be injective.
This might require some precision on the formulation of some lemmas.
I'm going to need the injectivity of coeπ
proper in proving tile existence, otherwise I can't prove I = J
that is one of the steps in proving relative_fundamental_dyadic
Floris van Doorn (Jun 28 2024 at 10:31):
Oh, you indeed couldn't prove I = J
, since relative_fundamental_dyadic
was still written using β
instead of β€
. I fixed that now, and removed the subset notation on π X
altogether, so that we are unlikely to make that mistake again.
Are you now able to prove I = J
using the stronger hypothesis in relative_fundamental_dyadic
? Note that you can apply le_antisymm
for β€
on π X
.
I'm afraid that we cannot assume injectivity of coeπ
.
Jeremy Tan (Jun 28 2024 at 10:49):
Floris van Doorn said:
Oh, you indeed couldn't prove
I = J
, sincerelative_fundamental_dyadic
was still written usingβ
instead ofβ€
. I fixed that now, and removed the subset notation onπ X
altogether, so that we are unlikely to make that mistake again.
Are you now able to proveI = J
using the stronger hypothesis inrelative_fundamental_dyadic
? Note that you can applyle_antisymm
forβ€
onπ X
.
I'm afraid that we cannot assume injectivity ofcoeπ
.
Done.
Jeremy Tan (Jun 28 2024 at 15:01):
@Floris van Doorn :up_button:
Mauricio Collares (Jun 28 2024 at 17:00):
Mauricio Collares said:
Can I try my hand at Lemma 9.0.1 (carleson#MeasureTheory.lintegral_norm_pow_eq_measure_lt)?
I just noticed that this is a lot closer to something in Mathlib than I expected (namely docs#MeasureTheory.lintegral_rpow_eq_lintegral_meas_le_mul), which makes it a little less fun. I can do it on Monday if it's still useful, though.
Floris van Doorn (Jun 28 2024 at 17:09):
@Mauricio: Oh! I didn't know we had another file with applications of the layercake principle. Then it's indeed a very small task. I don't know precisely what form we need, so probably Mathlib's version is good enough.
@Jeremy: I don't have time to look at your remaining questions/PR today, I'll come back to you a bit later. Sorry.
Jeremy Tan (Jun 29 2024 at 13:17):
@Floris van Doorn well I've solved all my queries. There were some non sequitur steps in the blueprint that I've excised
Jeremy Tan (Jun 29 2024 at 13:18):
I have now proved the entire tile existence lemma at https://github.com/fpvandoorn/carleson/pull/46
Jeremy Tan (Jun 30 2024 at 05:02):
I have now completed task 8 in the outstanding tasks list: https://github.com/fpvandoorn/carleson/pull/47
Jeremy Tan (Jun 30 2024 at 08:29):
(note that PR #47 shuffles the positions/names of some lemmas used in PR #46, so PR #47 must be merged first)
Jim Portegies (Jun 30 2024 at 11:32):
@Floris van Doorn I have just created a PR for task 15. The proof for lemma continuousWithinAt_distribution
is very long. I've started exploring a different route too (not included in the PR), that would use a neighborhood basis that would work for every point in ENNReal
, however the proof that that is really a neighborhood basis seems to get out of hand. The problem is mostly with case distinction and the fact that I don't know how to do computations conveniently in ENNReal
.
Jeremy Tan (Jun 30 2024 at 12:16):
Jeremy Tan said:
(note that PR #47 shuffles the positions/names of some lemmas used in PR #46, so PR #47 must be merged first)
Actually, scrap that. #46 now includes #47
Jeremy Tan (Jun 30 2024 at 16:17):
@Floris van Doorn did you see my completed PRs?
Edward van de Meent (Jun 30 2024 at 16:28):
does the blueprint look weird for anyone else?
image.png
Jeremy Tan (Jun 30 2024 at 16:28):
Floris needs to clear the cache again
Floris van Doorn (Jun 30 2024 at 16:32):
Yes, I'm trying to fix CI (and move to the proper leanblueprint
infrastructure), and I'm having some issues...
Floris van Doorn (Jun 30 2024 at 16:33):
@Jeremy Tan Yes, I've seen them, but I've been fighting with the CI for the last few hours.
Floris van Doorn (Jun 30 2024 at 17:05):
Okay, it will stay broken for a while. I'm out of energy to fix this.
Jeremy Tan (Jun 30 2024 at 18:35):
@Floris van Doorn your latest commit did work, and the dependency graph is working again
Jim Portegies (Jul 01 2024 at 14:15):
Would it be okay if I start working towards the real interpolation theorem, task L.10?
Floris van Doorn (Jul 01 2024 at 14:24):
Yes, that would be amazing!
James Sundstrom (Jul 02 2024 at 16:21):
@Floris van Doorn I was looking at 2.1.3 and Psi.lean defines Ks
using K x y * Ο (D ^ s * dist x y)
, whereas the blueprint uses D^(-s). At a quick glance, it looks like all other occurrences of -s are swapped with s appropriately, so this is a different choice of convention rather than a single typo. I haven't spent enough time with this to know which one would be easier to change.
Floris van Doorn (Jul 02 2024 at 16:24):
Please change the formalization, and use the convention from the blueprint. The blueprint was updated at some point (probably including this change), and it will be easier to use that throughout.
Floris van Doorn (Jul 02 2024 at 16:25):
Shall I put your name on that item?
James Sundstrom (Jul 02 2024 at 16:27):
Sure, I'll give it a shot.
Last updated: May 02 2025 at 03:31 UTC