@@ -420,10 +420,10 @@ lemma convolution_smul [smul_comm_class ℝ 𝕜 F]
420
420
{y : 𝕜} : f ⋆[L, μ] (y • g) = y • (f ⋆[L, μ] g) :=
421
421
by { ext, simp only [pi.smul_apply, convolution_def, ← integral_smul, (L _).map_smul] }
422
422
423
- lemma zero_convolution : 0 ⋆[L, μ] g = 0 :=
423
+ @[simp] lemma zero_convolution : 0 ⋆[L, μ] g = 0 :=
424
424
by { ext, simp_rw [convolution_def, pi.zero_apply, L.map_zero₂, integral_zero] }
425
425
426
- lemma convolution_zero : f ⋆[L, μ] 0 = 0 :=
426
+ @[simp] lemma convolution_zero : f ⋆[L, μ] 0 = 0 :=
427
427
by { ext, simp_rw [convolution_def, pi.zero_apply, (L _).map_zero, integral_zero] }
428
428
429
429
lemma convolution_exists_at.distrib_add {x : G} (hfg : convolution_exists_at f g x L μ)
@@ -582,6 +582,19 @@ lemma convolution_mul_swap [normed_space ℝ 𝕜] [complete_space 𝕜] {f : G
582
582
(f ⋆[mul 𝕜 𝕜, μ] g) x = ∫ t, f (x - t) * g t ∂μ :=
583
583
convolution_eq_swap _
584
584
585
+ /-- The convolution of two even functions is also even. -/
586
+ lemma convolution_neg_of_neg_eq (h1 : ∀ᵐ x ∂μ, f (-x) = f x) (h2 : ∀ᵐ x ∂μ, g (-x) = g x) :
587
+ (f ⋆[L, μ] g) (-x) = (f ⋆[L, μ] g) x :=
588
+ calc ∫ (t : G), (L (f t)) (g (-x - t)) ∂μ
589
+ = ∫ (t : G), (L (f (-t))) (g (x + t)) ∂μ :
590
+ begin
591
+ apply integral_congr_ae,
592
+ filter_upwards [h1, (eventually_add_left_iff μ x).2 h2] with t ht h't,
593
+ simp_rw [ht, ← h't, neg_add'],
594
+ end
595
+ ... = ∫ (t : G), (L (f t)) (g (x - t)) ∂μ :
596
+ by { rw ← integral_neg_eq_self, simp only [neg_neg, ← sub_eq_add_neg] }
597
+
585
598
end measurable
586
599
587
600
variables [topological_space G]
@@ -933,20 +946,23 @@ end
933
946
934
947
end assoc
935
948
936
- variables [normed_add_comm_group G] [borel_space G]
937
- variables [second_countable_topology G] [sigma_compact_space G]
949
+ variables [normed_add_comm_group G] [borel_space G] [normed_space 𝕜 G]
938
950
939
951
lemma convolution_precompR_apply {g : G → E'' →L[𝕜] E'}
940
952
(hf : locally_integrable f μ) (hcg : has_compact_support g) (hg : continuous g)
941
953
(x₀ : G) (x : E'') : (f ⋆[L.precompR E'', μ] g) x₀ x = (f ⋆[L, μ] (λ a, g a x)) x₀ :=
942
954
begin
955
+ rcases hcg.eq_zero_or_finite_dimensional 𝕜 hg with rfl|fin_dim,
956
+ { simp only [convolution, pi.zero_apply, integral_const, smul_zero, zero_apply,
957
+ _root_.map_zero] },
958
+ resetI,
959
+ haveI : proper_space G, from finite_dimensional.proper_is_R_or_C 𝕜 G,
943
960
have := hcg.convolution_exists_right (L.precompR E'' : _) hf hg x₀,
944
961
simp_rw [convolution_def, continuous_linear_map.integral_apply this ],
945
962
refl,
946
963
end
947
964
948
965
variables [sigma_finite μ] [is_add_left_invariant μ]
949
- variables [normed_space 𝕜 G] [proper_space G]
950
966
951
967
/-- Compute the total derivative of `f ⋆ g` if `g` is `C^1` with compact support and `f` is locally
952
968
integrable. To write down the total derivative as a convolution, we use
@@ -955,6 +971,12 @@ lemma has_compact_support.has_fderiv_at_convolution_right
955
971
(hcg : has_compact_support g) (hf : locally_integrable f μ) (hg : cont_diff 𝕜 1 g) (x₀ : G) :
956
972
has_fderiv_at (f ⋆[L, μ] g) ((f ⋆[L.precompR G, μ] fderiv 𝕜 g) x₀) x₀ :=
957
973
begin
974
+ rcases hcg.eq_zero_or_finite_dimensional 𝕜 hg.continuous with rfl|fin_dim,
975
+ { have : fderiv 𝕜 (0 : G → E') = 0 , from fderiv_const (0 : E'),
976
+ simp only [this , convolution_zero, pi.zero_apply],
977
+ exact has_fderiv_at_const (0 : F) x₀ },
978
+ resetI,
979
+ haveI : proper_space G, from finite_dimensional.proper_is_R_or_C 𝕜 G,
958
980
set L' := L.precompR G,
959
981
have h1 : ∀ᶠ x in 𝓝 x₀, ae_strongly_measurable (λ t, L (f t) (g (x - t))) μ :=
960
982
eventually_of_forall
@@ -988,10 +1010,14 @@ begin
988
1010
exact hcf.has_fderiv_at_convolution_right L.flip hg hf x₀,
989
1011
end
990
1012
991
- lemma has_compact_support.cont_diff_convolution_right [finite_dimensional 𝕜 G]
1013
+ lemma has_compact_support.cont_diff_convolution_right
992
1014
(hcg : has_compact_support g) (hf : locally_integrable f μ) (hg : cont_diff 𝕜 n g) :
993
1015
cont_diff 𝕜 n (f ⋆[L, μ] g) :=
994
1016
begin
1017
+ rcases hcg.eq_zero_or_finite_dimensional 𝕜 hg.continuous with rfl|fin_dim,
1018
+ { simp only [convolution_zero], exact cont_diff_zero_fun, },
1019
+ resetI,
1020
+ haveI : proper_space G, from finite_dimensional.proper_is_R_or_C 𝕜 G,
995
1021
induction n using enat.nat_induction with n ih ih generalizing g,
996
1022
{ rw [cont_diff_zero] at hg ⊢,
997
1023
exact hcg.continuous_convolution_right L hf hg },
@@ -1011,7 +1037,7 @@ begin
1011
1037
{ rw [cont_diff_top] at hg ⊢, exact λ n, ih n hcg (hg n) }
1012
1038
end
1013
1039
1014
- lemma has_compact_support.cont_diff_convolution_left [finite_dimensional 𝕜 G] [ is_neg_invariant μ]
1040
+ lemma has_compact_support.cont_diff_convolution_left [is_neg_invariant μ]
1015
1041
(hcf : has_compact_support f) (hf : cont_diff 𝕜 n f) (hg : locally_integrable g μ) :
1016
1042
cont_diff 𝕜 n (f ⋆[L, μ] g) :=
1017
1043
by { rw [← convolution_flip], exact hcf.cont_diff_convolution_right L.flip hg hf }
0 commit comments