Theorem: MeasureTheory.lintegral_indicator_le
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
⊢ ∫⁻ (a : α), s.indicator f a ∂μ ≤ ∫⁻ (a : α) in s, f a ∂μ
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
⊢ ⨆ g, ⨆ (_ : ↑g ≤ fun a => s.indicator f a), g.lintegral μ ≤ ⨆ g, ⨆ (_ : ↑g ≤ fun a => f a), g.lintegral (μ.restrict s)
tactic: simp only [lintegral]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
⊢ ⨆ g, ⨆ (_ : ↑g ≤ fun a => s.indicator f a), g.lintegral μ ≤ ⨆ g, ⨆ (_ : ↑g ≤ fun a => f a), g.lintegral (μ.restrict s)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
g : α →ₛ ℝ≥0∞
hg : ↑g ≤ fun a => s.indicator f a
⊢ g.lintegral μ ≤ ⨆ g, ⨆ (_ : ↑g ≤ fun a => f a), g.lintegral (μ.restrict s)
tactic: apply iSup_le (fun g ↦ (iSup_le (fun hg ↦ ?_)))
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
g : α →ₛ ℝ≥0∞
hg : ↑g ≤ fun a => s.indicator f a
⊢ g.lintegral μ ≤ ⨆ g, ⨆ (_ : ↑g ≤ fun a => f a), g.lintegral (μ.restrict s)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
g : α →ₛ ℝ≥0∞
hg : ↑g ≤ fun a => s.indicator f a
this : ↑g ≤ f
⊢ g.lintegral μ ≤ ⨆ g, ⨆ (_ : ↑g ≤ fun a => f a), g.lintegral (μ.restrict s)
tactic: have : g ≤ f := hg.trans (indicator_le_self s f)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
g : α →ₛ ℝ≥0∞
hg : ↑g ≤ fun a => s.indicator f a
this : ↑g ≤ f
⊢ g.lintegral μ ≤ ⨆ g, ⨆ (_ : ↑g ≤ fun a => f a), g.lintegral (μ.restrict s)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
g : α →ₛ ℝ≥0∞
hg : ↑g ≤ fun a => s.indicator f a
this : ↑g ≤ f
⊢ g.lintegral μ = g.lintegral (μ.restrict s)
tactic: refine le_iSup_of_le g (le_iSup_of_le this (le_of_eq ?_))
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
g : α →ₛ ℝ≥0∞
hg : ↑g ≤ fun a => s.indicator f a
this : ↑g ≤ f
⊢ g.lintegral μ = g.lintegral (μ.restrict s)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
g : α →ₛ ℝ≥0∞
hg : ↑g ≤ fun a => s.indicator f a
this : ↑g ≤ f
⊢ ∑ x ∈ g.range, x * μ (↑g ⁻¹' {x}) = ∑ y ∈ g.range, y * μ (↑g ⁻¹' {y} ∩ s)
tactic: rw [lintegral_restrict, SimpleFunc.lintegral]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
g : α →ₛ ℝ≥0∞
hg : ↑g ≤ fun a => s.indicator f a
this : ↑g ≤ f
⊢ ∑ x ∈ g.range, x * μ (↑g ⁻¹' {x}) = ∑ y ∈ g.range, y * μ (↑g ⁻¹' {y} ∩ s)
state_after: case e_f.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
g : α →ₛ ℝ≥0∞
hg : ↑g ≤ fun a => s.indicator f a
this : ↑g ≤ f
t : ℝ≥0∞
⊢ t * μ (↑g ⁻¹' {t}) = t * μ (↑g ⁻¹' {t} ∩ s)
tactic: congr with t
state_before: case e_f.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
g : α →ₛ ℝ≥0∞
hg : ↑g ≤ fun a => s.indicator f a
this : ↑g ≤ f
t : ℝ≥0∞
⊢ t * μ (↑g ⁻¹' {t}) = t * μ (↑g ⁻¹' {t} ∩ s)
state_after: case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
g : α →ₛ ℝ≥0∞
hg : ↑g ≤ fun a => s.indicator f a
this : ↑g ≤ f
t : ℝ≥0∞
H : t = 0
⊢ t * μ (↑g ⁻¹' {t}) = t * μ (↑g ⁻¹' {t} ∩ s)

case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
g : α →ₛ ℝ≥0∞
hg : ↑g ≤ fun a => s.indicator f a
this : ↑g ≤ f
t : ℝ≥0∞
H : ¬t = 0
⊢ t * μ (↑g ⁻¹' {t}) = t * μ (↑g ⁻¹' {t} ∩ s)
tactic: by_cases H : t = 0
state_before: case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
g : α →ₛ ℝ≥0∞
hg : ↑g ≤ fun a => s.indicator f a
this : ↑g ≤ f
t : ℝ≥0∞
H : ¬t = 0
⊢ t * μ (↑g ⁻¹' {t}) = t * μ (↑g ⁻¹' {t} ∩ s)
state_after: case neg.e_a.h.e_6.h.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
g : α →ₛ ℝ≥0∞
hg : ↑g ≤ fun a => s.indicator f a
this : ↑g ≤ f
t : ℝ≥0∞
H : ¬t = 0
x : α
⊢ x ∈ ↑g ⁻¹' {t} ↔ x ∈ ↑g ⁻¹' {t} ∩ s
tactic: congr with x
state_before: case neg.e_a.h.e_6.h.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
g : α →ₛ ℝ≥0∞
hg : ↑g ≤ fun a => s.indicator f a
this : ↑g ≤ f
t : ℝ≥0∞
H : ¬t = 0
x : α
⊢ x ∈ ↑g ⁻¹' {t} ↔ x ∈ ↑g ⁻¹' {t} ∩ s
state_after: case neg.e_a.h.e_6.h.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
g : α →ₛ ℝ≥0∞
hg : ↑g ≤ fun a => s.indicator f a
this : ↑g ≤ f
t : ℝ≥0∞
H : ¬t = 0
x : α
⊢ ↑g x = t → x ∈ s
tactic: simp only [mem_preimage, mem_singleton_iff, mem_inter_iff, iff_self_and]
state_before: case neg.e_a.h.e_6.h.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
g : α →ₛ ℝ≥0∞
hg : ↑g ≤ fun a => s.indicator f a
this : ↑g ≤ f
t : ℝ≥0∞
H : ¬t = 0
x : α
⊢ ↑g x = t → x ∈ s
state_after: case neg.e_a.h.e_6.h.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
g : α →ₛ ℝ≥0∞
hg : ↑g ≤ fun a => s.indicator f a
this : ↑g ≤ f
x : α
H : ¬↑g x = 0
⊢ x ∈ s
tactic: rintro rfl
state_before: case neg.e_a.h.e_6.h.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
g : α →ₛ ℝ≥0∞
hg : ↑g ≤ fun a => s.indicator f a
this : ↑g ≤ f
x : α
H : ¬↑g x = 0
⊢ x ∈ s
state_after: case neg.e_a.h.e_6.h.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
g : α →ₛ ℝ≥0∞
hg : ↑g ≤ fun a => s.indicator f a
this : ↑g ≤ f
x : α
H : x ∉ s
⊢ ↑g x = 0
tactic: contrapose! H
state_before: case neg.e_a.h.e_6.h.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
g : α →ₛ ℝ≥0∞
hg : ↑g ≤ fun a => s.indicator f a
this : ↑g ≤ f
x : α
H : x ∉ s
⊢ ↑g x = 0
state_after: no goals
tactic: simpa [H] using hg x