@@ -41,35 +41,19 @@ variable [NontriviallyNormedField 𝕜] [NormedAddCommGroup E]
4141 [InnerProductSpace ℝ E] [FiniteDimensional ℝ E] [MeasurableSpace E] [BorelSpace E]
4242 [NormedSpace 𝕜 F₁] [NormedSpace 𝕜 F₂] [NormedSpace 𝕜 F₃]
4343
44- /-- The norm of the integrant of the convolution is integrable if the functions are integrable
45- and continuous. -/
44+ /-- The norm of the integrand of the convolution is integrable if the functions are integrable. -/
4645theorem integrable_prod_sub (B : F₁ →L[𝕜] F₂ →L[𝕜] F₃) {f₁ : E → F₁} {f₂ : E → F₂}
47- (hf₁ : Integrable f₁) (hf₂ : Integrable f₂) (hf₁' : Continuous f₁) (hf₂' : Continuous f₂) :
46+ (hf₁ : Integrable f₁) (hf₂ : Integrable f₂) :
4847 Integrable (fun (p : E × E) ↦ ‖B‖ * (‖f₁ (p.1 - p.2 )‖ * ‖f₂ p.2 ‖)) (volume.prod volume) := by
49- apply Integrable.const_mul
50- rw [integrable_prod_iff' (by fun_prop)]
51- constructor
52- · filter_upwards with x
53- exact (hf₁.comp_sub_right x).norm.mul_const _
54- have : Integrable (fun x ↦ ((∫ y, ‖f₁ y‖) * ‖f₂ x‖)) := by
55- apply hf₂.norm.bdd_mul (by fun_prop) (c := ‖(∫ y, ‖f₁ y‖)‖)
56- filter_upwards with ; rfl
57- convert! this using 1
58- ext x
59- simp_rw [norm_mul, norm_norm]
60- rw [integral_mul_const]
61- congr 1
62- convert! integral_sub_right_eq_self _ x (μ := volume)
63- rfl
48+ simpa [mul_comm] using (hf₂.norm.convolution_integrand (.mul ℝ ℝ) hf₁.norm).const_mul ‖B‖
6449
6550open FourierTransform
6651
6752variable [NormedSpace ℂ F₃]
6853
6954/-- Calculate the Fourier transform of the convolution as a symmetric integral. -/
7055theorem fourier_bilin_convolution_eq_integral (B : F₁ →L[𝕜] F₂ →L[𝕜] F₃) {f₁ : E → F₁} {f₂ : E → F₂}
71- (hf₁ : Integrable f₁) (hf₂ : Integrable f₂) (hf₁' : Continuous f₁) (hf₂' : Continuous f₂)
72- (ξ : E) :
56+ (hf₁ : Integrable f₁) (hf₂ : Integrable f₂) (ξ : E) :
7357 𝓕 (f₁ ⋆[B] f₂) ξ = ∫ y, ∫ x, 𝐞 (-inner ℝ (y + x) ξ) • B (f₁ x) (f₂ y) := calc
7458 _ = 𝓕 (f₂ ⋆[B.flip] f₁) ξ := by
7559 rw [convolution_flip]
@@ -80,11 +64,11 @@ theorem fourier_bilin_convolution_eq_integral (B : F₁ →L[𝕜] F₂ →L[
8064 simp_rw [Circle.smul_def, integral_smul]
8165 _ = ∫ y, ∫ x, 𝐞 (-inner ℝ x ξ) • B (f₁ (x - y)) (f₂ y) := by
8266 refine integral_integral_swap ?_
83- apply (integrable_prod_sub B hf₁ hf₂ hf₁' hf₂').mono ( by measurability)
84- filter_upwards with ⟨y, x⟩
85- have : ‖(B (f₁ (y - x))) (f₂ x)‖ ≤ ‖B‖ * (‖f₁ (y - x)‖ * ‖f₂ x‖) := by
86- grw [B.le_opNorm₂ (f₁ (y - x)) (f₂ x), mul_assoc]
87- simpa
67+ have hB := hf₂.convolution_integrand B.flip hf₁
68+ refine hB.mono ?_ ?_
69+ · exact continuous_fourierChar.comp ( by fun_prop) |>.aestronglyMeasurable.smul
70+ hB.aestronglyMeasurable
71+ · filter_upwards with ⟨x, y⟩ using by simp
8872 _ = ∫ y, ∫ x, 𝐞 (-inner ℝ (y + x) ξ) • B (f₁ x) (f₂ y) := by
8973 congr
9074 ext y
@@ -101,31 +85,18 @@ open ContinuousLinearMap
10185/-- The Fourier transform of the convolution is given by the bilinear map applied to the Fourier
10286transform of the individual functions. -/
10387theorem fourier_bilin_convolution_eq (B : F₁ →L[ℂ] F₂ →L[ℂ] F₃) {f₁ : E → F₁} {f₂ : E → F₂}
104- (hf₁ : Integrable f₁) (hf₂ : Integrable f₂) (hf₁' : Continuous f₁) (hf₂' : Continuous f₂)
105- (ξ : E) :
88+ (hf₁ : Integrable f₁) (hf₂ : Integrable f₂) (ξ : E) :
10689 𝓕 (f₁ ⋆[B] f₂) ξ = B (𝓕 f₁ ξ) (𝓕 f₂ ξ) := calc
10790 _ = ∫ y, ∫ x, 𝐞 (-inner ℝ (y + x) ξ) • B (f₁ x) (f₂ y) :=
108- fourier_bilin_convolution_eq_integral B hf₁ hf₂ hf₁' hf₂' _
91+ fourier_bilin_convolution_eq_integral B hf₁ hf₂ _
10992 _ = ∫ y, ∫ x, 𝐞 (-inner ℝ y ξ) • 𝐞 (-inner ℝ x ξ) • B (f₁ x) (f₂ y) := by
110- congr
111- ext y
112- congr
113- ext x
114- rw [smul_smul, ← AddChar.map_add_eq_mul, inner_add_left]
115- congr
116- grind
93+ simp_rw [inner_add_left, neg_add, AddChar.map_add_eq_mul, smul_smul]
11794 _ = ∫ y, (∫ x, B (𝐞 (-inner ℝ x ξ) • f₁ x)) (𝐞 (-inner ℝ y ξ) • f₂ y) := by
118- congr
119- ext y
120- simp_rw [Circle.smul_def, map_smul, MeasureTheory.integral_smul]
121- congr
122- rw [integral_apply ?_ (f₂ y)]
123- · simp
124- have : MeasureTheory.Integrable (fun x ↦ ‖B‖ * ‖f₁ x‖) MeasureTheory.volume :=
125- hf₁.norm.const_mul _
126- apply this.mono (by fun_prop)
127- filter_upwards with x
128- simpa [← Circle.smul_def] using le_opNorm B (f₁ x)
95+ congr with y
96+ have : Integrable (fun x ↦ (𝐞 (-inner ℝ x ξ) : ℂ) • B (f₁ x)) volume := by
97+ simpa [Circle.smul_def] using
98+ (Real.fourierIntegral_convergent_iff ξ).2 (B.integrable_comp hf₁)
99+ simp [Circle.smul_def, MeasureTheory.integral_smul, integral_apply this (f₂ y)]
129100 _ = B (∫ x, 𝐞 (-inner ℝ x ξ) • f₁ x) (∫ y, 𝐞 (-inner ℝ y ξ) • f₂ y) := by
130101 rw [← integral_comp_comm _ (by simpa using hf₂), ← integral_comp_comm _ (by simpa using hf₁)]
131102
@@ -134,10 +105,9 @@ of the individual functions.
134105
135106Version for scalar multiplication. -/
136107theorem fourier_smul_convolution_eq {f₁ : E → ℂ} {f₂ : E → F₁}
137- (hf₁ : Integrable f₁) (hf₂ : Integrable f₂) (hf₁' : Continuous f₁) (hf₂' : Continuous f₂)
138- (ξ : E) :
108+ (hf₁ : Integrable f₁) (hf₂ : Integrable f₂) (ξ : E) :
139109 𝓕 (f₁ ⋆[lsmul ℂ ℂ] f₂) ξ = (𝓕 f₁ ξ) • (𝓕 f₂ ξ) :=
140- fourier_bilin_convolution_eq (lsmul ℂ ℂ) hf₁ hf₂ hf₁' hf₂' ξ
110+ fourier_bilin_convolution_eq (lsmul ℂ ℂ) hf₁ hf₂ ξ
141111
142112variable [NormedRing R] [NormedSpace ℂ R] [IsScalarTower ℂ R R] [SMulCommClass ℂ R R]
143113 [CompleteSpace R]
@@ -147,10 +117,9 @@ of the individual functions.
147117
148118Version for multiplication. -/
149119theorem fourier_mul_convolution_eq {f₁ : E → R} {f₂ : E → R}
150- (hf₁ : Integrable f₁) (hf₂ : Integrable f₂) (hf₁' : Continuous f₁) (hf₂' : Continuous f₂)
151- (ξ : E) :
120+ (hf₁ : Integrable f₁) (hf₂ : Integrable f₂) (ξ : E) :
152121 𝓕 (f₁ ⋆[mul ℂ R] f₂) ξ = (𝓕 f₁ ξ) * (𝓕 f₂ ξ) :=
153- fourier_bilin_convolution_eq (mul ℂ R) hf₁ hf₂ hf₁' hf₂' ξ
122+ fourier_bilin_convolution_eq (mul ℂ R) hf₁ hf₂ ξ
154123
155124end Real
156125
@@ -198,7 +167,7 @@ open MeasureTheory
198167theorem fourier_convolution_apply (B : F₁ →L[ℂ] F₂ →L[ℂ] F₃) (f : 𝓢(E, F₁)) (g : 𝓢(E, F₂)) (x : E) :
199168 𝓕 (convolution B f g) x = 𝓕 (f ⋆[B] g) x := by
200169 simp [fourier_convolution, fourier_coe,
201- Real.fourier_bilin_convolution_eq B f.integrable g.integrable f.continuous g.continuous ]
170+ Real.fourier_bilin_convolution_eq B f.integrable g.integrable]
202171
203172/-- The convolution on Schwartz functions is equal to the convolution on functions. -/
204173theorem convolution_apply (B : F₁ →L[ℂ] F₂ →L[ℂ] F₃) (f : 𝓢(E, F₁)) (g : 𝓢(E, F₂)) (x : E) :
0 commit comments