測度論と積分

9.1. 直積測度🔗

定義.

XY を可測空間とする。 集合 X \times Y \{ A \times B \mid \text{$A \subseteq X$ と $B \subseteq Y$ は可測} \} が生成する σ-代数を入れることで、X \times Y可測空間 とみなす。

Lean code
inductive GenProd (X Y : Type*) [MeasurableSpace X] [MeasurableSpace Y] : Set (Set (X × Y)) where | basic {A : Set X} (hA : MeasurableSet A) {B : Set Y} (hB : MeasurableSet B) : GenProd X Y (A ×ˢ B)
instance instMeasurableSpaceProd : MeasurableSpace (X × Y) := generateFrom (GenProd X Y)
@[measurability] theorem MeasurableSet.sProd {A : Set X} (hA : MeasurableSet A) {B : Set Y} (hB : MeasurableSet B) : MeasurableSet (A ×ˢ B) := measurableSet_generateFrom (GenProd.basic hA hB)
@[measurability] theorem measurable_fst : Measurable (Prod.fst : X × Y X) := X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace YMeasurable Prod.fst intro A X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace YA:Set XhA:_root_.MeasurableSet A_root_.MeasurableSet (Prod.fst ⁻¹' A) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace YA:Set XhA:_root_.MeasurableSet AProd.fst ⁻¹' A GenProd X Y X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace YA:Set XhA:_root_.MeasurableSet AA ×ˢ univ GenProd X Y All goals completed! 🐙
@[measurability] theorem measurable_snd : Measurable (Prod.snd : X × Y Y) := X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace YMeasurable Prod.snd intro B X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace YB:Set YhB:_root_.MeasurableSet B_root_.MeasurableSet (Prod.snd ⁻¹' B) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace YB:Set YhB:_root_.MeasurableSet BProd.snd ⁻¹' B GenProd X Y X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace YB:Set YhB:_root_.MeasurableSet Buniv ×ˢ B GenProd X Y All goals completed! 🐙
定義.

X を可測空間とする。 X 上の測度 \mu有限 であるとは、\mu(X) < \infty が成り立つことをいう。

Lean code
/-- A measure `μ` is called finite if `μ univ < ∞`. -/ @[mk_iff] class IsFiniteMeasure (μ : Measure α) : Prop where measure_univ_lt_top : μ univ <
定義.

X を可測空間とし、\muX 上の測度とする。 \muS-有限 であるとは、X 上の測度の列 \nu : \mathbb{N} \to \Measure (X) が存在して、任意の n \in \mathbb{N} に対して \nu_n が有限であり、かつ \mu = \sum_{n \in \mathbb{N}} \nu_n が成り立つことをいう。

Lean code
/-- A measure is called s-finite if it is a countable sum of finite measures. -/ class SFinite (μ : Measure α) : Prop where out' : m : Measure α, ( n, IsFiniteMeasure (m n)) μ = Measure.sum m
補題.

XY を可測空間とする。 \muX 上の測度、\nuY 上の測度とし、\nu は S-有限であると仮定する。 このとき任意の可測集合 A \subseteq X \times Y に対して、 f : X \to [0, \infty]f (x) \coloneqq \nu (\{ y \in Y \mid (x,y) \in A \}) で定めると、f は可測である。

Lean code
theorem measurable_measure_prodMk_left_finite [IsFiniteMeasure ν] {A : Set (X × Y)} (hA : MeasurableSet A) : Measurable fun x ν (Prod.mk x ⁻¹' A) := X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yν:Measure Yinst✝:IsFiniteMeasure νA:Set (X × Y)hA:MeasurableSet AMeasurable fun x => ν (Prod.mk x ⁻¹' A) induction A, hA using MTI.induction_on_inter rfl (isPiSystem_genProd X Y) with X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yν:Measure Yinst✝:IsFiniteMeasure νA:Set (X × Y)Measurable fun x => ν (Prod.mk x ⁻¹' ) All goals completed! 🐙 X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yν:Measure Yinst✝:IsFiniteMeasure νA✝:Set (X × Y)A:Set (X × Y)hA:A GenProd X YMeasurable fun x => ν (Prod.mk x ⁻¹' A) X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yν:Measure Yinst✝:IsFiniteMeasure νA✝:Set (X × Y)A:Set XhA:MeasurableSet AB:Set YMeasurable fun x => ν (Prod.mk x ⁻¹' A ×ˢ B) classical X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yν:Measure Yinst✝:IsFiniteMeasure νA✝:Set (X × Y)A:Set XhA:MeasurableSet AB:Set YMeasurable fun x => A.indicator (fun x => ν B) x All goals completed! 🐙 X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yν:Measure Yinst✝:IsFiniteMeasure νA✝:Set (X × Y)A:Set (X × Y)hA:_root_.MeasurableSet AihA:Measurable fun x => ν (Prod.mk x ⁻¹' A)Measurable fun x => ν (Prod.mk x ⁻¹' A) simp_rw X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yν:Measure Yinst✝:IsFiniteMeasure νA✝:Set (X × Y)A:Set (X × Y)hA:_root_.MeasurableSet AihA:Measurable fun x => ν (Prod.mk x ⁻¹' A)Measurable fun x => ν (Prod.mk x ⁻¹' A)preimage_compl, measure_compl (measurable_prodMk_left hA) (measure_ne_top ν _)] All goals completed! 🐙 X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yν:Measure Yinst✝:IsFiniteMeasure νA✝:Set (X × Y)A: Set (X × Y)hAd:Pairwise (Disjoint on A)hAm: (i : ), _root_.MeasurableSet (A i)ih: (i : ), Measurable fun x => ν (Prod.mk x ⁻¹' A i)Measurable fun x => ν (Prod.mk x ⁻¹' i, A i) have : (x : X), ν (Prod.mk x ⁻¹' i, A i) = ∑' i, ν (Prod.mk x ⁻¹' A i) := X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yν:Measure Yinst✝:IsFiniteMeasure νA:Set (X × Y)hA:MeasurableSet AMeasurable fun x => ν (Prod.mk x ⁻¹' A) X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yν:Measure Yinst✝:IsFiniteMeasure νA✝:Set (X × Y)A: Set (X × Y)hAd:Pairwise (Disjoint on A)hAm: (i : ), _root_.MeasurableSet (A i)ih: (i : ), Measurable fun x => ν (Prod.mk x ⁻¹' A i)x:Xν (Prod.mk x ⁻¹' i, A i) = ∑' (i : ), ν (Prod.mk x ⁻¹' A i) X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yν:Measure Yinst✝:IsFiniteMeasure νA✝:Set (X × Y)A: Set (X × Y)hAd:Pairwise (Disjoint on A)hAm: (i : ), _root_.MeasurableSet (A i)ih: (i : ), Measurable fun x => ν (Prod.mk x ⁻¹' A i)x:XPairwise (Disjoint on fun i => Prod.mk x ⁻¹' A i) All goals completed! 🐙 All goals completed! 🐙
@[measurability] theorem measurable_measure_prodMk_left [SFinite ν] {A : Set (X × Y)} (hA : MeasurableSet A) : Measurable fun x ν (Prod.mk x ⁻¹' A) := X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yν:Measure Yinst✝:SFinite νA:Set (X × Y)hA:MeasurableSet AMeasurable fun x => ν (Prod.mk x ⁻¹' A) X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yν:Measure Yinst✝:SFinite νA:Set (X × Y)hA:MeasurableSet AMeasurable fun x => (sum (sfiniteSeq ν)) (Prod.mk x ⁻¹' A) simp_rw X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yν:Measure Yinst✝:SFinite νA:Set (X × Y)hA:MeasurableSet AMeasurable fun x => (sum (sfiniteSeq ν)) (Prod.mk x ⁻¹' A)Measure.sum_apply _ (measurable_prodMk_left hA)] All goals completed! 🐙
定義.

XY を可測空間とし、\muX 上の測度、\nuY 上の測度とする。 \nu は S-有限であると仮定する。 このとき X \times Y 上の 直積測度 \mu \times \nu を、任意の可測集合 A \subseteq X \times Y に対して (\mu \times \nu)(A) \coloneqq \underline{\int}_{x \in X} \nu (\{ y \in Y \mid (x,y) \in A \})\,d\mu で定める。

Lean code
def Measure.prod (μ : Measure X) (ν : Measure Y) [SFinite ν] : Measure (X × Y) := Measure.ofMeasurable (fun A _ ∫⁻ x, ν (Prod.mk x ⁻¹' A) μ) (X:Type u_1Y:Type u_2Z:Type u_3inst✝³:MeasurableSpace Xinst✝²:MeasurableSpace Yinst✝¹:MeasurableSpace Zμ✝:Measure Xν✝:Measure Yμ:Measure Xν:Measure Yinst✝:SFinite ν(fun A x => ∫⁻ (x : X), ν (Prod.mk x ⁻¹' A) μ) = 0 All goals completed! 🐙) <| fun A hA hAd calc ∫⁻ (x : X), ν (Prod.mk x ⁻¹' i, A i) μ _ = ∫⁻ (x : X), ∑' (i : ), ν (Prod.mk x ⁻¹' A i) μ := lintegral_congr <| X:Type u_1Y:Type u_2Z:Type u_3inst✝³:MeasurableSpace Xinst✝²:MeasurableSpace Yinst✝¹:MeasurableSpace Zμ✝:Measure Xν✝:Measure Yμ:Measure Xν:Measure Yinst✝:SFinite νA: Set (X × Y)hA: (i : ), _root_.MeasurableSet (A i)hAd:Pairwise (Disjoint on A) (a : X), ν (Prod.mk a ⁻¹' i, A i) = ∑' (i : ), ν (Prod.mk a ⁻¹' A i) X:Type u_1Y:Type u_2Z:Type u_3inst✝³:MeasurableSpace Xinst✝²:MeasurableSpace Yinst✝¹:MeasurableSpace Zμ✝:Measure Xν✝:Measure Yμ:Measure Xν:Measure Yinst✝:SFinite νA: Set (X × Y)hA: (i : ), _root_.MeasurableSet (A i)hAd:Pairwise (Disjoint on A)x:Xν (Prod.mk x ⁻¹' i, A i) = ∑' (i : ), ν (Prod.mk x ⁻¹' A i) X:Type u_1Y:Type u_2Z:Type u_3inst✝³:MeasurableSpace Xinst✝²:MeasurableSpace Yinst✝¹:MeasurableSpace Zμ✝:Measure Xν✝:Measure Yμ:Measure Xν:Measure Yinst✝:SFinite νA: Set (X × Y)hA: (i : ), _root_.MeasurableSet (A i)hAd:Pairwise (Disjoint on A)x:Xν (⋃ i, Prod.mk x ⁻¹' A i) = ∑' (i : ), ν (Prod.mk x ⁻¹' A i) All goals completed! 🐙 _ = ∑' (i : ), ∫⁻ (x : X), ν (Prod.mk x ⁻¹' A i) μ := X:Type u_1Y:Type u_2Z:Type u_3inst✝³:MeasurableSpace Xinst✝²:MeasurableSpace Yinst✝¹:MeasurableSpace Zμ✝:Measure Xν✝:Measure Yμ:Measure Xν:Measure Yinst✝:SFinite νA: Set (X × Y)hA: (i : ), _root_.MeasurableSet (A i)hAd:Pairwise (Disjoint on A)∫⁻ (x : X), ∑' (i : ), ν (Prod.mk x ⁻¹' A i) μ = ∑' (i : ), ∫⁻ (x : X), ν (Prod.mk x ⁻¹' A i) μ X:Type u_1Y:Type u_2Z:Type u_3inst✝³:MeasurableSpace Xinst✝²:MeasurableSpace Yinst✝¹:MeasurableSpace Zμ✝:Measure Xν✝:Measure Yμ:Measure Xν:Measure Yinst✝:SFinite νA: Set (X × Y)hA: (i : ), _root_.MeasurableSet (A i)hAd:Pairwise (Disjoint on A) (i : ), _root_.AEMeasurable (fun x => ν (Prod.mk x ⁻¹' A i)) μ X:Type u_1Y:Type u_2Z:Type u_3inst✝³:MeasurableSpace Xinst✝²:MeasurableSpace Yinst✝¹:MeasurableSpace Zμ✝:Measure Xν✝:Measure Yμ:Measure Xν:Measure Yinst✝:SFinite νA: Set (X × Y)hA: (i : ), _root_.MeasurableSet (A i)hAd:Pairwise (Disjoint on A)n:_root_.AEMeasurable (fun x => ν (Prod.mk x ⁻¹' A n)) μ All goals completed! 🐙
theorem prod_apply [SFinite ν] {A : Set (X × Y)} (hA : MeasurableSet A) : μ.prod ν A = ∫⁻ x, ν (Prod.mk x ⁻¹' A) μ := X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νA:Set (X × Y)hA:MeasurableSet A(μ.prod ν) A = ∫⁻ (x : X), ν (Prod.mk x ⁻¹' A) μ All goals completed! 🐙
補題.

\nu が S-有限であるとする。 このとき任意の可測集合 A \subseteq XB \subseteq Y に対して (\mu \times \nu) (A \times B) = \mu (A) \cdot \nu (B) が成り立つ。

Lean code
theorem prod_prod [SFinite ν] {A : Set X} {B : Set Y} (hA : MeasurableSet A) (hB : MeasurableSet B) : μ.prod ν (A ×ˢ B) = μ A * ν B := X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νA:Set XB:Set YhA:MeasurableSet AhB:MeasurableSet B(μ.prod ν) (A ×ˢ B) = μ A * ν B calc μ.prod ν (A ×ˢ B) _ = ∫⁻ x, ν (Prod.mk x ⁻¹' (A ×ˢ B)) μ := prod_apply (X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νA:Set XB:Set YhA:MeasurableSet AhB:MeasurableSet BMeasurableSet (A ×ˢ B) All goals completed! 🐙) _ = μ A * ν B := X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νA:Set XB:Set YhA:MeasurableSet AhB:MeasurableSet B∫⁻ (x : X), ν (Prod.mk x ⁻¹' A ×ˢ B) μ = μ A * ν B classical simp_rw X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νA:Set XB:Set YhA:MeasurableSet AhB:MeasurableSet B∫⁻ (x : X), ν (Prod.mk x ⁻¹' A ×ˢ B) μ = μ A * ν Bmk_preimage_prod_right_eq_if, measure_if] simp_rw X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νA:Set XB:Set YhA:MeasurableSet AhB:MeasurableSet B∫⁻ (x : X), A.indicator (fun x => ν B) x μ = μ A * ν B lintegral_indicator hA, lintegral_const, restrict_apply_univ, mul_comm]
定理 (トネリの定理).

XY を可測空間とする。 \muX 上の測度、\nuY 上の測度とし、\mu\nu は S-有限であると仮定する。 f : X \times Y \to [0, \infty] を可測関数とする。 このとき \begin{aligned} \underline{\int}_{(x,y) \in X \times Y} f (x,y) \, d(\mu \times \nu) &= \underline{\int}_{x \in X} \left( \underline{\int}_{y \in Y} f (x,y) \, d\nu \right) d\mu \\ &= \underline{\int}_{y \in Y} \left( \underline{\int}_{x \in X} f (x,y) \, d\mu \right) d\nu. \end{aligned} が成り立つ。

Lean code
theorem lintegral_prod [SFinite ν] {f : X × Y ℝ≥0∞} (hf : Measurable f) : ∫⁻ z, f z (μ.prod ν) = ∫⁻ x, ∫⁻ y, f (x, y) ν μ := X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable f∫⁻ (z : X × Y), f z μ.prod ν = ∫⁻ (x : X), ∫⁻ (y : Y), f (x, y) ν μ X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable f n, (SimpleFunc.eapprox f n).lintegral (μ.prod ν) = ∫⁻ (x : X), ∫⁻ (y : Y), f (x, y) ν μ X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable f n, x (SimpleFunc.eapprox f n).range, x * (μ.prod ν) ((SimpleFunc.eapprox f n) ⁻¹' {x}) = ∫⁻ (x : X), ∫⁻ (y : Y), f (x, y) ν μ X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) n, x (SimpleFunc.eapprox f n).range, x * (μ.prod ν) ((SimpleFunc.eapprox f n) ⁻¹' {x}) = ∫⁻ (x : X), ∫⁻ (y : Y), f (x, y) ν μ have hf'_app : n x y, f' n x y = (SimpleFunc.eapprox f n) (x, y) := X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable f∫⁻ (z : X × Y), f z μ.prod ν = ∫⁻ (x : X), ∫⁻ (y : Y), f (x, y) ν μ intro n X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) n:x:X (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) n:x:Xy:Y(f' n x) y = (SimpleFunc.eapprox f n) (x, y) All goals completed! 🐙 X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a) n, x (SimpleFunc.eapprox f n).range, x * (μ.prod ν) ((SimpleFunc.eapprox f n) ⁻¹' {x}) = ∫⁻ (x : X), ∫⁻ (y : Y), f (x, y) ν μ have hf'sup : x y, n, f' n x y = f (x, y) := X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable f∫⁻ (z : X × Y), f z μ.prod ν = ∫⁻ (x : X), ∫⁻ (y : Y), f (x, y) ν μ intro x X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)x:Xy:Y n, (f' n x) y = f (x, y) X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)x:Xy:Y n, (SimpleFunc.eapprox f n) (x, y) = f (x, y) All goals completed! 🐙 have hf'_int : n x, (f' n x).lintegral ν = a (SimpleFunc.eapprox f n).range, a * ν ((f' n x) ⁻¹' {a}) := X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable f∫⁻ (z : X × Y), f z μ.prod ν = ∫⁻ (x : X), ∫⁻ (y : Y), f (x, y) ν μ intro n X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))n:x:X(f' n x).lintegral ν = a (SimpleFunc.eapprox f n).range, a * ν ((f' n x) ⁻¹' {a}) X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))n:x:X(f' n x).range (SimpleFunc.eapprox f n).rangeX:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))n:x:X x_1 (SimpleFunc.eapprox f n).range, x_1 (f' n x).range x_1 * ν ((f' n x) ⁻¹' {x_1}) = 0 X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))n:x:X(f' n x).range (SimpleFunc.eapprox f n).range intro a X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))n:x:Xa:ℝ≥0∞ha:a (f' n x).rangea (SimpleFunc.eapprox f n).range X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))n:x:Xa:ℝ≥0∞ha: y, (f' n x) y = a a_1 b, (SimpleFunc.eapprox f n) (a_1, b) = a All goals completed! 🐙 X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))n:x:X x_1 (SimpleFunc.eapprox f n).range, x_1 (f' n x).range x_1 * ν ((f' n x) ⁻¹' {x_1}) = 0 intro a X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))n:x:Xa:ℝ≥0∞ha:a (SimpleFunc.eapprox f n).rangea (f' n x).range a * ν ((f' n x) ⁻¹' {a}) = 0 X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))n:x:Xa:ℝ≥0∞ha:a (SimpleFunc.eapprox f n).rangeha':a (f' n x).rangea * ν ((f' n x) ⁻¹' {a}) = 0 X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))n:x:Xa:ℝ≥0∞ha:a (SimpleFunc.eapprox f n).rangeha':a (f' n x).rangea = 0 ν ((f' n x) ⁻¹' {a}) = 0 X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))n:x:Xa:ℝ≥0∞ha:a (SimpleFunc.eapprox f n).rangeha':a (f' n x).rangeν ((f' n x) ⁻¹' {a}) = 0 X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))n:x:Xa:ℝ≥0∞ha:a (SimpleFunc.eapprox f n).rangeha':a (f' n x).range(f' n x) ⁻¹' {a} = All goals completed! 🐙 calc _ = n, a (SimpleFunc.eapprox f n).range, a * (∫⁻ x, ν (f' n x ⁻¹' {a}) μ) := X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))hf'_int: (n : ) (x : X), (f' n x).lintegral ν = a (SimpleFunc.eapprox f n).range, a * ν ((f' n x) ⁻¹' {a}) := fun n x => Finset.sum_subset (fun a ha => Eq.mpr (id (Eq.trans lintegral_prod._simp_1 (Eq.trans lintegral_prod._simp_2 lintegral_prod._simp_3))) (lintegral_prod._proof_3 hf'_app n x (Eq.mp (Eq.trans lintegral_prod._simp_1 lintegral_prod._simp_2) ha))) fun a ha ha' => Eq.mpr (id lintegral_prod._simp_4) (Or.inr (Eq.trans (congrArg (⇑ν) ((SimpleFunc.preimage_eq_empty_iff (f' n x) a).mpr ha')) measure_empty)) n, x (SimpleFunc.eapprox f n).range, x * (μ.prod ν) ((SimpleFunc.eapprox f n) ⁻¹' {x}) = n, a (SimpleFunc.eapprox f n).range, a * ∫⁻ (x : X), ν ((f' n x) ⁻¹' {a}) μ X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))hf'_int: (n : ) (x : X), (f' n x).lintegral ν = a (SimpleFunc.eapprox f n).range, a * ν ((f' n x) ⁻¹' {a}) := fun n x => Finset.sum_subset (fun a ha => Eq.mpr (id (Eq.trans lintegral_prod._simp_1 (Eq.trans lintegral_prod._simp_2 lintegral_prod._simp_3))) (lintegral_prod._proof_3 hf'_app n x (Eq.mp (Eq.trans lintegral_prod._simp_1 lintegral_prod._simp_2) ha))) fun a ha ha' => Eq.mpr (id lintegral_prod._simp_4) (Or.inr (Eq.trans (congrArg (⇑ν) ((SimpleFunc.preimage_eq_empty_iff (f' n x) a).mpr ha')) measure_empty))n:a:ℝ≥0∞ha:a (SimpleFunc.eapprox f n).rangea * (μ.prod ν) ((SimpleFunc.eapprox f n) ⁻¹' {a}) = a * ∫⁻ (x : X), ν ((f' n x) ⁻¹' {a}) μ X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))hf'_int: (n : ) (x : X), (f' n x).lintegral ν = a (SimpleFunc.eapprox f n).range, a * ν ((f' n x) ⁻¹' {a}) := fun n x => Finset.sum_subset (fun a ha => Eq.mpr (id (Eq.trans lintegral_prod._simp_1 (Eq.trans lintegral_prod._simp_2 lintegral_prod._simp_3))) (lintegral_prod._proof_3 hf'_app n x (Eq.mp (Eq.trans lintegral_prod._simp_1 lintegral_prod._simp_2) ha))) fun a ha ha' => Eq.mpr (id lintegral_prod._simp_4) (Or.inr (Eq.trans (congrArg (⇑ν) ((SimpleFunc.preimage_eq_empty_iff (f' n x) a).mpr ha')) measure_empty))n:a:ℝ≥0∞ha:a (SimpleFunc.eapprox f n).rangea * ∫⁻ (x : X), ν (Prod.mk x ⁻¹' ((SimpleFunc.eapprox f n) ⁻¹' {a})) μ = a * ∫⁻ (x : X), ν ((f' n x) ⁻¹' {a}) μ All goals completed! 🐙 _ = n, a (SimpleFunc.eapprox f n).range, ∫⁻ x, a * ν (f' n x ⁻¹' {a}) μ := iSup_congr <| fun n Finset.sum_congr rfl <| fun a ha (lintegral_const_mul _ (hf' n a)).symm _ = n, ∫⁻ x, (f' n x).lintegral ν μ := X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))hf'_int: (n : ) (x : X), (f' n x).lintegral ν = a (SimpleFunc.eapprox f n).range, a * ν ((f' n x) ⁻¹' {a}) := fun n x => Finset.sum_subset (fun a ha => Eq.mpr (id (Eq.trans lintegral_prod._simp_1 (Eq.trans lintegral_prod._simp_2 lintegral_prod._simp_3))) (lintegral_prod._proof_3 hf'_app n x (Eq.mp (Eq.trans lintegral_prod._simp_1 lintegral_prod._simp_2) ha))) fun a ha ha' => Eq.mpr (id lintegral_prod._simp_4) (Or.inr (Eq.trans (congrArg (⇑ν) ((SimpleFunc.preimage_eq_empty_iff (f' n x) a).mpr ha')) measure_empty)) n, a (SimpleFunc.eapprox f n).range, ∫⁻ (x : X), a * ν ((f' n x) ⁻¹' {a}) μ = n, ∫⁻ (x : X), (f' n x).lintegral ν μ X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))hf'_int: (n : ) (x : X), (f' n x).lintegral ν = a (SimpleFunc.eapprox f n).range, a * ν ((f' n x) ⁻¹' {a}) := fun n x => Finset.sum_subset (fun a ha => Eq.mpr (id (Eq.trans lintegral_prod._simp_1 (Eq.trans lintegral_prod._simp_2 lintegral_prod._simp_3))) (lintegral_prod._proof_3 hf'_app n x (Eq.mp (Eq.trans lintegral_prod._simp_1 lintegral_prod._simp_2) ha))) fun a ha ha' => Eq.mpr (id lintegral_prod._simp_4) (Or.inr (Eq.trans (congrArg (⇑ν) ((SimpleFunc.preimage_eq_empty_iff (f' n x) a).mpr ha')) measure_empty))n: a (SimpleFunc.eapprox f n).range, ∫⁻ (x : X), a * ν ((f' n x) ⁻¹' {a}) μ = ∫⁻ (x : X), (f' n x).lintegral ν μ X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))hf'_int: (n : ) (x : X), (f' n x).lintegral ν = a (SimpleFunc.eapprox f n).range, a * ν ((f' n x) ⁻¹' {a}) := fun n x => Finset.sum_subset (fun a ha => Eq.mpr (id (Eq.trans lintegral_prod._simp_1 (Eq.trans lintegral_prod._simp_2 lintegral_prod._simp_3))) (lintegral_prod._proof_3 hf'_app n x (Eq.mp (Eq.trans lintegral_prod._simp_1 lintegral_prod._simp_2) ha))) fun a ha ha' => Eq.mpr (id lintegral_prod._simp_4) (Or.inr (Eq.trans (congrArg (⇑ν) ((SimpleFunc.preimage_eq_empty_iff (f' n x) a).mpr ha')) measure_empty))n:∫⁻ (a : X), b (SimpleFunc.eapprox f n).range, b * ν ((f' n a) ⁻¹' {b}) μ = ∫⁻ (x : X), (f' n x).lintegral ν μX:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))hf'_int: (n : ) (x : X), (f' n x).lintegral ν = a (SimpleFunc.eapprox f n).range, a * ν ((f' n x) ⁻¹' {a}) := fun n x => Finset.sum_subset (fun a ha => Eq.mpr (id (Eq.trans lintegral_prod._simp_1 (Eq.trans lintegral_prod._simp_2 lintegral_prod._simp_3))) (lintegral_prod._proof_3 hf'_app n x (Eq.mp (Eq.trans lintegral_prod._simp_1 lintegral_prod._simp_2) ha))) fun a ha ha' => Eq.mpr (id lintegral_prod._simp_4) (Or.inr (Eq.trans (congrArg (⇑ν) ((SimpleFunc.preimage_eq_empty_iff (f' n x) a).mpr ha')) measure_empty))n: b (SimpleFunc.eapprox f n).range, _root_.Measurable fun x => b * ν ((f' n x) ⁻¹' {b}) X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))hf'_int: (n : ) (x : X), (f' n x).lintegral ν = a (SimpleFunc.eapprox f n).range, a * ν ((f' n x) ⁻¹' {a}) := fun n x => Finset.sum_subset (fun a ha => Eq.mpr (id (Eq.trans lintegral_prod._simp_1 (Eq.trans lintegral_prod._simp_2 lintegral_prod._simp_3))) (lintegral_prod._proof_3 hf'_app n x (Eq.mp (Eq.trans lintegral_prod._simp_1 lintegral_prod._simp_2) ha))) fun a ha ha' => Eq.mpr (id lintegral_prod._simp_4) (Or.inr (Eq.trans (congrArg (⇑ν) ((SimpleFunc.preimage_eq_empty_iff (f' n x) a).mpr ha')) measure_empty))n:∫⁻ (a : X), b (SimpleFunc.eapprox f n).range, b * ν ((f' n a) ⁻¹' {b}) μ = ∫⁻ (x : X), (f' n x).lintegral ν μ X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))hf'_int: (n : ) (x : X), (f' n x).lintegral ν = a (SimpleFunc.eapprox f n).range, a * ν ((f' n x) ⁻¹' {a}) := fun n x => Finset.sum_subset (fun a ha => Eq.mpr (id (Eq.trans lintegral_prod._simp_1 (Eq.trans lintegral_prod._simp_2 lintegral_prod._simp_3))) (lintegral_prod._proof_3 hf'_app n x (Eq.mp (Eq.trans lintegral_prod._simp_1 lintegral_prod._simp_2) ha))) fun a ha ha' => Eq.mpr (id lintegral_prod._simp_4) (Or.inr (Eq.trans (congrArg (⇑ν) ((SimpleFunc.preimage_eq_empty_iff (f' n x) a).mpr ha')) measure_empty))n:x:X b (SimpleFunc.eapprox f n).range, b * ν ((f' n x) ⁻¹' {b}) = (f' n x).lintegral ν All goals completed! 🐙 X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))hf'_int: (n : ) (x : X), (f' n x).lintegral ν = a (SimpleFunc.eapprox f n).range, a * ν ((f' n x) ⁻¹' {a}) := fun n x => Finset.sum_subset (fun a ha => Eq.mpr (id (Eq.trans lintegral_prod._simp_1 (Eq.trans lintegral_prod._simp_2 lintegral_prod._simp_3))) (lintegral_prod._proof_3 hf'_app n x (Eq.mp (Eq.trans lintegral_prod._simp_1 lintegral_prod._simp_2) ha))) fun a ha ha' => Eq.mpr (id lintegral_prod._simp_4) (Or.inr (Eq.trans (congrArg (⇑ν) ((SimpleFunc.preimage_eq_empty_iff (f' n x) a).mpr ha')) measure_empty))n: b (SimpleFunc.eapprox f n).range, _root_.Measurable fun x => b * ν ((f' n x) ⁻¹' {b}) intro a X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))hf'_int: (n : ) (x : X), (f' n x).lintegral ν = a (SimpleFunc.eapprox f n).range, a * ν ((f' n x) ⁻¹' {a}) := fun n x => Finset.sum_subset (fun a ha => Eq.mpr (id (Eq.trans lintegral_prod._simp_1 (Eq.trans lintegral_prod._simp_2 lintegral_prod._simp_3))) (lintegral_prod._proof_3 hf'_app n x (Eq.mp (Eq.trans lintegral_prod._simp_1 lintegral_prod._simp_2) ha))) fun a ha ha' => Eq.mpr (id lintegral_prod._simp_4) (Or.inr (Eq.trans (congrArg (⇑ν) ((SimpleFunc.preimage_eq_empty_iff (f' n x) a).mpr ha')) measure_empty))n:a:ℝ≥0∞ha:a (SimpleFunc.eapprox f n).range_root_.Measurable fun x => a * ν ((f' n x) ⁻¹' {a}) All goals completed! 🐙 _ = ∫⁻ x, n, (f' n x).lintegral ν μ := X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))hf'_int: (n : ) (x : X), (f' n x).lintegral ν = a (SimpleFunc.eapprox f n).range, a * ν ((f' n x) ⁻¹' {a}) := fun n x => Finset.sum_subset (fun a ha => Eq.mpr (id (Eq.trans lintegral_prod._simp_1 (Eq.trans lintegral_prod._simp_2 lintegral_prod._simp_3))) (lintegral_prod._proof_3 hf'_app n x (Eq.mp (Eq.trans lintegral_prod._simp_1 lintegral_prod._simp_2) ha))) fun a ha ha' => Eq.mpr (id lintegral_prod._simp_4) (Or.inr (Eq.trans (congrArg (⇑ν) ((SimpleFunc.preimage_eq_empty_iff (f' n x) a).mpr ha')) measure_empty)) n, ∫⁻ (x : X), (f' n x).lintegral ν μ = ∫⁻ (x : X), n, (f' n x).lintegral ν μ X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))hf'_int: (n : ) (x : X), (f' n x).lintegral ν = a (SimpleFunc.eapprox f n).range, a * ν ((f' n x) ⁻¹' {a}) := fun n x => Finset.sum_subset (fun a ha => Eq.mpr (id (Eq.trans lintegral_prod._simp_1 (Eq.trans lintegral_prod._simp_2 lintegral_prod._simp_3))) (lintegral_prod._proof_3 hf'_app n x (Eq.mp (Eq.trans lintegral_prod._simp_1 lintegral_prod._simp_2) ha))) fun a ha ha' => Eq.mpr (id lintegral_prod._simp_4) (Or.inr (Eq.trans (congrArg (⇑ν) ((SimpleFunc.preimage_eq_empty_iff (f' n x) a).mpr ha')) measure_empty)) (n : ), _root_.Measurable fun x => (f' n x).lintegral νX:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))hf'_int: (n : ) (x : X), (f' n x).lintegral ν = a (SimpleFunc.eapprox f n).range, a * ν ((f' n x) ⁻¹' {a}) := fun n x => Finset.sum_subset (fun a ha => Eq.mpr (id (Eq.trans lintegral_prod._simp_1 (Eq.trans lintegral_prod._simp_2 lintegral_prod._simp_3))) (lintegral_prod._proof_3 hf'_app n x (Eq.mp (Eq.trans lintegral_prod._simp_1 lintegral_prod._simp_2) ha))) fun a ha ha' => Eq.mpr (id lintegral_prod._simp_4) (Or.inr (Eq.trans (congrArg (⇑ν) ((SimpleFunc.preimage_eq_empty_iff (f' n x) a).mpr ha')) measure_empty))Monotone fun n x => (f' n x).lintegral ν X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))hf'_int: (n : ) (x : X), (f' n x).lintegral ν = a (SimpleFunc.eapprox f n).range, a * ν ((f' n x) ⁻¹' {a}) := fun n x => Finset.sum_subset (fun a ha => Eq.mpr (id (Eq.trans lintegral_prod._simp_1 (Eq.trans lintegral_prod._simp_2 lintegral_prod._simp_3))) (lintegral_prod._proof_3 hf'_app n x (Eq.mp (Eq.trans lintegral_prod._simp_1 lintegral_prod._simp_2) ha))) fun a ha ha' => Eq.mpr (id lintegral_prod._simp_4) (Or.inr (Eq.trans (congrArg (⇑ν) ((SimpleFunc.preimage_eq_empty_iff (f' n x) a).mpr ha')) measure_empty)) (n : ), _root_.Measurable fun x => (f' n x).lintegral ν X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))hf'_int: (n : ) (x : X), (f' n x).lintegral ν = a (SimpleFunc.eapprox f n).range, a * ν ((f' n x) ⁻¹' {a}) := fun n x => Finset.sum_subset (fun a ha => Eq.mpr (id (Eq.trans lintegral_prod._simp_1 (Eq.trans lintegral_prod._simp_2 lintegral_prod._simp_3))) (lintegral_prod._proof_3 hf'_app n x (Eq.mp (Eq.trans lintegral_prod._simp_1 lintegral_prod._simp_2) ha))) fun a ha ha' => Eq.mpr (id lintegral_prod._simp_4) (Or.inr (Eq.trans (congrArg (⇑ν) ((SimpleFunc.preimage_eq_empty_iff (f' n x) a).mpr ha')) measure_empty))n:_root_.Measurable fun x => (f' n x).lintegral ν X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))hf'_int: (n : ) (x : X), (f' n x).lintegral ν = a (SimpleFunc.eapprox f n).range, a * ν ((f' n x) ⁻¹' {a}) := fun n x => Finset.sum_subset (fun a ha => Eq.mpr (id (Eq.trans lintegral_prod._simp_1 (Eq.trans lintegral_prod._simp_2 lintegral_prod._simp_3))) (lintegral_prod._proof_3 hf'_app n x (Eq.mp (Eq.trans lintegral_prod._simp_1 lintegral_prod._simp_2) ha))) fun a ha ha' => Eq.mpr (id lintegral_prod._simp_4) (Or.inr (Eq.trans (congrArg (⇑ν) ((SimpleFunc.preimage_eq_empty_iff (f' n x) a).mpr ha')) measure_empty))n:_root_.Measurable fun x => a (SimpleFunc.eapprox f n).range, a * ν ((f' n x) ⁻¹' {a}) All goals completed! 🐙 X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))hf'_int: (n : ) (x : X), (f' n x).lintegral ν = a (SimpleFunc.eapprox f n).range, a * ν ((f' n x) ⁻¹' {a}) := fun n x => Finset.sum_subset (fun a ha => Eq.mpr (id (Eq.trans lintegral_prod._simp_1 (Eq.trans lintegral_prod._simp_2 lintegral_prod._simp_3))) (lintegral_prod._proof_3 hf'_app n x (Eq.mp (Eq.trans lintegral_prod._simp_1 lintegral_prod._simp_2) ha))) fun a ha ha' => Eq.mpr (id lintegral_prod._simp_4) (Or.inr (Eq.trans (congrArg (⇑ν) ((SimpleFunc.preimage_eq_empty_iff (f' n x) a).mpr ha')) measure_empty))Monotone fun n x => (f' n x).lintegral ν intro i X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))hf'_int: (n : ) (x : X), (f' n x).lintegral ν = a (SimpleFunc.eapprox f n).range, a * ν ((f' n x) ⁻¹' {a}) := fun n x => Finset.sum_subset (fun a ha => Eq.mpr (id (Eq.trans lintegral_prod._simp_1 (Eq.trans lintegral_prod._simp_2 lintegral_prod._simp_3))) (lintegral_prod._proof_3 hf'_app n x (Eq.mp (Eq.trans lintegral_prod._simp_1 lintegral_prod._simp_2) ha))) fun a ha ha' => Eq.mpr (id lintegral_prod._simp_4) (Or.inr (Eq.trans (congrArg (⇑ν) ((SimpleFunc.preimage_eq_empty_iff (f' n x) a).mpr ha')) measure_empty))i:j:i j (fun n x => (f' n x).lintegral ν) i (fun n x => (f' n x).lintegral ν) j X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))hf'_int: (n : ) (x : X), (f' n x).lintegral ν = a (SimpleFunc.eapprox f n).range, a * ν ((f' n x) ⁻¹' {a}) := fun n x => Finset.sum_subset (fun a ha => Eq.mpr (id (Eq.trans lintegral_prod._simp_1 (Eq.trans lintegral_prod._simp_2 lintegral_prod._simp_3))) (lintegral_prod._proof_3 hf'_app n x (Eq.mp (Eq.trans lintegral_prod._simp_1 lintegral_prod._simp_2) ha))) fun a ha ha' => Eq.mpr (id lintegral_prod._simp_4) (Or.inr (Eq.trans (congrArg (⇑ν) ((SimpleFunc.preimage_eq_empty_iff (f' n x) a).mpr ha')) measure_empty))i:j:hij:i j(fun n x => (f' n x).lintegral ν) i (fun n x => (f' n x).lintegral ν) j X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))hf'_int: (n : ) (x : X), (f' n x).lintegral ν = a (SimpleFunc.eapprox f n).range, a * ν ((f' n x) ⁻¹' {a}) := fun n x => Finset.sum_subset (fun a ha => Eq.mpr (id (Eq.trans lintegral_prod._simp_1 (Eq.trans lintegral_prod._simp_2 lintegral_prod._simp_3))) (lintegral_prod._proof_3 hf'_app n x (Eq.mp (Eq.trans lintegral_prod._simp_1 lintegral_prod._simp_2) ha))) fun a ha ha' => Eq.mpr (id lintegral_prod._simp_4) (Or.inr (Eq.trans (congrArg (⇑ν) ((SimpleFunc.preimage_eq_empty_iff (f' n x) a).mpr ha')) measure_empty))i:j:hij:i jx:X(fun n x => (f' n x).lintegral ν) i x (fun n x => (f' n x).lintegral ν) j x X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))hf'_int: (n : ) (x : X), (f' n x).lintegral ν = a (SimpleFunc.eapprox f n).range, a * ν ((f' n x) ⁻¹' {a}) := fun n x => Finset.sum_subset (fun a ha => Eq.mpr (id (Eq.trans lintegral_prod._simp_1 (Eq.trans lintegral_prod._simp_2 lintegral_prod._simp_3))) (lintegral_prod._proof_3 hf'_app n x (Eq.mp (Eq.trans lintegral_prod._simp_1 lintegral_prod._simp_2) ha))) fun a ha ha' => Eq.mpr (id lintegral_prod._simp_4) (Or.inr (Eq.trans (congrArg (⇑ν) ((SimpleFunc.preimage_eq_empty_iff (f' n x) a).mpr ha')) measure_empty))i:j:hij:i jx:Xf' i x f' j x X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))hf'_int: (n : ) (x : X), (f' n x).lintegral ν = a (SimpleFunc.eapprox f n).range, a * ν ((f' n x) ⁻¹' {a}) := fun n x => Finset.sum_subset (fun a ha => Eq.mpr (id (Eq.trans lintegral_prod._simp_1 (Eq.trans lintegral_prod._simp_2 lintegral_prod._simp_3))) (lintegral_prod._proof_3 hf'_app n x (Eq.mp (Eq.trans lintegral_prod._simp_1 lintegral_prod._simp_2) ha))) fun a ha ha' => Eq.mpr (id lintegral_prod._simp_4) (Or.inr (Eq.trans (congrArg (⇑ν) ((SimpleFunc.preimage_eq_empty_iff (f' n x) a).mpr ha')) measure_empty))i:j:hij:i jx:Xy:Y(f' i x) y (f' j x) y X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))hf'_int: (n : ) (x : X), (f' n x).lintegral ν = a (SimpleFunc.eapprox f n).range, a * ν ((f' n x) ⁻¹' {a}) := fun n x => Finset.sum_subset (fun a ha => Eq.mpr (id (Eq.trans lintegral_prod._simp_1 (Eq.trans lintegral_prod._simp_2 lintegral_prod._simp_3))) (lintegral_prod._proof_3 hf'_app n x (Eq.mp (Eq.trans lintegral_prod._simp_1 lintegral_prod._simp_2) ha))) fun a ha ha' => Eq.mpr (id lintegral_prod._simp_4) (Or.inr (Eq.trans (congrArg (⇑ν) ((SimpleFunc.preimage_eq_empty_iff (f' n x) a).mpr ha')) measure_empty))i:j:hij:i jx:Xy:Y((SimpleFunc.eapprox f i).comp (Prod.mk x) ) y ((SimpleFunc.eapprox f j).comp (Prod.mk x) ) y All goals completed! 🐙 _ = ∫⁻ (x : X), ∫⁻ (y : Y), f (x, y) ν μ := X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))hf'_int: (n : ) (x : X), (f' n x).lintegral ν = a (SimpleFunc.eapprox f n).range, a * ν ((f' n x) ⁻¹' {a}) := fun n x => Finset.sum_subset (fun a ha => Eq.mpr (id (Eq.trans lintegral_prod._simp_1 (Eq.trans lintegral_prod._simp_2 lintegral_prod._simp_3))) (lintegral_prod._proof_3 hf'_app n x (Eq.mp (Eq.trans lintegral_prod._simp_1 lintegral_prod._simp_2) ha))) fun a ha ha' => Eq.mpr (id lintegral_prod._simp_4) (Or.inr (Eq.trans (congrArg (⇑ν) ((SimpleFunc.preimage_eq_empty_iff (f' n x) a).mpr ha')) measure_empty))∫⁻ (x : X), n, (f' n x).lintegral ν μ = ∫⁻ (x : X), ∫⁻ (y : Y), f (x, y) ν μ X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))hf'_int: (n : ) (x : X), (f' n x).lintegral ν = a (SimpleFunc.eapprox f n).range, a * ν ((f' n x) ⁻¹' {a}) := fun n x => Finset.sum_subset (fun a ha => Eq.mpr (id (Eq.trans lintegral_prod._simp_1 (Eq.trans lintegral_prod._simp_2 lintegral_prod._simp_3))) (lintegral_prod._proof_3 hf'_app n x (Eq.mp (Eq.trans lintegral_prod._simp_1 lintegral_prod._simp_2) ha))) fun a ha ha' => Eq.mpr (id lintegral_prod._simp_4) (Or.inr (Eq.trans (congrArg (⇑ν) ((SimpleFunc.preimage_eq_empty_iff (f' n x) a).mpr ha')) measure_empty)) (a : X), n, (f' n a).lintegral ν = ∫⁻ (y : Y), f (a, y) ν X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))hf'_int: (n : ) (x : X), (f' n x).lintegral ν = a (SimpleFunc.eapprox f n).range, a * ν ((f' n x) ⁻¹' {a}) := fun n x => Finset.sum_subset (fun a ha => Eq.mpr (id (Eq.trans lintegral_prod._simp_1 (Eq.trans lintegral_prod._simp_2 lintegral_prod._simp_3))) (lintegral_prod._proof_3 hf'_app n x (Eq.mp (Eq.trans lintegral_prod._simp_1 lintegral_prod._simp_2) ha))) fun a ha ha' => Eq.mpr (id lintegral_prod._simp_4) (Or.inr (Eq.trans (congrArg (⇑ν) ((SimpleFunc.preimage_eq_empty_iff (f' n x) a).mpr ha')) measure_empty))x:X n, (f' n x).lintegral ν = ∫⁻ (y : Y), f (x, y) ν X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))hf'_int: (n : ) (x : X), (f' n x).lintegral ν = a (SimpleFunc.eapprox f n).range, a * ν ((f' n x) ⁻¹' {a}) := fun n x => Finset.sum_subset (fun a ha => Eq.mpr (id (Eq.trans lintegral_prod._simp_1 (Eq.trans lintegral_prod._simp_2 lintegral_prod._simp_3))) (lintegral_prod._proof_3 hf'_app n x (Eq.mp (Eq.trans lintegral_prod._simp_1 lintegral_prod._simp_2) ha))) fun a ha ha' => Eq.mpr (id lintegral_prod._simp_4) (Or.inr (Eq.trans (congrArg (⇑ν) ((SimpleFunc.preimage_eq_empty_iff (f' n x) a).mpr ha')) measure_empty))x:X n, (f' n x).lintegral ν = ∫⁻ (y : Y), n, (f' n x) y ν X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))hf'_int: (n : ) (x : X), (f' n x).lintegral ν = a (SimpleFunc.eapprox f n).range, a * ν ((f' n x) ⁻¹' {a}) := fun n x => Finset.sum_subset (fun a ha => Eq.mpr (id (Eq.trans lintegral_prod._simp_1 (Eq.trans lintegral_prod._simp_2 lintegral_prod._simp_3))) (lintegral_prod._proof_3 hf'_app n x (Eq.mp (Eq.trans lintegral_prod._simp_1 lintegral_prod._simp_2) ha))) fun a ha ha' => Eq.mpr (id lintegral_prod._simp_4) (Or.inr (Eq.trans (congrArg (⇑ν) ((SimpleFunc.preimage_eq_empty_iff (f' n x) a).mpr ha')) measure_empty))x:Xhlin_iSup:∫⁻ (y : Y), n, (f' n x) y ν = n, ∫⁻ (y : Y), (f' n x) y ν := lintegral_iSup (fun n => SimpleFunc.measurable (f' n x)) fun i j hij y => SimpleFunc.monotone_eapprox f hij (x, y) n, (f' n x).lintegral ν = ∫⁻ (y : Y), n, (f' n x) y ν X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))hf'_int: (n : ) (x : X), (f' n x).lintegral ν = a (SimpleFunc.eapprox f n).range, a * ν ((f' n x) ⁻¹' {a}) := fun n x => Finset.sum_subset (fun a ha => Eq.mpr (id (Eq.trans lintegral_prod._simp_1 (Eq.trans lintegral_prod._simp_2 lintegral_prod._simp_3))) (lintegral_prod._proof_3 hf'_app n x (Eq.mp (Eq.trans lintegral_prod._simp_1 lintegral_prod._simp_2) ha))) fun a ha ha' => Eq.mpr (id lintegral_prod._simp_4) (Or.inr (Eq.trans (congrArg (⇑ν) ((SimpleFunc.preimage_eq_empty_iff (f' n x) a).mpr ha')) measure_empty))x:Xhlin_iSup:∫⁻ (y : Y), n, (f' n x) y ν = n, ∫⁻ (y : Y), (f' n x) y ν := lintegral_iSup (fun n => SimpleFunc.measurable (f' n x)) fun i j hij y => SimpleFunc.monotone_eapprox f hij (x, y) n, (f' n x).lintegral ν = n, ∫⁻ (y : Y), (f' n x) y ν X:Type u_1Y:Type u_2inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable ff': X SimpleFunc Y ℝ≥0∞ := fun n x => (SimpleFunc.eapprox f n).comp (Prod.mk x) hf'_app: (n : ) (x : X) (y : Y), (f' n x) y = (SimpleFunc.eapprox f n) (x, y) := fun n x y => of_eq_true (eq_self ((SimpleFunc.eapprox f n) (x, y)))hf': (n : ) (a : ℝ≥0∞), Measurable fun x => ν ((f' n x) ⁻¹' {a}) := fun n a => measurable_measure_prodMk_left (SimpleFunc.measurableSet_fiber (SimpleFunc.eapprox f n) a)hf'sup: (x : X) (y : Y), n, (f' n x) y = f (x, y) := fun x y => id (Eq.mpr (id (congrArg (fun _a => _a = f (x, y)) (SimpleFunc.iSup_eapprox_apply hf (x, y)))) (Eq.refl (f (x, y))))hf'_int: (n : ) (x : X), (f' n x).lintegral ν = a (SimpleFunc.eapprox f n).range, a * ν ((f' n x) ⁻¹' {a}) := fun n x => Finset.sum_subset (fun a ha => Eq.mpr (id (Eq.trans lintegral_prod._simp_1 (Eq.trans lintegral_prod._simp_2 lintegral_prod._simp_3))) (lintegral_prod._proof_3 hf'_app n x (Eq.mp (Eq.trans lintegral_prod._simp_1 lintegral_prod._simp_2) ha))) fun a ha ha' => Eq.mpr (id lintegral_prod._simp_4) (Or.inr (Eq.trans (congrArg (⇑ν) ((SimpleFunc.preimage_eq_empty_iff (f' n x) a).mpr ha')) measure_empty))x:Xhlin_iSup:∫⁻ (y : Y), n, (f' n x) y ν = n, ∫⁻ (y : Y), (f' n x) y ν := lintegral_iSup (fun n => SimpleFunc.measurable (f' n x)) fun i j hij y => SimpleFunc.monotone_eapprox f hij (x, y)n:(f' n x).lintegral ν = ∫⁻ (y : Y), (f' n x) y ν All goals completed! 🐙
theorem prod_swap [SFinite μ] [SFinite ν] : map Prod.swap (ν.prod μ) = μ.prod ν := X:Type u_1Y:Type u_2inst✝³:MeasurableSpace Xinst✝²:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝¹:SFinite μinst✝:SFinite νmap Prod.swap (ν.prod μ) = μ.prod ν simp_rw X:Type u_1Y:Type u_2inst✝³:MeasurableSpace Xinst✝²:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝¹:SFinite μinst✝:SFinite νmap Prod.swap (ν.prod μ) = μ.prod ν sum_sfiniteSeq ν, sum_sfiniteSeq μ] simp_rw X:Type u_1Y:Type u_2inst✝³:MeasurableSpace Xinst✝²:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝¹:SFinite μinst✝:SFinite νmap Prod.swap (Measure.prod (sum (sfiniteSeq ν)) (sum (sfiniteSeq μ))) = Measure.prod (sum (sfiniteSeq μ)) (sum (sfiniteSeq ν))sum_prod_sum] X:Type u_1Y:Type u_2inst✝³:MeasurableSpace Xinst✝²:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝¹:SFinite μinst✝:SFinite νA:Set (X × Y)hA:_root_.MeasurableSet A(map Prod.swap (sum fun i => sum fun j => Measure.prod (sfiniteSeq ν i) (sfiniteSeq μ j))) A = (sum fun i => sum fun j => Measure.prod (sfiniteSeq μ i) (sfiniteSeq ν j)) A simp_rw X:Type u_1Y:Type u_2inst✝³:MeasurableSpace Xinst✝²:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝¹:SFinite μinst✝:SFinite νA:Set (X × Y)hA:_root_.MeasurableSet A(map Prod.swap (sum fun i => sum fun j => Measure.prod (sfiniteSeq ν i) (sfiniteSeq μ j))) A = (sum fun i => sum fun j => Measure.prod (sfiniteSeq μ i) (sfiniteSeq ν j)) Asum_apply _ hA] simp_rw X:Type u_1Y:Type u_2inst✝³:MeasurableSpace Xinst✝²:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝¹:SFinite μinst✝:SFinite νA:Set (X × Y)hA:_root_.MeasurableSet A(map Prod.swap (sum fun i => sum fun j => Measure.prod (sfiniteSeq ν i) (sfiniteSeq μ j))) A = ∑' (i : ) (i_1 : ), (Measure.prod (sfiniteSeq μ i) (sfiniteSeq ν i_1)) Amap_apply measurable_swap hA] simp_rw X:Type u_1Y:Type u_2inst✝³:MeasurableSpace Xinst✝²:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝¹:SFinite μinst✝:SFinite νA:Set (X × Y)hA:_root_.MeasurableSet A(sum fun i => sum fun j => Measure.prod (sfiniteSeq ν i) (sfiniteSeq μ j)) (Prod.swap ⁻¹' A) = ∑' (i : ) (i_1 : ), (Measure.prod (sfiniteSeq μ i) (sfiniteSeq ν i_1)) Asum_apply _ (measurable_swap hA)] X:Type u_1Y:Type u_2inst✝³:MeasurableSpace Xinst✝²:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝¹:SFinite μinst✝:SFinite νA:Set (X × Y)hA:_root_.MeasurableSet A∑' (b : ) (a : ), (Measure.prod (sfiniteSeq ν a) (sfiniteSeq μ b)) (Prod.swap ⁻¹' A) = ∑' (i : ) (i_1 : ), (Measure.prod (sfiniteSeq μ i) (sfiniteSeq ν i_1)) A X:Type u_1Y:Type u_2inst✝³:MeasurableSpace Xinst✝²:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝¹:SFinite μinst✝:SFinite νA:Set (X × Y)hA:_root_.MeasurableSet Ai:j:(Measure.prod (sfiniteSeq ν j) (sfiniteSeq μ i)) (Prod.swap ⁻¹' A) = (Measure.prod (sfiniteSeq μ i) (sfiniteSeq ν j)) A X:Type u_1Y:Type u_2inst✝³:MeasurableSpace Xinst✝²:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝¹:SFinite μinst✝:SFinite νA:Set (X × Y)hA:_root_.MeasurableSet Ai:j:(map Prod.swap (Measure.prod (sfiniteSeq μ i) (sfiniteSeq ν j))) (Prod.swap ⁻¹' A) = (Measure.prod (sfiniteSeq μ i) (sfiniteSeq ν j)) A X:Type u_1Y:Type u_2inst✝³:MeasurableSpace Xinst✝²:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝¹:SFinite μinst✝:SFinite νA:Set (X × Y)hA:_root_.MeasurableSet Ai:j:(Measure.prod (sfiniteSeq μ i) (sfiniteSeq ν j)) (Prod.swap ⁻¹' (Prod.swap ⁻¹' A)) = (Measure.prod (sfiniteSeq μ i) (sfiniteSeq ν j)) A X:Type u_1Y:Type u_2inst✝³:MeasurableSpace Xinst✝²:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝¹:SFinite μinst✝:SFinite νA:Set (X × Y)hA:_root_.MeasurableSet Ai:j:(Measure.prod (sfiniteSeq μ i) (sfiniteSeq ν j)) ((fun x => x.swap.swap) ⁻¹' A) = (Measure.prod (sfiniteSeq μ i) (sfiniteSeq ν j)) A All goals completed! 🐙
theorem lintegral_prod_symm [SFinite μ] [SFinite ν] (f : X × Y ℝ≥0∞) (hf : Measurable f) : ∫⁻ z, f z μ.prod ν = ∫⁻ y, ∫⁻ x, f (x, y) μ ν := X:Type u_1Y:Type u_2inst✝³:MeasurableSpace Xinst✝²:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝¹:SFinite μinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable f∫⁻ (z : X × Y), f z μ.prod ν = ∫⁻ (y : Y), ∫⁻ (x : X), f (x, y) μ ν X:Type u_1Y:Type u_2inst✝³:MeasurableSpace Xinst✝²:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝¹:SFinite μinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable f∫⁻ (z : Y × X), f z.swap ν.prod μ = ∫⁻ (y : Y), ∫⁻ (x : X), f (x, y) μ ν X:Type u_1Y:Type u_2inst✝³:MeasurableSpace Xinst✝²:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝¹:SFinite μinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable f∫⁻ (x : Y), ∫⁻ (y : X), f (x, y).swap μ ν = ∫⁻ (y : Y), ∫⁻ (x : X), f (x, y) μ ν apply lintegral_congr (fun y lintegral_congr (fun x X:Type u_1Y:Type u_2inst✝³:MeasurableSpace Xinst✝²:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝¹:SFinite μinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable fy:Yx:Xf (y, x).swap = f (x, y) All goals completed! 🐙))
/-- **Tonelli's Theorem** -/ theorem lintegral_prod_swap' [SFinite μ] [SFinite ν] (f : X × Y ℝ≥0∞) (hf : Measurable f) : ∫⁻ x, ∫⁻ y, f (x, y) ν μ = ∫⁻ y, ∫⁻ x, f (x, y) μ ν := X:Type u_1Y:Type u_2inst✝³:MeasurableSpace Xinst✝²:MeasurableSpace Yμ:Measure Xν:Measure Yinst✝¹:SFinite μinst✝:SFinite νf:X × Y ℝ≥0∞hf:Measurable f∫⁻ (x : X), ∫⁻ (y : Y), f (x, y) ν μ = ∫⁻ (y : Y), ∫⁻ (x : X), f (x, y) μ ν All goals completed! 🐙