Documentation

Mathlib.Analysis.Calculus.FDeriv.Basic

The Fréchet derivative: basic properties #

Let E and F be normed spaces, f : E → F, and f' : E →L[𝕜] F a continuous 𝕜-linear map, where 𝕜 is a non-discrete normed field. Then

HasFDerivWithinAt f f' s x

says that f has derivative f' at x, where the domain of interest is restricted to s. We also have

HasFDerivAt f f' x := HasFDerivWithinAt f f' x univ

Finally,

HasStrictFDerivAt f f' x

means that f : E → F has derivative f' : E →L[𝕜] F in the sense of strict differentiability, i.e., f y - f z - f'(y - z) = o(y - z) as y, z → x. This notion is used in the inverse function theorem, and is defined here only to avoid proving theorems like IsBoundedBilinearMap.hasFDerivAt twice: first for HasFDerivAt, then for HasStrictFDerivAt.

Main results #

This file builds on the bare-bones definition given in Defs.lean by establishing a variety of relatively straightforward properties of the derivative.

Deeper properties are defined in other files in the folder Analysis/Calculus/FDeriv/, which contain the usual formulas (and existence assertions) for the derivative of

For most binary operations we also define const_op and op_const theorems for the cases when the first or second argument is a constant. This makes writing chains of HasDerivAt's easier, and they more frequently lead to the desired result.

One can also interpret the derivative of a function f : 𝕜 → E as an element of E (by identifying a linear function from 𝕜 to E with its value at 1). Results on the Fréchet derivative are translated to this more elementary point of view on the derivative in the file Deriv.lean. The derivative of polynomials is handled there, as it is naturally one-dimensional.

The simplifier is set up to prove automatically that some functions are differentiable, or differentiable at a point (but not differentiable on a set or within a set at a point, as checking automatically that the good domains are mapped one to the other when using composition is not something the simplifier can easily do). This means that one can write example (x : ℝ) : Differentiable ℝ (fun x ↦ sin (exp (3 + x^2)) - 5 * cos x) := by simp. If there are divisions, one needs to supply to the simplifier proofs that the denominators do not vanish, as in

example (x : ℝ) (h : 1 + sin x ≠ 0) : DifferentiableAt ℝ (fun x ↦ exp x / (1 + sin x)) x := by
  simp [h]

Of course, these examples only work once exp, cos and sin have been shown to be differentiable, in Mathlib/Analysis/SpecialFunctions/Trigonometric/Deriv.lean.

The simplifier is not set up to compute the Fréchet derivative of maps (as these are in general complicated multidimensional linear maps), but it will compute one-dimensional derivatives, see Deriv.lean.

Implementation details #

For a discussion of the definitions and their rationale, see the file docstring of Mathlib.Analysis.Calculus.FDeriv.Defs.

To make sure that the simplifier can prove automatically that functions are differentiable, we tag many lemmas with the simp attribute, for instance those saying that the sum of differentiable functions is differentiable, as well as their product, their cartesian product, and so on. A notable exception is the chain rule: we do not mark as a simp lemma the fact that, if f and g are differentiable, then their composition also is: simp would always be able to match this lemma, by taking f or g to be the identity. Instead, for every reasonable function (say, exp), we add a lemma that if f is differentiable then so is (fun x ↦ exp (f x)). This means adding some boilerplate lemmas, but these can also be useful in their own right.

Tests for this ability of the simplifier (with more examples) are provided in Tests/Differentiable.lean.

TODO #

Generalize more results to topological vector spaces.

Tags #

derivative, differentiable, Fréchet, calculus

theorem HasFDerivWithinAt.lim {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} {s : Set E} (h : HasFDerivWithinAt f f' s x) {α : Type u_4} (l : Filter α) {c : α𝕜} {d : αE} {v : E} (dtop : ∀ᶠ (n : α) in l, x + d n s) (clim : Filter.Tendsto (fun (n : α) => c n) l Filter.atTop) (cdlim : Filter.Tendsto (fun (n : α) => c n d n) l (nhds v)) :
Filter.Tendsto (fun (n : α) => c n (f (x + d n) - f x)) l (nhds (f' v))

If a function f has a derivative f' at x, a rescaled version of f around x converges to f', i.e., n (f (x + (1/n) v) - f x) converges to f' v. More generally, if c n tends to infinity and c n * d n tends to v, then c n * (f (x + d n) - f x) tends to f' v. This lemma expresses this fact, for functions having a derivative within a set. Its specific formulation is useful for tangent cone related discussions.

theorem HasFDerivWithinAt.unique_on {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' f₁' : E →L[𝕜] F} {x : E} {s : Set E} (hf : HasFDerivWithinAt f f' s x) (hg : HasFDerivWithinAt f f₁' s x) :
Set.EqOn (⇑f') (⇑f₁') (tangentConeAt 𝕜 s x)

If f' and f₁' are two derivatives of f within s at x, then they are equal on the tangent cone to s at x

theorem UniqueDiffWithinAt.eq {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' f₁' : E →L[𝕜] F} {x : E} {s : Set E} (H : UniqueDiffWithinAt 𝕜 s x) (hf : HasFDerivWithinAt f f' s x) (hg : HasFDerivWithinAt f f₁' s x) :
f' = f₁'

UniqueDiffWithinAt achieves its goal: it implies the uniqueness of the derivative.

theorem UniqueDiffOn.eq {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' f₁' : E →L[𝕜] F} {x : E} {s : Set E} (H : UniqueDiffOn 𝕜 s) (hx : x s) (h : HasFDerivWithinAt f f' s x) (h₁ : HasFDerivWithinAt f f₁' s x) :
f' = f₁'

Basic properties of the derivative #

theorem hasFDerivAtFilter_iff_tendsto {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} {L : Filter E} :
HasFDerivAtFilter f f' x L Filter.Tendsto (fun (x' : E) => x' - x⁻¹ * f x' - f x - f' (x' - x)) L (nhds 0)
theorem hasFDerivWithinAt_iff_tendsto {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} {s : Set E} :
HasFDerivWithinAt f f' s x Filter.Tendsto (fun (x' : E) => x' - x⁻¹ * f x' - f x - f' (x' - x)) (nhdsWithin x s) (nhds 0)
theorem hasFDerivAt_iff_tendsto {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} :
HasFDerivAt f f' x Filter.Tendsto (fun (x' : E) => x' - x⁻¹ * f x' - f x - f' (x' - x)) (nhds x) (nhds 0)
theorem hasFDerivAt_iff_isLittleO_nhds_zero {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} :
HasFDerivAt f f' x (fun (h : E) => f (x + h) - f x - f' h) =o[nhds 0] fun (h : E) => h
theorem HasFDerivAtFilter.mono {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} {L₁ L₂ : Filter E} (h : HasFDerivAtFilter f f' x L₂) (hst : L₁ L₂) :
HasFDerivAtFilter f f' x L₁
theorem HasFDerivWithinAt.mono_of_mem_nhdsWithin {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} {s t : Set E} (h : HasFDerivWithinAt f f' t x) (hst : t nhdsWithin x s) :
@[deprecated HasFDerivWithinAt.mono_of_mem_nhdsWithin (since := "2024-10-31")]
theorem HasFDerivWithinAt.mono_of_mem {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} {s t : Set E} (h : HasFDerivWithinAt f f' t x) (hst : t nhdsWithin x s) :

Alias of HasFDerivWithinAt.mono_of_mem_nhdsWithin.

theorem HasFDerivWithinAt.mono {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} {s t : Set E} (h : HasFDerivWithinAt f f' t x) (hst : s t) :
theorem HasFDerivAt.hasFDerivAtFilter {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} {L : Filter E} (h : HasFDerivAt f f' x) (hL : L nhds x) :
theorem HasFDerivAt.hasFDerivWithinAt {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} {s : Set E} (h : HasFDerivAt f f' x) :
theorem HasFDerivWithinAt.differentiableWithinAt {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} {s : Set E} (h : HasFDerivWithinAt f f' s x) :
theorem HasFDerivAt.differentiableAt {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} (h : HasFDerivAt f f' x) :
@[simp]
theorem hasFDerivWithinAt_univ {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} :
theorem HasFDerivWithinAt.hasFDerivAt_of_univ {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} :

Alias of the forward direction of hasFDerivWithinAt_univ.

theorem differentiableWithinAt_univ {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} :
theorem fderiv_zero_of_not_differentiableAt {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} (h : ¬DifferentiableAt 𝕜 f x) :
fderiv 𝕜 f x = 0
theorem hasFDerivWithinAt_of_mem_nhds {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} {s : Set E} (h : s nhds x) :
theorem hasFDerivWithinAt_of_isOpen {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} {s : Set E} (h : IsOpen s) (hx : x s) :
@[simp]
theorem hasFDerivWithinAt_insert {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} {s : Set E} {y : E} :
theorem HasFDerivWithinAt.insert' {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} {s : Set E} {y : E} :
HasFDerivWithinAt f f' s xHasFDerivWithinAt f f' (insert y s) x

Alias of the reverse direction of hasFDerivWithinAt_insert.

theorem HasFDerivWithinAt.of_insert {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} {s : Set E} {y : E} :
HasFDerivWithinAt f f' (insert y s) xHasFDerivWithinAt f f' s x

Alias of the forward direction of hasFDerivWithinAt_insert.

theorem HasFDerivWithinAt.insert {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {g : EF} {g' : E →L[𝕜] F} {x : E} {s : Set E} (h : HasFDerivWithinAt g g' s x) :
@[simp]
theorem hasFDerivWithinAt_diff_singleton {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} {s : Set E} (y : E) :
@[simp]
theorem HasFDerivWithinAt.empty {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} :
@[simp]
theorem DifferentiableWithinAt.empty {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} :
theorem HasFDerivWithinAt.of_finite {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} {s : Set E} (h : s.Finite) :
theorem DifferentiableWithinAt.of_finite {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} {s : Set E} (h : s.Finite) :
@[simp]
theorem HasFDerivWithinAt.singleton {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x y : E} :
@[simp]
theorem DifferentiableWithinAt.singleton {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x y : E} :
theorem HasFDerivWithinAt.of_subsingleton {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} {s : Set E} (h : s.Subsingleton) :
theorem DifferentiableWithinAt.of_subsingleton {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} {s : Set E} (h : s.Subsingleton) :
theorem HasStrictFDerivAt.isBigO_sub {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} (hf : HasStrictFDerivAt f f' x) :
(fun (p : E × E) => f p.1 - f p.2) =O[nhds (x, x)] fun (p : E × E) => p.1 - p.2
theorem HasFDerivAtFilter.isBigO_sub {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} {L : Filter E} (h : HasFDerivAtFilter f f' x L) :
(fun (x' : E) => f x' - f x) =O[L] fun (x' : E) => x' - x
theorem HasStrictFDerivAt.hasFDerivAt {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} (hf : HasStrictFDerivAt f f' x) :
theorem HasStrictFDerivAt.differentiableAt {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} (hf : HasStrictFDerivAt f f' x) :
theorem HasStrictFDerivAt.exists_lipschitzOnWith_of_nnnorm_lt {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} (hf : HasStrictFDerivAt f f' x) (K : NNReal) (hK : f'‖₊ < K) :
snhds x, LipschitzOnWith K f s

If f is strictly differentiable at x with derivative f' and K > ‖f'‖₊, then f is K-Lipschitz in a neighborhood of x.

theorem HasStrictFDerivAt.exists_lipschitzOnWith {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} (hf : HasStrictFDerivAt f f' x) :
∃ (K : NNReal), snhds x, LipschitzOnWith K f s

If f is strictly differentiable at x with derivative f', then f is Lipschitz in a neighborhood of x. See also HasStrictFDerivAt.exists_lipschitzOnWith_of_nnnorm_lt for a more precise statement.

theorem HasFDerivAt.lim {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} (hf : HasFDerivAt f f' x) (v : E) {α : Type u_4} {c : α𝕜} {l : Filter α} (hc : Filter.Tendsto (fun (n : α) => c n) l Filter.atTop) :
Filter.Tendsto (fun (n : α) => c n (f (x + (c n)⁻¹ v) - f x)) l (nhds (f' v))

Directional derivative agrees with HasFDeriv.

theorem HasFDerivAt.unique {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f₀' f₁' : E →L[𝕜] F} {x : E} (h₀ : HasFDerivAt f f₀' x) (h₁ : HasFDerivAt f f₁' x) :
f₀' = f₁'
theorem hasFDerivWithinAt_inter' {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} {s t : Set E} (h : t nhdsWithin x s) :
theorem hasFDerivWithinAt_inter {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} {s t : Set E} (h : t nhds x) :
theorem HasFDerivWithinAt.union {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} {s t : Set E} (hs : HasFDerivWithinAt f f' s x) (ht : HasFDerivWithinAt f f' t x) :
HasFDerivWithinAt f f' (s t) x
theorem HasFDerivWithinAt.hasFDerivAt {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} {s : Set E} (h : HasFDerivWithinAt f f' s x) (hs : s nhds x) :
theorem DifferentiableWithinAt.differentiableAt {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} {s : Set E} (h : DifferentiableWithinAt 𝕜 f s x) (hs : s nhds x) :
theorem HasFDerivWithinAt.of_not_accPt {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} {s : Set E} (h : ¬AccPt x (Filter.principal s)) :

If x is isolated in s, then f has any derivative at x within s, as this statement is empty.

@[deprecated HasFDerivWithinAt.of_not_accPt (since := "2025-04-20")]
theorem HasFDerivWithinAt.of_nhdsWithin_eq_bot {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} {s : Set E} (h : nhdsWithin x (s \ {x}) = ) :

If x is isolated in s, then f has any derivative at x within s, as this statement is empty.

theorem HasFDerivWithinAt.of_notMem_closure {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} {s : Set E} (h : xclosure s) :

If x is not in the closure of s, then f has any derivative at x within s, as this statement is empty.

@[deprecated HasFDerivWithinAt.of_notMem_closure (since := "2025-05-23")]
theorem HasFDerivWithinAt.of_not_mem_closure {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} {s : Set E} (h : xclosure s) :

Alias of HasFDerivWithinAt.of_notMem_closure.


If x is not in the closure of s, then f has any derivative at x within s, as this statement is empty.

@[deprecated HasFDerivWithinAt.of_not_mem_closure (since := "2025-04-20")]
theorem hasFDerivWithinAt_of_nmem_closure {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} {s : Set E} (h : xclosure s) :

Alias of HasFDerivWithinAt.of_notMem_closure.


Alias of HasFDerivWithinAt.of_notMem_closure.


If x is not in the closure of s, then f has any derivative at x within s, as this statement is empty.

theorem fderivWithin_zero_of_not_accPt {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} {s : Set E} (h : ¬AccPt x (Filter.principal s)) :
fderivWithin 𝕜 f s x = 0
@[deprecated fderivWithin_zero_of_not_accPt (since := "2025-04-20")]
theorem fderivWithin_zero_of_isolated {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} {s : Set E} (h : nhdsWithin x (s \ {x}) = ) :
fderivWithin 𝕜 f s x = 0
theorem fderivWithin_zero_of_notMem_closure {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} {s : Set E} (h : xclosure s) :
fderivWithin 𝕜 f s x = 0
@[deprecated fderivWithin_zero_of_notMem_closure (since := "2025-05-24")]
theorem fderivWithin_zero_of_nmem_closure {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} {s : Set E} (h : xclosure s) :
fderivWithin 𝕜 f s x = 0

Alias of fderivWithin_zero_of_notMem_closure.

theorem DifferentiableWithinAt.hasFDerivWithinAt {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} {s : Set E} (h : DifferentiableWithinAt 𝕜 f s x) :
HasFDerivWithinAt f (fderivWithin 𝕜 f s x) s x
theorem DifferentiableAt.hasFDerivAt {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} (h : DifferentiableAt 𝕜 f x) :
HasFDerivAt f (fderiv 𝕜 f x) x
theorem DifferentiableOn.hasFDerivAt {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} {s : Set E} (h : DifferentiableOn 𝕜 f s) (hs : s nhds x) :
HasFDerivAt f (fderiv 𝕜 f x) x
theorem DifferentiableOn.differentiableAt {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} {s : Set E} (h : DifferentiableOn 𝕜 f s) (hs : s nhds x) :
theorem DifferentiableOn.eventually_differentiableAt {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} {s : Set E} (h : DifferentiableOn 𝕜 f s) (hs : s nhds x) :
∀ᶠ (y : E) in nhds x, DifferentiableAt 𝕜 f y
theorem HasFDerivAt.fderiv {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} (h : HasFDerivAt f f' x) :
fderiv 𝕜 f x = f'
theorem fderiv_eq {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : EE →L[𝕜] F} (h : ∀ (x : E), HasFDerivAt f (f' x) x) :
fderiv 𝕜 f = f'
theorem HasFDerivWithinAt.fderivWithin {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} {s : Set E} (h : HasFDerivWithinAt f f' s x) (hxs : UniqueDiffWithinAt 𝕜 s x) :
fderivWithin 𝕜 f s x = f'
theorem DifferentiableWithinAt.mono {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} {s t : Set E} (h : DifferentiableWithinAt 𝕜 f t x) (st : s t) :
theorem DifferentiableWithinAt.mono_of_mem_nhdsWithin {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} {s : Set E} (h : DifferentiableWithinAt 𝕜 f s x) {t : Set E} (hst : s nhdsWithin x t) :
@[deprecated DifferentiableWithinAt.mono_of_mem_nhdsWithin (since := "2024-10-31")]
theorem DifferentiableWithinAt.mono_of_mem {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} {s : Set E} (h : DifferentiableWithinAt 𝕜 f s x) {t : Set E} (hst : s nhdsWithin x t) :

Alias of DifferentiableWithinAt.mono_of_mem_nhdsWithin.

theorem DifferentiableWithinAt.congr_nhds {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} {s : Set E} (h : DifferentiableWithinAt 𝕜 f s x) {t : Set E} (hst : nhdsWithin x s = nhdsWithin x t) :
theorem differentiableWithinAt_congr_nhds {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} {s t : Set E} (hst : nhdsWithin x s = nhdsWithin x t) :
theorem differentiableWithinAt_inter {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} {s t : Set E} (ht : t nhds x) :
theorem differentiableWithinAt_inter' {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} {s t : Set E} (ht : t nhdsWithin x s) :
theorem differentiableWithinAt_insert_self {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} {s : Set E} :
theorem differentiableWithinAt_insert {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} {s : Set E} {y : E} :
theorem DifferentiableWithinAt.insert' {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} {s : Set E} {y : E} :

Alias of the reverse direction of differentiableWithinAt_insert.

theorem DifferentiableWithinAt.of_insert {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} {s : Set E} {y : E} :

Alias of the forward direction of differentiableWithinAt_insert.

theorem DifferentiableWithinAt.insert {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} {s : Set E} (h : DifferentiableWithinAt 𝕜 f s x) :
theorem DifferentiableAt.differentiableWithinAt {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} {s : Set E} (h : DifferentiableAt 𝕜 f x) :
theorem Differentiable.differentiableAt {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} (h : Differentiable 𝕜 f) :
theorem DifferentiableAt.fderivWithin {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} {s : Set E} (h : DifferentiableAt 𝕜 f x) (hxs : UniqueDiffWithinAt 𝕜 s x) :
fderivWithin 𝕜 f s x = fderiv 𝕜 f x
theorem DifferentiableOn.mono {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {s t : Set E} (h : DifferentiableOn 𝕜 f t) (st : s t) :
theorem differentiableOn_univ {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} :
theorem Differentiable.differentiableOn {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {s : Set E} (h : Differentiable 𝕜 f) :
theorem differentiableOn_of_locally_differentiableOn {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {s : Set E} (h : xs, ∃ (u : Set E), IsOpen u x u DifferentiableOn 𝕜 f (s u)) :
theorem fderivWithin_of_mem_nhdsWithin {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} {s t : Set E} (st : t nhdsWithin x s) (ht : UniqueDiffWithinAt 𝕜 s x) (h : DifferentiableWithinAt 𝕜 f t x) :
fderivWithin 𝕜 f s x = fderivWithin 𝕜 f t x
@[deprecated fderivWithin_of_mem_nhdsWithin (since := "2024-10-31")]
theorem fderivWithin_of_mem {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} {s t : Set E} (st : t nhdsWithin x s) (ht : UniqueDiffWithinAt 𝕜 s x) (h : DifferentiableWithinAt 𝕜 f t x) :
fderivWithin 𝕜 f s x = fderivWithin 𝕜 f t x

Alias of fderivWithin_of_mem_nhdsWithin.

theorem fderivWithin_subset {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} {s t : Set E} (st : s t) (ht : UniqueDiffWithinAt 𝕜 s x) (h : DifferentiableWithinAt 𝕜 f t x) :
fderivWithin 𝕜 f s x = fderivWithin 𝕜 f t x
theorem fderivWithin_inter {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} {s t : Set E} (ht : t nhds x) :
fderivWithin 𝕜 f (s t) x = fderivWithin 𝕜 f s x
theorem fderivWithin_of_mem_nhds {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} {s : Set E} (h : s nhds x) :
fderivWithin 𝕜 f s x = fderiv 𝕜 f x
theorem fderivWithin_of_isOpen {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} {s : Set E} (hs : IsOpen s) (hx : x s) :
fderivWithin 𝕜 f s x = fderiv 𝕜 f x
theorem fderivWithin_eq_fderiv {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} {s : Set E} (hs : UniqueDiffWithinAt 𝕜 s x) (h : DifferentiableAt 𝕜 f x) :
fderivWithin 𝕜 f s x = fderiv 𝕜 f x
theorem fderiv_mem_iff {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {s : Set (E →L[𝕜] F)} {x : E} :
fderiv 𝕜 f x s DifferentiableAt 𝕜 f x fderiv 𝕜 f x s ¬DifferentiableAt 𝕜 f x 0 s
theorem fderivWithin_mem_iff {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {t : Set E} {s : Set (E →L[𝕜] F)} {x : E} :
fderivWithin 𝕜 f t x s DifferentiableWithinAt 𝕜 f t x fderivWithin 𝕜 f t x s ¬DifferentiableWithinAt 𝕜 f t x 0 s
theorem Asymptotics.IsBigO.hasFDerivWithinAt {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {s : Set E} {x₀ : E} {n : } (h : f =O[nhdsWithin x₀ s] fun (x : E) => x - x₀ ^ n) (hx₀ : x₀ s) (hn : 1 < n) :
theorem Asymptotics.IsBigO.hasFDerivAt {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x₀ : E} {n : } (h : f =O[nhds x₀] fun (x : E) => x - x₀ ^ n) (hn : 1 < n) :
HasFDerivAt f 0 x₀
theorem HasFDerivWithinAt.isBigO_sub {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {s : Set E} {x₀ : E} {f' : E →L[𝕜] F} (h : HasFDerivWithinAt f f' s x₀) :
(fun (x : E) => f x - f x₀) =O[nhdsWithin x₀ s] fun (x : E) => x - x₀
theorem DifferentiableWithinAt.isBigO_sub {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {s : Set E} {x₀ : E} (h : DifferentiableWithinAt 𝕜 f s x₀) :
(fun (x : E) => f x - f x₀) =O[nhdsWithin x₀ s] fun (x : E) => x - x₀
theorem HasFDerivAt.isBigO_sub {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x₀ : E} {f' : E →L[𝕜] F} (h : HasFDerivAt f f' x₀) :
(fun (x : E) => f x - f x₀) =O[nhds x₀] fun (x : E) => x - x₀
theorem DifferentiableAt.isBigO_sub {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x₀ : E} (h : DifferentiableAt 𝕜 f x₀) :
(fun (x : E) => f x - f x₀) =O[nhds x₀] fun (x : E) => x - x₀

Deducing continuity from differentiability #

theorem HasFDerivAtFilter.tendsto_nhds {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} {L : Filter E} (hL : L nhds x) (h : HasFDerivAtFilter f f' x L) :
Filter.Tendsto f L (nhds (f x))
theorem HasFDerivWithinAt.continuousWithinAt {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} {s : Set E} (h : HasFDerivWithinAt f f' s x) :
theorem HasFDerivAt.continuousAt {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} (h : HasFDerivAt f f' x) :
theorem DifferentiableWithinAt.continuousWithinAt {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} {s : Set E} (h : DifferentiableWithinAt 𝕜 f s x) :
theorem DifferentiableAt.continuousAt {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} (h : DifferentiableAt 𝕜 f x) :
theorem DifferentiableOn.continuousOn {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {s : Set E} (h : DifferentiableOn 𝕜 f s) :
theorem Differentiable.continuous {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} (h : Differentiable 𝕜 f) :
theorem HasStrictFDerivAt.continuousAt {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} (hf : HasStrictFDerivAt f f' x) :
theorem HasStrictFDerivAt.isBigO_sub_rev {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x : E} {f' : E ≃L[𝕜] F} (hf : HasStrictFDerivAt f (↑f') x) :
(fun (p : E × E) => p.1 - p.2) =O[nhds (x, x)] fun (p : E × E) => f p.1 - f p.2
theorem HasFDerivAtFilter.isBigO_sub_rev {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x : E} {L : Filter E} (hf : HasFDerivAtFilter f f' x L) {C : NNReal} (hf' : AntilipschitzWith C f') :
(fun (x' : E) => x' - x) =O[L] fun (x' : E) => f x' - f x

Derivative of the identity #

theorem hasFDerivAtFilter_id {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] (x : E) (L : Filter E) :
theorem hasFDerivWithinAt_id {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] (x : E) (s : Set E) :
theorem hasFDerivAt_id {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] (x : E) :
@[simp]
theorem differentiableAt_id {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {x : E} :
@[simp]
theorem differentiableAt_id' {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {x : E} :
DifferentiableAt 𝕜 (fun (x : E) => x) x

Variant with fun x => x rather than id

theorem differentiableWithinAt_id {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {x : E} {s : Set E} :
theorem differentiableWithinAt_id' {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {x : E} {s : Set E} :
DifferentiableWithinAt 𝕜 (fun (x : E) => x) s x

Variant with fun x => x rather than id

@[simp]
theorem differentiable_id {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] :
@[simp]
theorem differentiable_id' {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] :
Differentiable 𝕜 fun (x : E) => x

Variant with fun x => x rather than id

theorem differentiableOn_id {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {s : Set E} :
@[simp]
theorem fderiv_id {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {x : E} :
@[simp]
theorem fderiv_id' {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {x : E} :
fderiv 𝕜 (fun (x : E) => x) x = ContinuousLinearMap.id 𝕜 E
theorem fderivWithin_id {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {x : E} {s : Set E} (hxs : UniqueDiffWithinAt 𝕜 s x) :
theorem fderivWithin_id' {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {x : E} {s : Set E} (hxs : UniqueDiffWithinAt 𝕜 s x) :
fderivWithin 𝕜 (fun (x : E) => x) s x = ContinuousLinearMap.id 𝕜 E
theorem HasFDerivAt.le_of_lip' {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x₀ : E} (hf : HasFDerivAt f f' x₀) {C : } (hC₀ : 0 C) (hlip : ∀ᶠ (x : E) in nhds x₀, f x - f x₀ C * x - x₀) :

Converse to the mean value inequality: if f is differentiable at x₀ and C-lipschitz on a neighborhood of x₀ then its derivative at x₀ has norm bounded by C. This version only assumes that ‖f x - f x₀‖ ≤ C * ‖x - x₀‖ in a neighborhood of x.

theorem HasFDerivAt.le_of_lipschitzOn {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x₀ : E} (hf : HasFDerivAt f f' x₀) {s : Set E} (hs : s nhds x₀) {C : NNReal} (hlip : LipschitzOnWith C f s) :
f' C

Converse to the mean value inequality: if f is differentiable at x₀ and C-lipschitz on a neighborhood of x₀ then its derivative at x₀ has norm bounded by C.

theorem HasFDerivAt.le_of_lipschitz {𝕜 : Type u_1} [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {f' : E →L[𝕜] F} {x₀ : E} (hf : HasFDerivAt f f' x₀) {C : NNReal} (hlip : LipschitzWith C f) :
f' C

Converse to the mean value inequality: if f is differentiable at x₀ and C-lipschitz then its derivative at x₀ has norm bounded by C.

theorem norm_fderiv_le_of_lip' (𝕜 : Type u_1) [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x₀ : E} {C : } (hC₀ : 0 C) (hlip : ∀ᶠ (x : E) in nhds x₀, f x - f x₀ C * x - x₀) :
fderiv 𝕜 f x₀ C

Converse to the mean value inequality: if f is C-lipschitz on a neighborhood of x₀ then its derivative at x₀ has norm bounded by C. This version only assumes that ‖f x - f x₀‖ ≤ C * ‖x - x₀‖ in a neighborhood of x.

theorem norm_fderiv_le_of_lipschitzOn (𝕜 : Type u_1) [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x₀ : E} {s : Set E} (hs : s nhds x₀) {C : NNReal} (hlip : LipschitzOnWith C f s) :
fderiv 𝕜 f x₀ C

Converse to the mean value inequality: if f is C-lipschitz on a neighborhood of x₀ then its derivative at x₀ has norm bounded by C. Version using fderiv.

theorem norm_fderiv_le_of_lipschitz (𝕜 : Type u_1) [NontriviallyNormedField 𝕜] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f : EF} {x₀ : E} {C : NNReal} (hlip : LipschitzWith C f) :
fderiv 𝕜 f x₀ C

Converse to the mean value inequality: if f is C-lipschitz then its derivative at x₀ has norm bounded by C. Version using fderiv.

Results involving semilinear maps #

theorem HasFDerivAt.comp_semilinear {𝕜 : Type u_1} {V : Type u_2} {V' : Type u_3} {W : Type u_4} {W' : Type u_5} [NontriviallyNormedField 𝕜] {σ σ' : 𝕜 →+* 𝕜} [NormedAddCommGroup V] [NormedSpace 𝕜 V] [NormedAddCommGroup V'] [NormedSpace 𝕜 V'] [NormedAddCommGroup W] [NormedSpace 𝕜 W] [NormedAddCommGroup W'] [NormedSpace 𝕜 W'] [RingHomIsometric σ] [RingHomInvPair σ σ'] (L : W →SL[σ] W') (R : V' →SL[σ'] V) {f : VW} {z : V'} {f' : V →L[𝕜] W} (hf : HasFDerivAt f f' (R z)) :
HasFDerivAt (L f R) (L.comp (f'.comp R)) z

If L and R are semilinear maps whose composite is linear, and f has Fréchet derivative f' at R z, then L ∘ f ∘ R has Fréchet derivative L ∘ f' ∘ R at z.

theorem DifferentiableAt.comp_semilinear₂ {𝕜 : Type u_1} {V : Type u_2} {V' : Type u_3} {W : Type u_4} {W' : Type u_5} [NontriviallyNormedField 𝕜] {σ σ' : 𝕜 →+* 𝕜} [NormedAddCommGroup V] [NormedSpace 𝕜 V] [NormedAddCommGroup V'] [NormedSpace 𝕜 V'] [NormedAddCommGroup W] [NormedSpace 𝕜 W] [NormedAddCommGroup W'] [NormedSpace 𝕜 W'] [RingHomIsometric σ] [RingHomInvPair σ σ'] (L : W →SL[σ] W') (R : V' →SL[σ'] V) {f : VW} {z : V'} (hf : DifferentiableAt 𝕜 f (R z)) :
DifferentiableAt 𝕜 (L f R) z

If L and R are semilinear maps whose composite is linear, and f is differentiable at R z, then L ∘ f ∘ R is differentiable at z.