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

tactic: constructor
state_before: α : Type u_1
β : Type ?u.1777927
γ : Type ?u.1777930
δ : Type ?u.1777933
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g : α → ℝ≥0∞
⊢ AEMeasurable g ↔ AEMeasurable fun x => ↑(f x) * g x

tactic: rintro ⟨g', g'meas, hg'⟩
state_before: case mp
α : Type u_1
β : Type ?u.1777927
γ : Type ?u.1777930
δ : Type ?u.1777933
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g : α → ℝ≥0∞
⊢ AEMeasurable g → AEMeasurable fun x => ↑(f x) * g x

tactic: have A : MeasurableSet { x : α | f x ≠ 0 } := (hf (measurableSet_singleton 0)).compl
state_before: case mp.intro.intro
α : Type u_1
β : Type ?u.1777927
γ : Type ?u.1777930
δ : Type ?u.1777933
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : g =ᶠ[ae (withDensity μ fun x => ↑(f x))] g'
⊢ AEMeasurable fun x => ↑(f x) * g x

tactic: refine' ⟨fun x => f x * g' x, hf.coe_nnreal_ennreal.smul g'meas, _⟩
state_before: case mp.intro.intro
α : Type u_1
β : Type ?u.1777927
γ : Type ?u.1777930
δ : Type ?u.1777933
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : g =ᶠ[ae (withDensity μ fun x => ↑(f x))] g'
A : MeasurableSet {x | f x ≠ 0}
⊢ AEMeasurable fun x => ↑(f x) * g x

tactic: apply ae_of_ae_restrict_of_ae_restrict_compl { x | f x ≠ 0 }
state_before: case mp.intro.intro
α : Type u_1
β : Type ?u.1777927
γ : Type ?u.1777930
δ : Type ?u.1777933
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : g =ᶠ[ae (withDensity μ fun x => ↑(f x))] g'
A : MeasurableSet {x | f x ≠ 0}
⊢ (fun x => ↑(f x) * g x) =ᶠ[ae μ] fun x => ↑(f x) * g' x

tactic: rw [EventuallyEq, ae_withDensity_iff hf.coe_nnreal_ennreal] at hg'
state_before: case mp.intro.intro.ht
α : Type u_1
β : Type ?u.1777927
γ : Type ?u.1777930
δ : Type ?u.1777933
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : g =ᶠ[ae (withDensity μ fun x => ↑(f x))] g'
A : MeasurableSet {x | f x ≠ 0}
⊢ ∀ᵐ (x : α) ∂Measure.restrict μ {x | f x ≠ 0}, (fun x => ↑(f x) * g x) x = (fun x => ↑(f x) * g' x) x

tactic: rw [ae_restrict_iff' A]
state_before: case mp.intro.intro.ht
α : Type u_1
β : Type ?u.1777927
γ : Type ?u.1777930
δ : Type ?u.1777933
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : ∀ᵐ (x : α) ∂μ, ↑(f x) ≠ 0 → g x = g' x
A : MeasurableSet {x | f x ≠ 0}
⊢ ∀ᵐ (x : α) ∂Measure.restrict μ {x | f x ≠ 0}, (fun x => ↑(f x) * g x) x = (fun x => ↑(f x) * g' x) x

tactic: filter_upwards [hg']
state_before: case mp.intro.intro.ht
α : Type u_1
β : Type ?u.1777927
γ : Type ?u.1777930
δ : Type ?u.1777933
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : ∀ᵐ (x : α) ∂μ, ↑(f x) ≠ 0 → g x = g' x
A : MeasurableSet {x | f x ≠ 0}
⊢ ∀ᵐ (x : α) ∂μ, x ∈ {x | f x ≠ 0} → (fun x => ↑(f x) * g x) x = (fun x => ↑(f x) * g' x) x

tactic: intro a ha h'a
state_before: case h
α : Type u_1
β : Type ?u.1777927
γ : Type ?u.1777930
δ : Type ?u.1777933
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : ∀ᵐ (x : α) ∂μ, ↑(f x) ≠ 0 → g x = g' x
A : MeasurableSet {x | f x ≠ 0}
⊢ ∀ (a : α), (↑(f a) ≠ 0 → g a = g' a) → f a ≠ 0 → ↑(f a) * g a = ↑(f a) * g' a

tactic: have : (f a : ℝ≥0∞) ≠ 0 := by simpa only [Ne.def, coe_eq_zero] using h'a
state_before: case h
α : Type u_1
β : Type ?u.1777927
γ : Type ?u.1777930
δ : Type ?u.1777933
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : ∀ᵐ (x : α) ∂μ, ↑(f x) ≠ 0 → g x = g' x
A : MeasurableSet {x | f x ≠ 0}
a : α
ha : ↑(f a) ≠ 0 → g a = g' a
h'a : f a ≠ 0
⊢ ↑(f a) * g a = ↑(f a) * g' a

tactic: rw [ha this]
state_before: case h
α : Type u_1
β : Type ?u.1777927
γ : Type ?u.1777930
δ : Type ?u.1777933
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : ∀ᵐ (x : α) ∂μ, ↑(f x) ≠ 0 → g x = g' x
A : MeasurableSet {x | f x ≠ 0}
a : α
ha : ↑(f a) ≠ 0 → g a = g' a
h'a : f a ≠ 0
this : ↑(f a) ≠ 0
⊢ ↑(f a) * g a = ↑(f a) * g' a

tactic: simpa only [Ne.def, coe_eq_zero] using h'a
state_before: α : Type u_1
β : Type ?u.1777927
γ : Type ?u.1777930
δ : Type ?u.1777933
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : ∀ᵐ (x : α) ∂μ, ↑(f x) ≠ 0 → g x = g' x
A : MeasurableSet {x | f x ≠ 0}
a : α
ha : ↑(f a) ≠ 0 → g a = g' a
h'a : f a ≠ 0
⊢ ↑(f a) ≠ 0

tactic: filter_upwards [ae_restrict_mem A.compl]
state_before: case mp.intro.intro.htc
α : Type u_1
β : Type ?u.1777927
γ : Type ?u.1777930
δ : Type ?u.1777933
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : g =ᶠ[ae (withDensity μ fun x => ↑(f x))] g'
A : MeasurableSet {x | f x ≠ 0}
⊢ ∀ᵐ (x : α) ∂Measure.restrict μ ({x | f x ≠ 0}ᶜ), (fun x => ↑(f x) * g x) x = (fun x => ↑(f x) * g' x) x

tactic: intro x hx
state_before: case h
α : Type u_1
β : Type ?u.1777927
γ : Type ?u.1777930
δ : Type ?u.1777933
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : g =ᶠ[ae (withDensity μ fun x => ↑(f x))] g'
A : MeasurableSet {x | f x ≠ 0}
⊢ ∀ (a : α), a ∈ {x | f x ≠ 0}ᶜ → ↑(f a) * g a = ↑(f a) * g' a

tactic: simp only [Classical.not_not, mem_setOf_eq, mem_compl_iff] at hx
state_before: case h
α : Type u_1
β : Type ?u.1777927
γ : Type ?u.1777930
δ : Type ?u.1777933
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : g =ᶠ[ae (withDensity μ fun x => ↑(f x))] g'
A : MeasurableSet {x | f x ≠ 0}
x : α
hx : x ∈ {x | f x ≠ 0}ᶜ
⊢ ↑(f x) * g x = ↑(f x) * g' x

tactic: simp [hx]
state_before: case h
α : Type u_1
β : Type ?u.1777927
γ : Type ?u.1777930
δ : Type ?u.1777933
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : g =ᶠ[ae (withDensity μ fun x => ↑(f x))] g'
A : MeasurableSet {x | f x ≠ 0}
x : α
hx : f x = 0
⊢ ↑(f x) * g x = ↑(f x) * g' x

tactic: rintro ⟨g', g'meas, hg'⟩
state_before: case mpr
α : Type u_1
β : Type ?u.1777927
γ : Type ?u.1777930
δ : Type ?u.1777933
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g : α → ℝ≥0∞
⊢ (AEMeasurable fun x => ↑(f x) * g x) → AEMeasurable g

tactic: refine' ⟨fun x => ((f x)⁻¹ : ℝ≥0∞) * g' x, hf.coe_nnreal_ennreal.inv.smul g'meas, _⟩
state_before: case mpr.intro.intro
α : Type u_1
β : Type ?u.1777927
γ : Type ?u.1777930
δ : Type ?u.1777933
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : (fun x => ↑(f x) * g x) =ᶠ[ae μ] g'
⊢ AEMeasurable g

tactic: rw [EventuallyEq, ae_withDensity_iff hf.coe_nnreal_ennreal]
state_before: case mpr.intro.intro
α : Type u_1
β : Type ?u.1777927
γ : Type ?u.1777930
δ : Type ?u.1777933
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : (fun x => ↑(f x) * g x) =ᶠ[ae μ] g'
⊢ g =ᶠ[ae (withDensity μ fun x => ↑(f x))] fun x => (↑(f x))⁻¹ * g' x

tactic: filter_upwards [hg']
state_before: case mpr.intro.intro
α : Type u_1
β : Type ?u.1777927
γ : Type ?u.1777930
δ : Type ?u.1777933
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : (fun x => ↑(f x) * g x) =ᶠ[ae μ] g'
⊢ ∀ᵐ (x : α) ∂μ, ↑(f x) ≠ 0 → g x = (↑(f x))⁻¹ * g' x

tactic: intro x hx h'x
state_before: case h
α : Type u_1
β : Type ?u.1777927
γ : Type ?u.1777930
δ : Type ?u.1777933
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : (fun x => ↑(f x) * g x) =ᶠ[ae μ] g'
⊢ ∀ (a : α), ↑(f a) * g a = g' a → ↑(f a) ≠ 0 → g a = (↑(f a))⁻¹ * g' a

tactic: rw [← hx, ← mul_assoc, ENNReal.inv_mul_cancel h'x ENNReal.coe_ne_top, one_mul]
state_before: case h
α : Type u_1
β : Type ?u.1777927
γ : Type ?u.1777930
δ : Type ?u.1777933
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : (fun x => ↑(f x) * g x) =ᶠ[ae μ] g'
x : α
hx : ↑(f x) * g x = g' x
h'x : ↑(f x) ≠ 0
⊢ g x = (↑(f x))⁻¹ * g' x