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

tactic: rw [lintegral, lintegral]
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.1366326
δ : Type ?u.1366329
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace β
g : α → β
hg : MeasurableEmbedding g
f : β → ℝ≥0∞
⊢ (∫⁻ (a : β), f a ∂Measure.map g μ) = ∫⁻ (a : α), f (g a) ∂μ

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

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

tactic: have : (f₀.comp g hg.measurable : α → ℝ≥0∞) ≤ f ∘ g := fun x => hf₀ (g x)
state_before: case refine'_1
α : Type u_2
β : Type u_1
γ : Type ?u.1366326
δ : Type ?u.1366329
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace β
g : α → β
hg : MeasurableEmbedding g
f : β → ℝ≥0∞
f₀ : β →ₛ ℝ≥0∞
hf₀ : ↑f₀ ≤ fun a => f a
⊢ SimpleFunc.lintegral (comp f₀ g (_ : Measurable g)) μ ≤
    ⨆ (g_1 : α →ₛ ℝ≥0∞) (_ : ↑g_1 ≤ fun a => f (g a)), SimpleFunc.lintegral g_1 μ

tactic: exact le_iSup_of_le (comp f₀ g hg.measurable) (by exact le_iSup (α := ℝ≥0∞) _ this)
state_before: case refine'_1
α : Type u_2
β : Type u_1
γ : Type ?u.1366326
δ : Type ?u.1366329
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace β
g : α → β
hg : MeasurableEmbedding g
f : β → ℝ≥0∞
f₀ : β →ₛ ℝ≥0∞
hf₀ : ↑f₀ ≤ fun a => f a
this : ↑(comp f₀ g (_ : Measurable g)) ≤ f ∘ g
⊢ SimpleFunc.lintegral (comp f₀ g (_ : Measurable g)) μ ≤
    ⨆ (g_1 : α →ₛ ℝ≥0∞) (_ : ↑g_1 ≤ fun a => f (g a)), SimpleFunc.lintegral g_1 μ

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

tactic: rw [← f₀.extend_comp_eq hg (const _ 0), ← SimpleFunc.lintegral_map, ←
  SimpleFunc.lintegral_eq_lintegral, ← lintegral]
state_before: case refine'_2
α : Type u_2
β : Type u_1
γ : Type ?u.1366326
δ : Type ?u.1366329
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace β
g : α → β
hg : MeasurableEmbedding g
f : β → ℝ≥0∞
f₀ : α →ₛ ℝ≥0∞
hf₀ : ↑f₀ ≤ fun a => f (g a)
⊢ SimpleFunc.lintegral f₀ μ ≤ ⨆ (g_1 : β →ₛ ℝ≥0∞) (_ : ↑g_1 ≤ fun a => f a), SimpleFunc.lintegral g_1 (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_2
β : Type u_1
γ : Type ?u.1366326
δ : Type ?u.1366329
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace β
g : α → β
hg : MeasurableEmbedding g
f : β → ℝ≥0∞
f₀ : α →ₛ ℝ≥0∞
hf₀ : ↑f₀ ≤ fun a => f (g a)
⊢ (∫⁻ (a : β), ↑(SimpleFunc.extend f₀ g hg (const β 0)) a ∂Measure.map g μ) ≤ ∫⁻ (a : β), f a ∂Measure.map g μ

tactic: exact (extend_apply _ _ _ _).trans_le (hf₀ _)
state_before: case refine'_2
α : Type u_2
β : Type u_1
γ : Type ?u.1366326
δ : Type ?u.1366329
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace β
g : α → β
hg : MeasurableEmbedding g
f : β → ℝ≥0∞
f₀ : α →ₛ ℝ≥0∞
hf₀ : ↑f₀ ≤ fun a => f (g a)
x : α
⊢ ↑(SimpleFunc.extend f₀ g hg (const β 0)) (g x) ≤ f (g x)