測度論と積分

7.2. 押し出し測度🔗

押し出しは、可測写像に沿って測度を運ぶ操作です。

定義.

XY を可測空間とし、\muX 上の測度、f : X \to Y を可測写像とする。 f に沿った \mu押し出し とは、Y の任意の可測集合 A \subseteq Y に対して (f_*\mu)(A) \coloneqq \mu(f^{-1}(A)) で定まる Y 上の測度 f_*\mu のことである。

Lean code
/-- The pushforward of a measure along a measurable map. -/ def map (f : X Y) (hf : Measurable f) (μ : Measure X) : Measure Y := Measure.ofMeasurable (fun A _ μ (f ⁻¹' A)) (X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure X(fun A x => μ (f ⁻¹' A)) = 0 All goals completed! 🐙) <| X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure X f_1 : Set Y (h : (i : ), MeasurableSet (f_1 i)), Pairwise (Function.onFun Disjoint f_1) (fun A x => μ (f ⁻¹' A)) (⋃ i, f_1 i) = ∑' (i : ), (fun A x => μ (f ⁻¹' A)) (f_1 i) intro A X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure XA: Set YhA: (i : ), MeasurableSet (A i)Pairwise (Function.onFun Disjoint A) (fun A x => μ (f ⁻¹' A)) (⋃ i, A i) = ∑' (i : ), (fun A x => μ (f ⁻¹' A)) (A i) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure XA: Set YhA: (i : ), MeasurableSet (A i)hAd:Pairwise (Function.onFun Disjoint A)(fun A x => μ (f ⁻¹' A)) (⋃ i, A i) = ∑' (i : ), (fun A x => μ (f ⁻¹' A)) (A i) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure XA: Set YhA: (i : ), MeasurableSet (A i)hAd:Pairwise (Function.onFun Disjoint A)μ (⋃ i, f ⁻¹' A i) = ∑' (i : ), μ (f ⁻¹' A i) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure XA: Set YhA: (i : ), MeasurableSet (A i)hAd:Pairwise (Function.onFun Disjoint A)Pairwise (Function.onFun Disjoint fun i => f ⁻¹' A i) intro i X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure XA: Set YhA: (i : ), MeasurableSet (A i)hAd:Pairwise (Function.onFun Disjoint A)i:j:i j Function.onFun Disjoint (fun i => f ⁻¹' A i) i j X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure XA: Set YhA: (i : ), MeasurableSet (A i)hAd:Pairwise (Function.onFun Disjoint A)i:j:hij:i jFunction.onFun Disjoint (fun i => f ⁻¹' A i) i j X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure XA: Set YhA: (i : ), MeasurableSet (A i)hAd:Pairwise (Function.onFun Disjoint A)i:j:hij:i jthis:Function.onFun Disjoint A i j := hAd hijFunction.onFun Disjoint (fun i => f ⁻¹' A i) i j All goals completed! 🐙
@[simp] theorem map_apply (f : X Y) (hf : Measurable f) (μ : Measure X) {A : Set Y} (hA : MeasurableSet A) : Measure.map f hf μ A = μ (f ⁻¹' A) := X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure XA:Set YhA:MeasurableSet A(map f hf μ) A = μ (f ⁻¹' A) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure XA:Set YhA:MeasurableSet A(Measure.ofMeasurable (fun A x => μ (f ⁻¹' A)) ) A = μ (f ⁻¹' A) All goals completed! 🐙
補題.

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

Lean code
theorem lintegral_map (f : X Y) (hf : Measurable f) (μ : Measure X) {g : Y ℝ≥0∞} (hg : Measurable g) : ∫⁻ y, g y (Measure.map f hf μ) = ∫⁻ x, g (f x) μ := X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable g∫⁻ (y : Y), g y Measure.map f hf μ = ∫⁻ (x : X), g (f x) μ let h n : SimpleFunc X ℝ≥0∞ := { toFun := (SimpleFunc.eapprox g n) f measurableSet_fiber' := fun a X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gn:a:ℝ≥0∞MeasurableSet ((SimpleFunc.eapprox g n) f ⁻¹' {a}) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gn:a:ℝ≥0∞MeasurableSet {a} All goals completed! 🐙 finite_range' := X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gn:(range ((SimpleFunc.eapprox g n) f)).Finite X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gn:((SimpleFunc.eapprox g n) '' range f).Finite have hsubset : ((SimpleFunc.eapprox g n) '' range f) range (SimpleFunc.eapprox g n) := X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gn:(range ((SimpleFunc.eapprox g n) f)).Finite All goals completed! 🐙 X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yμ:Measure Xg:Y ℝ≥0∞n:hsubset:(SimpleFunc.eapprox g n) '' range f range (SimpleFunc.eapprox g n) := image_subset_range (⇑(SimpleFunc.eapprox g n)) (range f)((SimpleFunc.eapprox g n) '' range f).Finite All goals completed! 🐙 } calc ∫⁻ y, g y (Measure.map f hf μ) = n, ∫⁻ y, (SimpleFunc.eapprox g n) y (Measure.map f hf μ) := X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }∫⁻ (y : Y), g y Measure.map f hf μ = n, ∫⁻ (y : Y), (SimpleFunc.eapprox g n) y Measure.map f hf μ X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := } n, (SimpleFunc.eapprox g n).lintegral (Measure.map f hf μ) = n, ∫⁻ (y : Y), (SimpleFunc.eapprox g n) y Measure.map f hf μ X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := } (i : ), (SimpleFunc.eapprox g i).lintegral (Measure.map f hf μ) = ∫⁻ (y : Y), (SimpleFunc.eapprox g i) y Measure.map f hf μ X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }n:(SimpleFunc.eapprox g n).lintegral (Measure.map f hf μ) = ∫⁻ (y : Y), (SimpleFunc.eapprox g n) y Measure.map f hf μ All goals completed! 🐙 _ = n, a (SimpleFunc.eapprox g n).range, a * Measure.map f hf μ ((SimpleFunc.eapprox g n) ⁻¹' {a}) := X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := } n, ∫⁻ (y : Y), (SimpleFunc.eapprox g n) y Measure.map f hf μ = n, a (SimpleFunc.eapprox g n).range, a * (Measure.map f hf μ) ((SimpleFunc.eapprox g n) ⁻¹' {a}) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := } (i : ), ∫⁻ (y : Y), (SimpleFunc.eapprox g i) y Measure.map f hf μ = a (SimpleFunc.eapprox g i).range, a * (Measure.map f hf μ) ((SimpleFunc.eapprox g i) ⁻¹' {a}) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }n:∫⁻ (y : Y), (SimpleFunc.eapprox g n) y Measure.map f hf μ = a (SimpleFunc.eapprox g n).range, a * (Measure.map f hf μ) ((SimpleFunc.eapprox g n) ⁻¹' {a}) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }n:(SimpleFunc.eapprox g n).lintegral (Measure.map f hf μ) = (SimpleFunc.map (fun a => a) (SimpleFunc.eapprox g n)).lintegral (Measure.map f hf μ) All goals completed! 🐙 _ = n, a (SimpleFunc.eapprox g n).range, a * μ (f ⁻¹' ((SimpleFunc.eapprox g n) ⁻¹' {a})) := X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := } n, a (SimpleFunc.eapprox g n).range, a * (Measure.map f hf μ) ((SimpleFunc.eapprox g n) ⁻¹' {a}) = n, a (SimpleFunc.eapprox g n).range, a * μ (f ⁻¹' ((SimpleFunc.eapprox g n) ⁻¹' {a})) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := } (i : ), a (SimpleFunc.eapprox g i).range, a * (Measure.map f hf μ) ((SimpleFunc.eapprox g i) ⁻¹' {a}) = a (SimpleFunc.eapprox g i).range, a * μ (f ⁻¹' ((SimpleFunc.eapprox g i) ⁻¹' {a})) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }n: a (SimpleFunc.eapprox g n).range, a * (Measure.map f hf μ) ((SimpleFunc.eapprox g n) ⁻¹' {a}) = a (SimpleFunc.eapprox g n).range, a * μ (f ⁻¹' ((SimpleFunc.eapprox g n) ⁻¹' {a})) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }n:a:ℝ≥0∞a * (Measure.map f hf μ) ((SimpleFunc.eapprox g n) ⁻¹' {a}) = a * μ (f ⁻¹' ((SimpleFunc.eapprox g n) ⁻¹' {a})) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }n:a:ℝ≥0∞(Measure.map f hf μ) ((SimpleFunc.eapprox g n) ⁻¹' {a}) = μ (f ⁻¹' ((SimpleFunc.eapprox g n) ⁻¹' {a})) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }n:a:ℝ≥0∞MeasurableSet ((SimpleFunc.eapprox g n) ⁻¹' {a}) All goals completed! 🐙 _ = n, a (SimpleFunc.eapprox g n).range, a * μ ((SimpleFunc.eapprox g n f) ⁻¹' {a}) := X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := } n, a (SimpleFunc.eapprox g n).range, a * μ (f ⁻¹' ((SimpleFunc.eapprox g n) ⁻¹' {a})) = n, a (SimpleFunc.eapprox g n).range, a * μ ((SimpleFunc.eapprox g n) f ⁻¹' {a}) All goals completed! 🐙 _ = n, a (SimpleFunc.eapprox g n).range, a * μ (h n ⁻¹' {a}) := X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := } n, a (SimpleFunc.eapprox g n).range, a * μ ((SimpleFunc.eapprox g n) f ⁻¹' {a}) = n, a (SimpleFunc.eapprox g n).range, a * μ ((h n) ⁻¹' {a}) All goals completed! 🐙 _ = n, a (h n).range, a * μ (h n ⁻¹' {a}) := X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := } n, a (SimpleFunc.eapprox g n).range, a * μ ((h n) ⁻¹' {a}) = n, a (h n).range, a * μ ((h n) ⁻¹' {a}) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := } (i : ), a (SimpleFunc.eapprox g i).range, a * μ ((h i) ⁻¹' {a}) = a (h i).range, a * μ ((h i) ⁻¹' {a}) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }n: a (SimpleFunc.eapprox g n).range, a * μ ((h n) ⁻¹' {a}) = a (h n).range, a * μ ((h n) ⁻¹' {a}) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }n: a (h n).range, a * μ ((h n) ⁻¹' {a}) = a (SimpleFunc.eapprox g n).range, a * μ ((h n) ⁻¹' {a}) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }n:(h n).range (SimpleFunc.eapprox g n).rangeX:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }n: x (SimpleFunc.eapprox g n).range, x (h n).range x * μ ((h n) ⁻¹' {x}) = 0 X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }n:(h n).range (SimpleFunc.eapprox g n).range X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }n:a:ℝ≥0∞a (h n).range a (SimpleFunc.eapprox g n).range X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }n:a:ℝ≥0∞ (x : X), (h n) x = a y, (SimpleFunc.eapprox g n) y = a intro x X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }n:a:ℝ≥0∞x:Xhx:(h n) x = a y, (SimpleFunc.eapprox g n) y = a X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }n:a:ℝ≥0∞x:Xhx:(h n) x = a(SimpleFunc.eapprox g n) (f x) = a X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }n:a:ℝ≥0∞x:Xhx:(h n) x = a(SimpleFunc.eapprox g n) (f x) = (h n) x All goals completed! 🐙 X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }n: x (SimpleFunc.eapprox g n).range, x (h n).range x * μ ((h n) ⁻¹' {x}) = 0 X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }n:a:ℝ≥0∞a (SimpleFunc.eapprox g n).range a (h n).range a * μ ((h n) ⁻¹' {a}) = 0 X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }n:a:ℝ≥0∞ (x : Y), (SimpleFunc.eapprox g n) x = a (∀ (x : X), ¬(h n) x = a) a = 0 μ ((h n) ⁻¹' {a}) = 0 intro y X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }n:a:ℝ≥0∞y:Yhy:(SimpleFunc.eapprox g n) y = a(∀ (x : X), ¬(h n) x = a) a = 0 μ ((h n) ⁻¹' {a}) = 0 X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }n:a:ℝ≥0∞y:Yhy:(SimpleFunc.eapprox g n) y = aha: (x : X), ¬(h n) x = aa = 0 μ ((h n) ⁻¹' {a}) = 0 X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }n:a:ℝ≥0∞y:Yhy:(SimpleFunc.eapprox g n) y = aha: (x : X), ¬(h n) x = aμ ((h n) ⁻¹' {a}) = 0 have hempty : (h n) ⁻¹' {a} = := X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := } n, a (SimpleFunc.eapprox g n).range, a * μ ((h n) ⁻¹' {a}) = n, a (h n).range, a * μ ((h n) ⁻¹' {a}) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }n:a:ℝ≥0∞y:Yhy:(SimpleFunc.eapprox g n) y = aha: (x : X), ¬(h n) x = ax:Xx (h n) ⁻¹' {a} x X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }n:a:ℝ≥0∞y:Yhy:(SimpleFunc.eapprox g n) y = aha: (x : X), ¬(h n) x = ax:X¬(h n) x = a All goals completed! 🐙 X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }n:a:ℝ≥0∞y:Yhy:(SimpleFunc.eapprox g n) y = aha: (x : X), ¬(h n) x = ahempty:(h n) ⁻¹' {a} = := ext fun x => Eq.mpr (id (Eq.trans (congr (congrArg Iff (Eq.trans lintegral_map._simp_6 lintegral_map._simp_7)) (lintegral_map._simp_8 x)) (iff_false ((h n) x = a)))) (ha x)μ = 0 All goals completed! 🐙 _ = n, ∫⁻ x, (h n) x μ := X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := } n, a (h n).range, a * μ ((h n) ⁻¹' {a}) = n, ∫⁻ (x : X), (h n) x μ X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := } (i : ), a (h i).range, a * μ ((h i) ⁻¹' {a}) = ∫⁻ (x : X), (h i) x μ X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }n: a (h n).range, a * μ ((h n) ⁻¹' {a}) = ∫⁻ (x : X), (h n) x μ All goals completed! 🐙 _ = ∫⁻ x, (g f) x μ := X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := } n, ∫⁻ (x : X), (h n) x μ = ∫⁻ (x : X), (g f) x μ X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }∫⁻ (a : X), n, (h n) a μ = ∫⁻ (x : X), (g f) x μX:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := } (n : ), Measurable (h n)X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }Monotone fun n => (h n) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }∫⁻ (a : X), n, (h n) a μ = ∫⁻ (x : X), (g f) x μ X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := } (a : X), n, (h n) a = (g f) a X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }x:X n, (h n) x = (g f) x X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }x:X n, (SimpleFunc.eapprox g n) (f x) = g (f x) All goals completed! 🐙 X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := } (n : ), Measurable (h n) X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }n:Measurable (h n) All goals completed! 🐙 X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }Monotone fun n => (h n) intro i X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }i:j:i j (fun n => (h n)) i (fun n => (h n)) j X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }i:j:hij:i j(fun n => (h n)) i (fun n => (h n)) j X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }i:j:hij:i jx:X(fun n => (h n)) i x (fun n => (h n)) j x X:Type u_1Y:Type u_2inst✝¹:MeasurableSpace Xinst✝:MeasurableSpace Yf:X Yhf:Measurable fμ:Measure Xg:Y ℝ≥0∞hg:Measurable gh: SimpleFunc X ℝ≥0∞ := fun n => { toFun := (SimpleFunc.eapprox g n) f, measurableSet_fiber' := , finite_range' := }i:j:hij:i jx:X(SimpleFunc.eapprox g i) (f x) (SimpleFunc.eapprox g j) (f x) All goals completed! 🐙