測度論と積分

7.7. カーネル積分🔗

定義.

可測空間 X に対して、\Measure(X) \left\{ \mu \in \Measure(X) \mid \mu(A) \in B \right\} で生成される σ-代数を入れることで、\Measure(X) を可測空間とみなす。 ただし A \subseteq X は可測、B \subseteq [0,\infty] は可測とする。 特に、任意の可測集合 A \subseteq X に対して評価写像 \mu \mapsto \mu(A) は可測である。

Lean code
inductive Measure.MeasurableGen (X : Type*) [MeasurableSpace X] : Set (Set (Measure X)) | proj (A : Set X) (hs : MeasurableSet A) (B : Set ℝ≥0∞) (hB : MeasurableSet B) : Measure.MeasurableGen X ({μ | μ A B})
instance Measure.instMeasurableSpace : MeasurableSpace (Measure X) := MeasurableSpace.generateFrom (Measure.MeasurableGen X)
theorem Measure.measurable_coe {A : Set X} (hA : MeasurableSet A) : Measurable fun μ : Measure X μ A := fun {B} hB MeasurableSpace.measurableSet_generateFrom (MeasurableGen.proj A hA B hB)
補題.

写像 \mu : X \to \Measure(Y) が可測であることを示すには、任意の可測集合 A \subseteq Y に対してスカラー値写像 x \mapsto \mu(x)(A) が可測であることを示せば十分である。

Lean code
theorem measurable_of_measurable_coe (μ : X Measure Y) (h : (s : Set Y), MeasurableSet s Measurable fun x μ x s) : Measurable μ := X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yμ:X Measure Yh: (s : Set Y), MeasurableSet s Measurable fun x => (μ x) sMeasurable μ intro s X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yμ:X Measure Yh: (s : Set Y), MeasurableSet s Measurable fun x => (μ x) ss:Set (Measure Y)hs:MeasurableSet sMeasurableSet (μ ⁻¹' s) induction hs with X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yμ:X Measure Yh: (s : Set Y), MeasurableSet s Measurable fun x => (μ x) ss✝:Set (Measure Y)s:Set (Measure Y)hs:s Measure.MeasurableGen YMeasurableSet (μ ⁻¹' s) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yμ:X Measure Yh: (s : Set Y), MeasurableSet s Measurable fun x => (μ x) ss✝:Set (Measure Y)s:Set Yhs:MeasurableSet st:Set ℝ≥0∞ht:MeasurableSet tMeasurableSet (μ ⁻¹' {μ | μ s t}) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yμ:X Measure Yh: (s : Set Y), MeasurableSet s Measurable fun x => (μ x) ss✝:Set (Measure Y)s:Set Yhs:MeasurableSet st:Set ℝ≥0∞ht:MeasurableSet tMeasurable fun a => (μ a) s t All goals completed! 🐙 X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yμ:X Measure Yh: (s : Set Y), MeasurableSet s Measurable fun x => (μ x) ss:Set (Measure Y)MeasurableSet (μ ⁻¹' ) All goals completed! 🐙 X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yμ:X Measure Yh: (s : Set Y), MeasurableSet s Measurable fun x => (μ x) ss✝:Set (Measure Y)s:Set (Measure Y)hs:MeasurableSpace.GenerateMeasurable (Measure.MeasurableGen Y) sih:MeasurableSet (μ ⁻¹' s)MeasurableSet (μ ⁻¹' s) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yμ:X Measure Yh: (s : Set Y), MeasurableSet s Measurable fun x => (μ x) ss✝:Set (Measure Y)s:Set (Measure Y)hs:MeasurableSpace.GenerateMeasurable (Measure.MeasurableGen Y) sih:MeasurableSet (μ ⁻¹' s)MeasurableSet (μ ⁻¹' s) All goals completed! 🐙 X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yμ:X Measure Yh: (s : Set Y), MeasurableSet s Measurable fun x => (μ x) ss:Set (Measure Y)A: Set (Measure Y)hAd: (n : ), MeasurableSpace.GenerateMeasurable (Measure.MeasurableGen Y) (A n)ihA: (n : ), MeasurableSet (μ ⁻¹' A n)MeasurableSet (μ ⁻¹' i, A i) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yμ:X Measure Yh: (s : Set Y), MeasurableSet s Measurable fun x => (μ x) ss:Set (Measure Y)A: Set (Measure Y)hAd: (n : ), MeasurableSpace.GenerateMeasurable (Measure.MeasurableGen Y) (A n)ihA: (n : ), MeasurableSet (μ ⁻¹' A n)MeasurableSet (⋃ i, μ ⁻¹' A i) All goals completed! 🐙
補題.

f : X \to [0,\infty] が可測ならば、写像 \mu \mapsto \underline{\int}_{x \in X} f(x)\,d\mu \Measure(X) から [0,\infty] への可測写像である。

Lean code
@[fun_prop] theorem Measure.measurable_lintegral {f : X ℝ≥0∞} (hf : Measurable f) : Measurable fun μ : Measure X ∫⁻ x, f x μ := X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞hf:Measurable fMeasurable fun μ => ∫⁻ (x : X), f x μ X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞hf:Measurable fMeasurable fun μ => n, x (SimpleFunc.eapprox f n).range, x * μ ((SimpleFunc.eapprox f n) ⁻¹' {x}) X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞hf:Measurable fn:i:ℝ≥0∞x✝:i (SimpleFunc.eapprox f n).rangeMeasurable fun μ => i * μ ((SimpleFunc.eapprox f n) ⁻¹' {i}) X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞hf:Measurable fn:i:ℝ≥0∞x✝:i (SimpleFunc.eapprox f n).rangeMeasurable fun μ => μ ((SimpleFunc.eapprox f n) ⁻¹' {i}) All goals completed! 🐙
定義.

XY を可測空間とし、 \nu : X \to \Measure(Y) を可測写像とする。 X 上の測度 \mu に対して、Y 上の測度 \mathcal{K}_{\nu}(\mu) を、可測集合 A \subseteq Y に対して \mathcal{K}_{\nu}(\mu)(A) \coloneqq \underline{\int}_{x \in X} \nu_x(A)\,d\mu で定める。

Lean code
open Classical in def Measure.bind (f : X Measure Y) (μ : Measure X) : Measure Y := if hf : Measurable f then Measure.ofMeasurable (fun A _ ∫⁻ x, f x A μ) (X:Type u_1Y:Type u_2Z:Type u_3inst✝²:MeasurableSpace Xinst✝¹:MeasurableSpace Yinst✝:MeasurableSpace Zf:X Measure Yμ:Measure Xhf:Measurable f(fun A x => ∫⁻ (x : X), (f x) A μ) = 0 All goals completed! 🐙) <| fun A hA hAd calc ∫⁻ (x : X), (f x) ( i, A i) μ _ = ∫⁻ (x : X), ∑' (i : ), (f x) (A i) μ := lintegral_congr (fun x measure_iUnion hAd hA) _ = ∑' (i : ), ∫⁻ (x : X), (f x) (A i) μ := lintegral_tsum (fun n ((measurable_coe (hA n)).comp hf).aemeasurable) else 0
@[simp] theorem Measure.bind_apply (f : X Measure Y) (hf : Measurable f) (μ : Measure X) (A : Set Y) (hA : MeasurableSet A) : bind f μ A = ∫⁻ x, f x A μ := X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Measure Yhf:Measurable fμ:Measure XA:Set YhA:MeasurableSet A(bind f μ) A = ∫⁻ (x : X), (f x) A μ X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Measure Yhf:Measurable fμ:Measure XA:Set YhA:MeasurableSet A(Measure.ofMeasurable (fun A x => ∫⁻ (x : X), (f x) A μ) ) A = ∫⁻ (x : X), (f x) A μ All goals completed! 🐙
補題.

f : Y \to [0,\infty] を可測とする。 このとき \underline{\int}_{y \in Y} f(y)\,d(\mathcal{K}_{\nu}(\mu)) = \underline{\int}_{x \in X} \underline{\int}_{y \in Y} f(y)\,d\nu_x\,d\mu. が成り立つ。

Lean code
theorem lintegral_bind {m : Measure X} {μ : X Measure Y} {f : Y ℝ≥0∞} ( : Measurable μ) (hf : Measurable f) : ∫⁻ y, f y Measure.bind μ m = ∫⁻ x, ∫⁻ y, f y μ x m := X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable f∫⁻ (y : Y), f y Measure.bind μ m = ∫⁻ (x : X), ∫⁻ (y : Y), f y μ x m X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable f n, (SimpleFunc.eapprox f n).lintegral (Measure.bind μ m) = ∫⁻ (x : X), ∫⁻ (y : Y), f y μ x m X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable f n, x (SimpleFunc.eapprox f n).range, x * (Measure.bind μ m) ((SimpleFunc.eapprox f n) ⁻¹' {x}) = ∫⁻ (x : X), ∫⁻ (y : Y), f y μ x m calc n, a (SimpleFunc.eapprox f n).range, a * (Measure.bind μ m) ((SimpleFunc.eapprox f n) ⁻¹' {a}) _ = n, a (SimpleFunc.eapprox f n).range, a * (∫⁻ x, μ x ((SimpleFunc.eapprox f n) ⁻¹' {a}) m) := X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable f n, a (SimpleFunc.eapprox f n).range, a * (Measure.bind μ m) ((SimpleFunc.eapprox f n) ⁻¹' {a}) = n, a (SimpleFunc.eapprox f n).range, a * ∫⁻ (x : X), (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) m X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable f(fun n => a (SimpleFunc.eapprox f n).range, a * (Measure.bind μ m) ((SimpleFunc.eapprox f n) ⁻¹' {a})) = fun n => a (SimpleFunc.eapprox f n).range, a * ∫⁻ (x : X), (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) m X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fn: a (SimpleFunc.eapprox f n).range, a * (Measure.bind μ m) ((SimpleFunc.eapprox f n) ⁻¹' {a}) = a (SimpleFunc.eapprox f n).range, a * ∫⁻ (x : X), (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) m X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fn:(fun a => a * (Measure.bind μ m) ((SimpleFunc.eapprox f n) ⁻¹' {a})) = fun a => a * ∫⁻ (x : X), (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) m X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fn:a:ℝ≥0∞a * (Measure.bind μ m) ((SimpleFunc.eapprox f n) ⁻¹' {a}) = a * ∫⁻ (x : X), (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) m X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fn:a:ℝ≥0∞(Measure.bind μ m) ((SimpleFunc.eapprox f n) ⁻¹' {a}) = ∫⁻ (x : X), (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) m X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fn:a:ℝ≥0∞MeasurableSet ((SimpleFunc.eapprox f n) ⁻¹' {a}) All goals completed! 🐙 _ = n, a (SimpleFunc.eapprox f n).range, (∫⁻ x, a * μ x ((SimpleFunc.eapprox f n) ⁻¹' {a}) m) := X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable f n, a (SimpleFunc.eapprox f n).range, a * ∫⁻ (x : X), (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) m = n, a (SimpleFunc.eapprox f n).range, ∫⁻ (x : X), a * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) m X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable f(fun n => a (SimpleFunc.eapprox f n).range, a * ∫⁻ (x : X), (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) m) = fun n => a (SimpleFunc.eapprox f n).range, ∫⁻ (x : X), a * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) m X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fn: a (SimpleFunc.eapprox f n).range, a * ∫⁻ (x : X), (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) m = a (SimpleFunc.eapprox f n).range, ∫⁻ (x : X), a * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) m X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fn:(fun a => a * ∫⁻ (x : X), (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) m) = fun a => ∫⁻ (x : X), a * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) m X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fn:a:ℝ≥0∞a * ∫⁻ (x : X), (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) m = ∫⁻ (x : X), a * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) m X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fn:a:ℝ≥0∞Measurable fun a_1 => (μ a_1) ((SimpleFunc.eapprox f n) ⁻¹' {a}) have : (fun x (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a})) = ((fun ν : Measure Y ν ((SimpleFunc.eapprox f n) ⁻¹' {a})) μ) := X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable f n, a (SimpleFunc.eapprox f n).range, a * ∫⁻ (x : X), (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) m = n, a (SimpleFunc.eapprox f n).range, ∫⁻ (x : X), a * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) m All goals completed! 🐙 X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fn:a:ℝ≥0∞this:(fun x => (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a})) = (fun ν => ν ((SimpleFunc.eapprox f n) ⁻¹' {a})) μ := Eq.refl fun x => (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a})Measurable ((fun ν => ν ((SimpleFunc.eapprox f n) ⁻¹' {a})) μ) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fn:a:ℝ≥0∞this:(fun x => (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a})) = (fun ν => ν ((SimpleFunc.eapprox f n) ⁻¹' {a})) μ := Eq.refl fun x => (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a})Measurable fun ν => ν ((SimpleFunc.eapprox f n) ⁻¹' {a}) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fn:a:ℝ≥0∞this:(fun x => (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a})) = (fun ν => ν ((SimpleFunc.eapprox f n) ⁻¹' {a})) μ := Eq.refl fun x => (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a})MeasurableSet ((SimpleFunc.eapprox f n) ⁻¹' {a}) All goals completed! 🐙 _ = n, (∫⁻ x, a (SimpleFunc.eapprox f n).range, a * μ x ((SimpleFunc.eapprox f n) ⁻¹' {a}) m) := X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable f n, a (SimpleFunc.eapprox f n).range, ∫⁻ (x : X), a * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) m = n, ∫⁻ (x : X), a (SimpleFunc.eapprox f n).range, a * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) m X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable f(fun n => a (SimpleFunc.eapprox f n).range, ∫⁻ (x : X), a * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) m) = fun n => ∫⁻ (x : X), a (SimpleFunc.eapprox f n).range, a * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) m X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fn: a (SimpleFunc.eapprox f n).range, ∫⁻ (x : X), a * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) m = ∫⁻ (x : X), a (SimpleFunc.eapprox f n).range, a * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) m X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fn: b (SimpleFunc.eapprox f n).range, AEMeasurable (fun x => b * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {b})) m intro a X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fn:a:ℝ≥0∞ha:a (SimpleFunc.eapprox f n).rangeAEMeasurable (fun x => a * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a})) m X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fn:a:ℝ≥0∞ha:a (SimpleFunc.eapprox f n).rangeMeasurable fun x => a * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fn:a:ℝ≥0∞ha:a (SimpleFunc.eapprox f n).rangeMeasurable fun x => aX:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fn:a:ℝ≥0∞ha:a (SimpleFunc.eapprox f n).rangeMeasurable fun x => (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fn:a:ℝ≥0∞ha:a (SimpleFunc.eapprox f n).rangeMeasurable fun x => a All goals completed! 🐙 X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fn:a:ℝ≥0∞ha:a (SimpleFunc.eapprox f n).rangeMeasurable fun x => (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) have : (fun x (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a})) = ((fun ν : Measure Y ν ((SimpleFunc.eapprox f n) ⁻¹' {a})) μ) := X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable f n, a (SimpleFunc.eapprox f n).range, ∫⁻ (x : X), a * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) m = n, ∫⁻ (x : X), a (SimpleFunc.eapprox f n).range, a * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) m All goals completed! 🐙 X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fn:a:ℝ≥0∞ha:a (SimpleFunc.eapprox f n).rangethis:(fun x => (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a})) = (fun ν => ν ((SimpleFunc.eapprox f n) ⁻¹' {a})) μ := Eq.refl fun x => (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a})Measurable ((fun ν => ν ((SimpleFunc.eapprox f n) ⁻¹' {a})) μ) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fn:a:ℝ≥0∞ha:a (SimpleFunc.eapprox f n).rangethis:(fun x => (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a})) = (fun ν => ν ((SimpleFunc.eapprox f n) ⁻¹' {a})) μ := Eq.refl fun x => (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a})Measurable fun ν => ν ((SimpleFunc.eapprox f n) ⁻¹' {a}) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fn:a:ℝ≥0∞ha:a (SimpleFunc.eapprox f n).rangethis:(fun x => (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a})) = (fun ν => ν ((SimpleFunc.eapprox f n) ⁻¹' {a})) μ := Eq.refl fun x => (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a})MeasurableSet ((SimpleFunc.eapprox f n) ⁻¹' {a}) All goals completed! 🐙 _ = (∫⁻ x, n, a (SimpleFunc.eapprox f n).range, a * μ x ((SimpleFunc.eapprox f n) ⁻¹' {a}) m) := X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable f n, ∫⁻ (x : X), a (SimpleFunc.eapprox f n).range, a * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) m = ∫⁻ (x : X), n, a (SimpleFunc.eapprox f n).range, a * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) m X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable f (n : ), AEMeasurable (fun x => a (SimpleFunc.eapprox f n).range, a * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a})) mX:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable f∀ᵐ (x : X) m, Monotone fun n => a (SimpleFunc.eapprox f n).range, a * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable f (n : ), AEMeasurable (fun x => a (SimpleFunc.eapprox f n).range, a * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a})) m X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fn:AEMeasurable (fun x => a (SimpleFunc.eapprox f n).range, a * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a})) m X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fn:Measurable fun x => a (SimpleFunc.eapprox f n).range, a * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fn: i (SimpleFunc.eapprox f n).range, Measurable fun x => i * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {i}) intro a X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fn:a:ℝ≥0∞ha:a (SimpleFunc.eapprox f n).rangeMeasurable fun x => a * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fn:a:ℝ≥0∞ha:a (SimpleFunc.eapprox f n).rangeMeasurable fun x => (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) have : (fun x (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a})) = ((fun ν : Measure Y ν ((SimpleFunc.eapprox f n) ⁻¹' {a})) μ) := X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable f n, ∫⁻ (x : X), a (SimpleFunc.eapprox f n).range, a * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) m = ∫⁻ (x : X), n, a (SimpleFunc.eapprox f n).range, a * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) m All goals completed! 🐙 X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fn:a:ℝ≥0∞ha:a (SimpleFunc.eapprox f n).rangethis:(fun x => (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a})) = (fun ν => ν ((SimpleFunc.eapprox f n) ⁻¹' {a})) μ := Eq.refl fun x => (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a})Measurable ((fun ν => ν ((SimpleFunc.eapprox f n) ⁻¹' {a})) μ) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fn:a:ℝ≥0∞ha:a (SimpleFunc.eapprox f n).rangethis:(fun x => (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a})) = (fun ν => ν ((SimpleFunc.eapprox f n) ⁻¹' {a})) μ := Eq.refl fun x => (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a})Measurable fun ν => ν ((SimpleFunc.eapprox f n) ⁻¹' {a}) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fn:a:ℝ≥0∞ha:a (SimpleFunc.eapprox f n).rangethis:(fun x => (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a})) = (fun ν => ν ((SimpleFunc.eapprox f n) ⁻¹' {a})) μ := Eq.refl fun x => (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a})MeasurableSet ((SimpleFunc.eapprox f n) ⁻¹' {a}) All goals completed! 🐙 X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable f∀ᵐ (x : X) m, Monotone fun n => a (SimpleFunc.eapprox f n).range, a * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) filter_upwards with a X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fa:Xi: b : ⦄, i b (fun n => a_2 (SimpleFunc.eapprox f n).range, a_2 * (μ a) ((SimpleFunc.eapprox f n) ⁻¹' {a_2})) i (fun n => a_2 (SimpleFunc.eapprox f n).range, a_2 * (μ a) ((SimpleFunc.eapprox f n) ⁻¹' {a_2})) b X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fa:Xi:j:i j (fun n => a_2 (SimpleFunc.eapprox f n).range, a_2 * (μ a) ((SimpleFunc.eapprox f n) ⁻¹' {a_2})) i (fun n => a_2 (SimpleFunc.eapprox f n).range, a_2 * (μ a) ((SimpleFunc.eapprox f n) ⁻¹' {a_2})) j X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fa:Xi:j:hij:i j(fun n => a_1 (SimpleFunc.eapprox f n).range, a_1 * (μ a) ((SimpleFunc.eapprox f n) ⁻¹' {a_1})) i (fun n => a_1 (SimpleFunc.eapprox f n).range, a_1 * (μ a) ((SimpleFunc.eapprox f n) ⁻¹' {a_1})) j X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fa:Xi:j:hij:i j a_1 (SimpleFunc.eapprox f i).range, a_1 * (μ a) ((SimpleFunc.eapprox f i) ⁻¹' {a_1}) a_1 (SimpleFunc.eapprox f j).range, a_1 * (μ a) ((SimpleFunc.eapprox f j) ⁻¹' {a_1}) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fa:Xi:j:hij:i j(SimpleFunc.eapprox f i).lintegral (μ a) a_1 (SimpleFunc.eapprox f j).range, a_1 * (μ a) ((SimpleFunc.eapprox f j) ⁻¹' {a_1}) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fa:Xi:j:hij:i j(SimpleFunc.eapprox f i).lintegral (μ a) (SimpleFunc.eapprox f j).lintegral (μ a) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fa:Xi:j:hij:i jSimpleFunc.eapprox f i SimpleFunc.eapprox f j All goals completed! 🐙 _ = ∫⁻ (a : X), ∫⁻ (x : Y), f x μ a m := X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable f∫⁻ (x : X), n, a (SimpleFunc.eapprox f n).range, a * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) m = ∫⁻ (a : X), ∫⁻ (x : Y), f x μ a m X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable f (a : X), n, a_1 (SimpleFunc.eapprox f n).range, a_1 * (μ a) ((SimpleFunc.eapprox f n) ⁻¹' {a_1}) = ∫⁻ (x : Y), f x μ a X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fx:X n, a (SimpleFunc.eapprox f n).range, a * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) = ∫⁻ (x : Y), f x μ x X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fx:X n, a (SimpleFunc.eapprox f n).range, a * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) = ∫⁻ (x : Y), n, (SimpleFunc.eapprox f n) x μ x X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fx:X n, a (SimpleFunc.eapprox f n).range, a * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) = n, ∫⁻ (a : Y), (SimpleFunc.eapprox f n) a μ xX:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fx:X (n : ), Measurable (SimpleFunc.eapprox f n)X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fx:XMonotone fun n => (SimpleFunc.eapprox f n) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fx:X n, a (SimpleFunc.eapprox f n).range, a * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) = n, ∫⁻ (a : Y), (SimpleFunc.eapprox f n) a μ x X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fx:X(fun n => a (SimpleFunc.eapprox f n).range, a * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a})) = fun n => ∫⁻ (a : Y), (SimpleFunc.eapprox f n) a μ x X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fx:Xn: a (SimpleFunc.eapprox f n).range, a * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) = ∫⁻ (a : Y), (SimpleFunc.eapprox f n) a μ x X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fx:Xn: a (SimpleFunc.eapprox f n).range, a * (μ x) ((SimpleFunc.eapprox f n) ⁻¹' {a}) = (SimpleFunc.eapprox f n).lintegral (μ x) All goals completed! 🐙 X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fx:X (n : ), Measurable (SimpleFunc.eapprox f n) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fx:Xn:Measurable (SimpleFunc.eapprox f n) All goals completed! 🐙 X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fx:XMonotone fun n => (SimpleFunc.eapprox f n) intro i X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fx:Xi:j:i j (fun n => (SimpleFunc.eapprox f n)) i (fun n => (SimpleFunc.eapprox f n)) j X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fx:Xi:j:hij:i j(fun n => (SimpleFunc.eapprox f n)) i (fun n => (SimpleFunc.eapprox f n)) j X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Ym:Measure Xμ:X Measure Yf:Y ℝ≥0∞:Measurable μhf:Measurable fx:Xi:j:hij:i j(SimpleFunc.eapprox f i) (SimpleFunc.eapprox f j) All goals completed! 🐙