@@ -25,11 +25,15 @@ apply to cases more general than just ℝ-vector spaces, but we do not worry abo
2525open SchwartzMap
2626
2727open Real Complex BigOperators SchwartzMap Function PiLp
28+
2829open LinearMap LinearEquiv ContinuousLinearEquiv ContinuousLinearMap
2930
3031variable {E F H : Type *}
32+
3133variable [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E]
34+
3235variable [NormedAddCommGroup F] [NormedSpace ℝ F] [FiniteDimensional ℝ F]
36+
3337variable [NormedAddCommGroup H] [NormedSpace ℝ H] [FiniteDimensional ℝ H]
3438
3539-- In finite-dimensional spaces, any linear equivalence is a continuous linear equivalence.
99103 using ((EuclideanSpace.proj (ι := Fin 1 ) (𝕜 := ℝ) 0 : Euc(1 ) →L[ℝ] ℝ).contDiff)
100104
101105-- We first show temperate growth.
102- -- #check Function.HasTemperateGrowth
103-
104- -- We can use the following tool to show temperate growth.
105- -- #check Function.HasTemperateGrowth.of_fderiv
106106
107107-- Note: We can probably do away with the `x` here as I doubt any of the proofs will need it.
108+
108109/-- The Jacobian of `coordinateEmbedding₁₂ x` for all `x : ℝ`. -/
109- def coordinateEmbedding₁₂_fderiv (x : ℝ) : Euc(1 ) →L[ℝ] Euc(2 ) where
110+ def coordinateEmbedding₁₂_fderiv (_x : ℝ) : Euc(1 ) →L[ℝ] Euc(2 ) where
110111 toFun := fun y => (ContinuousLinearEquiv.funUnique (Fin 1 ) ℝ ℝ y) • !₂[(0 : ℝ), 1 ]
111- cont := by
112-
113- sorry
114- map_add' := sorry
115- map_smul' := sorry
112+ cont := (continuous_apply _).smul continuous_const
113+ map_add' := by simp [add_smul]
114+ map_smul' := by simp [smul_smul]
116115
117116/-- The Jacobian of `coordinateEmbedding₁₂ x` is the constant `!₂[0, 1]`. -/
118117theorem coordinateEmbedding₁₂_hasDerivAt (x : ℝ) (p : Euc(1 )) :
119118 HasFDerivAt (𝕜 := ℝ) (coordinateEmbedding₁₂ x) (coordinateEmbedding₁₂_fderiv x) p := by
120- sorry
121-
122- -- We need to use the following to get an expression for the `fderiv` of `coordinateEmbedding₁₂ x`.
123- -- #check HasFDerivAt.fderiv
119+ have h_diff_zero (y : Euc(1 )):
120+ coordinateEmbedding₁₂ x y - coordinateEmbedding₁₂ x p -
121+ coordinateEmbedding₁₂_fderiv x (y - p) = 0 := by
122+ ext i; fin_cases i <;> simp [coordinateEmbedding₁₂, coordinateEmbedding₁₂_fderiv]
123+ simp_all [hasFDerivAt_iff_tendsto]
124124
125125/-- The Jacobian of `coordinateEmbedding₁₂` has temperate growth. -/
126126theorem fderiv_coordinateEmbedding₁₂_hasTemperateGrowth (x : ℝ) :
127- Function.HasTemperateGrowth (fderiv ℝ (coordinateEmbedding₁₂ x)) :=
128- by
127+ Function.HasTemperateGrowth (fderiv ℝ (coordinateEmbedding₁₂ x)) := by
129128 simpa [funext (fun p => by simpa using (coordinateEmbedding₁₂_hasDerivAt x p).fderiv)]
130129 using Function.HasTemperateGrowth.const (coordinateEmbedding₁₂_fderiv x)
131130
@@ -135,13 +134,18 @@ example {a b : ℝ} : 0 ≤ a → 0 ≤ b → (a ≤ b ↔ a ^ 2 ≤ b ^ 2) := b
135134/-- `coordinateEmbedding₁₂` has temperate growth. -/
136135theorem coordinateEmbedding₁₂_hasTemperateGrowth (x : ℝ) :
137136 (coordinateEmbedding₁₂ x).HasTemperateGrowth := by
138- refine Function.HasTemperateGrowth.of_fderiv (fderiv_coordinateEmbedding₁₂_hasTemperateGrowth x)
137+ refine (fderiv_coordinateEmbedding₁₂_hasTemperateGrowth x).of_fderiv
139138 ((coordinateEmbedding₁₂_smooth x).differentiable le_top) (k := 1 ) (C := max ‖x‖ 1 ) ?_
140139 intro y
141140 simp only [coordinateEmbedding₁₂, coe_funUnique, eval, Fin.default_eq_zero, Fin.isValue,
142141 ENNReal.toReal_ofNat, Nat.ofNat_pos, norm_eq_sum, Real.norm_eq_abs, rpow_two, _root_.sq_abs,
143- Fin.sum_univ_two, one_div, Finset.univ_unique, Finset.sum_singleton, pow_one]
144- sorry
142+ Fin.sum_univ_two, one_div, Finset.univ_unique, Finset.sum_singleton, pow_one]
143+ have h_triangle : Real.sqrt (x^2 + y 0 ^2 ) ≤ |x| + |y 0 | :=
144+ Real.sqrt_le_iff.mpr
145+ ⟨by positivity, by cases abs_cases x <;> cases abs_cases ( y 0 ) <;> nlinarith⟩
146+ have h_bound : Real.sqrt (x^2 + y 0 ^2 ) ≤ max |x| 1 * (1 + |y 0 |) := by
147+ cases max_cases |x| 1 <;> nlinarith [abs_nonneg x, abs_nonneg (y 0 )]
148+ norm_num [← Real.sqrt_eq_rpow, Real.sqrt_sq_eq_abs] at * ; linarith!
145149
146150-- Next, we show the antilipschitz condition. This is significantly easier.
147151-- #check AntilipschitzWith
@@ -163,4 +167,5 @@ def SchwartzMap_one_of_SchwartzMap_two (x : ℝ) : 𝓢(Euc(2), ℂ) →L[ℝ]
163167 (coordinateEmbedding₁₂_antiLipschitzWith x)
164168
165169end Inductive_Dimensions
170+
166171end SchwartzMap
0 commit comments