# mathlibdocumentation

analysis.calculus.local_extr

# Local extrema of smooth functions

## Main definitions

In a real normed space E we define pos_tangent_cone_at (s : set E) (x : E). This would be the same as tangent_cone_at ℝ≥0 s x if we had a theory of normed semifields. This set is used in the proof of Fermat's Theorem (see below), and can be used to formalize Lagrange multipliers and/or Karush–Kuhn–Tucker conditions.

## Main statements

For each theorem name listed below, we also prove similar theorems for min, extr (if applicable), and(f)derivinstead ofhas_fderiv.

• is_local_max_on.has_fderiv_within_at_nonpos : f' y ≤ 0 whenever a is a local maximum of f on s, f has derivative f' at a within s, and y belongs to the positive tangent cone of s at a.

• is_local_max_on.has_fderiv_within_at_eq_zero : In the settings of the previous theorem, if both y and -y belong to the positive tangent cone, then f' y = 0.

• is_local_max.has_fderiv_at_eq_zero : Fermat's Theorem, the derivative of a differentiable function at a local extremum point equals zero.

• exists_has_deriv_at_eq_zero : Rolle's Theorem: given a function f continuous on [a, b] and differentiable on (a, b), there exists c ∈ (a, b) such that f' c = 0.

## Implementation notes

For each mathematical fact we prove several versions of its formalization:

• for maxima and minima;
• using has_fderiv*/has_deriv* or fderiv*/deriv*.

For the fderiv*/deriv* versions we omit the differentiability condition whenever it is possible due to the fact that fderiv and deriv are defined to be zero for non-differentiable functions.

## Tags

local extremum, Fermat's Theorem, Rolle's Theorem

def pos_tangent_cone_at {E : Type u} [normed_group E] [ E] :
set EE → set E

"Positive" tangent cone to s at x; the only difference from tangent_cone_at is that we require c n → ∞ instead of ∥c n∥ → ∞. One can think about pos_tangent_cone_at as tangent_cone_at nnreal but we have no theory of normed semifields yet.

Equations
theorem pos_tangent_cone_at_mono {E : Type u} [normed_group E] [ E] {a : E} :
monotone (λ (s : set E),

theorem mem_pos_tangent_cone_at_of_segment_subset {E : Type u} [normed_group E] [ E] {s : set E} {x y : E} :
y sy - x

theorem pos_tangent_cone_at_univ {E : Type u} [normed_group E] [ E] {a : E} :

theorem is_local_max_on.has_fderiv_within_at_nonpos {E : Type u} [normed_group E] [ E] {f : E → } {a : E} {f' : E →L[] } {s : set E} (h : a) (hf : s a) {y : E} :
y f' y 0

If f has a local max on s at a, f' is the derivative of f at a within s, and y belongs to the positive tangent cone of s at a, then f' y ≤ 0.

theorem is_local_max_on.fderiv_within_nonpos {E : Type u} [normed_group E] [ E] {f : E → } {a : E} {s : set E} (h : a) {y : E} :
y s a) y 0

If f has a local max on s at a and y belongs to the positive tangent cone of s at a, then f' y ≤ 0.

theorem is_local_max_on.has_fderiv_within_at_eq_zero {E : Type u} [normed_group E] [ E] {f : E → } {a : E} {f' : E →L[] } {s : set E} (h : a) (hf : s a) {y : E} :
y f' y = 0

If f has a local max on s at a, f' is a derivative of f at a within s, and both y and -y belong to the positive tangent cone of s at a, then f' y ≤ 0.

theorem is_local_max_on.fderiv_within_eq_zero {E : Type u} [normed_group E] [ E] {f : E → } {a : E} {s : set E} (h : a) {y : E} :
y s a) y = 0

If f has a local max on s at a and both y and -y belong to the positive tangent cone of s at a, then f' y = 0.

theorem is_local_min_on.has_fderiv_within_at_nonneg {E : Type u} [normed_group E] [ E] {f : E → } {a : E} {f' : E →L[] } {s : set E} (h : a) (hf : s a) {y : E} :
y 0 f' y

If f has a local min on s at a, f' is the derivative of f at a within s, and y belongs to the positive tangent cone of s at a, then 0 ≤ f' y.

theorem is_local_min_on.fderiv_within_nonneg {E : Type u} [normed_group E] [ E] {f : E → } {a : E} {s : set E} (h : a) {y : E} :
y 0 s a) y

If f has a local min on s at a and y belongs to the positive tangent cone of s at a, then 0 ≤ f' y.

theorem is_local_min_on.has_fderiv_within_at_eq_zero {E : Type u} [normed_group E] [ E] {f : E → } {a : E} {f' : E →L[] } {s : set E} (h : a) (hf : s a) {y : E} :
y f' y = 0

If f has a local max on s at a, f' is a derivative of f at a within s, and both y and -y belong to the positive tangent cone of s at a, then f' y ≤ 0.

theorem is_local_min_on.fderiv_within_eq_zero {E : Type u} [normed_group E] [ E] {f : E → } {a : E} {s : set E} (h : a) {y : E} :
y s a) y = 0

If f has a local min on s at a and both y and -y belong to the positive tangent cone of s at a, then f' y = 0.

theorem is_local_min.has_fderiv_at_eq_zero {E : Type u} [normed_group E] [ E] {f : E → } {a : E} {f' : E →L[] } :
a f' af' = 0

Fermat's Theorem: the derivative of a function at a local minimum equals zero.

theorem is_local_min.fderiv_eq_zero {E : Type u} [normed_group E] [ E] {f : E → } {a : E} :
a f a = 0

Fermat's Theorem: the derivative of a function at a local minimum equals zero.

theorem is_local_max.has_fderiv_at_eq_zero {E : Type u} [normed_group E] [ E] {f : E → } {a : E} {f' : E →L[] } :
a f' af' = 0

Fermat's Theorem: the derivative of a function at a local maximum equals zero.

theorem is_local_max.fderiv_eq_zero {E : Type u} [normed_group E] [ E] {f : E → } {a : E} :
a f a = 0

Fermat's Theorem: the derivative of a function at a local maximum equals zero.

theorem is_local_extr.has_fderiv_at_eq_zero {E : Type u} [normed_group E] [ E] {f : E → } {a : E} {f' : E →L[] } :
f' af' = 0

Fermat's Theorem: the derivative of a function at a local extremum equals zero.

theorem is_local_extr.fderiv_eq_zero {E : Type u} [normed_group E] [ E] {f : E → } {a : E} :
f a = 0

Fermat's Theorem: the derivative of a function at a local extremum equals zero.

theorem is_local_min.has_deriv_at_eq_zero {f : } {f' a : } :
a f' af' = 0

Fermat's Theorem: the derivative of a function at a local minimum equals zero.

theorem is_local_min.deriv_eq_zero {f : } {a : } :
a a = 0

Fermat's Theorem: the derivative of a function at a local minimum equals zero.

theorem is_local_max.has_deriv_at_eq_zero {f : } {f' a : } :
a f' af' = 0

Fermat's Theorem: the derivative of a function at a local maximum equals zero.

theorem is_local_max.deriv_eq_zero {f : } {a : } :
a a = 0

Fermat's Theorem: the derivative of a function at a local maximum equals zero.

theorem is_local_extr.has_deriv_at_eq_zero {f : } {f' a : } :
f' af' = 0

Fermat's Theorem: the derivative of a function at a local extremum equals zero.

theorem is_local_extr.deriv_eq_zero {f : } {a : } :
a = 0

Fermat's Theorem: the derivative of a function at a local extremum equals zero.

theorem exists_Ioo_extr_on_Icc (f : ) {a b : } :
a < b (set.Icc a b)f a = f b(∃ (c : ) (H : c b), (set.Icc a b) c)

A continuous function on a closed interval with f a = f b takes either its maximum or its minimum value at a point in the interior of the interval.

theorem exists_local_extr_Ioo (f : ) {a b : } :
a < b (set.Icc a b)f a = f b(∃ (c : ) (H : c b), c)

A continuous function on a closed interval with f a = f b has a local extremum at some point of the corresponding open interval.

theorem exists_has_deriv_at_eq_zero (f f' : ) {a b : } :
a < b (set.Icc a b)f a = f b(∀ (x : ), x b (f' x) x)(∃ (c : ) (H : c b), f' c = 0)

Rolle's Theorem has_deriv_at version

theorem exists_deriv_eq_zero (f : ) {a b : } :
a < b (set.Icc a b)f a = f b(∃ (c : ) (H : c b), c = 0)

Rolle's Theorem deriv` version

theorem exists_has_deriv_at_eq_zero' {f f' : } {a b : } (hab : a < b) {l : } :
(𝓝[] a) (𝓝 l) (𝓝[] b) (𝓝 l)(∀ (x : ), x b (f' x) x)(∃ (c : ) (H : c b), f' c = 0)

theorem exists_deriv_eq_zero' {f : } {a b : } (hab : a < b) {l : } :
(𝓝[] a) (𝓝 l) (𝓝[] b) (𝓝 l)(∃ (c : ) (H : c b), c = 0)