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

tactic: have f_bound : ∀ t ∈ Ico a b, dist (v t (f t)) (v t (f t)) ≤ 0 := by intros; rw [dist_self]
state_before: E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.46221
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
v : ℝ → E → E
s : ℝ → Set E
K : ℝ
hv : ∀ (t : ℝ) (x : E), x ∈ s t → ∀ (y : E), y ∈ s t → dist (v t x) (v t y) ≤ K * dist x y
f g : ℝ → E
a b δ : ℝ
hf : ContinuousOn f (Icc a b)
hf' : ∀ (t : ℝ), t ∈ Ico a b → HasDerivWithinAt f (v t (f t)) (Ici t) t
hfs : ∀ (t : ℝ), t ∈ Ico a b → f t ∈ s t
hg : ContinuousOn g (Icc a b)
hg' : ∀ (t : ℝ), t ∈ Ico a b → HasDerivWithinAt g (v t (g t)) (Ici t) t
hgs : ∀ (t : ℝ), t ∈ Ico a b → g t ∈ s t
ha : dist (f a) (g a) ≤ δ
⊢ ∀ (t : ℝ), t ∈ Icc a b → dist (f t) (g t) ≤ δ * exp (K * (t - a))

tactic: have g_bound : ∀ t ∈ Ico a b, dist (v t (g t)) (v t (g t)) ≤ 0 := by intros; rw [dist_self]
state_before: E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.46221
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
v : ℝ → E → E
s : ℝ → Set E
K : ℝ
hv : ∀ (t : ℝ) (x : E), x ∈ s t → ∀ (y : E), y ∈ s t → dist (v t x) (v t y) ≤ K * dist x y
f g : ℝ → E
a b δ : ℝ
hf : ContinuousOn f (Icc a b)
hf' : ∀ (t : ℝ), t ∈ Ico a b → HasDerivWithinAt f (v t (f t)) (Ici t) t
hfs : ∀ (t : ℝ), t ∈ Ico a b → f t ∈ s t
hg : ContinuousOn g (Icc a b)
hg' : ∀ (t : ℝ), t ∈ Ico a b → HasDerivWithinAt g (v t (g t)) (Ici t) t
hgs : ∀ (t : ℝ), t ∈ Ico a b → g t ∈ s t
ha : dist (f a) (g a) ≤ δ
f_bound : ∀ (t : ℝ), t ∈ Ico a b → dist (v t (f t)) (v t (f t)) ≤ 0
⊢ ∀ (t : ℝ), t ∈ Icc a b → dist (f t) (g t) ≤ δ * exp (K * (t - a))

tactic: intro t ht
state_before: E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.46221
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
v : ℝ → E → E
s : ℝ → Set E
K : ℝ
hv : ∀ (t : ℝ) (x : E), x ∈ s t → ∀ (y : E), y ∈ s t → dist (v t x) (v t y) ≤ K * dist x y
f g : ℝ → E
a b δ : ℝ
hf : ContinuousOn f (Icc a b)
hf' : ∀ (t : ℝ), t ∈ Ico a b → HasDerivWithinAt f (v t (f t)) (Ici t) t
hfs : ∀ (t : ℝ), t ∈ Ico a b → f t ∈ s t
hg : ContinuousOn g (Icc a b)
hg' : ∀ (t : ℝ), t ∈ Ico a b → HasDerivWithinAt g (v t (g t)) (Ici t) t
hgs : ∀ (t : ℝ), t ∈ Ico a b → g t ∈ s t
ha : dist (f a) (g a) ≤ δ
f_bound : ∀ (t : ℝ), t ∈ Ico a b → dist (v t (f t)) (v t (f t)) ≤ 0
g_bound : ∀ (t : ℝ), t ∈ Ico a b → dist (v t (g t)) (v t (g t)) ≤ 0
⊢ ∀ (t : ℝ), t ∈ Icc a b → dist (f t) (g t) ≤ δ * exp (K * (t - a))

tactic: have :=
  dist_le_of_approx_trajectories_ODE_of_mem_set hv hf hf' f_bound hfs hg hg' g_bound hgs ha t ht
state_before: E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.46221
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
v : ℝ → E → E
s : ℝ → Set E
K : ℝ
hv : ∀ (t : ℝ) (x : E), x ∈ s t → ∀ (y : E), y ∈ s t → dist (v t x) (v t y) ≤ K * dist x y
f g : ℝ → E
a b δ : ℝ
hf : ContinuousOn f (Icc a b)
hf' : ∀ (t : ℝ), t ∈ Ico a b → HasDerivWithinAt f (v t (f t)) (Ici t) t
hfs : ∀ (t : ℝ), t ∈ Ico a b → f t ∈ s t
hg : ContinuousOn g (Icc a b)
hg' : ∀ (t : ℝ), t ∈ Ico a b → HasDerivWithinAt g (v t (g t)) (Ici t) t
hgs : ∀ (t : ℝ), t ∈ Ico a b → g t ∈ s t
ha : dist (f a) (g a) ≤ δ
f_bound : ∀ (t : ℝ), t ∈ Ico a b → dist (v t (f t)) (v t (f t)) ≤ 0
g_bound : ∀ (t : ℝ), t ∈ Ico a b → dist (v t (g t)) (v t (g t)) ≤ 0
t : ℝ
ht : t ∈ Icc a b
⊢ dist (f t) (g t) ≤ δ * exp (K * (t - a))

tactic: rwa [zero_add, gronwallBound_ε0] at this
state_before: E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.46221
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
v : ℝ → E → E
s : ℝ → Set E
K : ℝ
hv : ∀ (t : ℝ) (x : E), x ∈ s t → ∀ (y : E), y ∈ s t → dist (v t x) (v t y) ≤ K * dist x y
f g : ℝ → E
a b δ : ℝ
hf : ContinuousOn f (Icc a b)
hf' : ∀ (t : ℝ), t ∈ Ico a b → HasDerivWithinAt f (v t (f t)) (Ici t) t
hfs : ∀ (t : ℝ), t ∈ Ico a b → f t ∈ s t
hg : ContinuousOn g (Icc a b)
hg' : ∀ (t : ℝ), t ∈ Ico a b → HasDerivWithinAt g (v t (g t)) (Ici t) t
hgs : ∀ (t : ℝ), t ∈ Ico a b → g t ∈ s t
ha : dist (f a) (g a) ≤ δ
f_bound : ∀ (t : ℝ), t ∈ Ico a b → dist (v t (f t)) (v t (f t)) ≤ 0
g_bound : ∀ (t : ℝ), t ∈ Ico a b → dist (v t (g t)) (v t (g t)) ≤ 0
t : ℝ
ht : t ∈ Icc a b
this : dist (f t) (g t) ≤ gronwallBound δ K (0 + 0) (t - a)
⊢ dist (f t) (g t) ≤ δ * exp (K * (t - a))

tactic: intros
state_before: E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.46221
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
v : ℝ → E → E
s : ℝ → Set E
K : ℝ
hv : ∀ (t : ℝ) (x : E), x ∈ s t → ∀ (y : E), y ∈ s t → dist (v t x) (v t y) ≤ K * dist x y
f g : ℝ → E
a b δ : ℝ
hf : ContinuousOn f (Icc a b)
hf' : ∀ (t : ℝ), t ∈ Ico a b → HasDerivWithinAt f (v t (f t)) (Ici t) t
hfs : ∀ (t : ℝ), t ∈ Ico a b → f t ∈ s t
hg : ContinuousOn g (Icc a b)
hg' : ∀ (t : ℝ), t ∈ Ico a b → HasDerivWithinAt g (v t (g t)) (Ici t) t
hgs : ∀ (t : ℝ), t ∈ Ico a b → g t ∈ s t
ha : dist (f a) (g a) ≤ δ
⊢ ∀ (t : ℝ), t ∈ Ico a b → dist (v t (f t)) (v t (f t)) ≤ 0

tactic: rw [dist_self]
state_before: E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.46221
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
v : ℝ → E → E
s : ℝ → Set E
K : ℝ
hv : ∀ (t : ℝ) (x : E), x ∈ s t → ∀ (y : E), y ∈ s t → dist (v t x) (v t y) ≤ K * dist x y
f g : ℝ → E
a b δ : ℝ
hf : ContinuousOn f (Icc a b)
hf' : ∀ (t : ℝ), t ∈ Ico a b → HasDerivWithinAt f (v t (f t)) (Ici t) t
hfs : ∀ (t : ℝ), t ∈ Ico a b → f t ∈ s t
hg : ContinuousOn g (Icc a b)
hg' : ∀ (t : ℝ), t ∈ Ico a b → HasDerivWithinAt g (v t (g t)) (Ici t) t
hgs : ∀ (t : ℝ), t ∈ Ico a b → g t ∈ s t
ha : dist (f a) (g a) ≤ δ
t✝ : ℝ
a✝ : t✝ ∈ Ico a b
⊢ dist (v t✝ (f t✝)) (v t✝ (f t✝)) ≤ 0

tactic: intros
state_before: E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.46221
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
v : ℝ → E → E
s : ℝ → Set E
K : ℝ
hv : ∀ (t : ℝ) (x : E), x ∈ s t → ∀ (y : E), y ∈ s t → dist (v t x) (v t y) ≤ K * dist x y
f g : ℝ → E
a b δ : ℝ
hf : ContinuousOn f (Icc a b)
hf' : ∀ (t : ℝ), t ∈ Ico a b → HasDerivWithinAt f (v t (f t)) (Ici t) t
hfs : ∀ (t : ℝ), t ∈ Ico a b → f t ∈ s t
hg : ContinuousOn g (Icc a b)
hg' : ∀ (t : ℝ), t ∈ Ico a b → HasDerivWithinAt g (v t (g t)) (Ici t) t
hgs : ∀ (t : ℝ), t ∈ Ico a b → g t ∈ s t
ha : dist (f a) (g a) ≤ δ
f_bound : ∀ (t : ℝ), t ∈ Ico a b → dist (v t (f t)) (v t (f t)) ≤ 0
⊢ ∀ (t : ℝ), t ∈ Ico a b → dist (v t (g t)) (v t (g t)) ≤ 0

tactic: rw [dist_self]
state_before: E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.46221
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
v : ℝ → E → E
s : ℝ → Set E
K : ℝ
hv : ∀ (t : ℝ) (x : E), x ∈ s t → ∀ (y : E), y ∈ s t → dist (v t x) (v t y) ≤ K * dist x y
f g : ℝ → E
a b δ : ℝ
hf : ContinuousOn f (Icc a b)
hf' : ∀ (t : ℝ), t ∈ Ico a b → HasDerivWithinAt f (v t (f t)) (Ici t) t
hfs : ∀ (t : ℝ), t ∈ Ico a b → f t ∈ s t
hg : ContinuousOn g (Icc a b)
hg' : ∀ (t : ℝ), t ∈ Ico a b → HasDerivWithinAt g (v t (g t)) (Ici t) t
hgs : ∀ (t : ℝ), t ∈ Ico a b → g t ∈ s t
ha : dist (f a) (g a) ≤ δ
f_bound : ∀ (t : ℝ), t ∈ Ico a b → dist (v t (f t)) (v t (f t)) ≤ 0
t✝ : ℝ
a✝ : t✝ ∈ Ico a b
⊢ dist (v t✝ (g t✝)) (v t✝ (g t✝)) ≤ 0