@@ -1034,6 +1034,18 @@ theorem ContDiffWithinAt.fderivWithin_right (hf : ContDiffWithinAt 𝕜 n f s x
1034
1034
contDiffWithinAt_id hs hmn hx₀s (by rw [preimage_id'])
1035
1035
#align cont_diff_within_at.fderiv_within_right ContDiffWithinAt.fderivWithin_right
1036
1036
1037
+ -- TODO: can we make a version of `ContDiffWithinAt.fderivWithin` for iterated derivatives?
1038
+ theorem ContDiffWithinAt.iteratedFderivWithin_right {i : ℕ} (hf : ContDiffWithinAt 𝕜 n f s x₀)
1039
+ (hs : UniqueDiffOn 𝕜 s) (hmn : (m + i : ℕ∞) ≤ n) (hx₀s : x₀ ∈ s) :
1040
+ ContDiffWithinAt 𝕜 m (iteratedFDerivWithin 𝕜 i f s) s x₀ := by
1041
+ induction' i with i hi generalizing m
1042
+ · rw [Nat.zero_eq, ENat.coe_zero, add_zero] at hmn
1043
+ exact (hf.of_le hmn).continuousLinearMap_comp
1044
+ ((continuousMultilinearCurryFin0 𝕜 E F).symm : _ →L[𝕜] E [×0 ]→L[𝕜] F)
1045
+ · rw [Nat.cast_succ, add_comm _ 1 , ← add_assoc] at hmn
1046
+ exact ((hi hmn).fderivWithin_right hs le_rfl hx₀s).continuousLinearMap_comp
1047
+ (continuousMultilinearCurryLeftEquiv 𝕜 (fun _ : Fin (i+1 ) ↦ E) F : _ →L[𝕜] E [×(i+1 )]→L[𝕜] F)
1048
+
1037
1049
/-- `x ↦ fderiv 𝕜 (f x) (g x)` is smooth at `x₀`. -/
1038
1050
protected theorem ContDiffAt.fderiv {f : E → F → G} {g : E → F} {n : ℕ∞}
1039
1051
(hf : ContDiffAt 𝕜 n (Function.uncurry f) (x₀, g x₀)) (hg : ContDiffAt 𝕜 m g x₀)
@@ -1050,6 +1062,11 @@ theorem ContDiffAt.fderiv_right (hf : ContDiffAt 𝕜 n f x₀) (hmn : (m + 1 :
1050
1062
ContDiffAt.fderiv (ContDiffAt.comp (x₀, x₀) hf contDiffAt_snd) contDiffAt_id hmn
1051
1063
#align cont_diff_at.fderiv_right ContDiffAt.fderiv_right
1052
1064
1065
+ theorem ContDiffAt.iteratedFDeriv_right {i : ℕ} (hf : ContDiffAt 𝕜 n f x₀)
1066
+ (hmn : (m + i : ℕ∞) ≤ n) : ContDiffAt 𝕜 m (iteratedFDeriv 𝕜 i f) x₀ := by
1067
+ rw [← iteratedFDerivWithin_univ, ← contDiffWithinAt_univ] at *
1068
+ exact hf.iteratedFderivWithin_right uniqueDiffOn_univ hmn trivial
1069
+
1053
1070
/-- `x ↦ fderiv 𝕜 (f x) (g x)` is smooth. -/
1054
1071
protected theorem ContDiff.fderiv {f : E → F → G} {g : E → F} {n m : ℕ∞}
1055
1072
(hf : ContDiff 𝕜 m <| Function.uncurry f) (hg : ContDiff 𝕜 n g) (hnm : n + 1 ≤ m) :
@@ -1063,6 +1080,10 @@ theorem ContDiff.fderiv_right (hf : ContDiff 𝕜 n f) (hmn : (m + 1 : ℕ∞)
1063
1080
contDiff_iff_contDiffAt.mpr fun _x => hf.contDiffAt.fderiv_right hmn
1064
1081
#align cont_diff.fderiv_right ContDiff.fderiv_right
1065
1082
1083
+ theorem ContDiff.iteratedFDeriv_right {i : ℕ} (hf : ContDiff 𝕜 n f)
1084
+ (hmn : (m + i : ℕ∞) ≤ n) : ContDiff 𝕜 m (iteratedFDeriv 𝕜 i f) :=
1085
+ contDiff_iff_contDiffAt.mpr fun _x => hf.contDiffAt.iteratedFDeriv_right hmn
1086
+
1066
1087
/-- `x ↦ fderiv 𝕜 (f x) (g x)` is continuous. -/
1067
1088
theorem Continuous.fderiv {f : E → F → G} {g : E → F} {n : ℕ∞}
1068
1089
(hf : ContDiff 𝕜 n <| Function.uncurry f) (hg : Continuous g) (hn : 1 ≤ n) :
0 commit comments