-- Mathlib/MeasureTheory/Integral/BochnerL1.lean
theorem integral_eq_lintegral' {f : α →ₛ E} {g : E → ℝ≥0∞} (hf : Integrable f μ) (hg0 : g 0 = 0)
    (ht : ∀ b, g b ≠ ∞) :
    (f.map (ENNReal.toReal ∘ g)).integral μ = ENNReal.toReal (∫⁻ a, g (f a) ∂μ)

Proof state:
α : Type u_1
E : Type u_2
inst✝ : NormedAddCommGroup E
m : MeasurableSpace α
μ : Measure α
f : α →ₛ E
g : E → ℝ≥0∞
hf : Integrable (⇑f) μ
hg0 : g 0 = 0
ht : ∀ (b : E), g b ≠ ⊤
hf' : f.FinMeasSupp μ
⊢ ∀ a ∈ f.range, g a * μ (⇑f ⁻¹' {a}) ≠ ⊤

Tactic:
rintro a -

Result:
α : Type u_1
E : Type u_2
inst✝ : NormedAddCommGroup E
m : MeasurableSpace α
μ : Measure α
f : α →ₛ E
g : E → ℝ≥0∞
hf : Integrable (⇑f) μ
hg0 : g 0 = 0
ht : ∀ (b : E), g b ≠ ⊤
hf' : f.FinMeasSupp μ
a : E
⊢ g a * μ (⇑f ⁻¹' {a}) ≠ ⊤

Proof state:
case pos
α : Type u_1
E : Type u_2
inst✝ : NormedAddCommGroup E
m : MeasurableSpace α
μ : Measure α
f : α →ₛ E
g : E → ℝ≥0∞
hf : Integrable (⇑f) μ
hg0 : g 0 = 0
ht : ∀ (b : E), g b ≠ ⊤
hf' : f.FinMeasSupp μ
a : E
a0 : a = 0
⊢ g a * μ (⇑f ⁻¹' {a}) ≠ ⊤

Tactic:
rw [a0, hg0, zero_mul]

Result:
case pos
α : Type u_1
E : Type u_2
inst✝ : NormedAddCommGroup E
m : MeasurableSpace α
μ : Measure α
f : α →ₛ E
g : E → ℝ≥0∞
hf : Integrable (⇑f) μ
hg0 : g 0 = 0
ht : ∀ (b : E), g b ≠ ⊤
hf' : f.FinMeasSupp μ
a : E
a0 : a = 0
⊢ 0 ≠ ⊤

Proof state:
α : Type u_1
E : Type u_2
inst✝ : NormedAddCommGroup E
m : MeasurableSpace α
μ : Measure α
f : α →ₛ E
g : E → ℝ≥0∞
hf : Integrable (⇑f) μ
hg0 : g 0 = 0
ht : ∀ (b : E), g b ≠ ⊤
⊢ integral μ (map (ENNReal.toReal ∘ g) f) = (∫⁻ (a : α), g (f a) ∂μ).toReal

Tactic:
have hf' : f.FinMeasSupp μ := integrable_iff_finMeasSupp.1 hf

Result:
α : Type u_1
E : Type u_2
inst✝ : NormedAddCommGroup E
m : MeasurableSpace α
μ : Measure α
f : α →ₛ E
g : E → ℝ≥0∞
hf : Integrable (⇑f) μ
hg0 : g 0 = 0
ht : ∀ (b : E), g b ≠ ⊤
hf' : f.FinMeasSupp μ
⊢ integral μ (map (ENNReal.toReal ∘ g) f) = (∫⁻ (a : α), g (f a) ∂μ).toReal

Proof state:
α : Type u_1
E : Type u_2
inst✝ : NormedAddCommGroup E
m : MeasurableSpace α
μ : Measure α
f : α →ₛ E
g : E → ℝ≥0∞
hf : Integrable (⇑f) μ
hg0 : g 0 = 0
ht : ∀ (b : E), g b ≠ ⊤
hf' : f.FinMeasSupp μ
a : E
⊢ g a * μ (⇑f ⁻¹' {a}) ≠ ⊤

Tactic:
by_cases a0 : a = 0

Result:
case pos
α : Type u_1
E : Type u_2
inst✝ : NormedAddCommGroup E
m : MeasurableSpace α
μ : Measure α
f : α →ₛ E
g : E → ℝ≥0∞
hf : Integrable (⇑f) μ
hg0 : g 0 = 0
ht : ∀ (b : E), g b ≠ ⊤
hf' : f.FinMeasSupp μ
a : E
a0 : a = 0
⊢ g a * μ (⇑f ⁻¹' {a}) ≠ ⊤

case neg
α : Type u_1
E : Type u_2
inst✝ : NormedAddCommGroup E
m : MeasurableSpace α
μ : Measure α
f : α →ₛ E
g : E → ℝ≥0∞
hf : Integrable (⇑f) μ
hg0 : g 0 = 0
ht : ∀ (b : E), g b ≠ ⊤
hf' : f.FinMeasSupp μ
a : E
a0 : ¬a = 0
⊢ g a * μ (⇑f ⁻¹' {a}) ≠ ⊤

Proof state:
α : Type u_1
E : Type u_2
inst✝ : NormedAddCommGroup E
m : MeasurableSpace α
μ : Measure α
f : α →ₛ E
g : E → ℝ≥0∞
hf : Integrable (⇑f) μ
hg0 : g 0 = 0
ht : ∀ (b : E), g b ≠ ⊤
hf' : f.FinMeasSupp μ
⊢ (ENNReal.toReal ∘ g) 0 = 0

Tactic:
simp [hg0]

Result:
no goals

Proof state:
α : Type u_1
E : Type u_2
inst✝ : NormedAddCommGroup E
m : MeasurableSpace α
μ : Measure α
f : α →ₛ E
g : E → ℝ≥0∞
hf : Integrable (⇑f) μ
hg0 : g 0 = 0
ht : ∀ (b : E), g b ≠ ⊤
hf' : f.FinMeasSupp μ
⊢ integral μ (map (ENNReal.toReal ∘ g) f) = (∫⁻ (a : α), g (f a) ∂μ).toReal

Tactic:
simp only [← map_apply g f, lintegral_eq_lintegral]

Result:
α : Type u_1
E : Type u_2
inst✝ : NormedAddCommGroup E
m : MeasurableSpace α
μ : Measure α
f : α →ₛ E
g : E → ℝ≥0∞
hf : Integrable (⇑f) μ
hg0 : g 0 = 0
ht : ∀ (b : E), g b ≠ ⊤
hf' : f.FinMeasSupp μ
⊢ integral μ (map (ENNReal.toReal ∘ g) f) = ((map g f).lintegral μ).toReal

Proof state:
α : Type u_1
E : Type u_2
inst✝ : NormedAddCommGroup E
m : MeasurableSpace α
μ : Measure α
f : α →ₛ E
g : E → ℝ≥0∞
hf : Integrable (⇑f) μ
hg0 : g 0 = 0
ht : ∀ (b : E), g b ≠ ⊤
hf' : f.FinMeasSupp μ
b : E
x✝ : b ∈ f.range
⊢ (μ (⇑f ⁻¹' {b})).toReal • (ENNReal.toReal ∘ g) b = (g b * μ (⇑f ⁻¹' {b})).toReal

Tactic:
rw [smul_eq_mul, toReal_mul, mul_comm, Function.comp_apply]

Result:
no goals

Proof state:
α : Type u_1
E : Type u_2
inst✝ : NormedAddCommGroup E
m : MeasurableSpace α
μ : Measure α
f : α →ₛ E
g : E → ℝ≥0∞
hf : Integrable (⇑f) μ
hg0 : g 0 = 0
ht : ∀ (b : E), g b ≠ ⊤
hf' : f.FinMeasSupp μ
⊢ ∑ x ∈ f.range, (μ (⇑f ⁻¹' {x})).toReal • (ENNReal.toReal ∘ g) x = ∑ a ∈ f.range, (g a * μ (⇑f ⁻¹' {a})).toReal

Tactic:
refine Finset.sum_congr rfl fun b _ => ?_

Result:
α : Type u_1
E : Type u_2
inst✝ : NormedAddCommGroup E
m : MeasurableSpace α
μ : Measure α
f : α →ₛ E
g : E → ℝ≥0∞
hf : Integrable (⇑f) μ
hg0 : g 0 = 0
ht : ∀ (b : E), g b ≠ ⊤
hf' : f.FinMeasSupp μ
b : E
x✝ : b ∈ f.range
⊢ (μ (⇑f ⁻¹' {b})).toReal • (ENNReal.toReal ∘ g) b = (g b * μ (⇑f ⁻¹' {b})).toReal

Proof state:
case neg
α : Type u_1
E : Type u_2
inst✝ : NormedAddCommGroup E
m : MeasurableSpace α
μ : Measure α
f : α →ₛ E
g : E → ℝ≥0∞
hf : Integrable (⇑f) μ
hg0 : g 0 = 0
ht : ∀ (b : E), g b ≠ ⊤
hf' : f.FinMeasSupp μ
a : E
a0 : ¬a = 0
⊢ g a * μ (⇑f ⁻¹' {a}) ≠ ⊤

Tactic:
apply mul_ne_top (ht a) (hf'.meas_preimage_singleton_ne_zero a0).ne

Result:
no goals

Proof state:
α : Type u_1
E : Type u_2
inst✝ : NormedAddCommGroup E
m : MeasurableSpace α
μ : Measure α
f : α →ₛ E
g : E → ℝ≥0∞
hf : Integrable (⇑f) μ
hg0 : g 0 = 0
ht : ∀ (b : E), g b ≠ ⊤
hf' : f.FinMeasSupp μ
⊢ integral μ (map (ENNReal.toReal ∘ g) f) = ((map g f).lintegral μ).toReal

Tactic:
rw [map_integral f _ hf, map_lintegral, ENNReal.toReal_sum]

Result:
α : Type u_1
E : Type u_2
inst✝ : NormedAddCommGroup E
m : MeasurableSpace α
μ : Measure α
f : α →ₛ E
g : E → ℝ≥0∞
hf : Integrable (⇑f) μ
hg0 : g 0 = 0
ht : ∀ (b : E), g b ≠ ⊤
hf' : f.FinMeasSupp μ
⊢ ∑ x ∈ f.range, (μ (⇑f ⁻¹' {x})).toReal • (ENNReal.toReal ∘ g) x = ∑ a ∈ f.range, (g a * μ (⇑f ⁻¹' {a})).toReal

α : Type u_1
E : Type u_2
inst✝ : NormedAddCommGroup E
m : MeasurableSpace α
μ : Measure α
f : α →ₛ E
g : E → ℝ≥0∞
hf : Integrable (⇑f) μ
hg0 : g 0 = 0
ht : ∀ (b : E), g b ≠ ⊤
hf' : f.FinMeasSupp μ
⊢ ∀ a ∈ f.range, g a * μ (⇑f ⁻¹' {a}) ≠ ⊤

α : Type u_1
E : Type u_2
inst✝ : NormedAddCommGroup E
m : MeasurableSpace α
μ : Measure α
f : α →ₛ E
g : E → ℝ≥0∞
hf : Integrable (⇑f) μ
hg0 : g 0 = 0
ht : ∀ (b : E), g b ≠ ⊤
hf' : f.FinMeasSupp μ
⊢ (ENNReal.toReal ∘ g) 0 = 0

Proof state:
case pos
α : Type u_1
E : Type u_2
inst✝ : NormedAddCommGroup E
m : MeasurableSpace α
μ : Measure α
f : α →ₛ E
g : E → ℝ≥0∞
hf : Integrable (⇑f) μ
hg0 : g 0 = 0
ht : ∀ (b : E), g b ≠ ⊤
hf' : f.FinMeasSupp μ
a : E
a0 : a = 0
⊢ 0 ≠ ⊤

Tactic:
exact WithTop.zero_ne_top

Result:
no goals