-- Mathlib/Probability/Kernel/Condexp.lean
theorem condExp_ae_eq_integral_condExpKernel' [NormedAddCommGroup F] {f : Ω → F}
    [NormedSpace ℝ F] [CompleteSpace F] (hf_int : Integrable f μ) :
    μ[f|m ⊓ mΩ] =ᵐ[μ] fun ω => ∫ y, f y ∂condExpKernel μ m ω

Proof state:
case inr
Ω : Type u_1
F : Type u_2
m mΩ : MeasurableSpace Ω
inst✝⁴ : StandardBorelSpace Ω
μ : Measure Ω
inst✝³ : IsFiniteMeasure μ
inst✝² : NormedAddCommGroup F
f : Ω → F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
hf_int : Integrable f μ
h : Nonempty Ω
⊢ μ[f|m ⊓ mΩ] =ᶠ[ae μ] fun ω => ∫ (y : Ω), f y ∂(condExpKernel μ m) ω

Tactic:
have hX : @Measurable Ω Ω mΩ (m ⊓ mΩ) id := measurable_id.mono le_rfl (inf_le_right : m ⊓ mΩ ≤ mΩ)

Result:
case inr
Ω : Type u_1
F : Type u_2
m mΩ : MeasurableSpace Ω
inst✝⁴ : StandardBorelSpace Ω
μ : Measure Ω
inst✝³ : IsFiniteMeasure μ
inst✝² : NormedAddCommGroup F
f : Ω → F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
hf_int : Integrable f μ
h : Nonempty Ω
hX : Measurable id
⊢ μ[f|m ⊓ mΩ] =ᶠ[ae μ] fun ω => ∫ (y : Ω), f y ∂(condExpKernel μ m) ω

Proof state:
Ω : Type u_1
F : Type u_2
m mΩ : MeasurableSpace Ω
inst✝⁴ : StandardBorelSpace Ω
μ : Measure Ω
inst✝³ : IsFiniteMeasure μ
inst✝² : NormedAddCommGroup F
f : Ω → F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
hf_int : Integrable f μ
⊢ μ[f|m ⊓ mΩ] =ᶠ[ae μ] fun ω => ∫ (y : Ω), f y ∂(condExpKernel μ m) ω

Tactic:
rcases isEmpty_or_nonempty Ω with h | h

Result:
case inl
Ω : Type u_1
F : Type u_2
m mΩ : MeasurableSpace Ω
inst✝⁴ : StandardBorelSpace Ω
μ : Measure Ω
inst✝³ : IsFiniteMeasure μ
inst✝² : NormedAddCommGroup F
f : Ω → F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
hf_int : Integrable f μ
h : IsEmpty Ω
⊢ μ[f|m ⊓ mΩ] =ᶠ[ae μ] fun ω => ∫ (y : Ω), f y ∂(condExpKernel μ m) ω

case inr
Ω : Type u_1
F : Type u_2
m mΩ : MeasurableSpace Ω
inst✝⁴ : StandardBorelSpace Ω
μ : Measure Ω
inst✝³ : IsFiniteMeasure μ
inst✝² : NormedAddCommGroup F
f : Ω → F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
hf_int : Integrable f μ
h : Nonempty Ω
⊢ μ[f|m ⊓ mΩ] =ᶠ[ae μ] fun ω => ∫ (y : Ω), f y ∂(condExpKernel μ m) ω

Proof state:
case inr
Ω : Type u_1
F : Type u_2
m mΩ : MeasurableSpace Ω
inst✝⁴ : StandardBorelSpace Ω
μ : Measure Ω
inst✝³ : IsFiniteMeasure μ
inst✝² : NormedAddCommGroup F
f : Ω → F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
hf_int : Integrable f μ
h : Nonempty Ω
hX : Measurable id
⊢ μ[f|m ⊓ mΩ] =ᶠ[ae μ] fun ω => ∫ (y : Ω), f y ∂(condExpKernel μ m) ω

Tactic:
simp_rw [condExpKernel_apply_eq_condDistrib]

Result:
case inr
Ω : Type u_1
F : Type u_2
m mΩ : MeasurableSpace Ω
inst✝⁴ : StandardBorelSpace Ω
μ : Measure Ω
inst✝³ : IsFiniteMeasure μ
inst✝² : NormedAddCommGroup F
f : Ω → F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
hf_int : Integrable f μ
h : Nonempty Ω
hX : Measurable id
⊢ μ[f|m ⊓ mΩ] =ᶠ[ae μ] fun ω => ∫ (y : Ω), f y ∂(condDistrib id id μ) (id ω)

Proof state:
case inl
Ω : Type u_1
F : Type u_2
m mΩ : MeasurableSpace Ω
inst✝⁴ : StandardBorelSpace Ω
μ : Measure Ω
inst✝³ : IsFiniteMeasure μ
inst✝² : NormedAddCommGroup F
f : Ω → F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
hf_int : Integrable f μ
h : IsEmpty Ω
this : μ = 0
⊢ μ[f|m ⊓ mΩ] =ᶠ[ae μ] fun ω => ∫ (y : Ω), f y ∂(condExpKernel μ m) ω

Tactic:
simpa [this] using trivial

Result:
no goals

Proof state:
case inr
Ω : Type u_1
F : Type u_2
m mΩ : MeasurableSpace Ω
inst✝⁴ : StandardBorelSpace Ω
μ : Measure Ω
inst✝³ : IsFiniteMeasure μ
inst✝² : NormedAddCommGroup F
f : Ω → F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
hf_int : Integrable f μ
h : Nonempty Ω
hX : Measurable id
⊢ μ[f|m ⊓ mΩ] =ᶠ[ae μ] fun ω => ∫ (y : Ω), f y ∂(condDistrib id id μ) (id ω)

Tactic:
have h := condExp_ae_eq_integral_condDistrib_id hX hf_int

Result:
case inr
Ω : Type u_1
F : Type u_2
m mΩ : MeasurableSpace Ω
inst✝⁴ : StandardBorelSpace Ω
μ : Measure Ω
inst✝³ : IsFiniteMeasure μ
inst✝² : NormedAddCommGroup F
f : Ω → F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
hf_int : Integrable f μ
h✝ : Nonempty Ω
hX : Measurable id
h : μ[f|MeasurableSpace.comap id (m ⊓ mΩ)] =ᶠ[ae μ] fun a => ∫ (y : Ω), f y ∂(condDistrib id id μ) (id a)
⊢ μ[f|m ⊓ mΩ] =ᶠ[ae μ] fun ω => ∫ (y : Ω), f y ∂(condDistrib id id μ) (id ω)

Proof state:
case inr
Ω : Type u_1
F : Type u_2
m mΩ : MeasurableSpace Ω
inst✝⁴ : StandardBorelSpace Ω
μ : Measure Ω
inst✝³ : IsFiniteMeasure μ
inst✝² : NormedAddCommGroup F
f : Ω → F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
hf_int : Integrable f μ
h✝ : Nonempty Ω
hX : Measurable id
h : μ[f|MeasurableSpace.comap id (m ⊓ mΩ)] =ᶠ[ae μ] fun a => ∫ (y : Ω), f y ∂(condDistrib id id μ) (id a)
⊢ μ[f|m ⊓ mΩ] =ᶠ[ae μ] fun ω => ∫ (y : Ω), f y ∂(condDistrib id id μ) (id ω)

Tactic:
simpa only [MeasurableSpace.comap_id, id_eq] using h

Result:
no goals

Proof state:
case inl
Ω : Type u_1
F : Type u_2
m mΩ : MeasurableSpace Ω
inst✝⁴ : StandardBorelSpace Ω
μ : Measure Ω
inst✝³ : IsFiniteMeasure μ
inst✝² : NormedAddCommGroup F
f : Ω → F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
hf_int : Integrable f μ
h : IsEmpty Ω
⊢ μ[f|m ⊓ mΩ] =ᶠ[ae μ] fun ω => ∫ (y : Ω), f y ∂(condExpKernel μ m) ω

Tactic:
have : μ = 0 := Measure.eq_zero_of_isEmpty μ

Result:
case inl
Ω : Type u_1
F : Type u_2
m mΩ : MeasurableSpace Ω
inst✝⁴ : StandardBorelSpace Ω
μ : Measure Ω
inst✝³ : IsFiniteMeasure μ
inst✝² : NormedAddCommGroup F
f : Ω → F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
hf_int : Integrable f μ
h : IsEmpty Ω
this : μ = 0
⊢ μ[f|m ⊓ mΩ] =ᶠ[ae μ] fun ω => ∫ (y : Ω), f y ∂(condExpKernel μ m) ω