@@ -28,7 +28,7 @@ noncomputable section
28
28
open Set Metric TopologicalSpace Function Asymptotics MeasureTheory Module
29
29
ContinuousLinearMap Filter MeasureTheory.Measure Bornology
30
30
31
- open scoped Pointwise Topology NNReal Convolution
31
+ open scoped Pointwise Topology NNReal Convolution ContDiff
32
32
33
33
variable {E : Type *} [NormedAddCommGroup E]
34
34
@@ -40,7 +40,7 @@ variable [NormedSpace ℝ E] [FiniteDimensional ℝ E]
40
40
values in `[0, 1]`, supported in `s` and with `f x = 1`. -/
41
41
theorem exists_smooth_tsupport_subset {s : Set E} {x : E} (hs : s ∈ 𝓝 x) :
42
42
∃ f : E → ℝ,
43
- tsupport f ⊆ s ∧ HasCompactSupport f ∧ ContDiff ℝ ⊤ f ∧ range f ⊆ Icc 0 1 ∧ f x = 1 := by
43
+ tsupport f ⊆ s ∧ HasCompactSupport f ∧ ContDiff ℝ ∞ f ∧ range f ⊆ Icc 0 1 ∧ f x = 1 := by
44
44
obtain ⟨d : ℝ, d_pos : 0 < d, hd : Euclidean.closedBall x d ⊆ s⟩ :=
45
45
Euclidean.nhds_basis_closedBall.mem_iff.1 hs
46
46
let c : ContDiffBump (toEuclidean x) :=
@@ -73,7 +73,7 @@ theorem exists_smooth_tsupport_subset {s : Set E} {x : E} (hs : s ∈ 𝓝 x) :
73
73
/-- Given an open set `s` in a finite-dimensional real normed vector space, there exists a smooth
74
74
function with values in `[0, 1]` whose support is exactly `s`. -/
75
75
theorem IsOpen.exists_smooth_support_eq {s : Set E} (hs : IsOpen s) :
76
- ∃ f : E → ℝ, f.support = s ∧ ContDiff ℝ ⊤ f ∧ Set.range f ⊆ Set.Icc 0 1 := by
76
+ ∃ f : E → ℝ, f.support = s ∧ ContDiff ℝ ∞ f ∧ Set.range f ⊆ Set.Icc 0 1 := by
77
77
/- For any given point `x` in `s`, one can construct a smooth function with support in `s` and
78
78
nonzero at `x`. By second-countability, it follows that we may cover `s` with the supports of
79
79
countably many such functions, say `g i`.
@@ -85,7 +85,7 @@ theorem IsOpen.exists_smooth_support_eq {s : Set E} (hs : IsOpen s) :
85
85
· exact
86
86
⟨fun _ => 0 , Function.support_zero, contDiff_const, by
87
87
simp only [range_const, singleton_subset_iff, left_mem_Icc, zero_le_one]⟩
88
- let ι := { f : E → ℝ // f.support ⊆ s ∧ HasCompactSupport f ∧ ContDiff ℝ ⊤ f ∧ range f ⊆ Icc 0 1 }
88
+ let ι := { f : E → ℝ // f.support ⊆ s ∧ HasCompactSupport f ∧ ContDiff ℝ ∞ f ∧ range f ⊆ Icc 0 1 }
89
89
obtain ⟨T, T_count, hT⟩ : ∃ T : Set ι, T.Countable ∧ ⋃ f ∈ T, support (f : E → ℝ) = s := by
90
90
have : ⋃ f : ι, (f : E → ℝ).support = s := by
91
91
refine Subset.antisymm (iUnion_subset fun f => f.2 .1 ) ?_
@@ -116,7 +116,7 @@ theorem IsOpen.exists_smooth_support_eq {s : Set E} (hs : IsOpen s) :
116
116
rcases iT with ⟨n, hn⟩
117
117
rw [← hn] at hi
118
118
exact ⟨n, hi⟩
119
- have g_smooth : ∀ n, ContDiff ℝ ⊤ (g n) := fun n => (g0 n).2 .2 .2 .1
119
+ have g_smooth : ∀ n, ContDiff ℝ ∞ (g n) := fun n => (g0 n).2 .2 .2 .1
120
120
have g_comp_supp : ∀ n, HasCompactSupport (g n) := fun n => (g0 n).2 .2 .1
121
121
have g_nonneg : ∀ n x, 0 ≤ g n x := fun n x => ((g0 n).2 .2 .2 .2 (mem_range_self x)).1
122
122
obtain ⟨δ, δpos, c, δc, c_lt⟩ :
@@ -127,8 +127,8 @@ theorem IsOpen.exists_smooth_support_eq {s : Set E} (hs : IsOpen s) :
127
127
have : ∀ i, ∃ R, ∀ x, ‖iteratedFDeriv ℝ i (fun x => g n x) x‖ ≤ R := by
128
128
intro i
129
129
have : BddAbove (range fun x => ‖iteratedFDeriv ℝ i (fun x : E => g n x) x‖) := by
130
- apply
131
- ((g_smooth n).continuous_iteratedFDeriv le_top).norm.bddAbove_range_of_hasCompactSupport
130
+ apply ((g_smooth n).continuous_iteratedFDeriv
131
+ (mod_cast le_top) ).norm.bddAbove_range_of_hasCompactSupport
132
132
apply HasCompactSupport.comp_left _ norm_zero
133
133
apply (g_comp_supp n).iteratedFDeriv
134
134
rcases this with ⟨R, hR⟩
@@ -148,7 +148,8 @@ theorem IsOpen.exists_smooth_support_eq {s : Set E} (hs : IsOpen s) :
148
148
refine ⟨M⁻¹ * δ n, by positivity, fun i hi x => ?_⟩
149
149
calc
150
150
‖iteratedFDeriv ℝ i ((M⁻¹ * δ n) • g n) x‖ = ‖(M⁻¹ * δ n) • iteratedFDeriv ℝ i (g n) x‖ := by
151
- rw [iteratedFDeriv_const_smul_apply]; exact (g_smooth n).of_le le_top
151
+ rw [iteratedFDeriv_const_smul_apply]
152
+ exact (g_smooth n).of_le (mod_cast le_top)
152
153
_ = M⁻¹ * δ n * ‖iteratedFDeriv ℝ i (g n) x‖ := by
153
154
rw [norm_smul _ (iteratedFDeriv ℝ i (g n) x), Real.norm_of_nonneg]; positivity
154
155
_ ≤ M⁻¹ * δ n * M := (mul_le_mul_of_nonneg_left ((hR i x).trans (IR i hi)) (by positivity))
@@ -207,10 +208,10 @@ variable (E)
207
208
208
209
theorem u_exists :
209
210
∃ u : E → ℝ,
210
- ContDiff ℝ ⊤ u ∧ (∀ x, u x ∈ Icc (0 : ℝ) 1 ) ∧ support u = ball 0 1 ∧ ∀ x, u (-x) = u x := by
211
+ ContDiff ℝ ∞ u ∧ (∀ x, u x ∈ Icc (0 : ℝ) 1 ) ∧ support u = ball 0 1 ∧ ∀ x, u (-x) = u x := by
211
212
have A : IsOpen (ball (0 : E) 1 ) := isOpen_ball
212
213
obtain ⟨f, f_support, f_smooth, f_range⟩ :
213
- ∃ f : E → ℝ, f.support = ball (0 : E) 1 ∧ ContDiff ℝ ⊤ f ∧ Set.range f ⊆ Set.Icc 0 1 :=
214
+ ∃ f : E → ℝ, f.support = ball (0 : E) 1 ∧ ContDiff ℝ ∞ f ∧ Set.range f ⊆ Set.Icc 0 1 :=
214
215
A.exists_smooth_support_eq
215
216
have B : ∀ x, f x ∈ Icc (0 : ℝ) 1 := fun x => f_range (mem_range_self x)
216
217
refine ⟨fun x => (f x + f (-x)) / 2 , ?_, ?_, ?_, ?_⟩
@@ -243,7 +244,7 @@ def u (x : E) : ℝ :=
243
244
244
245
variable (E)
245
246
246
- theorem u_smooth : ContDiff ℝ ⊤ (u : E → ℝ) :=
247
+ theorem u_smooth : ContDiff ℝ ∞ (u : E → ℝ) :=
247
248
(Classical.choose_spec (u_exists E)).1
248
249
249
250
theorem u_continuous : Continuous (u : E → ℝ) :=
@@ -433,7 +434,7 @@ theorem y_pos_of_mem_ball {D : ℝ} {x : E} (Dpos : 0 < D) (D_lt_one : D < 1)
433
434
434
435
variable (E)
435
436
436
- theorem y_smooth : ContDiffOn ℝ ⊤ (uncurry y) (Ioo (0 : ℝ) 1 ×ˢ (univ : Set E)) := by
437
+ theorem y_smooth : ContDiffOn ℝ ∞ (uncurry y) (Ioo (0 : ℝ) 1 ×ˢ (univ : Set E)) := by
437
438
have hs : IsOpen (Ioo (0 : ℝ) (1 : ℝ)) := isOpen_Ioo
438
439
have hk : IsCompact (closedBall (0 : E) 1 ) := ProperSpace.isCompact_closedBall _ _
439
440
refine contDiffOn_convolution_left_with_param (lsmul ℝ ℝ) hs hk ?_ ?_ ?_
@@ -489,7 +490,7 @@ instance (priority := 100) {E : Type*} [NormedAddCommGroup E] [NormedSpace ℝ E
489
490
· rfl
490
491
smooth := by
491
492
suffices
492
- ContDiffOn ℝ ⊤
493
+ ContDiffOn ℝ ∞
493
494
(uncurry y ∘ fun p : ℝ × E => ((p.1 - 1 ) / (p.1 + 1 ), ((p.1 + 1 ) / 2 )⁻¹ • p.2 ))
494
495
(Ioi 1 ×ˢ univ) by
495
496
apply this.congr
0 commit comments