Theorem: MeasureTheory.integral_comp_smul_deriv_Ioi
File: Mathlib/MeasureTheory/Integral/IntegralEqImproper.lean

tactic: rw [integrableOn_Ici_iff_integrableOn_Ioi] at hg2
state_before: E : Type u_1
f✝ : ℝ → E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → ℝ
g : ℝ → E
a : ℝ
hf : ContinuousOn f (Ici a)
hft : Tendsto f atTop atTop
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivWithinAt f (f' x) (Ioi x) x
hg_cont : ContinuousOn g (f '' Ioi a)
hg1 : IntegrableOn g (f '' Ici a)
hg2 : IntegrableOn (fun x => f' x • (g ∘ f) x) (Ici a)
eq : ∀ (b : ℝ), a < b → (∫ (x : ℝ) in a..b, f' x • (g ∘ f) x) = ∫ (u : ℝ) in f a..f b, g u
⊢ (∫ (x : ℝ) in Ioi a, f' x • (g ∘ f) x) = ∫ (u : ℝ) in Ioi (f a), g u

tactic: have t2 := intervalIntegral_tendsto_integral_Ioi _ hg2 tendsto_id
state_before: E : Type u_1
f✝ : ℝ → E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → ℝ
g : ℝ → E
a : ℝ
hf : ContinuousOn f (Ici a)
hft : Tendsto f atTop atTop
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivWithinAt f (f' x) (Ioi x) x
hg_cont : ContinuousOn g (f '' Ioi a)
hg1 : IntegrableOn g (f '' Ici a)
hg2 : IntegrableOn (fun x => f' x • (g ∘ f) x) (Ioi a)
eq : ∀ (b : ℝ), a < b → (∫ (x : ℝ) in a..b, f' x • (g ∘ f) x) = ∫ (u : ℝ) in f a..f b, g u
⊢ (∫ (x : ℝ) in Ioi a, f' x • (g ∘ f) x) = ∫ (u : ℝ) in Ioi (f a), g u

tactic: have : Ioi (f a) ⊆ f '' Ici a :=
  Ioi_subset_Ici_self.trans <|
    IsPreconnected.intermediate_value_Ici isPreconnected_Ici left_mem_Ici
      (le_principal_iff.mpr <| Ici_mem_atTop _) hf hft
state_before: E : Type u_1
f✝ : ℝ → E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → ℝ
g : ℝ → E
a : ℝ
hf : ContinuousOn f (Ici a)
hft : Tendsto f atTop atTop
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivWithinAt f (f' x) (Ioi x) x
hg_cont : ContinuousOn g (f '' Ioi a)
hg1 : IntegrableOn g (f '' Ici a)
hg2 : IntegrableOn (fun x => f' x • (g ∘ f) x) (Ioi a)
eq : ∀ (b : ℝ), a < b → (∫ (x : ℝ) in a..b, f' x • (g ∘ f) x) = ∫ (u : ℝ) in f a..f b, g u
t2 : Tendsto (fun i => ∫ (x : ℝ) in a..id i, f' x • (g ∘ f) x) atTop (𝓝 (∫ (x : ℝ) in Ioi a, f' x • (g ∘ f) x))
⊢ (∫ (x : ℝ) in Ioi a, f' x • (g ∘ f) x) = ∫ (u : ℝ) in Ioi (f a), g u

tactic: have t1 := (intervalIntegral_tendsto_integral_Ioi _ (hg1.mono_set this) tendsto_id).comp hft
state_before: E : Type u_1
f✝ : ℝ → E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → ℝ
g : ℝ → E
a : ℝ
hf : ContinuousOn f (Ici a)
hft : Tendsto f atTop atTop
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivWithinAt f (f' x) (Ioi x) x
hg_cont : ContinuousOn g (f '' Ioi a)
hg1 : IntegrableOn g (f '' Ici a)
hg2 : IntegrableOn (fun x => f' x • (g ∘ f) x) (Ioi a)
eq : ∀ (b : ℝ), a < b → (∫ (x : ℝ) in a..b, f' x • (g ∘ f) x) = ∫ (u : ℝ) in f a..f b, g u
t2 : Tendsto (fun i => ∫ (x : ℝ) in a..id i, f' x • (g ∘ f) x) atTop (𝓝 (∫ (x : ℝ) in Ioi a, f' x • (g ∘ f) x))
this : Ioi (f a) ⊆ f '' Ici a
⊢ (∫ (x : ℝ) in Ioi a, f' x • (g ∘ f) x) = ∫ (u : ℝ) in Ioi (f a), g u

tactic: exact tendsto_nhds_unique (Tendsto.congr' (eventuallyEq_of_mem (Ioi_mem_atTop a) eq) t2) t1
state_before: E : Type u_1
f✝ : ℝ → E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → ℝ
g : ℝ → E
a : ℝ
hf : ContinuousOn f (Ici a)
hft : Tendsto f atTop atTop
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivWithinAt f (f' x) (Ioi x) x
hg_cont : ContinuousOn g (f '' Ioi a)
hg1 : IntegrableOn g (f '' Ici a)
hg2 : IntegrableOn (fun x => f' x • (g ∘ f) x) (Ioi a)
eq : ∀ (b : ℝ), a < b → (∫ (x : ℝ) in a..b, f' x • (g ∘ f) x) = ∫ (u : ℝ) in f a..f b, g u
t2 : Tendsto (fun i => ∫ (x : ℝ) in a..id i, f' x • (g ∘ f) x) atTop (𝓝 (∫ (x : ℝ) in Ioi a, f' x • (g ∘ f) x))
this : Ioi (f a) ⊆ f '' Ici a
t1 : Tendsto ((fun i => ∫ (x : ℝ) in f a..id i, g x) ∘ f) atTop (𝓝 (∫ (x : ℝ) in Ioi (f a), g x))
⊢ (∫ (x : ℝ) in Ioi a, f' x • (g ∘ f) x) = ∫ (u : ℝ) in Ioi (f a), g u

tactic: have i1 : Ioo (min a b) (max a b) ⊆ Ioi a := by
  rw [min_eq_left hb.le]
  exact Ioo_subset_Ioi_self
state_before: E : Type u_1
f✝ : ℝ → E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → ℝ
g : ℝ → E
a : ℝ
hf : ContinuousOn f (Ici a)
hft : Tendsto f atTop atTop
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivWithinAt f (f' x) (Ioi x) x
hg_cont : ContinuousOn g (f '' Ioi a)
hg1 : IntegrableOn g (f '' Ici a)
hg2 : IntegrableOn (fun x => f' x • (g ∘ f) x) (Ici a)
b : ℝ
hb : a < b
⊢ (∫ (x : ℝ) in a..b, f' x • (g ∘ f) x) = ∫ (u : ℝ) in f a..f b, g u

tactic: have i2 : [[a, b]] ⊆ Ici a := by rw [uIcc_of_le hb.le]; exact Icc_subset_Ici_self
state_before: E : Type u_1
f✝ : ℝ → E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → ℝ
g : ℝ → E
a : ℝ
hf : ContinuousOn f (Ici a)
hft : Tendsto f atTop atTop
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivWithinAt f (f' x) (Ioi x) x
hg_cont : ContinuousOn g (f '' Ioi a)
hg1 : IntegrableOn g (f '' Ici a)
hg2 : IntegrableOn (fun x => f' x • (g ∘ f) x) (Ici a)
b : ℝ
hb : a < b
i1 : Ioo (min a b) (max a b) ⊆ Ioi a
⊢ (∫ (x : ℝ) in a..b, f' x • (g ∘ f) x) = ∫ (u : ℝ) in f a..f b, g u

tactic: refine'
  intervalIntegral.integral_comp_smul_deriv''' (hf.mono i2)
    (fun x hx => hff' x <| mem_of_mem_of_subset hx i1) (hg_cont.mono <| image_subset _ _)
    (hg1.mono_set <| image_subset _ _) (hg2.mono_set i2)
state_before: E : Type u_1
f✝ : ℝ → E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → ℝ
g : ℝ → E
a : ℝ
hf : ContinuousOn f (Ici a)
hft : Tendsto f atTop atTop
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivWithinAt f (f' x) (Ioi x) x
hg_cont : ContinuousOn g (f '' Ioi a)
hg1 : IntegrableOn g (f '' Ici a)
hg2 : IntegrableOn (fun x => f' x • (g ∘ f) x) (Ici a)
b : ℝ
hb : a < b
i1 : Ioo (min a b) (max a b) ⊆ Ioi a
i2 : [[a, b]] ⊆ Ici a
⊢ (∫ (x : ℝ) in a..b, f' x • (g ∘ f) x) = ∫ (u : ℝ) in f a..f b, g u

tactic: rw [min_eq_left hb.le]
state_before: E : Type u_1
f✝ : ℝ → E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → ℝ
g : ℝ → E
a : ℝ
hf : ContinuousOn f (Ici a)
hft : Tendsto f atTop atTop
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivWithinAt f (f' x) (Ioi x) x
hg_cont : ContinuousOn g (f '' Ioi a)
hg1 : IntegrableOn g (f '' Ici a)
hg2 : IntegrableOn (fun x => f' x • (g ∘ f) x) (Ici a)
b : ℝ
hb : a < b
⊢ Ioo (min a b) (max a b) ⊆ Ioi a

tactic: exact Ioo_subset_Ioi_self
state_before: E : Type u_1
f✝ : ℝ → E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → ℝ
g : ℝ → E
a : ℝ
hf : ContinuousOn f (Ici a)
hft : Tendsto f atTop atTop
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivWithinAt f (f' x) (Ioi x) x
hg_cont : ContinuousOn g (f '' Ioi a)
hg1 : IntegrableOn g (f '' Ici a)
hg2 : IntegrableOn (fun x => f' x • (g ∘ f) x) (Ici a)
b : ℝ
hb : a < b
⊢ Ioo a (max a b) ⊆ Ioi a

tactic: rw [uIcc_of_le hb.le]
state_before: E : Type u_1
f✝ : ℝ → E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → ℝ
g : ℝ → E
a : ℝ
hf : ContinuousOn f (Ici a)
hft : Tendsto f atTop atTop
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivWithinAt f (f' x) (Ioi x) x
hg_cont : ContinuousOn g (f '' Ioi a)
hg1 : IntegrableOn g (f '' Ici a)
hg2 : IntegrableOn (fun x => f' x • (g ∘ f) x) (Ici a)
b : ℝ
hb : a < b
i1 : Ioo (min a b) (max a b) ⊆ Ioi a
⊢ [[a, b]] ⊆ Ici a

tactic: exact Icc_subset_Ici_self
state_before: E : Type u_1
f✝ : ℝ → E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → ℝ
g : ℝ → E
a : ℝ
hf : ContinuousOn f (Ici a)
hft : Tendsto f atTop atTop
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivWithinAt f (f' x) (Ioi x) x
hg_cont : ContinuousOn g (f '' Ioi a)
hg1 : IntegrableOn g (f '' Ici a)
hg2 : IntegrableOn (fun x => f' x • (g ∘ f) x) (Ici a)
b : ℝ
hb : a < b
i1 : Ioo (min a b) (max a b) ⊆ Ioi a
⊢ Icc a b ⊆ Ici a

tactic: rw [min_eq_left hb.le]
state_before: case refine'_1
E : Type u_1
f✝ : ℝ → E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → ℝ
g : ℝ → E
a : ℝ
hf : ContinuousOn f (Ici a)
hft : Tendsto f atTop atTop
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivWithinAt f (f' x) (Ioi x) x
hg_cont : ContinuousOn g (f '' Ioi a)
hg1 : IntegrableOn g (f '' Ici a)
hg2 : IntegrableOn (fun x => f' x • (g ∘ f) x) (Ici a)
b : ℝ
hb : a < b
i1 : Ioo (min a b) (max a b) ⊆ Ioi a
i2 : [[a, b]] ⊆ Ici a
⊢ Ioo (min a b) (max a b) ⊆ Ioi a

tactic: exact Ioo_subset_Ioi_self
state_before: case refine'_1
E : Type u_1
f✝ : ℝ → E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → ℝ
g : ℝ → E
a : ℝ
hf : ContinuousOn f (Ici a)
hft : Tendsto f atTop atTop
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivWithinAt f (f' x) (Ioi x) x
hg_cont : ContinuousOn g (f '' Ioi a)
hg1 : IntegrableOn g (f '' Ici a)
hg2 : IntegrableOn (fun x => f' x • (g ∘ f) x) (Ici a)
b : ℝ
hb : a < b
i1 : Ioo (min a b) (max a b) ⊆ Ioi a
i2 : [[a, b]] ⊆ Ici a
⊢ Ioo a (max a b) ⊆ Ioi a

tactic: rw [uIcc_of_le hb.le]
state_before: case refine'_2
E : Type u_1
f✝ : ℝ → E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → ℝ
g : ℝ → E
a : ℝ
hf : ContinuousOn f (Ici a)
hft : Tendsto f atTop atTop
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivWithinAt f (f' x) (Ioi x) x
hg_cont : ContinuousOn g (f '' Ioi a)
hg1 : IntegrableOn g (f '' Ici a)
hg2 : IntegrableOn (fun x => f' x • (g ∘ f) x) (Ici a)
b : ℝ
hb : a < b
i1 : Ioo (min a b) (max a b) ⊆ Ioi a
i2 : [[a, b]] ⊆ Ici a
⊢ [[a, b]] ⊆ Ici a

tactic: exact Icc_subset_Ici_self
state_before: case refine'_2
E : Type u_1
f✝ : ℝ → E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → ℝ
g : ℝ → E
a : ℝ
hf : ContinuousOn f (Ici a)
hft : Tendsto f atTop atTop
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivWithinAt f (f' x) (Ioi x) x
hg_cont : ContinuousOn g (f '' Ioi a)
hg1 : IntegrableOn g (f '' Ici a)
hg2 : IntegrableOn (fun x => f' x • (g ∘ f) x) (Ici a)
b : ℝ
hb : a < b
i1 : Ioo (min a b) (max a b) ⊆ Ioi a
i2 : [[a, b]] ⊆ Ici a
⊢ Icc a b ⊆ Ici a