Theorem: MeasureTheory.SimpleFunc.lintegral_eq_of_subset
File: Mathlib/MeasureTheory/Function/SimpleFunc.lean

tactic: refine Finset.sum_bij_ne_zero (fun r _ _ => r) ?_ ?_ ?_ ?_
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α →ₛ ℝ≥0∞
s : Finset ℝ≥0∞
hs : ∀ (x : α), ↑f x ≠ 0 → μ (↑f ⁻¹' {↑f x}) ≠ 0 → ↑f x ∈ s
⊢ f.lintegral μ = ∑ x ∈ s, x * μ (↑f ⁻¹' {x})
state_after: case refine_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α →ₛ ℝ≥0∞
s : Finset ℝ≥0∞
hs : ∀ (x : α), ↑f x ≠ 0 → μ (↑f ⁻¹' {↑f x}) ≠ 0 → ↑f x ∈ s
⊢ ∀ (a : ℝ≥0∞) (h₁ : a ∈ f.range) (h₂ : a * μ (↑f ⁻¹' {a}) ≠ 0), (fun r x x => r) a h₁ h₂ ∈ s

case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α →ₛ ℝ≥0∞
s : Finset ℝ≥0∞
hs : ∀ (x : α), ↑f x ≠ 0 → μ (↑f ⁻¹' {↑f x}) ≠ 0 → ↑f x ∈ s
⊢ ∀ (a₁ : ℝ≥0∞) (h₁₁ : a₁ ∈ f.range) (h₁₂ : a₁ * μ (↑f ⁻¹' {a₁}) ≠ 0) (a₂ : ℝ≥0∞) (h₂₁ : a₂ ∈ f.range)
    (h₂₂ : a₂ * μ (↑f ⁻¹' {a₂}) ≠ 0), (fun r x x => r) a₁ h₁₁ h₁₂ = (fun r x x => r) a₂ h₂₁ h₂₂ → a₁ = a₂

case refine_3
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α →ₛ ℝ≥0∞
s : Finset ℝ≥0∞
hs : ∀ (x : α), ↑f x ≠ 0 → μ (↑f ⁻¹' {↑f x}) ≠ 0 → ↑f x ∈ s
⊢ ∀ b ∈ s,
    b * μ (↑f ⁻¹' {b}) ≠ 0 → ∃ a, ∃ (h₁ : a ∈ f.range) (h₂ : a * μ (↑f ⁻¹' {a}) ≠ 0), (fun r x x => r) a h₁ h₂ = b

case refine_4
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α →ₛ ℝ≥0∞
s : Finset ℝ≥0∞
hs : ∀ (x : α), ↑f x ≠ 0 → μ (↑f ⁻¹' {↑f x}) ≠ 0 → ↑f x ∈ s
⊢ ∀ (a : ℝ≥0∞) (h₁ : a ∈ f.range) (h₂ : a * μ (↑f ⁻¹' {a}) ≠ 0),
    a * μ (↑f ⁻¹' {a}) = (fun r x x => r) a h₁ h₂ * μ (↑f ⁻¹' {(fun r x x => r) a h₁ h₂})

tactic: simpa only [forall_mem_range, mul_ne_zero_iff, and_imp]
state_before: case refine_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α →ₛ ℝ≥0∞
s : Finset ℝ≥0∞
hs : ∀ (x : α), ↑f x ≠ 0 → μ (↑f ⁻¹' {↑f x}) ≠ 0 → ↑f x ∈ s
⊢ ∀ (a : ℝ≥0∞) (h₁ : a ∈ f.range) (h₂ : a * μ (↑f ⁻¹' {a}) ≠ 0), (fun r x x => r) a h₁ h₂ ∈ s
state_after: no goals

tactic: intros
state_before: case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α →ₛ ℝ≥0∞
s : Finset ℝ≥0∞
hs : ∀ (x : α), ↑f x ≠ 0 → μ (↑f ⁻¹' {↑f x}) ≠ 0 → ↑f x ∈ s
⊢ ∀ (a₁ : ℝ≥0∞) (h₁₁ : a₁ ∈ f.range) (h₁₂ : a₁ * μ (↑f ⁻¹' {a₁}) ≠ 0) (a₂ : ℝ≥0∞) (h₂₁ : a₂ ∈ f.range)
    (h₂₂ : a₂ * μ (↑f ⁻¹' {a₂}) ≠ 0), (fun r x x => r) a₁ h₁₁ h₁₂ = (fun r x x => r) a₂ h₂₁ h₂₂ → a₁ = a₂
state_after: case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α →ₛ ℝ≥0∞
s : Finset ℝ≥0∞
hs : ∀ (x : α), ↑f x ≠ 0 → μ (↑f ⁻¹' {↑f x}) ≠ 0 → ↑f x ∈ s
a₁✝ : ℝ≥0∞
h₁₁✝ : a₁✝ ∈ f.range
h₁₂✝ : a₁✝ * μ (↑f ⁻¹' {a₁✝}) ≠ 0
a₂✝ : ℝ≥0∞
h₂₁✝ : a₂✝ ∈ f.range
h₂₂✝ : a₂✝ * μ (↑f ⁻¹' {a₂✝}) ≠ 0
a✝ : (fun r x x => r) a₁✝ h₁₁✝ h₁₂✝ = (fun r x x => r) a₂✝ h₂₁✝ h₂₂✝
⊢ a₁✝ = a₂✝

tactic: assumption
state_before: case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α →ₛ ℝ≥0∞
s : Finset ℝ≥0∞
hs : ∀ (x : α), ↑f x ≠ 0 → μ (↑f ⁻¹' {↑f x}) ≠ 0 → ↑f x ∈ s
a₁✝ : ℝ≥0∞
h₁₁✝ : a₁✝ ∈ f.range
h₁₂✝ : a₁✝ * μ (↑f ⁻¹' {a₁✝}) ≠ 0
a₂✝ : ℝ≥0∞
h₂₁✝ : a₂✝ ∈ f.range
h₂₂✝ : a₂✝ * μ (↑f ⁻¹' {a₂✝}) ≠ 0
a✝ : (fun r x x => r) a₁✝ h₁₁✝ h₁₂✝ = (fun r x x => r) a₂✝ h₂₁✝ h₂₂✝
⊢ a₁✝ = a₂✝
state_after: no goals

tactic: intro b _ hb
state_before: case refine_3
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α →ₛ ℝ≥0∞
s : Finset ℝ≥0∞
hs : ∀ (x : α), ↑f x ≠ 0 → μ (↑f ⁻¹' {↑f x}) ≠ 0 → ↑f x ∈ s
⊢ ∀ b ∈ s,
    b * μ (↑f ⁻¹' {b}) ≠ 0 → ∃ a, ∃ (h₁ : a ∈ f.range) (h₂ : a * μ (↑f ⁻¹' {a}) ≠ 0), (fun r x x => r) a h₁ h₂ = b
state_after: case refine_3
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α →ₛ ℝ≥0∞
s : Finset ℝ≥0∞
hs : ∀ (x : α), ↑f x ≠ 0 → μ (↑f ⁻¹' {↑f x}) ≠ 0 → ↑f x ∈ s
b : ℝ≥0∞
a✝ : b ∈ s
hb : b * μ (↑f ⁻¹' {b}) ≠ 0
⊢ ∃ a, ∃ (h₁ : a ∈ f.range) (h₂ : a * μ (↑f ⁻¹' {a}) ≠ 0), (fun r x x => r) a h₁ h₂ = b

tactic: refine ⟨b, ?_, hb, rfl⟩
state_before: case refine_3
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α →ₛ ℝ≥0∞
s : Finset ℝ≥0∞
hs : ∀ (x : α), ↑f x ≠ 0 → μ (↑f ⁻¹' {↑f x}) ≠ 0 → ↑f x ∈ s
b : ℝ≥0∞
a✝ : b ∈ s
hb : b * μ (↑f ⁻¹' {b}) ≠ 0
⊢ ∃ a, ∃ (h₁ : a ∈ f.range) (h₂ : a * μ (↑f ⁻¹' {a}) ≠ 0), (fun r x x => r) a h₁ h₂ = b
state_after: case refine_3
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α →ₛ ℝ≥0∞
s : Finset ℝ≥0∞
hs : ∀ (x : α), ↑f x ≠ 0 → μ (↑f ⁻¹' {↑f x}) ≠ 0 → ↑f x ∈ s
b : ℝ≥0∞
a✝ : b ∈ s
hb : b * μ (↑f ⁻¹' {b}) ≠ 0
⊢ b ∈ f.range

tactic: rw [mem_range, ← preimage_singleton_nonempty]
state_before: case refine_3
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α →ₛ ℝ≥0∞
s : Finset ℝ≥0∞
hs : ∀ (x : α), ↑f x ≠ 0 → μ (↑f ⁻¹' {↑f x}) ≠ 0 → ↑f x ∈ s
b : ℝ≥0∞
a✝ : b ∈ s
hb : b * μ (↑f ⁻¹' {b}) ≠ 0
⊢ b ∈ f.range
state_after: case refine_3
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α →ₛ ℝ≥0∞
s : Finset ℝ≥0∞
hs : ∀ (x : α), ↑f x ≠ 0 → μ (↑f ⁻¹' {↑f x}) ≠ 0 → ↑f x ∈ s
b : ℝ≥0∞
a✝ : b ∈ s
hb : b * μ (↑f ⁻¹' {b}) ≠ 0
⊢ (↑f ⁻¹' {b}).Nonempty

tactic: exact nonempty_of_measure_ne_zero (mul_ne_zero_iff.1 hb).2
state_before: case refine_3
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α →ₛ ℝ≥0∞
s : Finset ℝ≥0∞
hs : ∀ (x : α), ↑f x ≠ 0 → μ (↑f ⁻¹' {↑f x}) ≠ 0 → ↑f x ∈ s
b : ℝ≥0∞
a✝ : b ∈ s
hb : b * μ (↑f ⁻¹' {b}) ≠ 0
⊢ (↑f ⁻¹' {b}).Nonempty
state_after: no goals

tactic: intros
state_before: case refine_4
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α →ₛ ℝ≥0∞
s : Finset ℝ≥0∞
hs : ∀ (x : α), ↑f x ≠ 0 → μ (↑f ⁻¹' {↑f x}) ≠ 0 → ↑f x ∈ s
⊢ ∀ (a : ℝ≥0∞) (h₁ : a ∈ f.range) (h₂ : a * μ (↑f ⁻¹' {a}) ≠ 0),
    a * μ (↑f ⁻¹' {a}) = (fun r x x => r) a h₁ h₂ * μ (↑f ⁻¹' {(fun r x x => r) a h₁ h₂})
state_after: case refine_4
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α →ₛ ℝ≥0∞
s : Finset ℝ≥0∞
hs : ∀ (x : α), ↑f x ≠ 0 → μ (↑f ⁻¹' {↑f x}) ≠ 0 → ↑f x ∈ s
a✝ : ℝ≥0∞
h₁✝ : a✝ ∈ f.range
h₂✝ : a✝ * μ (↑f ⁻¹' {a✝}) ≠ 0
⊢ a✝ * μ (↑f ⁻¹' {a✝}) = (fun r x x => r) a✝ h₁✝ h₂✝ * μ (↑f ⁻¹' {(fun r x x => r) a✝ h₁✝ h₂✝})

tactic: rfl
state_before: case refine_4
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α →ₛ ℝ≥0∞
s : Finset ℝ≥0∞
hs : ∀ (x : α), ↑f x ≠ 0 → μ (↑f ⁻¹' {↑f x}) ≠ 0 → ↑f x ∈ s
a✝ : ℝ≥0∞
h₁✝ : a✝ ∈ f.range
h₂✝ : a✝ * μ (↑f ⁻¹' {a✝}) ≠ 0
⊢ a✝ * μ (↑f ⁻¹' {a✝}) = (fun r x x => r) a✝ h₁✝ h₂✝ * μ (↑f ⁻¹' {(fun r x x => r) a✝ h₁✝ h₂✝})
state_after: no goals