Theorem: MeasureTheory.SimpleFunc.integral_eq_sum_of_subset
File: Mathlib/MeasureTheory/Integral/Bochner.lean

tactic: rw [SimpleFunc.integral_eq_sum_filter, Finset.sum_subset hs]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
p : ℝ≥0∞
G : Type u_5
F' : Type u_6
inst✝³ : NormedAddCommGroup G
inst✝² : NormedAddCommGroup F'
inst✝¹ : NormedSpace ℝ F'
m : MeasurableSpace α
μ : Measure α
inst✝ : DecidablePred fun x => x ≠ 0
f : α →ₛ F
s : Finset F
hs : filter (fun x => x ≠ 0) f.range ⊆ s
⊢ integral μ f = ∑ x ∈ s, (μ (↑f ⁻¹' {x})).toReal • x
state_after: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
p : ℝ≥0∞
G : Type u_5
F' : Type u_6
inst✝³ : NormedAddCommGroup G
inst✝² : NormedAddCommGroup F'
inst✝¹ : NormedSpace ℝ F'
m : MeasurableSpace α
μ : Measure α
inst✝ : DecidablePred fun x => x ≠ 0
f : α →ₛ F
s : Finset F
hs : filter (fun x => x ≠ 0) f.range ⊆ s
⊢ ∀ x ∈ s, x ∉ filter (fun x => x ≠ 0) f.range → (μ (↑f ⁻¹' {x})).toReal • x = 0

tactic: rintro x - hx
state_before: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
p : ℝ≥0∞
G : Type u_5
F' : Type u_6
inst✝³ : NormedAddCommGroup G
inst✝² : NormedAddCommGroup F'
inst✝¹ : NormedSpace ℝ F'
m : MeasurableSpace α
μ : Measure α
inst✝ : DecidablePred fun x => x ≠ 0
f : α →ₛ F
s : Finset F
hs : filter (fun x => x ≠ 0) f.range ⊆ s
⊢ ∀ x ∈ s, x ∉ filter (fun x => x ≠ 0) f.range → (μ (↑f ⁻¹' {x})).toReal • x = 0
state_after: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
p : ℝ≥0∞
G : Type u_5
F' : Type u_6
inst✝³ : NormedAddCommGroup G
inst✝² : NormedAddCommGroup F'
inst✝¹ : NormedSpace ℝ F'
m : MeasurableSpace α
μ : Measure α
inst✝ : DecidablePred fun x => x ≠ 0
f : α →ₛ F
s : Finset F
hs : filter (fun x => x ≠ 0) f.range ⊆ s
x : F
hx : x ∉ filter (fun x => x ≠ 0) f.range
⊢ (μ (↑f ⁻¹' {x})).toReal • x = 0

tactic: rw [Finset.mem_filter, not_and_or, Ne, Classical.not_not] at hx
state_before: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
p : ℝ≥0∞
G : Type u_5
F' : Type u_6
inst✝³ : NormedAddCommGroup G
inst✝² : NormedAddCommGroup F'
inst✝¹ : NormedSpace ℝ F'
m : MeasurableSpace α
μ : Measure α
inst✝ : DecidablePred fun x => x ≠ 0
f : α →ₛ F
s : Finset F
hs : filter (fun x => x ≠ 0) f.range ⊆ s
x : F
hx : x ∉ filter (fun x => x ≠ 0) f.range
⊢ (μ (↑f ⁻¹' {x})).toReal • x = 0
state_after: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
p : ℝ≥0∞
G : Type u_5
F' : Type u_6
inst✝³ : NormedAddCommGroup G
inst✝² : NormedAddCommGroup F'
inst✝¹ : NormedSpace ℝ F'
m : MeasurableSpace α
μ : Measure α
inst✝ : DecidablePred fun x => x ≠ 0
f : α →ₛ F
s : Finset F
hs : filter (fun x => x ≠ 0) f.range ⊆ s
x : F
hx : x ∉ f.range ∨ x = 0
⊢ (μ (↑f ⁻¹' {x})).toReal • x = 0

tactic: rcases hx.symm with (rfl | hx)
state_before: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
p : ℝ≥0∞
G : Type u_5
F' : Type u_6
inst✝³ : NormedAddCommGroup G
inst✝² : NormedAddCommGroup F'
inst✝¹ : NormedSpace ℝ F'
m : MeasurableSpace α
μ : Measure α
inst✝ : DecidablePred fun x => x ≠ 0
f : α →ₛ F
s : Finset F
hs : filter (fun x => x ≠ 0) f.range ⊆ s
x : F
hx : x ∉ f.range ∨ x = 0
⊢ (μ (↑f ⁻¹' {x})).toReal • x = 0
state_after: case inl
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
p : ℝ≥0∞
G : Type u_5
F' : Type u_6
inst✝³ : NormedAddCommGroup G
inst✝² : NormedAddCommGroup F'
inst✝¹ : NormedSpace ℝ F'
m : MeasurableSpace α
μ : Measure α
inst✝ : DecidablePred fun x => x ≠ 0
f : α →ₛ F
s : Finset F
hs : filter (fun x => x ≠ 0) f.range ⊆ s
hx : 0 ∉ f.range ∨ 0 = 0
⊢ (μ (↑f ⁻¹' {0})).toReal • 0 = 0

case inr
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
p : ℝ≥0∞
G : Type u_5
F' : Type u_6
inst✝³ : NormedAddCommGroup G
inst✝² : NormedAddCommGroup F'
inst✝¹ : NormedSpace ℝ F'
m : MeasurableSpace α
μ : Measure α
inst✝ : DecidablePred fun x => x ≠ 0
f : α →ₛ F
s : Finset F
hs : filter (fun x => x ≠ 0) f.range ⊆ s
x : F
hx✝ : x ∉ f.range ∨ x = 0
hx : x ∉ f.range
⊢ (μ (↑f ⁻¹' {x})).toReal • x = 0

tactic: rw [SimpleFunc.mem_range] at hx
state_before: case inr
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
p : ℝ≥0∞
G : Type u_5
F' : Type u_6
inst✝³ : NormedAddCommGroup G
inst✝² : NormedAddCommGroup F'
inst✝¹ : NormedSpace ℝ F'
m : MeasurableSpace α
μ : Measure α
inst✝ : DecidablePred fun x => x ≠ 0
f : α →ₛ F
s : Finset F
hs : filter (fun x => x ≠ 0) f.range ⊆ s
x : F
hx✝ : x ∉ f.range ∨ x = 0
hx : x ∉ f.range
⊢ (μ (↑f ⁻¹' {x})).toReal • x = 0
state_after: case inr
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
p : ℝ≥0∞
G : Type u_5
F' : Type u_6
inst✝³ : NormedAddCommGroup G
inst✝² : NormedAddCommGroup F'
inst✝¹ : NormedSpace ℝ F'
m : MeasurableSpace α
μ : Measure α
inst✝ : DecidablePred fun x => x ≠ 0
f : α →ₛ F
s : Finset F
hs : filter (fun x => x ≠ 0) f.range ⊆ s
x : F
hx✝ : x ∉ f.range ∨ x = 0
hx : x ∉ Set.range ↑f
⊢ (μ (↑f ⁻¹' {x})).toReal • x = 0

tactic: simp only [Set.mem_range, not_exists] at hx
state_before: case inr
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
p : ℝ≥0∞
G : Type u_5
F' : Type u_6
inst✝³ : NormedAddCommGroup G
inst✝² : NormedAddCommGroup F'
inst✝¹ : NormedSpace ℝ F'
m : MeasurableSpace α
μ : Measure α
inst✝ : DecidablePred fun x => x ≠ 0
f : α →ₛ F
s : Finset F
hs : filter (fun x => x ≠ 0) f.range ⊆ s
x : F
hx✝ : x ∉ f.range ∨ x = 0
hx : x ∉ Set.range ↑f
⊢ (μ (↑f ⁻¹' {x})).toReal • x = 0
state_after: case inr
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
p : ℝ≥0∞
G : Type u_5
F' : Type u_6
inst✝³ : NormedAddCommGroup G
inst✝² : NormedAddCommGroup F'
inst✝¹ : NormedSpace ℝ F'
m : MeasurableSpace α
μ : Measure α
inst✝ : DecidablePred fun x => x ≠ 0
f : α →ₛ F
s : Finset F
hs : filter (fun x => x ≠ 0) f.range ⊆ s
x : F
hx✝ : x ∉ f.range ∨ x = 0
hx : ∀ (x_1 : α), ¬↑f x_1 = x
⊢ (μ (↑f ⁻¹' {x})).toReal • x = 0

tactic: rw [preimage_eq_empty] <;> simp [Set.disjoint_singleton_left, hx]
state_before: case inr
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
p : ℝ≥0∞
G : Type u_5
F' : Type u_6
inst✝³ : NormedAddCommGroup G
inst✝² : NormedAddCommGroup F'
inst✝¹ : NormedSpace ℝ F'
m : MeasurableSpace α
μ : Measure α
inst✝ : DecidablePred fun x => x ≠ 0
f : α →ₛ F
s : Finset F
hs : filter (fun x => x ≠ 0) f.range ⊆ s
x : F
hx✝ : x ∉ f.range ∨ x = 0
hx : ∀ (x_1 : α), ¬↑f x_1 = x
⊢ (μ (↑f ⁻¹' {x})).toReal • x = 0
state_after: no goals

tactic: simp
state_before: case inl
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
p : ℝ≥0∞
G : Type u_5
F' : Type u_6
inst✝³ : NormedAddCommGroup G
inst✝² : NormedAddCommGroup F'
inst✝¹ : NormedSpace ℝ F'
m : MeasurableSpace α
μ : Measure α
inst✝ : DecidablePred fun x => x ≠ 0
f : α →ₛ F
s : Finset F
hs : filter (fun x => x ≠ 0) f.range ⊆ s
hx : 0 ∉ f.range ∨ 0 = 0
⊢ (μ (↑f ⁻¹' {0})).toReal • 0 = 0
state_after: no goals