@@ -6,20 +6,91 @@ import Mathlib.Analysis.Convex.SpecificFunctions.Deriv
66import Mathlib.Analysis.Convolution
77
88import Carleson.Classical.Helper
9+ import Carleson.ToMathlib.Misc
10+ import Carleson.ToMathlib.Topology.Instances.AddCircle
11+ import Carleson.ToMathlib.MeasureTheory.Function.LpSeminorm.TriangleInequality
12+ import Carleson.ToMathlib.MeasureTheory.Function.LpSpace.ContinuousFunctions
913
10- open Finset Real
14+
15+ open Finset Real MeasureTheory AddCircle
1116
1217noncomputable section
1318
1419
20+ --TODO: I think the measurability assumptions might be unnecessary
21+ theorem fourierCoeff_eq_fourierCoeff_of_aeeq {T : ℝ} [hT : Fact (0 < T)] {n : ℤ} {f g : AddCircle T → ℂ}
22+ (hf : AEStronglyMeasurable f haarAddCircle) (hg : AEStronglyMeasurable g haarAddCircle)
23+ (h : f =ᵐ[haarAddCircle] g) : fourierCoeff f n = fourierCoeff g n := by
24+ unfold fourierCoeff
25+ apply integral_congr_ae
26+ change @DFunLike.coe C(AddCircle T, ℂ) (AddCircle T) (fun x ↦ ℂ) ContinuousMap.instFunLike (fourier (-n)) * f =ᶠ[ae haarAddCircle] @DFunLike.coe C(AddCircle T, ℂ) (AddCircle T) (fun x ↦ ℂ) ContinuousMap.instFunLike (fourier (-n)) * g
27+ have fourier_measurable : AEStronglyMeasurable (⇑(@fourier T (-n))) haarAddCircle := (ContinuousMap.measurable _).aestronglyMeasurable
28+
29+ rw [← AEEqFun.mk_eq_mk (hf := fourier_measurable.mul hf) (hg := fourier_measurable.mul hg),
30+ ← AEEqFun.mk_mul_mk _ _ fourier_measurable hf, ← AEEqFun.mk_mul_mk _ _ fourier_measurable hg]
31+ congr 1
32+ rwa [AEEqFun.mk_eq_mk]
33+
34+
1535def partialFourierSum (N : ℕ) (f : ℝ → ℂ) (x : ℝ) : ℂ := ∑ n ∈ Icc (-(N : ℤ)) N,
1636 fourierCoeffOn Real.two_pi_pos f n * fourier n (x : AddCircle (2 * π))
1737
18- --TODO: Add an AddCircle version?
19- /-
20- def AddCircle.partialFourierSum' {T : ℝ} [hT : Fact (0 < T)] (N : ℕ) (f : AddCircle T → ℂ) (x : AddCircle T) : ℂ :=
21- ∑ n in Icc (-Int.ofNat ↑N) N, fourierCoeff f n * fourier n x
22- -/
38+ def partialFourierSum' {T : ℝ} [hT : Fact (0 < T)] (N : ℕ) (f : AddCircle T → ℂ) : C(AddCircle T, ℂ) :=
39+ ∑ n ∈ Finset.Icc (-Int.ofNat N) N, fourierCoeff f n • fourier n
40+
41+ def partialFourierSumLp {T : ℝ} [hT : Fact (0 < T)] (p : ENNReal) [Fact (1 ≤ p)] (N : ℕ) (f : AddCircle T → ℂ) : Lp ℂ p (@haarAddCircle T hT) :=
42+ ∑ n ∈ Finset.Icc (-Int.ofNat N) N, fourierCoeff f n • fourierLp p n
43+
44+
45+ lemma partialFourierSum_eq_partialFourierSum' [hT : Fact (0 < 2 * Real.pi)] (N : ℕ) (f : ℝ → ℂ) :
46+ liftIoc (2 * Real.pi) 0 (partialFourierSum N f) = partialFourierSum' N (liftIoc (2 * Real.pi) 0 f) := by
47+ ext x
48+ unfold partialFourierSum partialFourierSum' liftIoc
49+ simp only [
50+ Function.comp_apply, Set.restrict_apply, Int.ofNat_eq_coe, ContinuousMap.coe_sum,
51+ ContinuousMap.coe_smul, Finset.sum_apply, Pi.smul_apply, smul_eq_mul]
52+ congr
53+ ext n
54+ rw [← liftIoc, fourierCoeff_liftIoc_eq]
55+ congr 2
56+ . rw [zero_add (2 * Real.pi)]
57+ . rcases (eq_coe_Ioc x) with ⟨b, hb, rfl⟩
58+ rw [← zero_add (2 * Real.pi)] at hb
59+ rw [coe_eq_coe_iff_of_mem_Ioc (Subtype.coe_prop _) hb]
60+ have : (liftIoc (2 * Real.pi) 0 (fun x ↦ x)) b = (fun x ↦ x) b := liftIoc_coe_apply hb
61+ unfold liftIoc at this
62+ rw [Function.comp_apply, Set.restrict_apply] at this
63+ exact this
64+
65+ lemma partialFourierSupLp_eq_partialFourierSupLp_of_aeeq {T : ℝ} [hT : Fact (0 < T)] {p : ENNReal} [Fact (1 ≤ p)] {N : ℕ} {f g : AddCircle T → ℂ}
66+ (hf : AEStronglyMeasurable f haarAddCircle) (hg : AEStronglyMeasurable g haarAddCircle)
67+ (h : f =ᶠ[ae haarAddCircle] g) : partialFourierSumLp p N f = partialFourierSumLp p N g := by
68+ unfold partialFourierSumLp
69+ congr
70+ ext n : 1
71+ congr 1
72+ exact fourierCoeff_eq_fourierCoeff_of_aeeq hf hg h
73+
74+
75+ lemma partialFourierSum'_eq_partialFourierSumLp {T : ℝ} [hT : Fact (0 < T)] (p : ENNReal) [Fact (1 ≤ p)] (N : ℕ) (f : AddCircle T → ℂ) :
76+ partialFourierSumLp p N f = MemLp.toLp (partialFourierSum' N f) ((partialFourierSum' N f).MemLp haarAddCircle ℂ) := by
77+ unfold partialFourierSumLp partialFourierSum'
78+ unfold fourierLp
79+ simp_rw [ContinuousMap.coe_sum, ContinuousMap.coe_smul]
80+ rw [MemLp.toLp_sum _ (by intro n hn; apply MemLp.const_smul (ContinuousMap.MemLp haarAddCircle ℂ (fourier n)))]
81+ rw [Finset.univ_eq_attach]
82+ rw [← Finset.sum_attach]
83+ rfl
84+
85+
86+ lemma partialFourierSum_aeeq_partialFourierSumLp [hT : Fact (0 < 2 * Real.pi)] (p : ENNReal) [Fact (1 ≤ p)] (N : ℕ) (f : ℝ → ℂ) (h_mem_ℒp : MemLp (liftIoc (2 * Real.pi) 0 f) 2 haarAddCircle):
87+ liftIoc (2 * Real.pi) 0 (partialFourierSum N f) =ᶠ[ae haarAddCircle] ↑↑(partialFourierSumLp p N (MemLp.toLp (liftIoc (2 * Real.pi) 0 f) h_mem_ℒp)) := by
88+ rw [partialFourierSupLp_eq_partialFourierSupLp_of_aeeq (Lp.aestronglyMeasurable _) h_mem_ℒp.aestronglyMeasurable (MemLp.coeFn_toLp h_mem_ℒp)]
89+ rw [partialFourierSum'_eq_partialFourierSumLp, partialFourierSum_eq_partialFourierSum']
90+ symm
91+ apply MemLp.coeFn_toLp
92+
93+
2394
2495local notation "S_" => partialFourierSum
2596
0 commit comments