@@ -9,7 +9,7 @@ import Mathlib.Analysis.Calculus.ContDiff.Bounds
9
9
import Mathlib.Analysis.Calculus.IteratedDeriv.Defs
10
10
import Mathlib.Analysis.LocallyConvex.WithSeminorms
11
11
import Mathlib.Topology.Algebra.UniformFilterBasis
12
- import Mathlib.Topology.ContinuousFunction.Bounded
12
+ import Mathlib.Analysis.Normed.Group.ZeroAtInfty
13
13
import Mathlib.Analysis.SpecialFunctions.Pow.Real
14
14
15
15
#align_import analysis.schwartz_space from "leanprover-community/mathlib" @"e137999b2c6f2be388f4cd3bbf8523de1910cd2b"
@@ -119,6 +119,9 @@ protected theorem continuous (f : 𝓢(E, F)) : Continuous f :=
119
119
(f.smooth 0 ).continuous
120
120
#align schwartz_map.continuous SchwartzMap.continuous
121
121
122
+ instance instContinuousMapClass : ContinuousMapClass 𝓢(E, F) E F where
123
+ map_continuous := SchwartzMap.continuous
124
+
122
125
/-- Every Schwartz function is differentiable. -/
123
126
protected theorem differentiable (f : 𝓢(E, F)) : Differentiable ℝ f :=
124
127
(f.smooth 1 ).differentiable rfl.le
@@ -976,6 +979,11 @@ section BoundedContinuousFunction
976
979
977
980
open scoped BoundedContinuousFunction
978
981
982
+ instance instBoundedContinuousMapClass : BoundedContinuousMapClass 𝓢(E, F) E F :=
983
+ { instContinuousMapClass with
984
+ map_bounded := fun f ↦ ⟨2 * (SchwartzMap.seminorm ℝ 0 0 ) f,
985
+ (BoundedContinuousFunction.dist_le_two_norm' (norm_le_seminorm ℝ f))⟩ }
986
+
979
987
/-- Schwartz functions as bounded continuous functions -/
980
988
def toBoundedContinuousFunction (f : 𝓢(E, F)) : E →ᵇ F :=
981
989
BoundedContinuousFunction.ofNormedAddCommGroup f (SchwartzMap.continuous f)
@@ -1024,8 +1032,7 @@ def toBoundedContinuousFunctionCLM : 𝓢(E, F) →L[𝕜] E →ᵇ F :=
1024
1032
simp only [Seminorm.comp_apply, coe_normSeminorm, Finset.sup_singleton,
1025
1033
schwartzSeminormFamily_apply_zero, Seminorm.smul_apply, one_smul, ge_iff_le,
1026
1034
BoundedContinuousFunction.norm_le (map_nonneg _ _)]
1027
- intro x
1028
- exact norm_le_seminorm 𝕜 _ _ }
1035
+ exact norm_le_seminorm 𝕜 _ }
1029
1036
#align schwartz_map.to_bounded_continuous_function_clm SchwartzMap.toBoundedContinuousFunctionCLM
1030
1037
1031
1038
@[simp]
@@ -1048,4 +1055,75 @@ theorem delta_apply (x₀ : E) (f : 𝓢(E, F)) : delta 𝕜 F x₀ f = f x₀ :
1048
1055
1049
1056
end BoundedContinuousFunction
1050
1057
1058
+ section ZeroAtInfty
1059
+
1060
+ open scoped ZeroAtInfty
1061
+
1062
+ variable [ProperSpace E]
1063
+
1064
+ instance instZeroAtInftyContinuousMapClass : ZeroAtInftyContinuousMapClass 𝓢(E, F) E F :=
1065
+ { instContinuousMapClass with
1066
+ zero_at_infty := by
1067
+ intro f
1068
+ apply zero_at_infty_of_norm_le
1069
+ intro ε hε
1070
+ use (SchwartzMap.seminorm ℝ 1 0 ) f / ε
1071
+ intro x hx
1072
+ rw [div_lt_iff hε] at hx
1073
+ have hxpos : 0 < ‖x‖ := by
1074
+ rw [norm_pos_iff']
1075
+ intro hxzero
1076
+ simp only [hxzero, norm_zero, zero_mul, ← not_le] at hx
1077
+ exact hx (map_nonneg (SchwartzMap.seminorm ℝ 1 0 ) f)
1078
+ have := norm_pow_mul_le_seminorm ℝ f 1 x
1079
+ rw [pow_one, ← le_div_iff' hxpos] at this
1080
+ apply lt_of_le_of_lt this
1081
+ rwa [div_lt_iff' hxpos] }
1082
+
1083
+ /-- Schwartz functions as continuous functions vanishing at infinity. -/
1084
+ def toZeroAtInfty (f : 𝓢(E, F)) : C₀(E, F) where
1085
+ toFun := f
1086
+ zero_at_infty' := zero_at_infty f
1087
+
1088
+ @[simp] theorem toZeroAtInfty_apply (f : 𝓢(E, F)) (x : E) : f.toZeroAtInfty x = f x :=
1089
+ rfl
1090
+
1091
+ @[simp] theorem toZeroAtInfty_toBCF (f : 𝓢(E, F)) :
1092
+ f.toZeroAtInfty.toBCF = f.toBoundedContinuousFunction := by
1093
+ ext; rfl
1094
+
1095
+ variable (𝕜 E F)
1096
+ variable [IsROrC 𝕜] [NormedSpace 𝕜 F] [SMulCommClass ℝ 𝕜 F]
1097
+
1098
+ /-- The inclusion map from Schwartz functions to continuous functions vanishing at infinity as a
1099
+ linear map. -/
1100
+ def toZeroAtInftyLM : 𝓢(E, F) →ₗ[𝕜] C₀(E, F) where
1101
+ toFun f := f.toZeroAtInfty
1102
+ map_add' f g := by ext; exact add_apply
1103
+ map_smul' a f := by ext; exact smul_apply
1104
+
1105
+ @[simp] theorem toZeroAtInftyLM_apply (f : 𝓢(E, F)) (x : E) : toZeroAtInftyLM 𝕜 E F f x = f x :=
1106
+ rfl
1107
+
1108
+ /-- The inclusion map from Schwartz functions to continuous functions vanishing at infinity as a
1109
+ continuous linear map. -/
1110
+ def toZeroAtInftyCLM : 𝓢(E, F) →L[𝕜] C₀(E, F) :=
1111
+ { toZeroAtInftyLM 𝕜 E F with
1112
+ cont := by
1113
+ change Continuous (toZeroAtInftyLM 𝕜 E F)
1114
+ refine'
1115
+ Seminorm.continuous_from_bounded (schwartz_withSeminorms 𝕜 E F)
1116
+ (norm_withSeminorms 𝕜 (C₀(E, F))) _ fun _ => ⟨{0 }, 1 , fun f => _⟩
1117
+ haveI : MulAction NNReal (Seminorm 𝕜 𝓢(E, F)) := Seminorm.instDistribMulAction.toMulAction
1118
+ simp only [Seminorm.comp_apply, coe_normSeminorm, Finset.sup_singleton,
1119
+ schwartzSeminormFamily_apply_zero, Seminorm.smul_apply, one_smul, ge_iff_le,
1120
+ ← ZeroAtInftyContinuousMap.norm_toBCF_eq_norm,
1121
+ BoundedContinuousFunction.norm_le (map_nonneg _ _)]
1122
+ exact norm_le_seminorm 𝕜 _ }
1123
+
1124
+ @[simp] theorem toZeroAtInftyCLM_apply (f : 𝓢(E, F)) (x : E) : toZeroAtInftyCLM 𝕜 E F f x = f x :=
1125
+ rfl
1126
+
1127
+ end ZeroAtInfty
1128
+
1051
1129
end SchwartzMap
0 commit comments