Theorem: MeasureTheory.condexp_stronglyMeasurable_mul_of_bound
File: Mathlib/MeasureTheory/Function/ConditionalExpectation/Real.lean

tactic: let fs := hf.approxBounded c
state_before: α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
⊢ μ[f * g|m] =ᶠ[ae μ] f * μ[g|m]
state_after: α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
⊢ μ[f * g|m] =ᶠ[ae μ] f * μ[g|m]

tactic: by_cases hμ : μ = 0
state_before: α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
⊢ μ[f * g|m] =ᶠ[ae μ] f * μ[g|m]
state_after: case pos
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : μ = 0
⊢ μ[f * g|m] =ᶠ[ae μ] f * μ[g|m]

case neg
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
⊢ μ[f * g|m] =ᶠ[ae μ] f * μ[g|m]

tactic: have : (ae μ).NeBot := ae_neBot.2 hμ
state_before: case neg
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
⊢ μ[f * g|m] =ᶠ[ae μ] f * μ[g|m]
state_after: case neg
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this : (ae μ).NeBot
⊢ μ[f * g|m] =ᶠ[ae μ] f * μ[g|m]

tactic: have hc : 0 ≤ c := by
  rcases hf_bound.exists with ⟨_x, hx⟩
  exact (norm_nonneg _).trans hx
state_before: case neg
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this : (ae μ).NeBot
⊢ μ[f * g|m] =ᶠ[ae μ] f * μ[g|m]
state_after: case neg
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this : (ae μ).NeBot
hc : 0 ≤ c
⊢ μ[f * g|m] =ᶠ[ae μ] f * μ[g|m]

tactic: have hfs_bound : ∀ n x, ‖fs n x‖ ≤ c := hf.norm_approxBounded_le hc
state_before: case neg
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this : (ae μ).NeBot
hc : 0 ≤ c
⊢ μ[f * g|m] =ᶠ[ae μ] f * μ[g|m]
state_after: case neg
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this : (ae μ).NeBot
hc : 0 ≤ c
hfs_bound : ∀ (n : ℕ) (x : α), ‖↑(fs n) x‖ ≤ c
⊢ μ[f * g|m] =ᶠ[ae μ] f * μ[g|m]

tactic: have : μ[f * μ[g|m]|m] = f * μ[g|m] := by
  refine condexp_of_stronglyMeasurable hm (hf.mul stronglyMeasurable_condexp) ?_
  exact integrable_condexp.bdd_mul' (hf.mono hm).aestronglyMeasurable hf_bound
state_before: case neg
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this : (ae μ).NeBot
hc : 0 ≤ c
hfs_bound : ∀ (n : ℕ) (x : α), ‖↑(fs n) x‖ ≤ c
⊢ μ[f * g|m] =ᶠ[ae μ] f * μ[g|m]
state_after: case neg
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this✝ : (ae μ).NeBot
hc : 0 ≤ c
hfs_bound : ∀ (n : ℕ) (x : α), ‖↑(fs n) x‖ ≤ c
this : μ[f * μ[g|m]|m] = f * μ[g|m]
⊢ μ[f * g|m] =ᶠ[ae μ] f * μ[g|m]

tactic: rw [← this]
state_before: case neg
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this✝ : (ae μ).NeBot
hc : 0 ≤ c
hfs_bound : ∀ (n : ℕ) (x : α), ‖↑(fs n) x‖ ≤ c
this : μ[f * μ[g|m]|m] = f * μ[g|m]
⊢ μ[f * g|m] =ᶠ[ae μ] f * μ[g|m]
state_after: case neg
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this✝ : (ae μ).NeBot
hc : 0 ≤ c
hfs_bound : ∀ (n : ℕ) (x : α), ‖↑(fs n) x‖ ≤ c
this : μ[f * μ[g|m]|m] = f * μ[g|m]
⊢ μ[f * g|m] =ᶠ[ae μ] μ[f * μ[g|m]|m]

tactic: simp only [hμ, ae_zero]
state_before: case pos
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : μ = 0
⊢ μ[f * g|m] =ᶠ[ae μ] f * μ[g|m]
state_after: case pos
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : μ = 0
⊢ 0[f * g|m] =ᶠ[⊥] f * 0[g|m]

tactic: norm_cast
state_before: case pos
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : μ = 0
⊢ 0[f * g|m] =ᶠ[⊥] f * 0[g|m]
state_after: no goals

tactic: rcases hf_bound.exists with ⟨_x, hx⟩
state_before: α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this : (ae μ).NeBot
⊢ 0 ≤ c
state_after: case intro
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this : (ae μ).NeBot
_x : α
hx : ‖f _x‖ ≤ c
⊢ 0 ≤ c

tactic: exact (norm_nonneg _).trans hx
state_before: case intro
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this : (ae μ).NeBot
_x : α
hx : ‖f _x‖ ≤ c
⊢ 0 ≤ c
state_after: no goals

tactic: refine condexp_of_stronglyMeasurable hm (hf.mul stronglyMeasurable_condexp) ?_
state_before: α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this : (ae μ).NeBot
hc : 0 ≤ c
hfs_bound : ∀ (n : ℕ) (x : α), ‖↑(fs n) x‖ ≤ c
⊢ μ[f * μ[g|m]|m] = f * μ[g|m]
state_after: α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this : (ae μ).NeBot
hc : 0 ≤ c
hfs_bound : ∀ (n : ℕ) (x : α), ‖↑(fs n) x‖ ≤ c
⊢ Integrable (f * μ[g|m]) μ

tactic: exact integrable_condexp.bdd_mul' (hf.mono hm).aestronglyMeasurable hf_bound
state_before: α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this : (ae μ).NeBot
hc : 0 ≤ c
hfs_bound : ∀ (n : ℕ) (x : α), ‖↑(fs n) x‖ ≤ c
⊢ Integrable (f * μ[g|m]) μ
state_after: no goals

tactic: exact fun n => hg.bdd_mul' ((SimpleFunc.stronglyMeasurable (fs n)).mono hm).aestronglyMeasurable
  (eventually_of_forall (hfs_bound n))
state_before: case neg.refine_1
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this✝ : (ae μ).NeBot
hc : 0 ≤ c
hfs_bound : ∀ (n : ℕ) (x : α), ‖↑(fs n) x‖ ≤ c
this : μ[f * μ[g|m]|m] = f * μ[g|m]
⊢ ∀ (n : ℕ), Integrable ((fun n x => ↑(fs n) x * g x) n) μ
state_after: no goals

tactic: exact fun n => integrable_condexp.bdd_mul'
  ((SimpleFunc.stronglyMeasurable (fs n)).mono hm).aestronglyMeasurable
  (eventually_of_forall (hfs_bound n))
state_before: case neg.refine_2
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this✝ : (ae μ).NeBot
hc : 0 ≤ c
hfs_bound : ∀ (n : ℕ) (x : α), ‖↑(fs n) x‖ ≤ c
this : μ[f * μ[g|m]|m] = f * μ[g|m]
⊢ ∀ (n : ℕ), Integrable ((fun n x => ↑(fs n) x * (μ[g|m]) x) n) μ
state_after: no goals

tactic: filter_upwards [hfs_tendsto] with x hx
state_before: case neg.refine_3
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this✝ : (ae μ).NeBot
hc : 0 ≤ c
hfs_bound : ∀ (n : ℕ) (x : α), ‖↑(fs n) x‖ ≤ c
this : μ[f * μ[g|m]|m] = f * μ[g|m]
⊢ ∀ᵐ (x : α) ∂μ, Tendsto (fun n => (fun n x => ↑(fs n) x * g x) n x) atTop (𝓝 ((f * g) x))
state_after: case h
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this✝ : (ae μ).NeBot
hc : 0 ≤ c
hfs_bound : ∀ (n : ℕ) (x : α), ‖↑(fs n) x‖ ≤ c
this : μ[f * μ[g|m]|m] = f * μ[g|m]
x : α
hx : Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
⊢ Tendsto (fun n => ↑(fs n) x * g x) atTop (𝓝 ((f * g) x))

tactic: exact hx.mul tendsto_const_nhds
state_before: case h
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this✝ : (ae μ).NeBot
hc : 0 ≤ c
hfs_bound : ∀ (n : ℕ) (x : α), ‖↑(fs n) x‖ ≤ c
this : μ[f * μ[g|m]|m] = f * μ[g|m]
x : α
hx : Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
⊢ Tendsto (fun n => ↑(fs n) x * g x) atTop (𝓝 ((f * g) x))
state_after: no goals

tactic: filter_upwards [hfs_tendsto] with x hx
state_before: case neg.refine_4
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this✝ : (ae μ).NeBot
hc : 0 ≤ c
hfs_bound : ∀ (n : ℕ) (x : α), ‖↑(fs n) x‖ ≤ c
this : μ[f * μ[g|m]|m] = f * μ[g|m]
⊢ ∀ᵐ (x : α) ∂μ, Tendsto (fun n => (fun n x => ↑(fs n) x * (μ[g|m]) x) n x) atTop (𝓝 ((f * μ[g|m]) x))
state_after: case h
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this✝ : (ae μ).NeBot
hc : 0 ≤ c
hfs_bound : ∀ (n : ℕ) (x : α), ‖↑(fs n) x‖ ≤ c
this : μ[f * μ[g|m]|m] = f * μ[g|m]
x : α
hx : Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
⊢ Tendsto (fun n => ↑(fs n) x * (μ[g|m]) x) atTop (𝓝 ((f * μ[g|m]) x))

tactic: exact hx.mul tendsto_const_nhds
state_before: case h
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this✝ : (ae μ).NeBot
hc : 0 ≤ c
hfs_bound : ∀ (n : ℕ) (x : α), ‖↑(fs n) x‖ ≤ c
this : μ[f * μ[g|m]|m] = f * μ[g|m]
x : α
hx : Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
⊢ Tendsto (fun n => ↑(fs n) x * (μ[g|m]) x) atTop (𝓝 ((f * μ[g|m]) x))
state_after: no goals

tactic: exact hg.norm.const_mul c
state_before: case neg.refine_5
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this✝ : (ae μ).NeBot
hc : 0 ≤ c
hfs_bound : ∀ (n : ℕ) (x : α), ‖↑(fs n) x‖ ≤ c
this : μ[f * μ[g|m]|m] = f * μ[g|m]
⊢ Integrable (fun x => c * ‖g x‖) μ
state_after: no goals

tactic: exact integrable_condexp.norm.const_mul c
state_before: case neg.refine_6
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this✝ : (ae μ).NeBot
hc : 0 ≤ c
hfs_bound : ∀ (n : ℕ) (x : α), ‖↑(fs n) x‖ ≤ c
this : μ[f * μ[g|m]|m] = f * μ[g|m]
⊢ Integrable (fun x => c * ‖(μ[g|m]) x‖) μ
state_after: no goals

tactic: refine fun n => eventually_of_forall fun x => ?_
state_before: case neg.refine_7
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this✝ : (ae μ).NeBot
hc : 0 ≤ c
hfs_bound : ∀ (n : ℕ) (x : α), ‖↑(fs n) x‖ ≤ c
this : μ[f * μ[g|m]|m] = f * μ[g|m]
⊢ ∀ (n : ℕ), ∀ᵐ (x : α) ∂μ, ‖(fun n x => ↑(fs n) x * g x) n x‖ ≤ (fun x => c * ‖g x‖) x
state_after: case neg.refine_7
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this✝ : (ae μ).NeBot
hc : 0 ≤ c
hfs_bound : ∀ (n : ℕ) (x : α), ‖↑(fs n) x‖ ≤ c
this : μ[f * μ[g|m]|m] = f * μ[g|m]
n : ℕ
x : α
⊢ ‖(fun n x => ↑(fs n) x * g x) n x‖ ≤ (fun x => c * ‖g x‖) x

tactic: exact (norm_mul_le _ _).trans (mul_le_mul_of_nonneg_right (hfs_bound n x) (norm_nonneg _))
state_before: case neg.refine_7
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this✝ : (ae μ).NeBot
hc : 0 ≤ c
hfs_bound : ∀ (n : ℕ) (x : α), ‖↑(fs n) x‖ ≤ c
this : μ[f * μ[g|m]|m] = f * μ[g|m]
n : ℕ
x : α
⊢ ‖(fun n x => ↑(fs n) x * g x) n x‖ ≤ (fun x => c * ‖g x‖) x
state_after: no goals

tactic: refine fun n => eventually_of_forall fun x => ?_
state_before: case neg.refine_8
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this✝ : (ae μ).NeBot
hc : 0 ≤ c
hfs_bound : ∀ (n : ℕ) (x : α), ‖↑(fs n) x‖ ≤ c
this : μ[f * μ[g|m]|m] = f * μ[g|m]
⊢ ∀ (n : ℕ), ∀ᵐ (x : α) ∂μ, ‖(fun n x => ↑(fs n) x * (μ[g|m]) x) n x‖ ≤ (fun x => c * ‖(μ[g|m]) x‖) x
state_after: case neg.refine_8
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this✝ : (ae μ).NeBot
hc : 0 ≤ c
hfs_bound : ∀ (n : ℕ) (x : α), ‖↑(fs n) x‖ ≤ c
this : μ[f * μ[g|m]|m] = f * μ[g|m]
n : ℕ
x : α
⊢ ‖(fun n x => ↑(fs n) x * (μ[g|m]) x) n x‖ ≤ (fun x => c * ‖(μ[g|m]) x‖) x

tactic: exact (norm_mul_le _ _).trans (mul_le_mul_of_nonneg_right (hfs_bound n x) (norm_nonneg _))
state_before: case neg.refine_8
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this✝ : (ae μ).NeBot
hc : 0 ≤ c
hfs_bound : ∀ (n : ℕ) (x : α), ‖↑(fs n) x‖ ≤ c
this : μ[f * μ[g|m]|m] = f * μ[g|m]
n : ℕ
x : α
⊢ ‖(fun n x => ↑(fs n) x * (μ[g|m]) x) n x‖ ≤ (fun x => c * ‖(μ[g|m]) x‖) x
state_after: no goals

tactic: intro n
state_before: case neg.refine_9
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this✝ : (ae μ).NeBot
hc : 0 ≤ c
hfs_bound : ∀ (n : ℕ) (x : α), ‖↑(fs n) x‖ ≤ c
this : μ[f * μ[g|m]|m] = f * μ[g|m]
⊢ ∀ (n : ℕ), μ[(fun n x => ↑(fs n) x * g x) n|m] =ᶠ[ae μ] μ[(fun n x => ↑(fs n) x * (μ[g|m]) x) n|m]
state_after: case neg.refine_9
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this✝ : (ae μ).NeBot
hc : 0 ≤ c
hfs_bound : ∀ (n : ℕ) (x : α), ‖↑(fs n) x‖ ≤ c
this : μ[f * μ[g|m]|m] = f * μ[g|m]
n : ℕ
⊢ μ[(fun n x => ↑(fs n) x * g x) n|m] =ᶠ[ae μ] μ[(fun n x => ↑(fs n) x * (μ[g|m]) x) n|m]

tactic: simp_rw [← Pi.mul_apply]
state_before: case neg.refine_9
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this✝ : (ae μ).NeBot
hc : 0 ≤ c
hfs_bound : ∀ (n : ℕ) (x : α), ‖↑(fs n) x‖ ≤ c
this : μ[f * μ[g|m]|m] = f * μ[g|m]
n : ℕ
⊢ μ[(fun n x => ↑(fs n) x * g x) n|m] =ᶠ[ae μ] μ[(fun n x => ↑(fs n) x * (μ[g|m]) x) n|m]
state_after: case neg.refine_9
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this✝ : (ae μ).NeBot
hc : 0 ≤ c
hfs_bound : ∀ (n : ℕ) (x : α), ‖↑(fs n) x‖ ≤ c
this : μ[f * μ[g|m]|m] = f * μ[g|m]
n : ℕ
⊢ μ[fun x => (↑(fs n) * g) x|m] =ᶠ[ae μ] μ[fun x => (↑(fs n) * μ[g|m]) x|m]

tactic: refine (condexp_stronglyMeasurable_simpleFunc_mul hm _ hg).trans ?_
state_before: case neg.refine_9
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this✝ : (ae μ).NeBot
hc : 0 ≤ c
hfs_bound : ∀ (n : ℕ) (x : α), ‖↑(fs n) x‖ ≤ c
this : μ[f * μ[g|m]|m] = f * μ[g|m]
n : ℕ
⊢ μ[fun x => (↑(fs n) * g) x|m] =ᶠ[ae μ] μ[fun x => (↑(fs n) * μ[g|m]) x|m]
state_after: case neg.refine_9
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this✝ : (ae μ).NeBot
hc : 0 ≤ c
hfs_bound : ∀ (n : ℕ) (x : α), ‖↑(fs n) x‖ ≤ c
this : μ[f * μ[g|m]|m] = f * μ[g|m]
n : ℕ
⊢ ↑(fs n) * μ[g|m] =ᶠ[ae μ] μ[fun x => (↑(fs n) * μ[g|m]) x|m]

tactic: rw [condexp_of_stronglyMeasurable hm
  ((SimpleFunc.stronglyMeasurable _).mul stronglyMeasurable_condexp) _]
state_before: case neg.refine_9
α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this✝ : (ae μ).NeBot
hc : 0 ≤ c
hfs_bound : ∀ (n : ℕ) (x : α), ‖↑(fs n) x‖ ≤ c
this : μ[f * μ[g|m]|m] = f * μ[g|m]
n : ℕ
⊢ ↑(fs n) * μ[g|m] =ᶠ[ae μ] μ[fun x => (↑(fs n) * μ[g|m]) x|m]
state_after: α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this✝ : (ae μ).NeBot
hc : 0 ≤ c
hfs_bound : ∀ (n : ℕ) (x : α), ‖↑(fs n) x‖ ≤ c
this : μ[f * μ[g|m]|m] = f * μ[g|m]
n : ℕ
⊢ Integrable (↑(fs n) * μ[g|m]) μ

tactic: exact integrable_condexp.bdd_mul'
  ((SimpleFunc.stronglyMeasurable (fs n)).mono hm).aestronglyMeasurable
  (eventually_of_forall (hfs_bound n))
state_before: α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
f g : α → ℝ
hf : StronglyMeasurable f
hg : Integrable g μ
c : ℝ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
fs : ℕ → SimpleFunc α ℝ := hf.approxBounded c
hfs_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun x_1 => ↑(fs x_1) x) atTop (𝓝 (f x))
hμ : ¬μ = 0
this✝ : (ae μ).NeBot
hc : 0 ≤ c
hfs_bound : ∀ (n : ℕ) (x : α), ‖↑(fs n) x‖ ≤ c
this : μ[f * μ[g|m]|m] = f * μ[g|m]
n : ℕ
⊢ Integrable (↑(fs n) * μ[g|m]) μ
state_after: no goals