Theorem: le_gronwallBound_of_liminf_deriv_right_le
File: Mathlib/Analysis/ODE/Gronwall.lean

tactic: intro x hx
state_before: E : Type ?u.34313
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.34409
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f f' : ℝ → ℝ
δ K ε a b : ℝ
hf : ContinuousOn f (Icc a b)
hf' : ∀ (x : ℝ), x ∈ Ico a b → ∀ (r : ℝ), f' x < r → ∃ᶠ (z : ℝ) in 𝓝[Ioi x] x, (z - x)⁻¹ * (f z - f x) < r
ha : f a ≤ δ
bound : ∀ (x : ℝ), x ∈ Ico a b → f' x ≤ K * f x + ε
H : ∀ (x : ℝ), x ∈ Icc a b → ∀ (ε' : ℝ), ε' ∈ Ioi ε → f x ≤ gronwallBound δ K ε' (x - a)
⊢ ∀ (x : ℝ), x ∈ Icc a b → f x ≤ gronwallBound δ K ε (x - a)

tactic: change f x ≤ (fun ε' => gronwallBound δ K ε' (x - a)) ε
state_before: E : Type ?u.34313
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.34409
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f f' : ℝ → ℝ
δ K ε a b : ℝ
hf : ContinuousOn f (Icc a b)
hf' : ∀ (x : ℝ), x ∈ Ico a b → ∀ (r : ℝ), f' x < r → ∃ᶠ (z : ℝ) in 𝓝[Ioi x] x, (z - x)⁻¹ * (f z - f x) < r
ha : f a ≤ δ
bound : ∀ (x : ℝ), x ∈ Ico a b → f' x ≤ K * f x + ε
H : ∀ (x : ℝ), x ∈ Icc a b → ∀ (ε' : ℝ), ε' ∈ Ioi ε → f x ≤ gronwallBound δ K ε' (x - a)
x : ℝ
hx : x ∈ Icc a b
⊢ f x ≤ gronwallBound δ K ε (x - a)

tactic: convert continuousWithinAt_const.closure_le _ _ (H x hx)
state_before: E : Type ?u.34313
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.34409
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f f' : ℝ → ℝ
δ K ε a b : ℝ
hf : ContinuousOn f (Icc a b)
hf' : ∀ (x : ℝ), x ∈ Ico a b → ∀ (r : ℝ), f' x < r → ∃ᶠ (z : ℝ) in 𝓝[Ioi x] x, (z - x)⁻¹ * (f z - f x) < r
ha : f a ≤ δ
bound : ∀ (x : ℝ), x ∈ Ico a b → f' x ≤ K * f x + ε
H : ∀ (x : ℝ), x ∈ Icc a b → ∀ (ε' : ℝ), ε' ∈ Ioi ε → f x ≤ gronwallBound δ K ε' (x - a)
x : ℝ
hx : x ∈ Icc a b
⊢ f x ≤ (fun ε' => gronwallBound δ K ε' (x - a)) ε

tactic: exact (gronwallBound_continuous_ε δ K (x - a)).continuousWithinAt
state_before: case convert_3
E : Type ?u.34313
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.34409
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f f' : ℝ → ℝ
δ K ε a b : ℝ
hf : ContinuousOn f (Icc a b)
hf' : ∀ (x : ℝ), x ∈ Ico a b → ∀ (r : ℝ), f' x < r → ∃ᶠ (z : ℝ) in 𝓝[Ioi x] x, (z - x)⁻¹ * (f z - f x) < r
ha : f a ≤ δ
bound : ∀ (x : ℝ), x ∈ Ico a b → f' x ≤ K * f x + ε
H : ∀ (x : ℝ), x ∈ Icc a b → ∀ (ε' : ℝ), ε' ∈ Ioi ε → f x ≤ gronwallBound δ K ε' (x - a)
x : ℝ
hx : x ∈ Icc a b
⊢ ContinuousWithinAt (fun y => gronwallBound δ K y (x - a)) (Ioi ε) ε

tactic: intro x hx ε' hε'
state_before: E : Type ?u.34313
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.34409
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f f' : ℝ → ℝ
δ K ε a b : ℝ
hf : ContinuousOn f (Icc a b)
hf' : ∀ (x : ℝ), x ∈ Ico a b → ∀ (r : ℝ), f' x < r → ∃ᶠ (z : ℝ) in 𝓝[Ioi x] x, (z - x)⁻¹ * (f z - f x) < r
ha : f a ≤ δ
bound : ∀ (x : ℝ), x ∈ Ico a b → f' x ≤ K * f x + ε
⊢ ∀ (x : ℝ), x ∈ Icc a b → ∀ (ε' : ℝ), ε' ∈ Ioi ε → f x ≤ gronwallBound δ K ε' (x - a)

tactic: apply image_le_of_liminf_slope_right_lt_deriv_boundary hf hf'
state_before: E : Type ?u.34313
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.34409
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f f' : ℝ → ℝ
δ K ε a b : ℝ
hf : ContinuousOn f (Icc a b)
hf' : ∀ (x : ℝ), x ∈ Ico a b → ∀ (r : ℝ), f' x < r → ∃ᶠ (z : ℝ) in 𝓝[Ioi x] x, (z - x)⁻¹ * (f z - f x) < r
ha : f a ≤ δ
bound : ∀ (x : ℝ), x ∈ Ico a b → f' x ≤ K * f x + ε
x : ℝ
hx : x ∈ Icc a b
ε' : ℝ
hε' : ε' ∈ Ioi ε
⊢ f x ≤ gronwallBound δ K ε' (x - a)

tactic: rwa [sub_self, gronwallBound_x0]
state_before: case ha
E : Type ?u.34313
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.34409
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f f' : ℝ → ℝ
δ K ε a b : ℝ
hf : ContinuousOn f (Icc a b)
hf' : ∀ (x : ℝ), x ∈ Ico a b → ∀ (r : ℝ), f' x < r → ∃ᶠ (z : ℝ) in 𝓝[Ioi x] x, (z - x)⁻¹ * (f z - f x) < r
ha : f a ≤ δ
bound : ∀ (x : ℝ), x ∈ Ico a b → f' x ≤ K * f x + ε
x : ℝ
hx : x ∈ Icc a b
ε' : ℝ
hε' : ε' ∈ Ioi ε
⊢ f a ≤ gronwallBound δ K ε' (a - a)

tactic: exact fun x => hasDerivAt_gronwallBound_shift δ K ε' x a
state_before: case hB
E : Type ?u.34313
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.34409
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f f' : ℝ → ℝ
δ K ε a b : ℝ
hf : ContinuousOn f (Icc a b)
hf' : ∀ (x : ℝ), x ∈ Ico a b → ∀ (r : ℝ), f' x < r → ∃ᶠ (z : ℝ) in 𝓝[Ioi x] x, (z - x)⁻¹ * (f z - f x) < r
ha : f a ≤ δ
bound : ∀ (x : ℝ), x ∈ Ico a b → f' x ≤ K * f x + ε
x : ℝ
hx : x ∈ Icc a b
ε' : ℝ
hε' : ε' ∈ Ioi ε
⊢ ∀ (x : ℝ), HasDerivAt (fun x => gronwallBound δ K ε' (x - a)) (?m.35638 x) x

tactic: intro x hx hfB
state_before: case bound
E : Type ?u.34313
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.34409
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f f' : ℝ → ℝ
δ K ε a b : ℝ
hf : ContinuousOn f (Icc a b)
hf' : ∀ (x : ℝ), x ∈ Ico a b → ∀ (r : ℝ), f' x < r → ∃ᶠ (z : ℝ) in 𝓝[Ioi x] x, (z - x)⁻¹ * (f z - f x) < r
ha : f a ≤ δ
bound : ∀ (x : ℝ), x ∈ Ico a b → f' x ≤ K * f x + ε
x : ℝ
hx : x ∈ Icc a b
ε' : ℝ
hε' : ε' ∈ Ioi ε
⊢ ∀ (x : ℝ), x ∈ Ico a b → f x = gronwallBound δ K ε' (x - a) → f' x < K * gronwallBound δ K ε' (x - a) + ε'

tactic: rw [← hfB]
state_before: case bound
E : Type ?u.34313
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.34409
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f f' : ℝ → ℝ
δ K ε a b : ℝ
hf : ContinuousOn f (Icc a b)
hf' : ∀ (x : ℝ), x ∈ Ico a b → ∀ (r : ℝ), f' x < r → ∃ᶠ (z : ℝ) in 𝓝[Ioi x] x, (z - x)⁻¹ * (f z - f x) < r
ha : f a ≤ δ
bound : ∀ (x : ℝ), x ∈ Ico a b → f' x ≤ K * f x + ε
x✝ : ℝ
hx✝ : x✝ ∈ Icc a b
ε' : ℝ
hε' : ε' ∈ Ioi ε
x : ℝ
hx : x ∈ Ico a b
hfB : f x = gronwallBound δ K ε' (x - a)
⊢ f' x < K * gronwallBound δ K ε' (x - a) + ε'

tactic: apply lt_of_le_of_lt (bound x hx)
state_before: case bound
E : Type ?u.34313
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.34409
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f f' : ℝ → ℝ
δ K ε a b : ℝ
hf : ContinuousOn f (Icc a b)
hf' : ∀ (x : ℝ), x ∈ Ico a b → ∀ (r : ℝ), f' x < r → ∃ᶠ (z : ℝ) in 𝓝[Ioi x] x, (z - x)⁻¹ * (f z - f x) < r
ha : f a ≤ δ
bound : ∀ (x : ℝ), x ∈ Ico a b → f' x ≤ K * f x + ε
x✝ : ℝ
hx✝ : x✝ ∈ Icc a b
ε' : ℝ
hε' : ε' ∈ Ioi ε
x : ℝ
hx : x ∈ Ico a b
hfB : f x = gronwallBound δ K ε' (x - a)
⊢ f' x < K * f x + ε'

tactic: exact add_lt_add_left (mem_Ioi.1 hε') _
state_before: case bound
E : Type ?u.34313
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.34409
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f f' : ℝ → ℝ
δ K ε a b : ℝ
hf : ContinuousOn f (Icc a b)
hf' : ∀ (x : ℝ), x ∈ Ico a b → ∀ (r : ℝ), f' x < r → ∃ᶠ (z : ℝ) in 𝓝[Ioi x] x, (z - x)⁻¹ * (f z - f x) < r
ha : f a ≤ δ
bound : ∀ (x : ℝ), x ∈ Ico a b → f' x ≤ K * f x + ε
x✝ : ℝ
hx✝ : x✝ ∈ Icc a b
ε' : ℝ
hε' : ε' ∈ Ioi ε
x : ℝ
hx : x ∈ Ico a b
hfB : f x = gronwallBound δ K ε' (x - a)
⊢ K * f x + ε < K * f x + ε'

tactic: exact hx
state_before: case a
E : Type ?u.34313
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.34409
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f f' : ℝ → ℝ
δ K ε a b : ℝ
hf : ContinuousOn f (Icc a b)
hf' : ∀ (x : ℝ), x ∈ Ico a b → ∀ (r : ℝ), f' x < r → ∃ᶠ (z : ℝ) in 𝓝[Ioi x] x, (z - x)⁻¹ * (f z - f x) < r
ha : f a ≤ δ
bound : ∀ (x : ℝ), x ∈ Ico a b → f' x ≤ K * f x + ε
x : ℝ
hx : x ∈ Icc a b
ε' : ℝ
hε' : ε' ∈ Ioi ε
⊢ x ∈ Icc a b

tactic: simp only [closure_Ioi, left_mem_Ici]
state_before: case convert_2
E : Type ?u.34313
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.34409
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f f' : ℝ → ℝ
δ K ε a b : ℝ
hf : ContinuousOn f (Icc a b)
hf' : ∀ (x : ℝ), x ∈ Ico a b → ∀ (r : ℝ), f' x < r → ∃ᶠ (z : ℝ) in 𝓝[Ioi x] x, (z - x)⁻¹ * (f z - f x) < r
ha : f a ≤ δ
bound : ∀ (x : ℝ), x ∈ Ico a b → f' x ≤ K * f x + ε
H : ∀ (x : ℝ), x ∈ Icc a b → ∀ (ε' : ℝ), ε' ∈ Ioi ε → f x ≤ gronwallBound δ K ε' (x - a)
x : ℝ
hx : x ∈ Icc a b
⊢ ε ∈ closure (Ioi ε)