Theorem: image_le_of_liminf_slope_right_le_deriv_boundary
File: Mathlib/Analysis/Calculus/MeanValue.lean

tactic: intro x hx
state_before: E : Type ?u.11278
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.11374
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : ℝ → ℝ
a b : ℝ
hf : ContinuousOn f (Icc a b)
B B' : ℝ → ℝ
ha : f a ≤ B a
hB : ContinuousOn B (Icc a b)
hB' : ∀ (x : ℝ), x ∈ Ico a b → HasDerivWithinAt B (B' x) (Ici x) x
bound : ∀ (x : ℝ), x ∈ Ico a b → ∀ (r : ℝ), B' x < r → ∃ᶠ (z : ℝ) in 𝓝[Ioi x] x, slope f x z < r
Hr : ∀ (x : ℝ), x ∈ Icc a b → ∀ (r : ℝ), r > 0 → f x ≤ B x + r * (x - a)
⊢ ∀ ⦃x : ℝ⦄, x ∈ Icc a b → f x ≤ B x

tactic: have : ContinuousWithinAt (fun r => B x + r * (x - a)) (Ioi 0) 0 :=
  continuousWithinAt_const.add (continuousWithinAt_id.mul continuousWithinAt_const)
state_before: E : Type ?u.11278
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.11374
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : ℝ → ℝ
a b : ℝ
hf : ContinuousOn f (Icc a b)
B B' : ℝ → ℝ
ha : f a ≤ B a
hB : ContinuousOn B (Icc a b)
hB' : ∀ (x : ℝ), x ∈ Ico a b → HasDerivWithinAt B (B' x) (Ici x) x
bound : ∀ (x : ℝ), x ∈ Ico a b → ∀ (r : ℝ), B' x < r → ∃ᶠ (z : ℝ) in 𝓝[Ioi x] x, slope f x z < r
Hr : ∀ (x : ℝ), x ∈ Icc a b → ∀ (r : ℝ), r > 0 → f x ≤ B x + r * (x - a)
x : ℝ
hx : x ∈ Icc a b
⊢ f x ≤ B x

tactic: convert continuousWithinAt_const.closure_le _ this (Hr x hx) using 1 <;> simp
state_before: E : Type ?u.11278
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.11374
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : ℝ → ℝ
a b : ℝ
hf : ContinuousOn f (Icc a b)
B B' : ℝ → ℝ
ha : f a ≤ B a
hB : ContinuousOn B (Icc a b)
hB' : ∀ (x : ℝ), x ∈ Ico a b → HasDerivWithinAt B (B' x) (Ici x) x
bound : ∀ (x : ℝ), x ∈ Ico a b → ∀ (r : ℝ), B' x < r → ∃ᶠ (z : ℝ) in 𝓝[Ioi x] x, slope f x z < r
Hr : ∀ (x : ℝ), x ∈ Icc a b → ∀ (r : ℝ), r > 0 → f x ≤ B x + r * (x - a)
x : ℝ
hx : x ∈ Icc a b
this : ContinuousWithinAt (fun r => B x + r * (x - a)) (Ioi 0) 0
⊢ f x ≤ B x

tactic: apply image_le_of_liminf_slope_right_lt_deriv_boundary' hf bound
state_before: E : Type ?u.11278
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.11374
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : ℝ → ℝ
a b : ℝ
hf : ContinuousOn f (Icc a b)
B B' : ℝ → ℝ
ha : f a ≤ B a
hB : ContinuousOn B (Icc a b)
hB' : ∀ (x : ℝ), x ∈ Ico a b → HasDerivWithinAt B (B' x) (Ici x) x
bound : ∀ (x : ℝ), x ∈ Ico a b → ∀ (r : ℝ), B' x < r → ∃ᶠ (z : ℝ) in 𝓝[Ioi x] x, slope f x z < r
x : ℝ
hx : x ∈ Icc a b
r : ℝ
hr : r > 0
⊢ f x ≤ B x + r * (x - a)

tactic: exact hx
state_before: case a
E : Type ?u.11278
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.11374
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : ℝ → ℝ
a b : ℝ
hf : ContinuousOn f (Icc a b)
B B' : ℝ → ℝ
ha : f a ≤ B a
hB : ContinuousOn B (Icc a b)
hB' : ∀ (x : ℝ), x ∈ Ico a b → HasDerivWithinAt B (B' x) (Ici x) x
bound : ∀ (x : ℝ), x ∈ Ico a b → ∀ (r : ℝ), B' x < r → ∃ᶠ (z : ℝ) in 𝓝[Ioi x] x, slope f x z < r
x : ℝ
hx : x ∈ Icc a b
r : ℝ
hr : r > 0
⊢ x ∈ Icc a b

tactic: rwa [sub_self, mul_zero, add_zero]
state_before: case ha
E : Type ?u.11278
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.11374
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : ℝ → ℝ
a b : ℝ
hf : ContinuousOn f (Icc a b)
B B' : ℝ → ℝ
ha : f a ≤ B a
hB : ContinuousOn B (Icc a b)
hB' : ∀ (x : ℝ), x ∈ Ico a b → HasDerivWithinAt B (B' x) (Ici x) x
bound : ∀ (x : ℝ), x ∈ Ico a b → ∀ (r : ℝ), B' x < r → ∃ᶠ (z : ℝ) in 𝓝[Ioi x] x, slope f x z < r
x : ℝ
hx : x ∈ Icc a b
r : ℝ
hr : r > 0
⊢ f a ≤ B a + r * (a - a)

tactic: exact hB.add (continuousOn_const.mul (continuousOn_id.sub continuousOn_const))
state_before: case hB
E : Type ?u.11278
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.11374
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : ℝ → ℝ
a b : ℝ
hf : ContinuousOn f (Icc a b)
B B' : ℝ → ℝ
ha : f a ≤ B a
hB : ContinuousOn B (Icc a b)
hB' : ∀ (x : ℝ), x ∈ Ico a b → HasDerivWithinAt B (B' x) (Ici x) x
bound : ∀ (x : ℝ), x ∈ Ico a b → ∀ (r : ℝ), B' x < r → ∃ᶠ (z : ℝ) in 𝓝[Ioi x] x, slope f x z < r
x : ℝ
hx : x ∈ Icc a b
r : ℝ
hr : r > 0
⊢ ContinuousOn (fun x => B x + r * (x - a)) (Icc a b)

tactic: intro x hx
state_before: case hB'
E : Type ?u.11278
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.11374
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : ℝ → ℝ
a b : ℝ
hf : ContinuousOn f (Icc a b)
B B' : ℝ → ℝ
ha : f a ≤ B a
hB : ContinuousOn B (Icc a b)
hB' : ∀ (x : ℝ), x ∈ Ico a b → HasDerivWithinAt B (B' x) (Ici x) x
bound : ∀ (x : ℝ), x ∈ Ico a b → ∀ (r : ℝ), B' x < r → ∃ᶠ (z : ℝ) in 𝓝[Ioi x] x, slope f x z < r
x : ℝ
hx : x ∈ Icc a b
r : ℝ
hr : r > 0
⊢ ∀ (x : ℝ), x ∈ Ico a b → HasDerivWithinAt (fun x => B x + r * (x - a)) (?m.13270 x) (Ici x) x

tactic: exact (hB' x hx).add (((hasDerivWithinAt_id x (Ici x)).sub_const a).const_mul r)
state_before: case hB'
E : Type ?u.11278
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.11374
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : ℝ → ℝ
a b : ℝ
hf : ContinuousOn f (Icc a b)
B B' : ℝ → ℝ
ha : f a ≤ B a
hB : ContinuousOn B (Icc a b)
hB' : ∀ (x : ℝ), x ∈ Ico a b → HasDerivWithinAt B (B' x) (Ici x) x
bound : ∀ (x : ℝ), x ∈ Ico a b → ∀ (r : ℝ), B' x < r → ∃ᶠ (z : ℝ) in 𝓝[Ioi x] x, slope f x z < r
x✝ : ℝ
hx✝ : x✝ ∈ Icc a b
r : ℝ
hr : r > 0
x : ℝ
hx : x ∈ Ico a b
⊢ HasDerivWithinAt (fun x => B x + r * (x - a)) (?m.13270 x) (Ici x) x

tactic: intro x _ _
state_before: case bound
E : Type ?u.11278
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.11374
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : ℝ → ℝ
a b : ℝ
hf : ContinuousOn f (Icc a b)
B B' : ℝ → ℝ
ha : f a ≤ B a
hB : ContinuousOn B (Icc a b)
hB' : ∀ (x : ℝ), x ∈ Ico a b → HasDerivWithinAt B (B' x) (Ici x) x
bound : ∀ (x : ℝ), x ∈ Ico a b → ∀ (r : ℝ), B' x < r → ∃ᶠ (z : ℝ) in 𝓝[Ioi x] x, slope f x z < r
x : ℝ
hx : x ∈ Icc a b
r : ℝ
hr : r > 0
⊢ ∀ (x : ℝ), x ∈ Ico a b → f x = B x + r * (x - a) → B' x < B' x + r * 1

tactic: rw [mul_one]
state_before: case bound
E : Type ?u.11278
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.11374
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : ℝ → ℝ
a b : ℝ
hf : ContinuousOn f (Icc a b)
B B' : ℝ → ℝ
ha : f a ≤ B a
hB : ContinuousOn B (Icc a b)
hB' : ∀ (x : ℝ), x ∈ Ico a b → HasDerivWithinAt B (B' x) (Ici x) x
bound : ∀ (x : ℝ), x ∈ Ico a b → ∀ (r : ℝ), B' x < r → ∃ᶠ (z : ℝ) in 𝓝[Ioi x] x, slope f x z < r
x✝ : ℝ
hx : x✝ ∈ Icc a b
r : ℝ
hr : r > 0
x : ℝ
a✝¹ : x ∈ Ico a b
a✝ : f x = B x + r * (x - a)
⊢ B' x < B' x + r * 1

tactic: exact (lt_add_iff_pos_right _).2 hr
state_before: case bound
E : Type ?u.11278
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.11374
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : ℝ → ℝ
a b : ℝ
hf : ContinuousOn f (Icc a b)
B B' : ℝ → ℝ
ha : f a ≤ B a
hB : ContinuousOn B (Icc a b)
hB' : ∀ (x : ℝ), x ∈ Ico a b → HasDerivWithinAt B (B' x) (Ici x) x
bound : ∀ (x : ℝ), x ∈ Ico a b → ∀ (r : ℝ), B' x < r → ∃ᶠ (z : ℝ) in 𝓝[Ioi x] x, slope f x z < r
x✝ : ℝ
hx : x✝ ∈ Icc a b
r : ℝ
hr : r > 0
x : ℝ
a✝¹ : x ∈ Ico a b
a✝ : f x = B x + r * (x - a)
⊢ B' x < B' x + r