Theorem: MeasurableEmbedding.lintegral_map
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

tactic: rw [lintegral, lintegral]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace β
g : α → β
hg : MeasurableEmbedding g
f : β → ℝ≥0∞
⊢ ∫⁻ (a : β), f a ∂Measure.map g μ = ∫⁻ (a : α), f (g a) ∂μ
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace β
g : α → β
hg : MeasurableEmbedding g
f : β → ℝ≥0∞
⊢ ⨆ g_1, ⨆ (_ : ↑g_1 ≤ fun a => f a), g_1.lintegral (Measure.map g μ) =
    ⨆ g_1, ⨆ (_ : ↑g_1 ≤ fun a => f (g a)), g_1.lintegral μ

tactic: refine le_antisymm (iSup₂_le fun f₀ hf₀ => ?_) (iSup₂_le fun f₀ hf₀ => ?_)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace β
g : α → β
hg : MeasurableEmbedding g
f : β → ℝ≥0∞
⊢ ⨆ g_1, ⨆ (_ : ↑g_1 ≤ fun a => f a), g_1.lintegral (Measure.map g μ) =
    ⨆ g_1, ⨆ (_ : ↑g_1 ≤ fun a => f (g a)), g_1.lintegral μ
state_after: case refine_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace β
g : α → β
hg : MeasurableEmbedding g
f : β → ℝ≥0∞
f₀ : β →ₛ ℝ≥0∞
hf₀ : ↑f₀ ≤ fun a => f a
⊢ f₀.lintegral (Measure.map g μ) ≤ ⨆ g_1, ⨆ (_ : ↑g_1 ≤ fun a => f (g a)), g_1.lintegral μ

case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace β
g : α → β
hg : MeasurableEmbedding g
f : β → ℝ≥0∞
f₀ : α →ₛ ℝ≥0∞
hf₀ : ↑f₀ ≤ fun a => f (g a)
⊢ f₀.lintegral μ ≤ ⨆ g_1, ⨆ (_ : ↑g_1 ≤ fun a => f a), g_1.lintegral (Measure.map g μ)

tactic: rw [SimpleFunc.lintegral_map _ hg.measurable]
state_before: case refine_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace β
g : α → β
hg : MeasurableEmbedding g
f : β → ℝ≥0∞
f₀ : β →ₛ ℝ≥0∞
hf₀ : ↑f₀ ≤ fun a => f a
⊢ f₀.lintegral (Measure.map g μ) ≤ ⨆ g_1, ⨆ (_ : ↑g_1 ≤ fun a => f (g a)), g_1.lintegral μ
state_after: case refine_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace β
g : α → β
hg : MeasurableEmbedding g
f : β → ℝ≥0∞
f₀ : β →ₛ ℝ≥0∞
hf₀ : ↑f₀ ≤ fun a => f a
⊢ (f₀.comp g ⋯).lintegral μ ≤ ⨆ g_1, ⨆ (_ : ↑g_1 ≤ fun a => f (g a)), g_1.lintegral μ

tactic: have : (f₀.comp g hg.measurable : α → ℝ≥0∞) ≤ f ∘ g := fun x => hf₀ (g x)
state_before: case refine_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace β
g : α → β
hg : MeasurableEmbedding g
f : β → ℝ≥0∞
f₀ : β →ₛ ℝ≥0∞
hf₀ : ↑f₀ ≤ fun a => f a
⊢ (f₀.comp g ⋯).lintegral μ ≤ ⨆ g_1, ⨆ (_ : ↑g_1 ≤ fun a => f (g a)), g_1.lintegral μ
state_after: case refine_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace β
g : α → β
hg : MeasurableEmbedding g
f : β → ℝ≥0∞
f₀ : β →ₛ ℝ≥0∞
hf₀ : ↑f₀ ≤ fun a => f a
this : ↑(f₀.comp g ⋯) ≤ f ∘ g
⊢ (f₀.comp g ⋯).lintegral μ ≤ ⨆ g_1, ⨆ (_ : ↑g_1 ≤ fun a => f (g a)), g_1.lintegral μ

tactic: exact le_iSup_of_le (comp f₀ g hg.measurable) (by exact le_iSup (α := ℝ≥0∞) _ this)
state_before: case refine_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace β
g : α → β
hg : MeasurableEmbedding g
f : β → ℝ≥0∞
f₀ : β →ₛ ℝ≥0∞
hf₀ : ↑f₀ ≤ fun a => f a
this : ↑(f₀.comp g ⋯) ≤ f ∘ g
⊢ (f₀.comp g ⋯).lintegral μ ≤ ⨆ g_1, ⨆ (_ : ↑g_1 ≤ fun a => f (g a)), g_1.lintegral μ
state_after: no goals

tactic: exact le_iSup (α := ℝ≥0∞) _ this
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace β
g : α → β
hg : MeasurableEmbedding g
f : β → ℝ≥0∞
f₀ : β →ₛ ℝ≥0∞
hf₀ : ↑f₀ ≤ fun a => f a
this : ↑(f₀.comp g ⋯) ≤ f ∘ g
⊢ (f₀.comp g ⋯).lintegral μ ≤ ⨆ (_ : ↑(f₀.comp g ⋯) ≤ fun a => f (g a)), (f₀.comp g ⋯).lintegral μ
state_after: no goals

tactic: rw [← f₀.extend_comp_eq hg (const _ 0), ← SimpleFunc.lintegral_map, ←
  SimpleFunc.lintegral_eq_lintegral, ← lintegral]
state_before: case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace β
g : α → β
hg : MeasurableEmbedding g
f : β → ℝ≥0∞
f₀ : α →ₛ ℝ≥0∞
hf₀ : ↑f₀ ≤ fun a => f (g a)
⊢ f₀.lintegral μ ≤ ⨆ g_1, ⨆ (_ : ↑g_1 ≤ fun a => f a), g_1.lintegral (Measure.map g μ)
state_after: case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace β
g : α → β
hg : MeasurableEmbedding g
f : β → ℝ≥0∞
f₀ : α →ₛ ℝ≥0∞
hf₀ : ↑f₀ ≤ fun a => f (g a)
⊢ ∫⁻ (a : β), ↑(f₀.extend g hg (const β 0)) a ∂Measure.map g μ ≤ ∫⁻ (a : β), f a ∂Measure.map g μ

tactic: refine lintegral_mono_ae (hg.ae_map_iff.2 <| eventually_of_forall fun x => ?_)
state_before: case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace β
g : α → β
hg : MeasurableEmbedding g
f : β → ℝ≥0∞
f₀ : α →ₛ ℝ≥0∞
hf₀ : ↑f₀ ≤ fun a => f (g a)
⊢ ∫⁻ (a : β), ↑(f₀.extend g hg (const β 0)) a ∂Measure.map g μ ≤ ∫⁻ (a : β), f a ∂Measure.map g μ
state_after: case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace β
g : α → β
hg : MeasurableEmbedding g
f : β → ℝ≥0∞
f₀ : α →ₛ ℝ≥0∞
hf₀ : ↑f₀ ≤ fun a => f (g a)
x : α
⊢ ↑(f₀.extend g hg (const β 0)) (g x) ≤ f (g x)

tactic: exact (extend_apply _ _ _ _).trans_le (hf₀ _)
state_before: case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace β
g : α → β
hg : MeasurableEmbedding g
f : β → ℝ≥0∞
f₀ : α →ₛ ℝ≥0∞
hf₀ : ↑f₀ ≤ fun a => f (g a)
x : α
⊢ ↑(f₀.extend g hg (const β 0)) (g x) ≤ f (g x)
state_after: no goals