Theorem: intervalIntegral.integral_mul_deriv_eq_deriv_mul
File: Mathlib/MeasureTheory/Integral/FundThmCalculus.lean

tactic: rw [← integral_deriv_mul_eq_sub hu hv hu' hv', ← integral_sub]
state_before: ι : Type ?u.1886564
𝕜 : Type ?u.1886567
E : Type ?u.1886570
F : Type ?u.1886573
A : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : CompleteSpace E
inst✝³ : NormedSpace ℝ E
f✝ : ℝ → E
g' g φ : ℝ → ℝ
f f' : ℝ → E
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra ℝ A
inst✝ : CompleteSpace A
a b : ℝ
u v u' v' : ℝ → A
hu : ∀ (x : ℝ), x ∈ [[a, b]] → HasDerivAt u (u' x) x
hv : ∀ (x : ℝ), x ∈ [[a, b]] → HasDerivAt v (v' x) x
hu' : IntervalIntegrable u' volume a b
hv' : IntervalIntegrable v' volume a b
⊢ (∫ (x : ℝ) in a..b, u x * v' x) = u b * v b - u a * v a - ∫ (x : ℝ) in a..b, u' x * v x

tactic: exact integral_congr fun x _ => by simp only [add_sub_cancel']
state_before: ι : Type ?u.1886564
𝕜 : Type ?u.1886567
E : Type ?u.1886570
F : Type ?u.1886573
A : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : CompleteSpace E
inst✝³ : NormedSpace ℝ E
f✝ : ℝ → E
g' g φ : ℝ → ℝ
f f' : ℝ → E
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra ℝ A
inst✝ : CompleteSpace A
a b : ℝ
u v u' v' : ℝ → A
hu : ∀ (x : ℝ), x ∈ [[a, b]] → HasDerivAt u (u' x) x
hv : ∀ (x : ℝ), x ∈ [[a, b]] → HasDerivAt v (v' x) x
hu' : IntervalIntegrable u' volume a b
hv' : IntervalIntegrable v' volume a b
⊢ (∫ (x : ℝ) in a..b, u x * v' x) = ∫ (x : ℝ) in a..b, u' x * v x + u x * v' x - u' x * v x

tactic: simp only [add_sub_cancel']
state_before: ι : Type ?u.1886564
𝕜 : Type ?u.1886567
E : Type ?u.1886570
F : Type ?u.1886573
A : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : CompleteSpace E
inst✝³ : NormedSpace ℝ E
f✝ : ℝ → E
g' g φ : ℝ → ℝ
f f' : ℝ → E
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra ℝ A
inst✝ : CompleteSpace A
a b : ℝ
u v u' v' : ℝ → A
hu : ∀ (x : ℝ), x ∈ [[a, b]] → HasDerivAt u (u' x) x
hv : ∀ (x : ℝ), x ∈ [[a, b]] → HasDerivAt v (v' x) x
hu' : IntervalIntegrable u' volume a b
hv' : IntervalIntegrable v' volume a b
x : ℝ
x✝ : x ∈ [[a, b]]
⊢ u x * v' x = u' x * v x + u x * v' x - u' x * v x

tactic: exact
  (hu'.mul_continuousOn (HasDerivAt.continuousOn hv)).add
    (hv'.continuousOn_mul (HasDerivAt.continuousOn hu))
state_before: case hf
ι : Type ?u.1886564
𝕜 : Type ?u.1886567
E : Type ?u.1886570
F : Type ?u.1886573
A : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : CompleteSpace E
inst✝³ : NormedSpace ℝ E
f✝ : ℝ → E
g' g φ : ℝ → ℝ
f f' : ℝ → E
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra ℝ A
inst✝ : CompleteSpace A
a b : ℝ
u v u' v' : ℝ → A
hu : ∀ (x : ℝ), x ∈ [[a, b]] → HasDerivAt u (u' x) x
hv : ∀ (x : ℝ), x ∈ [[a, b]] → HasDerivAt v (v' x) x
hu' : IntervalIntegrable u' volume a b
hv' : IntervalIntegrable v' volume a b
⊢ IntervalIntegrable (fun x => u' x * v x + u x * v' x) volume a b

tactic: exact hu'.mul_continuousOn (HasDerivAt.continuousOn hv)
state_before: case hg
ι : Type ?u.1886564
𝕜 : Type ?u.1886567
E : Type ?u.1886570
F : Type ?u.1886573
A : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : CompleteSpace E
inst✝³ : NormedSpace ℝ E
f✝ : ℝ → E
g' g φ : ℝ → ℝ
f f' : ℝ → E
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra ℝ A
inst✝ : CompleteSpace A
a b : ℝ
u v u' v' : ℝ → A
hu : ∀ (x : ℝ), x ∈ [[a, b]] → HasDerivAt u (u' x) x
hv : ∀ (x : ℝ), x ∈ [[a, b]] → HasDerivAt v (v' x) x
hu' : IntervalIntegrable u' volume a b
hv' : IntervalIntegrable v' volume a b
⊢ IntervalIntegrable (fun x => u' x * v x) volume a b