Skip to content

Commit 0c1a3a6

Browse files
luigi-massacciADedeckergrunweg
committed
feat: bundled C^n maps supported in a fixed compact set (#30197)
Add a type of n-times continuously differentiable maps supported in a fixed compact set and related notation. Co-authored by: @ADedecker Co-authored-by: Anatole Dedecker <anatolededecker@gmail.com> Co-authored-by: Michael Rothgang <rothgang@math.uni-bonn.de>
1 parent 831fa5a commit 0c1a3a6

File tree

2 files changed

+163
-0
lines changed

2 files changed

+163
-0
lines changed

β€ŽMathlib.leanβ€Ž

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1679,6 +1679,7 @@ import Mathlib.Analysis.Convex.Uniform
16791679
import Mathlib.Analysis.Convex.Visible
16801680
import Mathlib.Analysis.Convolution
16811681
import Mathlib.Analysis.Distribution.AEEqOfIntegralContDiff
1682+
import Mathlib.Analysis.Distribution.ContDiffMapSupportedIn
16821683
import Mathlib.Analysis.Distribution.FourierSchwartz
16831684
import Mathlib.Analysis.Distribution.SchwartzSpace
16841685
import Mathlib.Analysis.Fourier.AddCircle
Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
/-
2+
Copyright (c) 2023 Anatole Dedecker. All rights reserved.
3+
Released under Apache 2.0 license as described in the file LICENSE.
4+
Authors: Anatole Dedecker, Luigi Massacci
5+
-/
6+
7+
import Mathlib.Analysis.Calculus.ContDiff.Defs
8+
import Mathlib.Topology.ContinuousMap.Bounded.Normed
9+
import Mathlib.Topology.Sets.Compacts
10+
11+
/-!
12+
# Continuously differentiable functions supported in a given compact set
13+
14+
This file develops the basic theory of bundled `n`-times continuously differentiable functions
15+
with support contained in a given compact set.
16+
17+
Given `n : β„•βˆž` and a compact subset `K` of a normed space `E`, we consider the type of bundled
18+
functions `f : E β†’ F` (where `F` is a normed vector space) such that:
19+
20+
- `f` is `n`-times continuously differentiable: `ContDiff ℝ n f`.
21+
- `f` vanishes outside of a compact set: `EqOn f 0 Kᢜ`.
22+
23+
The main reason this exists as a bundled type is to be endowed with its natural locally convex
24+
topology (namely, uniform convergence of `f` and its derivative up to order `n`).
25+
Taking the locally convex inductive limit of these as `K` varies yields the natural topology on test
26+
functions, used to define distributions. While most of distribution theory cares only about `C^∞`
27+
functions, we also want to endow the space of `C^n` test functions with its natural topology.
28+
Indeed, distributions of order less than `n` are precisely those which extend continuously to this
29+
larger space of test functions.
30+
31+
## Main definitions
32+
33+
- `ContDiffMapSupportedIn E F n K`: the type of bundled `n`-times continuously differentiable
34+
functions `E β†’ F` which vanish outside of `K`.
35+
- `ContDiffMapSupportedIn.iteratedFDerivβ‚—'`: wraps `iteratedFDeriv` into a `π•œ`-linear map on
36+
`ContDiffMapSupportedIn E F n K`, as a map into
37+
`ContDiffMapSupportedIn E (E [Γ—i]β†’L[ℝ] F) (n-i) K`.
38+
39+
## Main statements
40+
41+
TODO:
42+
- `ContDiffMapSupportedIn.instIsUniformAddGroup` and
43+
`ContDiffMapSupportedIn.instLocallyConvexSpace`: `ContDiffMapSupportedIn` is a locally convex
44+
topological vector space.
45+
46+
## Notation
47+
48+
- `𝓓^{n}_{K}(E, F)`: the space of `n`-times continuously differentiable functions `E β†’ F`
49+
which vanish outside of `K`.
50+
- `𝓓_{K}(E, F)`: the space of smooth (infinitely differentiable) functions `E β†’ F`
51+
which vanish outside of `K`, i.e. `𝓓^{⊀}_{K}(E, F)`.
52+
53+
## Implementation details
54+
55+
The technical choice of spelling `EqOn f 0 Kᢜ` in the definition, as opposed to `tsupport f βŠ† K`
56+
is to make rewriting `f x` to `0` easier when `x βˆ‰ K`.
57+
58+
## Tags
59+
60+
distributions
61+
-/
62+
63+
open TopologicalSpace SeminormFamily Set Function Seminorm UniformSpace
64+
open scoped BoundedContinuousFunction Topology NNReal
65+
66+
variable (π•œ E F : Type*) [NontriviallyNormedField π•œ]
67+
[NormedAddCommGroup E] [NormedSpace ℝ E]
68+
[NormedAddCommGroup F] [NormedSpace ℝ F] [NormedSpace π•œ F] [SMulCommClass ℝ π•œ F]
69+
{n : β„•βˆž} {K : Compacts E}
70+
71+
/-- The type of bundled `n`-times continuously differentiable maps which vanish outside of a fixed
72+
compact set `K`. -/
73+
structure ContDiffMapSupportedIn (n : β„•βˆž) (K : Compacts E) : Type _ where
74+
/-- The underlying function. Use coercion instead. -/
75+
protected toFun : E β†’ F
76+
protected contDiff' : ContDiff ℝ n toFun
77+
protected zero_on_compl' : EqOn toFun 0 Kᢜ
78+
79+
/-- Notation for the space of bundled `n`-times continuously differentiable
80+
functions with support in a compact set `K`. -/
81+
scoped[Distributions] notation "𝓓^{" n "}_{"K"}(" E ", " F ")" =>
82+
ContDiffMapSupportedIn E F n K
83+
84+
/-- Notation for the space of bundled smooth (inifinitely differentiable)
85+
functions with support in a compact set `K`. -/
86+
scoped[Distributions] notation "𝓓_{"K"}(" E ", " F ")" =>
87+
ContDiffMapSupportedIn E F ⊀ K
88+
89+
open Distributions
90+
91+
/-- `ContDiffMapSupportedInClass B E F n K` states that `B` is a type of bundled `n`-times
92+
continously differentiable functions with support in the compact set `K`. -/
93+
class ContDiffMapSupportedInClass (B : Type*) (E F : outParam <| Type*)
94+
[NormedAddCommGroup E] [NormedAddCommGroup F] [NormedSpace ℝ E] [NormedSpace ℝ F]
95+
(n : outParam β„•βˆž) (K : outParam <| Compacts E)
96+
extends FunLike B E F where
97+
map_contDiff (f : B) : ContDiff ℝ n f
98+
map_zero_on_compl (f : B) : EqOn f 0 Kᢜ
99+
100+
open ContDiffMapSupportedInClass
101+
102+
instance (B : Type*) (E F : outParam <| Type*)
103+
[NormedAddCommGroup E] [NormedAddCommGroup F] [NormedSpace ℝ E] [NormedSpace ℝ F]
104+
(n : outParam β„•βˆž) (K : outParam <| Compacts E)
105+
[ContDiffMapSupportedInClass B E F n K] :
106+
ContinuousMapClass B E F where
107+
map_continuous f := (map_contDiff f).continuous
108+
109+
instance (B : Type*) (E F : outParam <| Type*)
110+
[NormedAddCommGroup E] [NormedAddCommGroup F] [NormedSpace ℝ E] [NormedSpace ℝ F]
111+
(n : outParam β„•βˆž) (K : outParam <| Compacts E)
112+
[ContDiffMapSupportedInClass B E F n K] :
113+
BoundedContinuousMapClass B E F where
114+
map_bounded f := by
115+
have := HasCompactSupport.intro K.isCompact (map_zero_on_compl f)
116+
rcases (map_continuous f).bounded_above_of_compact_support this with ⟨C, hC⟩
117+
exact map_bounded (BoundedContinuousFunction.ofNormedAddCommGroup f (map_continuous f) C hC)
118+
119+
namespace ContDiffMapSupportedIn
120+
121+
instance toContDiffMapSupportedInClass :
122+
ContDiffMapSupportedInClass 𝓓^{n}_{K}(E, F) E F n K where
123+
coe f := f.toFun
124+
coe_injective' f g h := by cases f; cases g; congr
125+
map_contDiff f := f.contDiff'
126+
map_zero_on_compl f := f.zero_on_compl'
127+
128+
variable {E F}
129+
130+
protected theorem contDiff (f : 𝓓^{n}_{K}(E, F)) : ContDiff ℝ n f := map_contDiff f
131+
protected theorem zero_on_compl (f : 𝓓^{n}_{K}(E, F)) : EqOn f 0 Kᢜ := map_zero_on_compl f
132+
protected theorem compact_supp (f : 𝓓^{n}_{K}(E, F)) : HasCompactSupport f :=
133+
.intro K.isCompact (map_zero_on_compl f)
134+
135+
@[simp]
136+
theorem toFun_eq_coe {f : 𝓓^{n}_{K}(E, F)} : f.toFun = (f : E β†’ F) :=
137+
rfl
138+
139+
/-- See note [custom simps projection]. -/
140+
def Simps.apply (f : 𝓓^{n}_{K}(E, F)) : E β†’ F := f
141+
142+
initialize_simps_projections ContDiffMapSupportedIn (toFun β†’ apply)
143+
144+
@[ext]
145+
theorem ext {f g : 𝓓^{n}_{K}(E, F)} (h : βˆ€ a, f a = g a) : f = g :=
146+
DFunLike.ext _ _ h
147+
148+
/-- Copy of a `ContDiffMapSupportedIn` with a new `toFun` equal to the old one. Useful to fix
149+
definitional equalities. -/
150+
protected def copy (f : 𝓓^{n}_{K}(E, F)) (f' : E β†’ F) (h : f' = f) : 𝓓^{n}_{K}(E, F) where
151+
toFun := f'
152+
contDiff' := h.symm β–Έ f.contDiff
153+
zero_on_compl' := h.symm β–Έ f.zero_on_compl
154+
155+
@[simp]
156+
theorem coe_copy (f : 𝓓^{n}_{K}(E, F)) (f' : E β†’ F) (h : f' = f) : ⇑(f.copy f' h) = f' :=
157+
rfl
158+
159+
theorem copy_eq (f : 𝓓^{n}_{K}(E, F)) (f' : E β†’ F) (h : f' = f) : f.copy f' h = f :=
160+
DFunLike.ext' h
161+
162+
end ContDiffMapSupportedIn

0 commit comments

Comments
Β (0)