9.1. 直積測度
X と Y を可測空間とする。
集合 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 Y⊢ Measurable 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 A⊢ Prod.fst ⁻¹' A ∈ GenProd X Y
X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace YA:Set XhA:_root_.MeasurableSet A⊢ A ×ˢ 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 Y⊢ Measurable 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 B⊢ Prod.snd ⁻¹' B ∈ GenProd X Y
X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace YB:Set YhB:_root_.MeasurableSet B⊢ univ ×ˢ 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 を可測空間とし、\mu を X 上の測度とする。
\mu が S-有限 であるとは、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
X と Y を可測空間とする。
\mu を X 上の測度、\nu を Y 上の測度とし、\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 A⊢ Measurable 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 Y⊢ 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)A:Set XhA:MeasurableSet AB:Set Y⊢ Measurable 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 Y⊢ Measurable 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 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)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:X⊢ Pairwise (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 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 A⊢ Measurable 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 A⊢ Measurable fun x => (sum (sfiniteSeq ν)) (Prod.mk x ⁻¹' A)Measure.sum_apply _ (measurable_prodMk_left hA)]
All goals completed! 🐙
X と Y を可測空間とし、\mu を X 上の測度、\nu を Y 上の測度とする。
\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 X と B \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 B⊢ MeasurableSet (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]
X と Y を可測空間とする。
\mu を X 上の測度、\nu を Y 上の測度とし、\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).range⊢ a ∈ (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).range⊢ a ∉ (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).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).range⊢ a = 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).range⊢ a * (μ.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).range⊢ a * ∫⁻ (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:X⊢ f' 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:X⊢ f (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! 🐙