-- Mathlib/Probability/Integration.lean
theorem IndepFun.integral_mul_of_integrable (hXY : IndepFun X Y μ) (hX : Integrable X μ)
    (hY : Integrable Y μ) : integral μ (X * Y) = integral μ X * integral μ Y

Proof state:
Ω : Type u_1
mΩ : MeasurableSpace Ω
μ : Measure Ω
X Y : Ω → ℝ
hXY : IndepFun X Y μ
hX : Integrable X μ
hY : Integrable Y μ
pos : ℝ → ℝ := fun x => x ⊔ 0
neg : ℝ → ℝ := fun x => -x ⊔ 0
posm : Measurable pos
negm : Measurable neg
Xp : Ω → ℝ := pos ∘ X
Xm : Ω → ℝ := neg ∘ X
Yp : Ω → ℝ := pos ∘ Y
Ym : Ω → ℝ := neg ∘ Y
hXpm : X = Xp - Xm
hYpm : Y = Yp - Ym
hp1 : 0 ≤ Xm
hp2 : 0 ≤ Xp
hp3 : 0 ≤ Ym
hp4 : 0 ≤ Yp
hm1 : AEMeasurable Xm μ
hm2 : AEMeasurable Xp μ
hm3 : AEMeasurable Ym μ
hm4 : AEMeasurable Yp μ
hv1 : Integrable Xm μ
hv2 : Integrable Xp μ
hv3 : Integrable Ym μ
hv4 : Integrable Yp μ
hi1 : IndepFun Xm Ym μ
hi2 : IndepFun Xp Ym μ
hi3 : IndepFun Xm Yp μ
hi4 : IndepFun Xp Yp μ
hl1 : Integrable (Xm * Ym) μ
hl2 : Integrable (Xp * Ym) μ
hl3 : Integrable (Xm * Yp) μ
⊢ integral μ (X * Y) = integral μ X * integral μ Y

Tactic:
have hl4 : Integrable (Xp * Yp) μ := hi4.integrable_mul hv2 hv4

Result:
Ω : Type u_1
mΩ : MeasurableSpace Ω
μ : Measure Ω
X Y : Ω → ℝ
hXY : IndepFun X Y μ
hX : Integrable X μ
hY : Integrable Y μ
pos : ℝ → ℝ := fun x => x ⊔ 0
neg : ℝ → ℝ := fun x => -x ⊔ 0
posm : Measurable pos
negm : Measurable neg
Xp : Ω → ℝ := pos ∘ X
Xm : Ω → ℝ := neg ∘ X
Yp : Ω → ℝ := pos ∘ Y
Ym : Ω → ℝ := neg ∘ Y
hXpm : X = Xp - Xm
hYpm : Y = Yp - Ym
hp1 : 0 ≤ Xm
hp2 : 0 ≤ Xp
hp3 : 0 ≤ Ym
hp4 : 0 ≤ Yp
hm1 : AEMeasurable Xm μ
hm2 : AEMeasurable Xp μ
hm3 : AEMeasurable Ym μ
hm4 : AEMeasurable Yp μ
hv1 : Integrable Xm μ
hv2 : Integrable Xp μ
hv3 : Integrable Ym μ
hv4 : Integrable Yp μ
hi1 : IndepFun Xm Ym μ
hi2 : IndepFun Xp Ym μ
hi3 : IndepFun Xm Yp μ
hi4 : IndepFun Xp Yp μ
hl1 : Integrable (Xm * Ym) μ
hl2 : Integrable (Xp * Ym) μ
hl3 : Integrable (Xm * Yp) μ
hl4 : Integrable (Xp * Yp) μ
⊢ integral μ (X * Y) = integral μ X * integral μ Y

Proof state:
Ω : Type u_1
mΩ : MeasurableSpace Ω
μ : Measure Ω
X Y : Ω → ℝ
hXY : IndepFun X Y μ
hX : Integrable X μ
hY : Integrable Y μ
pos : ℝ → ℝ := fun x => x ⊔ 0
neg : ℝ → ℝ := fun x => -x ⊔ 0
posm : Measurable pos
negm : Measurable neg
Xp : Ω → ℝ := pos ∘ X
⊢ integral μ (X * Y) = integral μ X * integral μ Y

Tactic:
let Xm := neg ∘ X

Result:
Ω : Type u_1
mΩ : MeasurableSpace Ω
μ : Measure Ω
X Y : Ω → ℝ
hXY : IndepFun X Y μ
hX : Integrable X μ
hY : Integrable Y μ
pos : ℝ → ℝ := fun x => x ⊔ 0
neg : ℝ → ℝ := fun x => -x ⊔ 0
posm : Measurable pos
negm : Measurable neg
Xp : Ω → ℝ := pos ∘ X
Xm : Ω → ℝ := neg ∘ X
⊢ integral μ (X * Y) = integral μ X * integral μ Y

Proof state:
Ω : Type u_1
mΩ : MeasurableSpace Ω
μ : Measure Ω
X Y : Ω → ℝ
hXY : IndepFun X Y μ
hX : Integrable X μ
hY : Integrable Y μ
pos : ℝ → ℝ := fun x => x ⊔ 0
neg : ℝ → ℝ := fun x => -x ⊔ 0
posm : Measurable pos
negm : Measurable neg
Xp : Ω → ℝ := pos ∘ X
Xm : Ω → ℝ := neg ∘ X
Yp : Ω → ℝ := pos ∘ Y
Ym : Ω → ℝ := neg ∘ Y
hXpm : X = Xp - Xm
hYpm : Y = Yp - Ym
hp1 : 0 ≤ Xm
hp2 : 0 ≤ Xp
hp3 : 0 ≤ Ym
hp4 : 0 ≤ Yp
hm1 : AEMeasurable Xm μ
hm2 : AEMeasurable Xp μ
hm3 : AEMeasurable Ym μ
hm4 : AEMeasurable Yp μ
hv1 : Integrable Xm μ
hv2 : Integrable Xp μ
hv3 : Integrable Ym μ
hv4 : Integrable Yp μ
hi1 : IndepFun Xm Ym μ
hi2 : IndepFun Xp Ym μ
hi3 : IndepFun Xm Yp μ
hi4 : IndepFun Xp Yp μ
hl1 : Integrable (Xm * Ym) μ
⊢ integral μ (X * Y) = integral μ X * integral μ Y

Tactic:
have hl2 : Integrable (Xp * Ym) μ := hi2.integrable_mul hv2 hv3

Result:
Ω : Type u_1
mΩ : MeasurableSpace Ω
μ : Measure Ω
X Y : Ω → ℝ
hXY : IndepFun X Y μ
hX : Integrable X μ
hY : Integrable Y μ
pos : ℝ → ℝ := fun x => x ⊔ 0
neg : ℝ → ℝ := fun x => -x ⊔ 0
posm : Measurable pos
negm : Measurable neg
Xp : Ω → ℝ := pos ∘ X
Xm : Ω → ℝ := neg ∘ X
Yp : Ω → ℝ := pos ∘ Y
Ym : Ω → ℝ := neg ∘ Y
hXpm : X = Xp - Xm
hYpm : Y = Yp - Ym
hp1 : 0 ≤ Xm
hp2 : 0 ≤ Xp
hp3 : 0 ≤ Ym
hp4 : 0 ≤ Yp
hm1 : AEMeasurable Xm μ
hm2 : AEMeasurable Xp μ
hm3 : AEMeasurable Ym μ
hm4 : AEMeasurable Yp μ
hv1 : Integrable Xm μ
hv2 : Integrable Xp μ
hv3 : Integrable Ym μ
hv4 : Integrable Yp μ
hi1 : IndepFun Xm Ym μ
hi2 : IndepFun Xp Ym μ
hi3 : IndepFun Xm Yp μ
hi4 : IndepFun Xp Yp μ
hl1 : Integrable (Xm * Ym) μ
hl2 : Integrable (Xp * Ym) μ
⊢ integral μ (X * Y) = integral μ X * integral μ Y

Proof state:
Ω : Type u_1
mΩ : MeasurableSpace Ω
μ : Measure Ω
X Y : Ω → ℝ
hXY : IndepFun X Y μ
hX : Integrable X μ
hY : Integrable Y μ
pos : ℝ → ℝ := fun x => x ⊔ 0
neg : ℝ → ℝ := fun x => -x ⊔ 0
posm : Measurable pos
negm : Measurable neg
Xp : Ω → ℝ := pos ∘ X
Xm : Ω → ℝ := neg ∘ X
Yp : Ω → ℝ := pos ∘ Y
Ym : Ω → ℝ := neg ∘ Y
hXpm : X = Xp - Xm
hYpm : Y = Yp - Ym
hp1 : 0 ≤ Xm
hp2 : 0 ≤ Xp
hp3 : 0 ≤ Ym
hp4 : 0 ≤ Yp
hm1 : AEMeasurable Xm μ
hm2 : AEMeasurable Xp μ
hm3 : AEMeasurable Ym μ
hm4 : AEMeasurable Yp μ
hv1 : Integrable Xm μ
hv2 : Integrable Xp μ
hv3 : Integrable Ym μ
hv4 : Integrable Yp μ
hi1 : IndepFun Xm Ym μ
hi2 : IndepFun Xp Ym μ
hi3 : IndepFun Xm Yp μ
⊢ integral μ (X * Y) = integral μ X * integral μ Y

Tactic:
have hi4 : IndepFun Xp Yp μ := hXY.comp posm posm

Result:
Ω : Type u_1
mΩ : MeasurableSpace Ω
μ : Measure Ω
X Y : Ω → ℝ
hXY : IndepFun X Y μ
hX : Integrable X μ
hY : Integrable Y μ
pos : ℝ → ℝ := fun x => x ⊔ 0
neg : ℝ → ℝ := fun x => -x ⊔ 0
posm : Measurable pos
negm : Measurable neg
Xp : Ω → ℝ := pos ∘ X
Xm : Ω → ℝ := neg ∘ X
Yp : Ω → ℝ := pos ∘ Y
Ym : Ω → ℝ := neg ∘ Y
hXpm : X = Xp - Xm
hYpm : Y = Yp - Ym
hp1 : 0 ≤ Xm
hp2 : 0 ≤ Xp
hp3 : 0 ≤ Ym
hp4 : 0 ≤ Yp
hm1 : AEMeasurable Xm μ
hm2 : AEMeasurable Xp μ
hm3 : AEMeasurable Ym μ
hm4 : AEMeasurable Yp μ
hv1 : Integrable Xm μ
hv2 : Integrable Xp μ
hv3 : Integrable Ym μ
hv4 : Integrable Yp μ
hi1 : IndepFun Xm Ym μ
hi2 : IndepFun Xp Ym μ
hi3 : IndepFun Xm Yp μ
hi4 : IndepFun Xp Yp μ
⊢ integral μ (X * Y) = integral μ X * integral μ Y

Proof state:
Ω : Type u_1
mΩ : MeasurableSpace Ω
μ : Measure Ω
X Y : Ω → ℝ
hXY : IndepFun X Y μ
hX : Integrable X μ
hY : Integrable Y μ
pos : ℝ → ℝ := fun x => x ⊔ 0
neg : ℝ → ℝ := fun x => -x ⊔ 0
posm : Measurable pos
negm : Measurable neg
Xp : Ω → ℝ := pos ∘ X
Xm : Ω → ℝ := neg ∘ X
Yp : Ω → ℝ := pos ∘ Y
Ym : Ω → ℝ := neg ∘ Y
hXpm : X = Xp - Xm
hYpm : Y = Yp - Ym
hp1 : 0 ≤ Xm
hp2 : 0 ≤ Xp
hp3 : 0 ≤ Ym
hp4 : 0 ≤ Yp
hm1 : AEMeasurable Xm μ
hm2 : AEMeasurable Xp μ
hm3 : AEMeasurable Ym μ
hm4 : AEMeasurable Yp μ
hv1 : Integrable Xm μ
hv2 : Integrable Xp μ
hv3 : Integrable Ym μ
⊢ integral μ (X * Y) = integral μ X * integral μ Y

Tactic:
have hv4 : Integrable Yp μ := hY.pos_part

Result:
Ω : Type u_1
mΩ : MeasurableSpace Ω
μ : Measure Ω
X Y : Ω → ℝ
hXY : IndepFun X Y μ
hX : Integrable X μ
hY : Integrable Y μ
pos : ℝ → ℝ := fun x => x ⊔ 0
neg : ℝ → ℝ := fun x => -x ⊔ 0
posm : Measurable pos
negm : Measurable neg
Xp : Ω → ℝ := pos ∘ X
Xm : Ω → ℝ := neg ∘ X
Yp : Ω → ℝ := pos ∘ Y
Ym : Ω → ℝ := neg ∘ Y
hXpm : X = Xp - Xm
hYpm : Y = Yp - Ym
hp1 : 0 ≤ Xm
hp2 : 0 ≤ Xp
hp3 : 0 ≤ Ym
hp4 : 0 ≤ Yp
hm1 : AEMeasurable Xm μ
hm2 : AEMeasurable Xp μ
hm3 : AEMeasurable Ym μ
hm4 : AEMeasurable Yp μ
hv1 : Integrable Xm μ
hv2 : Integrable Xp μ
hv3 : Integrable Ym μ
hv4 : Integrable Yp μ
⊢ integral μ (X * Y) = integral μ X * integral μ Y

Proof state:
Ω : Type u_1
mΩ : MeasurableSpace Ω
μ : Measure Ω
X Y : Ω → ℝ
hXY : IndepFun X Y μ
hX : Integrable X μ
hY : Integrable Y μ
pos : ℝ → ℝ := fun x => x ⊔ 0
neg : ℝ → ℝ := fun x => -x ⊔ 0
posm : Measurable pos
⊢ integral μ (X * Y) = integral μ X * integral μ Y

Tactic:
have negm : Measurable neg := measurable_id'.neg.max measurable_const

Result:
Ω : Type u_1
mΩ : MeasurableSpace Ω
μ : Measure Ω
X Y : Ω → ℝ
hXY : IndepFun X Y μ
hX : Integrable X μ
hY : Integrable Y μ
pos : ℝ → ℝ := fun x => x ⊔ 0
neg : ℝ → ℝ := fun x => -x ⊔ 0
posm : Measurable pos
negm : Measurable neg
⊢ integral μ (X * Y) = integral μ X * integral μ Y