Theorem: StrictMonoOn.exists_slope_lt_deriv_aux
File: Mathlib/Analysis/Calculus/MeanValue.lean

tactic: have A : DifferentiableOn ℝ f (Ioo x y) := fun w wmem =>
  (differentiableAt_of_deriv_ne_zero (h w wmem)).differentiableWithinAt
state_before: E : Type ?u.428932
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.429028
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
x y : ℝ
f : ℝ → ℝ
hf : ContinuousOn f (Icc x y)
hxy : x < y
hf'_mono : StrictMonoOn (deriv f) (Ioo x y)
h : ∀ (w : ℝ), w ∈ Ioo x y → deriv f w ≠ 0
⊢ ∃ a, a ∈ Ioo x y ∧ (f y - f x) / (y - x) < deriv f a

tactic: obtain ⟨a, ⟨hxa, hay⟩, ha⟩ : ∃ a ∈ Ioo x y, deriv f a = (f y - f x) / (y - x)
state_before: E : Type ?u.428932
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.429028
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
x y : ℝ
f : ℝ → ℝ
hf : ContinuousOn f (Icc x y)
hxy : x < y
hf'_mono : StrictMonoOn (deriv f) (Ioo x y)
h : ∀ (w : ℝ), w ∈ Ioo x y → deriv f w ≠ 0
A : DifferentiableOn ℝ f (Ioo x y)
⊢ ∃ a, a ∈ Ioo x y ∧ (f y - f x) / (y - x) < deriv f a

tactic: exact exists_deriv_eq_slope f hxy hf A
state_before: E : Type ?u.428932
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.429028
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
x y : ℝ
f : ℝ → ℝ
hf : ContinuousOn f (Icc x y)
hxy : x < y
hf'_mono : StrictMonoOn (deriv f) (Ioo x y)
h : ∀ (w : ℝ), w ∈ Ioo x y → deriv f w ≠ 0
A : DifferentiableOn ℝ f (Ioo x y)
⊢ ∃ a, a ∈ Ioo x y ∧ deriv f a = (f y - f x) / (y - x)

case intro.intro.intro
E : Type ?u.428932
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.429028
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
x y : ℝ
f : ℝ → ℝ
hf : ContinuousOn f (Icc x y)
hxy : x < y
hf'_mono : StrictMonoOn (deriv f) (Ioo x y)
h : ∀ (w : ℝ), w ∈ Ioo x y → deriv f w ≠ 0
A : DifferentiableOn ℝ f (Ioo x y)
a : ℝ
ha : deriv f a = (f y - f x) / (y - x)
hxa : x < a
hay : a < y
⊢ ∃ a, a ∈ Ioo x y ∧ (f y - f x) / (y - x) < deriv f a

tactic: rcases nonempty_Ioo.2 hay with ⟨b, ⟨hab, hby⟩⟩
state_before: case intro.intro.intro
E : Type ?u.428932
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.429028
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
x y : ℝ
f : ℝ → ℝ
hf : ContinuousOn f (Icc x y)
hxy : x < y
hf'_mono : StrictMonoOn (deriv f) (Ioo x y)
h : ∀ (w : ℝ), w ∈ Ioo x y → deriv f w ≠ 0
A : DifferentiableOn ℝ f (Ioo x y)
a : ℝ
ha : deriv f a = (f y - f x) / (y - x)
hxa : x < a
hay : a < y
⊢ ∃ a, a ∈ Ioo x y ∧ (f y - f x) / (y - x) < deriv f a

tactic: refine' ⟨b, ⟨hxa.trans hab, hby⟩, _⟩
state_before: case intro.intro.intro.intro.intro
E : Type ?u.428932
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.429028
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
x y : ℝ
f : ℝ → ℝ
hf : ContinuousOn f (Icc x y)
hxy : x < y
hf'_mono : StrictMonoOn (deriv f) (Ioo x y)
h : ∀ (w : ℝ), w ∈ Ioo x y → deriv f w ≠ 0
A : DifferentiableOn ℝ f (Ioo x y)
a : ℝ
ha : deriv f a = (f y - f x) / (y - x)
hxa : x < a
hay : a < y
b : ℝ
hab : a < b
hby : b < y
⊢ ∃ a, a ∈ Ioo x y ∧ (f y - f x) / (y - x) < deriv f a

tactic: rw [← ha]
state_before: case intro.intro.intro.intro.intro
E : Type ?u.428932
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.429028
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
x y : ℝ
f : ℝ → ℝ
hf : ContinuousOn f (Icc x y)
hxy : x < y
hf'_mono : StrictMonoOn (deriv f) (Ioo x y)
h : ∀ (w : ℝ), w ∈ Ioo x y → deriv f w ≠ 0
A : DifferentiableOn ℝ f (Ioo x y)
a : ℝ
ha : deriv f a = (f y - f x) / (y - x)
hxa : x < a
hay : a < y
b : ℝ
hab : a < b
hby : b < y
⊢ (f y - f x) / (y - x) < deriv f b

tactic: exact hf'_mono ⟨hxa, hay⟩ ⟨hxa.trans hab, hby⟩ hab
state_before: case intro.intro.intro.intro.intro
E : Type ?u.428932
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.429028
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
x y : ℝ
f : ℝ → ℝ
hf : ContinuousOn f (Icc x y)
hxy : x < y
hf'_mono : StrictMonoOn (deriv f) (Ioo x y)
h : ∀ (w : ℝ), w ∈ Ioo x y → deriv f w ≠ 0
A : DifferentiableOn ℝ f (Ioo x y)
a : ℝ
ha : deriv f a = (f y - f x) / (y - x)
hxa : x < a
hay : a < y
b : ℝ
hab : a < b
hby : b < y
⊢ deriv f a < deriv f b