測度論と積分

5.2. 非負関数の積分🔗

補題.

非負有理数の列挙 q : \mathbb{N} \to \mathbb{Q}_{\ge 0} を固定する。 関数 f : X \to [0,\infty]n \in \mathbb{N} に対して、 \approxFun_n f : X \to [0,\infty] (\approxFun_n f)(x) \coloneqq \max_{\substack{0 \le i < n \\ q_i \le f(x)}} q_i で定める。このとき次が成り立つ。

  1. 任意の n に対して、\approxFun_n f は単関数である。

  2. i \le j ならば \approxFun_i f \le \approxFun_j f である。

  3. f が可測ならば、任意の x \in X に対して \sup_{n \in \mathbb{N}} (\approxFun_n f)(x) = f(x) である。

Lean code
/-- A sequence enumerating the nonnegative rational numbers in `ℝ≥0∞`. -/ def ennrealRatEmbed (n : ) : ℝ≥0∞ := ENNReal.ofReal ((Encodable.decode (α := ) n).getD (0 : ))
/-- Approximation by nonnegative rational values. -/ def eapprox (f : X ℝ≥0∞) (n : ) : SimpleFunc X := (Finset.range n).sup fun k restrict (const X (ennrealRatEmbed k)) {x : X | ennrealRatEmbed k f x}
@[gcongr, mono] theorem monotone_eapprox (f : X ℝ≥0∞) : Monotone (eapprox f) := fun i j hij X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞i:j:hij:i jeapprox f i eapprox f j X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞i:j:hij:i j b Finset.range i, (const X (ennrealRatEmbed b)).restrict {x | ennrealRatEmbed b f x} eapprox f j intro k X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞i:j:hij:i jk:hk:k Finset.range i(const X (ennrealRatEmbed k)).restrict {x | ennrealRatEmbed k f x} eapprox f j X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞i:j:hij:i jk:hk:k < i(const X (ennrealRatEmbed k)).restrict {x | ennrealRatEmbed k f x} eapprox f j X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞i:j:hij:i jk:hk:k < ik Finset.range jX:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞i:j:hij:i jk:hk:k < i(const X (ennrealRatEmbed k)).restrict {x | ennrealRatEmbed k f x} (const X (ennrealRatEmbed k)).restrict {x | ennrealRatEmbed k f x} X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞i:j:hij:i jk:hk:k < ik Finset.range j refine Finset.mem_range.mpr (X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞i:j:hij:i jk:hk:k < ik < j All goals completed! 🐙) X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞i:j:hij:i jk:hk:k < i(const X (ennrealRatEmbed k)).restrict {x | ennrealRatEmbed k f x} (const X (ennrealRatEmbed k)).restrict {x | ennrealRatEmbed k f x} All goals completed! 🐙
-- Finset.sup_mono (Finset.range_subset_range.mpr hij) theorem iSup_eapprox_apply {f : X ℝ≥0∞} (hf : Measurable f) (x : X) : n, eapprox f n x = f x := X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞hf:Measurable fx:X n, (eapprox f n) x = f x X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞hf:Measurable fx:Xn:(eapprox f n) x f xX:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞hf:Measurable fx:Xf x n, (eapprox f n) x X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞hf:Measurable fx:Xn:(eapprox f n) x f x X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞hf:Measurable fx:Xn:((Finset.range n).sup fun k => if ennrealRatEmbed k f x then ennrealRatEmbed k else 0) f x X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞hf:Measurable fx:Xn:k:x✝:k Finset.range n(if ennrealRatEmbed k f x then ennrealRatEmbed k else 0) f x X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞hf:Measurable fx:Xn:k:x✝:k Finset.range nhki:ennrealRatEmbed k f xennrealRatEmbed k f xX:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞hf:Measurable fx:Xn:k:x✝:k Finset.range nhki:¬ennrealRatEmbed k f x0 f x X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞hf:Measurable fx:Xn:k:x✝:k Finset.range nhki:ennrealRatEmbed k f xennrealRatEmbed k f x All goals completed! 🐙 X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞hf:Measurable fx:Xn:k:x✝:k Finset.range nhki:¬ennrealRatEmbed k f x0 f x All goals completed! 🐙 X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞hf:Measurable fx:Xf x n, (eapprox f n) x X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞hf:Measurable fx:X¬ n, (eapprox f n) x < f x X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞hf:Measurable fx:Xh: n, (eapprox f n) x < f xFalse X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞hf:Measurable fx:Xh: n, (eapprox f n) x < f xq:left✝:0 qhlt_q: n, (eapprox f n) x < (↑q).toNNRealhq_lt:(↑q).toNNReal < f xFalse have hq : (Real.toNNReal q : ℝ≥0∞) n, eapprox f n x := X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞hf:Measurable fx:X n, (eapprox f n) x = f x X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞hf:Measurable fx:Xh: n, (eapprox f n) x < f xq:left✝:0 qhlt_q: n, (eapprox f n) x < (↑q).toNNRealhq_lt:(↑q).toNNReal < f x(↑q).toNNReal (eapprox f (Encodable.encode q + 1)) x X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞hf:Measurable fx:Xh: n, (eapprox f n) x < f xq:left✝:0 qhlt_q: n, (eapprox f n) x < (↑q).toNNRealhq_lt:(↑q).toNNReal < f x(↑q).toNNReal (Finset.range (Encodable.encode q + 1)).sup fun k => if ennrealRatEmbed k f x then ennrealRatEmbed k else 0 X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞hf:Measurable fx:Xh: n, (eapprox f n) x < f xq:left✝:0 qhlt_q: n, (eapprox f n) x < (↑q).toNNRealhq_lt:(↑q).toNNReal < f xhk_mem:Encodable.encode q Finset.range (Encodable.encode q + 1) := Finset.mem_range.mpr (Nat.lt_succ_self (Encodable.encode q))(↑q).toNNReal (Finset.range (Encodable.encode q + 1)).sup fun k => if ennrealRatEmbed k f x then ennrealRatEmbed k else 0 X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞hf:Measurable fx:Xh: n, (eapprox f n) x < f xq:left✝:0 qhlt_q: n, (eapprox f n) x < (↑q).toNNRealhq_lt:(↑q).toNNReal < f xhk_mem:Encodable.encode q Finset.range (Encodable.encode q + 1) := Finset.mem_range.mpr (Nat.lt_succ_self (Encodable.encode q))(↑q).toNNReal if ennrealRatEmbed (Encodable.encode q) f x then ennrealRatEmbed (Encodable.encode q) else 0 X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞hf:Measurable fx:Xh: n, (eapprox f n) x < f xq:left✝:0 qhlt_q: n, (eapprox f n) x < (↑q).toNNRealhq_lt:(↑q).toNNReal < f xhk_mem:Encodable.encode q Finset.range (Encodable.encode q + 1) := Finset.mem_range.mpr (Nat.lt_succ_self (Encodable.encode q))(↑q).toNNReal ennrealRatEmbed (Encodable.encode q)X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞hf:Measurable fx:Xh: n, (eapprox f n) x < f xq:left✝:0 qhlt_q: n, (eapprox f n) x < (↑q).toNNRealhq_lt:(↑q).toNNReal < f xhk_mem:Encodable.encode q Finset.range (Encodable.encode q + 1) := Finset.mem_range.mpr (Nat.lt_succ_self (Encodable.encode q))ennrealRatEmbed (Encodable.encode q) f x X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞hf:Measurable fx:Xh: n, (eapprox f n) x < f xq:left✝:0 qhlt_q: n, (eapprox f n) x < (↑q).toNNRealhq_lt:(↑q).toNNReal < f xhk_mem:Encodable.encode q Finset.range (Encodable.encode q + 1) := Finset.mem_range.mpr (Nat.lt_succ_self (Encodable.encode q))(↑q).toNNReal ennrealRatEmbed (Encodable.encode q) All goals completed! 🐙 X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞hf:Measurable fx:Xh: n, (eapprox f n) x < f xq:left✝:0 qhlt_q: n, (eapprox f n) x < (↑q).toNNRealhq_lt:(↑q).toNNReal < f xhk_mem:Encodable.encode q Finset.range (Encodable.encode q + 1) := Finset.mem_range.mpr (Nat.lt_succ_self (Encodable.encode q))ennrealRatEmbed (Encodable.encode q) f x All goals completed! 🐙 All goals completed! 🐙
定義.

X を可測空間とし、\muX 上の測度、f : X \to [0,\infty] を関数とする。 f\mu に関する 下ルベーグ積分 \underline{\int}_{x \in X} f(x)\,d\mu \coloneqq \sup_{\substack{g : X \to [0,\infty],\\ \text{$g$ is simple},\, g \leq f}} \Simp \int_{x \in X} g(x)\,d\mu で定める。

Lean code
noncomputable def lintegral (μ : Measure X) (f : X ℝ≥0∞) : ℝ≥0∞ := (g : SimpleFunc X) (_ : g f), g.lintegral μ
補題.

f : X \to [0,\infty] を単関数とする。 このとき \underline{\int}_{x \in X} f(x)\,d\mu = \Simp \int_{x \in X} f(x)\,d\mu が成り立つ。

Lean code
theorem SimpleFunc.lintegral_eq_lintegral (f : SimpleFunc X) (μ : Measure X) : ∫⁻ a, f a μ = f.lintegral μ := X:Type u_1inst✝:MeasurableSpace Xf:SimpleFunc Xμ:Measure X∫⁻ (a : X), f a μ = f.lintegral μ All goals completed! 🐙
補題.

下ルベーグ積分の定義では、値が \mathbb{R}_{\ge 0} に入る単関数だけを考えれば十分である。 より正確には、 \underline{\int}_{x \in X} f(x)\,d\mu = \sup_{\substack{g : X \to \mathbb{R}_{\ge 0},\\ \text{$g$ is simple},\, g \le f}} \Simp \int_{x \in X} g(x)\,d\mu が成り立つ。

Lean code
/-- `∫⁻ a in s, f a ∂μ` is defined as the supremum of integrals of simple functions `g : X →ₛ ℝ≥0∞` such that `g ≤ f`. This lemma says that it suffices to take simple functions `g : X → ℝ≥0`. -/ theorem lintegral_eq_nnreal (f : X ℝ≥0∞) (μ : Measure X) : ∫⁻ a, f a μ = (g : SimpleFunc X) (_ : x, g x f x) (_ : x, g x ), g.lintegral μ := X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure X∫⁻ (a : X), f a μ = g, (_ : (x : X), g x f x), (_ : (x : X), g x ), g.lintegral μ X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure X g, (_ : g fun a => f a), g.lintegral μ = g, (_ : (x : X), g x f x), (_ : (x : X), g x ), g.lintegral μ X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f ag.lintegral μ g, (_ : (x : X), g x f x), (_ : (x : X), g x ), g.lintegral μ X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f ah:∀ᵐ (a : X) μ, g a g.lintegral μ g, (_ : (x : X), g x f x), (_ : (x : X), g x ), g.lintegral μX:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f ah:¬∀ᵐ (a : X) μ, g a g.lintegral μ g, (_ : (x : X), g x f x), (_ : (x : X), g x ), g.lintegral μ X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f ah:∀ᵐ (a : X) μ, g a g.lintegral μ g, (_ : (x : X), g x f x), (_ : (x : X), g x ), g.lintegral μ X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f ah:∀ᵐ (a : X) μ, g a ψ:SimpleFunc X := SimpleFunc.map (ENNReal.ofReal ENNReal.toReal) gg.lintegral μ g, (_ : (x : X), g x f x), (_ : (x : X), g x ), g.lintegral μ replace h : ψ =ᵐ[μ] g := h.mono fun a ha X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f ah:∀ᵐ (a : X) μ, g a ψ:SimpleFunc X := SimpleFunc.map (ENNReal.ofReal ENNReal.toReal) ga:Xha:g a ψ a = g a All goals completed! 🐙 X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f aψ:SimpleFunc X := SimpleFunc.map (ENNReal.ofReal ENNReal.toReal) gh:ψ =ᶠ[ae μ] g := Eventually.mono _fvar.17329 fun a ha => Eq.mpr (id ofReal_toReal_eq_iff._simp_1) hathis: (x : X), ψ x f x := fun x => le_trans ofReal_toReal_le (hg x)g.lintegral μ g, (_ : (x : X), g x f x), (_ : (x : X), g x ), g.lintegral μ X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f aψ:SimpleFunc X := SimpleFunc.map (ENNReal.ofReal ENNReal.toReal) gh:ψ =ᶠ[ae μ] g := Eventually.mono _fvar.17329 fun a ha => Eq.mpr (id ofReal_toReal_eq_iff._simp_1) hathis: (x : X), ψ x f x := fun x => le_trans ofReal_toReal_le (hg x)g.lintegral μ (_ : (x : X), ψ x ), ψ.lintegral μ X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f aψ:SimpleFunc X := SimpleFunc.map (ENNReal.ofReal ENNReal.toReal) gh:ψ =ᶠ[ae μ] g := Eventually.mono _fvar.17329 fun a ha => Eq.mpr (id ofReal_toReal_eq_iff._simp_1) hathis: (x : X), ψ x f x := fun x => le_trans ofReal_toReal_le (hg x)x:Xψ x X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f aψ:SimpleFunc X := SimpleFunc.map (ENNReal.ofReal ENNReal.toReal) gh:ψ =ᶠ[ae μ] g := Eventually.mono _fvar.17329 fun a ha => Eq.mpr (id ofReal_toReal_eq_iff._simp_1) hathis: (x : X), ψ x f x := fun x => le_trans ofReal_toReal_le (hg x)g.lintegral μ ψ.lintegral μ X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f aψ:SimpleFunc X := SimpleFunc.map (ENNReal.ofReal ENNReal.toReal) gh:ψ =ᶠ[ae μ] g := Eventually.mono _fvar.17329 fun a ha => Eq.mpr (id ofReal_toReal_eq_iff._simp_1) hathis: (x : X), ψ x f x := fun x => le_trans ofReal_toReal_le (hg x)x:Xψ x All goals completed! 🐙 X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f aψ:SimpleFunc X := SimpleFunc.map (ENNReal.ofReal ENNReal.toReal) gh:ψ =ᶠ[ae μ] g := Eventually.mono _fvar.17329 fun a ha => Eq.mpr (id ofReal_toReal_eq_iff._simp_1) hathis: (x : X), ψ x f x := fun x => le_trans ofReal_toReal_le (hg x)g.lintegral μ ψ.lintegral μ All goals completed! 🐙 X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f ah:¬∀ᵐ (a : X) μ, g a g.lintegral μ g, (_ : (x : X), g x f x), (_ : (x : X), g x ), g.lintegral μ X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f ah:¬∀ᵐ (a : X) μ, g a h_meas:μ (g ⁻¹' {}) 0 := mt measure_eq_zero_iff_ae_notMem.mp hg.lintegral μ g, (_ : (x : X), g x f x), (_ : (x : X), g x ), g.lintegral μ X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f ah:¬∀ᵐ (a : X) μ, g a h_meas:μ (g ⁻¹' {}) 0 := mt measure_eq_zero_iff_ae_notMem.mp hb:ℝ≥0∞hb:b < i, b < (_ : (x : X), i x f x), (_ : (x : X), i x ), i.lintegral μ X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f ah:¬∀ᵐ (a : X) μ, g a h_meas:μ (g ⁻¹' {}) 0 := mt measure_eq_zero_iff_ae_notMem.mp hb:ℝ≥0∞hb:b < n:hn:b < n * μ (g ⁻¹' {}) i, b < (_ : (x : X), i x f x), (_ : (x : X), i x ), i.lintegral μ X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f ah:¬∀ᵐ (a : X) μ, g a h_meas:μ (g ⁻¹' {}) 0 := mt measure_eq_zero_iff_ae_notMem.mp hb:ℝ≥0∞hb:b < n:hn:b < n * μ (g ⁻¹' {})ψ:SimpleFunc X := (SimpleFunc.const X n).restrict (g ⁻¹' {}) i, b < (_ : (x : X), i x f x), (_ : (x : X), i x ), i.lintegral μ X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f ah:¬∀ᵐ (a : X) μ, g a h_meas:μ (g ⁻¹' {}) 0 := mt measure_eq_zero_iff_ae_notMem.mp hb:ℝ≥0∞hb:b < n:hn:b < n * μ (g ⁻¹' {})ψ:SimpleFunc X := (SimpleFunc.const X n).restrict (g ⁻¹' {})hs:MeasurableSet (g ⁻¹' {}) := SimpleFunc.measurableSet_preimage g {} i, b < (_ : (x : X), i x f x), (_ : (x : X), i x ), i.lintegral μ have : x, (ψ x) f x := X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure X∫⁻ (a : X), f a μ = g, (_ : (x : X), g x f x), (_ : (x : X), g x ), g.lintegral μ X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f ah:¬∀ᵐ (a : X) μ, g a h_meas:μ (g ⁻¹' {}) 0 := mt measure_eq_zero_iff_ae_notMem.mp hb:ℝ≥0∞hb:b < n:hn:b < n * μ (g ⁻¹' {})ψ:SimpleFunc X := (SimpleFunc.const X n).restrict (g ⁻¹' {})hs:MeasurableSet (g ⁻¹' {}) := SimpleFunc.measurableSet_preimage g {}x:Xψ x f x X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f ah:¬∀ᵐ (a : X) μ, g a h_meas:μ (g ⁻¹' {}) 0 := mt measure_eq_zero_iff_ae_notMem.mp hb:ℝ≥0∞hb:b < n:hn:b < n * μ (g ⁻¹' {})ψ:SimpleFunc X := (SimpleFunc.const X n).restrict (g ⁻¹' {})hs:MeasurableSet (g ⁻¹' {}) := SimpleFunc.measurableSet_preimage g {}x:Xhx:x g ⁻¹' {}ψ x f xX:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f ah:¬∀ᵐ (a : X) μ, g a h_meas:μ (g ⁻¹' {}) 0 := mt measure_eq_zero_iff_ae_notMem.mp hb:ℝ≥0∞hb:b < n:hn:b < n * μ (g ⁻¹' {})ψ:SimpleFunc X := (SimpleFunc.const X n).restrict (g ⁻¹' {})hs:MeasurableSet (g ⁻¹' {}) := SimpleFunc.measurableSet_preimage g {}x:Xhx:x g ⁻¹' {}ψ x f x X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f ah:¬∀ᵐ (a : X) μ, g a h_meas:μ (g ⁻¹' {}) 0 := mt measure_eq_zero_iff_ae_notMem.mp hb:ℝ≥0∞hb:b < n:hn:b < n * μ (g ⁻¹' {})ψ:SimpleFunc X := (SimpleFunc.const X n).restrict (g ⁻¹' {})hs:MeasurableSet (g ⁻¹' {}) := SimpleFunc.measurableSet_preimage g {}x:Xhx:x g ⁻¹' {}ψ x f x have hfx : f x = := X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure X∫⁻ (a : X), f a μ = g, (_ : (x : X), g x f x), (_ : (x : X), g x ), g.lintegral μ X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f ah:¬∀ᵐ (a : X) μ, g a h_meas:μ (g ⁻¹' {}) 0 := mt measure_eq_zero_iff_ae_notMem.mp hb:ℝ≥0∞hb:b < n:hn:b < n * μ (g ⁻¹' {})ψ:SimpleFunc X := (SimpleFunc.const X n).restrict (g ⁻¹' {})hs:MeasurableSet (g ⁻¹' {}) := SimpleFunc.measurableSet_preimage g {}x:Xhx:g x = f x = All goals completed! 🐙 All goals completed! 🐙 X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f ah:¬∀ᵐ (a : X) μ, g a h_meas:μ (g ⁻¹' {}) 0 := mt measure_eq_zero_iff_ae_notMem.mp hb:ℝ≥0∞hb:b < n:hn:b < n * μ (g ⁻¹' {})ψ:SimpleFunc X := (SimpleFunc.const X n).restrict (g ⁻¹' {})hs:MeasurableSet (g ⁻¹' {}) := SimpleFunc.measurableSet_preimage g {}x:Xhx:x g ⁻¹' {}ψ x f x All goals completed! 🐙 X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f ah:¬∀ᵐ (a : X) μ, g a h_meas:μ (g ⁻¹' {}) 0 := mt measure_eq_zero_iff_ae_notMem.mp hb:ℝ≥0∞hb:b < n:hn:b < n * μ (g ⁻¹' {})ψ:SimpleFunc X := (SimpleFunc.const X n).restrict (g ⁻¹' {})hs:MeasurableSet (g ⁻¹' {}) := SimpleFunc.measurableSet_preimage g {}: (x : X), ψ x f x := fun x => if hx : x g ⁻¹' {} then have hfx := top_le_iff.mp (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx hg x); of_eq_true (Eq.trans (congr (congrArg LE.le (Eq.trans (congrFun (SimpleFunc.coe_restrict (SimpleFunc.const X n) hs) x) (indicator_of_mem hx (Function.const X n)))) hfx) le_top._simp_2) else of_eq_true (Eq.trans (congrFun' (congrArg LE.le (Eq.trans (congrFun (SimpleFunc.coe_restrict (SimpleFunc.const X n) hs) x) (indicator_of_notMem (of_eq_true (Eq.trans (congrArg Not (eq_false hx)) not_false_eq_true)) (Function.const X n)))) (f x)) (one_le._simp_3 (f x)))hψ_int:ψ.lintegral μ = n * μ (g ⁻¹' {}) := SimpleFunc.restrict_const_lintegral (↑n) hs i, b < (_ : (x : X), i x f x), (_ : (x : X), i x ), i.lintegral μ X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f ah:¬∀ᵐ (a : X) μ, g a h_meas:μ (g ⁻¹' {}) 0 := mt measure_eq_zero_iff_ae_notMem.mp hb:ℝ≥0∞hb:b < n:hn:b < n * μ (g ⁻¹' {})ψ:SimpleFunc X := (SimpleFunc.const X n).restrict (g ⁻¹' {})hs:MeasurableSet (g ⁻¹' {}) := SimpleFunc.measurableSet_preimage g {}: (x : X), ψ x f x := fun x => if hx : x g ⁻¹' {} then have hfx := top_le_iff.mp (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx hg x); of_eq_true (Eq.trans (congr (congrArg LE.le (Eq.trans (congrFun (SimpleFunc.coe_restrict (SimpleFunc.const X n) hs) x) (indicator_of_mem hx (Function.const X n)))) hfx) le_top._simp_2) else of_eq_true (Eq.trans (congrFun' (congrArg LE.le (Eq.trans (congrFun (SimpleFunc.coe_restrict (SimpleFunc.const X n) hs) x) (indicator_of_notMem (of_eq_true (Eq.trans (congrArg Not (eq_false hx)) not_false_eq_true)) (Function.const X n)))) (f x)) (one_le._simp_3 (f x)))hψ_int:ψ.lintegral μ = n * μ (g ⁻¹' {}) := SimpleFunc.restrict_const_lintegral (↑n) hs i, (∀ (x : X), i x f x) (∀ (x : X), i x ) b < i.lintegral μ refine ψ, , ?_, (X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f ah:¬∀ᵐ (a : X) μ, g a h_meas:μ (g ⁻¹' {}) 0 := mt measure_eq_zero_iff_ae_notMem.mp hb:ℝ≥0∞hb:b < n:hn:b < n * μ (g ⁻¹' {})ψ:SimpleFunc X := (SimpleFunc.const X n).restrict (g ⁻¹' {})hs:MeasurableSet (g ⁻¹' {}) := SimpleFunc.measurableSet_preimage g {}: (x : X), ψ x f x := fun x => if hx : x g ⁻¹' {} then have hfx := top_le_iff.mp (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx hg x); of_eq_true (Eq.trans (congr (congrArg LE.le (Eq.trans (congrFun (SimpleFunc.coe_restrict (SimpleFunc.const X n) hs) x) (indicator_of_mem hx (Function.const X n)))) hfx) le_top._simp_2) else of_eq_true (Eq.trans (congrFun' (congrArg LE.le (Eq.trans (congrFun (SimpleFunc.coe_restrict (SimpleFunc.const X n) hs) x) (indicator_of_notMem (of_eq_true (Eq.trans (congrArg Not (eq_false hx)) not_false_eq_true)) (Function.const X n)))) (f x)) (one_le._simp_3 (f x)))hψ_int:ψ.lintegral μ = n * μ (g ⁻¹' {}) := SimpleFunc.restrict_const_lintegral (↑n) hsb < ψ.lintegral μ All goals completed! 🐙) X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f ah:¬∀ᵐ (a : X) μ, g a h_meas:μ (g ⁻¹' {}) 0 := mt measure_eq_zero_iff_ae_notMem.mp hb:ℝ≥0∞hb:b < n:hn:b < n * μ (g ⁻¹' {})ψ:SimpleFunc X := (SimpleFunc.const X n).restrict (g ⁻¹' {})hs:MeasurableSet (g ⁻¹' {}) := SimpleFunc.measurableSet_preimage g {}: (x : X), ψ x f x := fun x => if hx : x g ⁻¹' {} then have hfx := top_le_iff.mp (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx hg x); of_eq_true (Eq.trans (congr (congrArg LE.le (Eq.trans (congrFun (SimpleFunc.coe_restrict (SimpleFunc.const X n) hs) x) (indicator_of_mem hx (Function.const X n)))) hfx) le_top._simp_2) else of_eq_true (Eq.trans (congrFun' (congrArg LE.le (Eq.trans (congrFun (SimpleFunc.coe_restrict (SimpleFunc.const X n) hs) x) (indicator_of_notMem (of_eq_true (Eq.trans (congrArg Not (eq_false hx)) not_false_eq_true)) (Function.const X n)))) (f x)) (one_le._simp_3 (f x)))hψ_int:ψ.lintegral μ = n * μ (g ⁻¹' {}) := SimpleFunc.restrict_const_lintegral (↑n) hsx:Xψ x X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f ah:¬∀ᵐ (a : X) μ, g a h_meas:μ (g ⁻¹' {}) 0 := mt measure_eq_zero_iff_ae_notMem.mp hb:ℝ≥0∞hb:b < n:hn:b < n * μ (g ⁻¹' {})ψ:SimpleFunc X := (SimpleFunc.const X n).restrict (g ⁻¹' {})hs:MeasurableSet (g ⁻¹' {}) := SimpleFunc.measurableSet_preimage g {}: (x : X), ψ x f x := fun x => if hx : x g ⁻¹' {} then have hfx := top_le_iff.mp (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx hg x); of_eq_true (Eq.trans (congr (congrArg LE.le (Eq.trans (congrFun (SimpleFunc.coe_restrict (SimpleFunc.const X n) hs) x) (indicator_of_mem hx (Function.const X n)))) hfx) le_top._simp_2) else of_eq_true (Eq.trans (congrFun' (congrArg LE.le (Eq.trans (congrFun (SimpleFunc.coe_restrict (SimpleFunc.const X n) hs) x) (indicator_of_notMem (of_eq_true (Eq.trans (congrArg Not (eq_false hx)) not_false_eq_true)) (Function.const X n)))) (f x)) (one_le._simp_3 (f x)))hψ_int:ψ.lintegral μ = n * μ (g ⁻¹' {}) := SimpleFunc.restrict_const_lintegral (↑n) hsx:X((SimpleFunc.const X n).restrict (g ⁻¹' {})) x X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f ah:¬∀ᵐ (a : X) μ, g a h_meas:μ (g ⁻¹' {}) 0 := mt measure_eq_zero_iff_ae_notMem.mp hb:ℝ≥0∞hb:b < n:hn:b < n * μ (g ⁻¹' {})ψ:SimpleFunc X := (SimpleFunc.const X n).restrict (g ⁻¹' {})hs:MeasurableSet (g ⁻¹' {}) := SimpleFunc.measurableSet_preimage g {}: (x : X), ψ x f x := fun x => if hx : x g ⁻¹' {} then have hfx := top_le_iff.mp (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx hg x); of_eq_true (Eq.trans (congr (congrArg LE.le (Eq.trans (congrFun (SimpleFunc.coe_restrict (SimpleFunc.const X n) hs) x) (indicator_of_mem hx (Function.const X n)))) hfx) le_top._simp_2) else of_eq_true (Eq.trans (congrFun' (congrArg LE.le (Eq.trans (congrFun (SimpleFunc.coe_restrict (SimpleFunc.const X n) hs) x) (indicator_of_notMem (of_eq_true (Eq.trans (congrArg Not (eq_false hx)) not_false_eq_true)) (Function.const X n)))) (f x)) (one_le._simp_3 (f x)))hψ_int:ψ.lintegral μ = n * μ (g ⁻¹' {}) := SimpleFunc.restrict_const_lintegral (↑n) hsx:X(g ⁻¹' {}).indicator (⇑(SimpleFunc.const X n)) x X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f ah:¬∀ᵐ (a : X) μ, g a h_meas:μ (g ⁻¹' {}) 0 := mt measure_eq_zero_iff_ae_notMem.mp hb:ℝ≥0∞hb:b < n:hn:b < n * μ (g ⁻¹' {})ψ:SimpleFunc X := (SimpleFunc.const X n).restrict (g ⁻¹' {})hs:MeasurableSet (g ⁻¹' {}) := SimpleFunc.measurableSet_preimage g {}: (x : X), ψ x f x := fun x => if hx : x g ⁻¹' {} then have hfx := top_le_iff.mp (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx hg x); of_eq_true (Eq.trans (congr (congrArg LE.le (Eq.trans (congrFun (SimpleFunc.coe_restrict (SimpleFunc.const X n) hs) x) (indicator_of_mem hx (Function.const X n)))) hfx) le_top._simp_2) else of_eq_true (Eq.trans (congrFun' (congrArg LE.le (Eq.trans (congrFun (SimpleFunc.coe_restrict (SimpleFunc.const X n) hs) x) (indicator_of_notMem (of_eq_true (Eq.trans (congrArg Not (eq_false hx)) not_false_eq_true)) (Function.const X n)))) (f x)) (one_le._simp_3 (f x)))hψ_int:ψ.lintegral μ = n * μ (g ⁻¹' {}) := SimpleFunc.restrict_const_lintegral (↑n) hsx:X(g ⁻¹' {}).indicator (Function.const X n) x X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f ah:¬∀ᵐ (a : X) μ, g a h_meas:μ (g ⁻¹' {}) 0 := mt measure_eq_zero_iff_ae_notMem.mp hb:ℝ≥0∞hb:b < n:hn:b < n * μ (g ⁻¹' {})ψ:SimpleFunc X := (SimpleFunc.const X n).restrict (g ⁻¹' {})hs:MeasurableSet (g ⁻¹' {}) := SimpleFunc.measurableSet_preimage g {}: (x : X), ψ x f x := fun x => if hx : x g ⁻¹' {} then have hfx := top_le_iff.mp (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx hg x); of_eq_true (Eq.trans (congr (congrArg LE.le (Eq.trans (congrFun (SimpleFunc.coe_restrict (SimpleFunc.const X n) hs) x) (indicator_of_mem hx (Function.const X n)))) hfx) le_top._simp_2) else of_eq_true (Eq.trans (congrFun' (congrArg LE.le (Eq.trans (congrFun (SimpleFunc.coe_restrict (SimpleFunc.const X n) hs) x) (indicator_of_notMem (of_eq_true (Eq.trans (congrArg Not (eq_false hx)) not_false_eq_true)) (Function.const X n)))) (f x)) (one_le._simp_3 (f x)))hψ_int:ψ.lintegral μ = n * μ (g ⁻¹' {}) := SimpleFunc.restrict_const_lintegral (↑n) hsx:X(g ⁻¹' {}).indicator (Function.const X n) x < X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f ah:¬∀ᵐ (a : X) μ, g a h_meas:μ (g ⁻¹' {}) 0 := mt measure_eq_zero_iff_ae_notMem.mp hb:ℝ≥0∞hb:b < n:hn:b < n * μ (g ⁻¹' {})ψ:SimpleFunc X := (SimpleFunc.const X n).restrict (g ⁻¹' {})hs:MeasurableSet (g ⁻¹' {}) := SimpleFunc.measurableSet_preimage g {}: (x : X), ψ x f x := fun x => if hx : x g ⁻¹' {} then have hfx := top_le_iff.mp (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx hg x); of_eq_true (Eq.trans (congr (congrArg LE.le (Eq.trans (congrFun (SimpleFunc.coe_restrict (SimpleFunc.const X n) hs) x) (indicator_of_mem hx (Function.const X n)))) hfx) le_top._simp_2) else of_eq_true (Eq.trans (congrFun' (congrArg LE.le (Eq.trans (congrFun (SimpleFunc.coe_restrict (SimpleFunc.const X n) hs) x) (indicator_of_notMem (of_eq_true (Eq.trans (congrArg Not (eq_false hx)) not_false_eq_true)) (Function.const X n)))) (f x)) (one_le._simp_3 (f x)))hψ_int:ψ.lintegral μ = n * μ (g ⁻¹' {}) := SimpleFunc.restrict_const_lintegral (↑n) hsx:X(g ⁻¹' {}).indicator (Function.const X n) x Function.const X (↑n) xX:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f ah:¬∀ᵐ (a : X) μ, g a h_meas:μ (g ⁻¹' {}) 0 := mt measure_eq_zero_iff_ae_notMem.mp hb:ℝ≥0∞hb:b < n:hn:b < n * μ (g ⁻¹' {})ψ:SimpleFunc X := (SimpleFunc.const X n).restrict (g ⁻¹' {})hs:MeasurableSet (g ⁻¹' {}) := SimpleFunc.measurableSet_preimage g {}: (x : X), ψ x f x := fun x => if hx : x g ⁻¹' {} then have hfx := top_le_iff.mp (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx hg x); of_eq_true (Eq.trans (congr (congrArg LE.le (Eq.trans (congrFun (SimpleFunc.coe_restrict (SimpleFunc.const X n) hs) x) (indicator_of_mem hx (Function.const X n)))) hfx) le_top._simp_2) else of_eq_true (Eq.trans (congrFun' (congrArg LE.le (Eq.trans (congrFun (SimpleFunc.coe_restrict (SimpleFunc.const X n) hs) x) (indicator_of_notMem (of_eq_true (Eq.trans (congrArg Not (eq_false hx)) not_false_eq_true)) (Function.const X n)))) (f x)) (one_le._simp_3 (f x)))hψ_int:ψ.lintegral μ = n * μ (g ⁻¹' {}) := SimpleFunc.restrict_const_lintegral (↑n) hsx:XFunction.const X (↑n) x < X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f ah:¬∀ᵐ (a : X) μ, g a h_meas:μ (g ⁻¹' {}) 0 := mt measure_eq_zero_iff_ae_notMem.mp hb:ℝ≥0∞hb:b < n:hn:b < n * μ (g ⁻¹' {})ψ:SimpleFunc X := (SimpleFunc.const X n).restrict (g ⁻¹' {})hs:MeasurableSet (g ⁻¹' {}) := SimpleFunc.measurableSet_preimage g {}: (x : X), ψ x f x := fun x => if hx : x g ⁻¹' {} then have hfx := top_le_iff.mp (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx hg x); of_eq_true (Eq.trans (congr (congrArg LE.le (Eq.trans (congrFun (SimpleFunc.coe_restrict (SimpleFunc.const X n) hs) x) (indicator_of_mem hx (Function.const X n)))) hfx) le_top._simp_2) else of_eq_true (Eq.trans (congrFun' (congrArg LE.le (Eq.trans (congrFun (SimpleFunc.coe_restrict (SimpleFunc.const X n) hs) x) (indicator_of_notMem (of_eq_true (Eq.trans (congrArg Not (eq_false hx)) not_false_eq_true)) (Function.const X n)))) (f x)) (one_le._simp_3 (f x)))hψ_int:ψ.lintegral μ = n * μ (g ⁻¹' {}) := SimpleFunc.restrict_const_lintegral (↑n) hsx:X(g ⁻¹' {}).indicator (Function.const X n) x Function.const X (↑n) x All goals completed! 🐙 X:Type u_1inst✝:MeasurableSpace Xf:X ℝ≥0∞μ:Measure Xg:SimpleFunc Xhg:g fun a => f ah:¬∀ᵐ (a : X) μ, g a h_meas:μ (g ⁻¹' {}) 0 := mt measure_eq_zero_iff_ae_notMem.mp hb:ℝ≥0∞hb:b < n:hn:b < n * μ (g ⁻¹' {})ψ:SimpleFunc X := (SimpleFunc.const X n).restrict (g ⁻¹' {})hs:MeasurableSet (g ⁻¹' {}) := SimpleFunc.measurableSet_preimage g {}: (x : X), ψ x f x := fun x => if hx : x g ⁻¹' {} then have hfx := top_le_iff.mp (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx hg x); of_eq_true (Eq.trans (congr (congrArg LE.le (Eq.trans (congrFun (SimpleFunc.coe_restrict (SimpleFunc.const X n) hs) x) (indicator_of_mem hx (Function.const X n)))) hfx) le_top._simp_2) else of_eq_true (Eq.trans (congrFun' (congrArg LE.le (Eq.trans (congrFun (SimpleFunc.coe_restrict (SimpleFunc.const X n) hs) x) (indicator_of_notMem (of_eq_true (Eq.trans (congrArg Not (eq_false hx)) not_false_eq_true)) (Function.const X n)))) (f x)) (one_le._simp_3 (f x)))hψ_int:ψ.lintegral μ = n * μ (g ⁻¹' {}) := SimpleFunc.restrict_const_lintegral (↑n) hsx:XFunction.const X (↑n) x < All goals completed! 🐙
定理 (単調収束定理).

f_0, f_1, \dots : X \to [0,\infty] を可測関数の列とする。 n \le m ならば f_n \le f_m であると仮定する。 このとき \underline{\int}_{x \in X} \sup_{n \in \mathbb{N}} f_n(x)\,d\mu = \sup_{n \in \mathbb{N}} \underline{\int}_{x \in X} f_n(x)\,d\mu. が成り立つ。

Lean code
theorem iSup_lintegral_le {ι : Sort*} (f : ι X ℝ≥0∞) : i, ∫⁻ a, f i a μ ∫⁻ a, i, f i a μ := X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xι:Sort u_2f:ι X ℝ≥0∞ i, ∫⁻ (a : X), f i a μ ∫⁻ (a : X), i, f i a μ X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xι:Sort u_2f:ι X ℝ≥0∞ i, ∫⁻ (a : X), f i a μ ∫⁻ (a : X), (⨆ i, f i) a μ All goals completed! 🐙
theorem lintegral_iSup {f : X ℝ≥0∞} (hf : n, Measurable (f n)) (h_mono : Monotone f) : ∫⁻ a, n, f n a μ = n, ∫⁻ a, f n a μ := X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone f∫⁻ (a : X), n, f n a μ = n, ∫⁻ (a : X), f n a μ X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNReal∫⁻ (a : X), n, f n a μ = n, ∫⁻ (a : X), f n a μ X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n alintegral μ F = n, ∫⁻ (a : X), f n a μ X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n alintegral μ F n, ∫⁻ (a : X), f n a μ X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n a g, (_ : (x : X), g x n, f n x), (_ : (x : X), g x ), g.lintegral μ n, ∫⁻ (a : X), f n a μ X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x s.lintegral μ n, ∫⁻ (a : X), f n a μ X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x a:ℝ≥0∞ha:a < 1a * s.lintegral μ n, ∫⁻ (a : X), f n a μ X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha:r < 1r * s.lintegral μ n, ∫⁻ (a : X), f n a μ X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝r * s.lintegral μ n, ∫⁻ (a : X), f n a μ X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) sr * s.lintegral μ n, ∫⁻ (a : X), f n a μ X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rflr * s.lintegral μ n, ∫⁻ (a : X), f n a μ have eq : p, rs ⁻¹' {p} = n, rs ⁻¹' {p} { a | p f n a } := X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone f∫⁻ (a : X), n, f n a μ = n, ∫⁻ (a : X), f n a μ X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rflp:ℝ≥0∞rs ⁻¹' {p} = n, rs ⁻¹' {p} {a | p f n a} X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rflp:ℝ≥0∞rs ⁻¹' {p} = rs ⁻¹' {p} i, {a | p f i a}; nth_rw 1 [ inter_univ (rs ⁻¹' {p})X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rflp:ℝ≥0∞rs ⁻¹' {p} univ = rs ⁻¹' {p} i, {a | p f i a} X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rflp:ℝ≥0∞x:Xhx:x rs ⁻¹' {p}x i, {a | p f i a} X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rflp:ℝ≥0∞x:Xhx:x rs ⁻¹' {p}p_eq:p = 0x i, {a | p f i a}X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rflp:ℝ≥0∞x:Xhx:x rs ⁻¹' {p}p_eq:¬p = 0x i, {a | p f i a} X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rflp:ℝ≥0∞x:Xhx:x rs ⁻¹' {p}p_eq:p = 0x i, {a | p f i a} All goals completed! 🐙 X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rflp:ℝ≥0∞x:Xp_eq:¬p = 0hx:rs x = px i, {a | p f i a} X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rflx:Xp_eq:¬rs x = 0x i, {a | rs x f i a} have : r * s x 0 := X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone f∫⁻ (a : X), n, f n a μ = n, ∫⁻ (a : X), f n a μ rwa [NeX:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rflx:Xp_eq:¬rs x = 0¬r * s x = 0 X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rflx:Xp_eq:¬rs x = 0this✝:r * s x 0 := Eq.mpr (id (congrArg (fun _a => _a) (Ne.eq_1 (r * s x) 0))) p_eqthis:s x 0 := right_ne_zero_of_mul this✝x i, {a | rs x f i a} have : rs x < n : , f n x := X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone f∫⁻ (a : X), n, f n a μ = n, ∫⁻ (a : X), f n a μ X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rflx:Xp_eq:¬rs x = 0this✝:r * s x 0 := Eq.mpr (id (congrArg (fun _a => _a) (Ne.eq_1 (r * s x) 0))) p_eqthis:s x 0 := right_ne_zero_of_mul this✝rs x < s x suffices r * s x < 1 * s x X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rflx:Xp_eq:¬rs x = 0this✝¹:r * s x 0 := Eq.mpr (id (congrArg (fun _a => _a) (Ne.eq_1 (r * s x) 0))) p_eqthis✝:s x 0 := right_ne_zero_of_mul this✝¹this:r * s x < 1 * s x := ?m.283rs x < s x All goals completed! 🐙 X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rflx:Xp_eq:¬rs x = 0this✝:r * s x 0 := Eq.mpr (id (congrArg (fun _a => _a) (Ne.eq_1 (r * s x) 0))) p_eqthis:s x 0 := right_ne_zero_of_mul this✝s x All goals completed! 🐙 X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rflx:Xp_eq:¬rs x = 0this✝¹:r * s x 0 := Eq.mpr (id (congrArg (fun _a => _a) (Ne.eq_1 (r * s x) 0))) p_eqthis✝:s x 0 := right_ne_zero_of_mul this✝this:rs x < n, f n x := lt_of_lt_of_le (have this := ENNReal.mul_lt_mul_left (ne_of_gt (lt_of_le_of_ne' (zero_le (s x)) this✝)) (hsfin x) right✝; Eq.mpr (id gt_iff_lt._simp_1) (Eq.mp (congrArg (LT.lt (r * s x)) (one_mul (s x))) this)) (hsf x)i:hi:rs x < f i xx i, {a | rs x f i a} All goals completed! 🐙 have mono : r : ℝ≥0∞, Monotone fun n rs ⁻¹' {r} { a | r f n a } := X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone f∫⁻ (a : X), n, f n a μ = n, ∫⁻ (a : X), f n a μ intro r X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r✝:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rfleq: (p : ℝ≥0∞), rs ⁻¹' {p} = n, rs ⁻¹' {p} {a | p f n a} := fun p => Eq.mpr (id (congrArg (fun _a => rs ⁻¹' {p} = _a) (Eq.symm (inter_iUnion (rs ⁻¹' {p}) fun n => {a | p f n a})))) (Eq.mpr (id (congrArg (fun _a => _a = rs ⁻¹' {p} i, {a | p f i a}) (Eq.symm (inter_univ (rs ⁻¹' {p}))))) (ext fun x => and_congr_right fun hx => (iff_of_eq (true_iff (x i, {a | p f i a}))).mpr (if p_eq : p = 0 then of_eq_true (Eq.trans (Eq.trans (congrFun' (congrArg Membership.mem (congrArg iUnion (funext fun i => congrArg setOf (funext fun a => Eq.trans (congrFun' (congrArg LE.le p_eq) (f i a)) (one_le._simp_3 (f i a)))))) x) mem_iUnion._simp_1) (Eq.trans (congrArg Exists (funext fun i => mem_univ._simp_1 x)) (exists_const._simp_1 ))) else Eq.ndrec (motive := fun p => ¬p = 0 x i, {a | p f i a}) (fun p_eq => have this := Eq.mpr (id (congrArg (fun _a => _a) (Ne.eq_1 (r✝ * s x) 0))) p_eq; have this := right_ne_zero_of_mul this; have this := lt_of_lt_of_le (have this := ENNReal.mul_lt_mul_left (ne_of_gt (lt_of_le_of_ne' (zero_le (s x)) this)) (hsfin x) right✝; Eq.mpr (id gt_iff_lt._simp_1) (Eq.mp (congrArg (LT.lt (r✝ * s x)) (one_mul (s x))) this)) (hsf x); Exists.casesOn (lt_iSup_iff.mp this) fun i hi => mem_iUnion.mpr (Exists.intro i (le_of_lt hi))) (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx) p_eq)))r:ℝ≥0∞i: b : ⦄, i b (fun n => rs ⁻¹' {r} {a | r f n a}) i (fun n => rs ⁻¹' {r} {a | r f n a}) b X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r✝:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rfleq: (p : ℝ≥0∞), rs ⁻¹' {p} = n, rs ⁻¹' {p} {a | p f n a} := fun p => Eq.mpr (id (congrArg (fun _a => rs ⁻¹' {p} = _a) (Eq.symm (inter_iUnion (rs ⁻¹' {p}) fun n => {a | p f n a})))) (Eq.mpr (id (congrArg (fun _a => _a = rs ⁻¹' {p} i, {a | p f i a}) (Eq.symm (inter_univ (rs ⁻¹' {p}))))) (ext fun x => and_congr_right fun hx => (iff_of_eq (true_iff (x i, {a | p f i a}))).mpr (if p_eq : p = 0 then of_eq_true (Eq.trans (Eq.trans (congrFun' (congrArg Membership.mem (congrArg iUnion (funext fun i => congrArg setOf (funext fun a => Eq.trans (congrFun' (congrArg LE.le p_eq) (f i a)) (one_le._simp_3 (f i a)))))) x) mem_iUnion._simp_1) (Eq.trans (congrArg Exists (funext fun i => mem_univ._simp_1 x)) (exists_const._simp_1 ))) else Eq.ndrec (motive := fun p => ¬p = 0 x i, {a | p f i a}) (fun p_eq => have this := Eq.mpr (id (congrArg (fun _a => _a) (Ne.eq_1 (r✝ * s x) 0))) p_eq; have this := right_ne_zero_of_mul this; have this := lt_of_lt_of_le (have this := ENNReal.mul_lt_mul_left (ne_of_gt (lt_of_le_of_ne' (zero_le (s x)) this)) (hsfin x) right✝; Eq.mpr (id gt_iff_lt._simp_1) (Eq.mp (congrArg (LT.lt (r✝ * s x)) (one_mul (s x))) this)) (hsf x); Exists.casesOn (lt_iSup_iff.mp this) fun i hi => mem_iUnion.mpr (Exists.intro i (le_of_lt hi))) (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx) p_eq)))r:ℝ≥0∞i:j:i j (fun n => rs ⁻¹' {r} {a | r f n a}) i (fun n => rs ⁻¹' {r} {a | r f n a}) j X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r✝:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rfleq: (p : ℝ≥0∞), rs ⁻¹' {p} = n, rs ⁻¹' {p} {a | p f n a} := fun p => Eq.mpr (id (congrArg (fun _a => rs ⁻¹' {p} = _a) (Eq.symm (inter_iUnion (rs ⁻¹' {p}) fun n => {a | p f n a})))) (Eq.mpr (id (congrArg (fun _a => _a = rs ⁻¹' {p} i, {a | p f i a}) (Eq.symm (inter_univ (rs ⁻¹' {p}))))) (ext fun x => and_congr_right fun hx => (iff_of_eq (true_iff (x i, {a | p f i a}))).mpr (if p_eq : p = 0 then of_eq_true (Eq.trans (Eq.trans (congrFun' (congrArg Membership.mem (congrArg iUnion (funext fun i => congrArg setOf (funext fun a => Eq.trans (congrFun' (congrArg LE.le p_eq) (f i a)) (one_le._simp_3 (f i a)))))) x) mem_iUnion._simp_1) (Eq.trans (congrArg Exists (funext fun i => mem_univ._simp_1 x)) (exists_const._simp_1 ))) else Eq.ndrec (motive := fun p => ¬p = 0 x i, {a | p f i a}) (fun p_eq => have this := Eq.mpr (id (congrArg (fun _a => _a) (Ne.eq_1 (r✝ * s x) 0))) p_eq; have this := right_ne_zero_of_mul this; have this := lt_of_lt_of_le (have this := ENNReal.mul_lt_mul_left (ne_of_gt (lt_of_le_of_ne' (zero_le (s x)) this)) (hsfin x) right✝; Eq.mpr (id gt_iff_lt._simp_1) (Eq.mp (congrArg (LT.lt (r✝ * s x)) (one_mul (s x))) this)) (hsf x); Exists.casesOn (lt_iSup_iff.mp this) fun i hi => mem_iUnion.mpr (Exists.intro i (le_of_lt hi))) (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx) p_eq)))r:ℝ≥0∞i:j:h:i j(fun n => rs ⁻¹' {r} {a | r f n a}) i (fun n => rs ⁻¹' {r} {a | r f n a}) j X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r✝:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rfleq: (p : ℝ≥0∞), rs ⁻¹' {p} = n, rs ⁻¹' {p} {a | p f n a} := fun p => Eq.mpr (id (congrArg (fun _a => rs ⁻¹' {p} = _a) (Eq.symm (inter_iUnion (rs ⁻¹' {p}) fun n => {a | p f n a})))) (Eq.mpr (id (congrArg (fun _a => _a = rs ⁻¹' {p} i, {a | p f i a}) (Eq.symm (inter_univ (rs ⁻¹' {p}))))) (ext fun x => and_congr_right fun hx => (iff_of_eq (true_iff (x i, {a | p f i a}))).mpr (if p_eq : p = 0 then of_eq_true (Eq.trans (Eq.trans (congrFun' (congrArg Membership.mem (congrArg iUnion (funext fun i => congrArg setOf (funext fun a => Eq.trans (congrFun' (congrArg LE.le p_eq) (f i a)) (one_le._simp_3 (f i a)))))) x) mem_iUnion._simp_1) (Eq.trans (congrArg Exists (funext fun i => mem_univ._simp_1 x)) (exists_const._simp_1 ))) else Eq.ndrec (motive := fun p => ¬p = 0 x i, {a | p f i a}) (fun p_eq => have this := Eq.mpr (id (congrArg (fun _a => _a) (Ne.eq_1 (r✝ * s x) 0))) p_eq; have this := right_ne_zero_of_mul this; have this := lt_of_lt_of_le (have this := ENNReal.mul_lt_mul_left (ne_of_gt (lt_of_le_of_ne' (zero_le (s x)) this)) (hsfin x) right✝; Eq.mpr (id gt_iff_lt._simp_1) (Eq.mp (congrArg (LT.lt (r✝ * s x)) (one_mul (s x))) this)) (hsf x); Exists.casesOn (lt_iSup_iff.mp this) fun i hi => mem_iUnion.mpr (Exists.intro i (le_of_lt hi))) (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx) p_eq)))r:ℝ≥0∞i:j:h:i j{a | r f i a} {a | r f j a} simp_rw X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r✝:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rfleq: (p : ℝ≥0∞), rs ⁻¹' {p} = n, rs ⁻¹' {p} {a | p f n a} := fun p => Eq.mpr (id (congrArg (fun _a => rs ⁻¹' {p} = _a) (Eq.symm (inter_iUnion (rs ⁻¹' {p}) fun n => {a | p f n a})))) (Eq.mpr (id (congrArg (fun _a => _a = rs ⁻¹' {p} i, {a | p f i a}) (Eq.symm (inter_univ (rs ⁻¹' {p}))))) (ext fun x => and_congr_right fun hx => (iff_of_eq (true_iff (x i, {a | p f i a}))).mpr (if p_eq : p = 0 then of_eq_true (Eq.trans (Eq.trans (congrFun' (congrArg Membership.mem (congrArg iUnion (funext fun i => congrArg setOf (funext fun a => Eq.trans (congrFun' (congrArg LE.le p_eq) (f i a)) (one_le._simp_3 (f i a)))))) x) mem_iUnion._simp_1) (Eq.trans (congrArg Exists (funext fun i => mem_univ._simp_1 x)) (exists_const._simp_1 ))) else Eq.ndrec (motive := fun p => ¬p = 0 x i, {a | p f i a}) (fun p_eq => have this := Eq.mpr (id (congrArg (fun _a => _a) (Ne.eq_1 (r✝ * s x) 0))) p_eq; have this := right_ne_zero_of_mul this; have this := lt_of_lt_of_le (have this := ENNReal.mul_lt_mul_left (ne_of_gt (lt_of_le_of_ne' (zero_le (s x)) this)) (hsfin x) right✝; Eq.mpr (id gt_iff_lt._simp_1) (Eq.mp (congrArg (LT.lt (r✝ * s x)) (one_mul (s x))) this)) (hsf x); Exists.casesOn (lt_iSup_iff.mp this) fun i hi => mem_iUnion.mpr (Exists.intro i (le_of_lt hi))) (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx) p_eq)))r:ℝ≥0∞i:j:h:i j{a | r f i a} {a | r f j a}subset_def, mem_setOf] intro x X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r✝:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rfleq: (p : ℝ≥0∞), rs ⁻¹' {p} = n, rs ⁻¹' {p} {a | p f n a} := fun p => Eq.mpr (id (congrArg (fun _a => rs ⁻¹' {p} = _a) (Eq.symm (inter_iUnion (rs ⁻¹' {p}) fun n => {a | p f n a})))) (Eq.mpr (id (congrArg (fun _a => _a = rs ⁻¹' {p} i, {a | p f i a}) (Eq.symm (inter_univ (rs ⁻¹' {p}))))) (ext fun x => and_congr_right fun hx => (iff_of_eq (true_iff (x i, {a | p f i a}))).mpr (if p_eq : p = 0 then of_eq_true (Eq.trans (Eq.trans (congrFun' (congrArg Membership.mem (congrArg iUnion (funext fun i => congrArg setOf (funext fun a => Eq.trans (congrFun' (congrArg LE.le p_eq) (f i a)) (one_le._simp_3 (f i a)))))) x) mem_iUnion._simp_1) (Eq.trans (congrArg Exists (funext fun i => mem_univ._simp_1 x)) (exists_const._simp_1 ))) else Eq.ndrec (motive := fun p => ¬p = 0 x i, {a | p f i a}) (fun p_eq => have this := Eq.mpr (id (congrArg (fun _a => _a) (Ne.eq_1 (r✝ * s x) 0))) p_eq; have this := right_ne_zero_of_mul this; have this := lt_of_lt_of_le (have this := ENNReal.mul_lt_mul_left (ne_of_gt (lt_of_le_of_ne' (zero_le (s x)) this)) (hsfin x) right✝; Eq.mpr (id gt_iff_lt._simp_1) (Eq.mp (congrArg (LT.lt (r✝ * s x)) (one_mul (s x))) this)) (hsf x); Exists.casesOn (lt_iSup_iff.mp this) fun i hi => mem_iUnion.mpr (Exists.intro i (le_of_lt hi))) (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx) p_eq)))r:ℝ≥0∞i:j:h:i jx:Xhx:r f i xr f j x All goals completed! 🐙 X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rfleq: (p : ℝ≥0∞), rs ⁻¹' {p} = n, rs ⁻¹' {p} {a | p f n a} := fun p => Eq.mpr (id (congrArg (fun _a => rs ⁻¹' {p} = _a) (Eq.symm (inter_iUnion (rs ⁻¹' {p}) fun n => {a | p f n a})))) (Eq.mpr (id (congrArg (fun _a => _a = rs ⁻¹' {p} i, {a | p f i a}) (Eq.symm (inter_univ (rs ⁻¹' {p}))))) (ext fun x => and_congr_right fun hx => (iff_of_eq (true_iff (x i, {a | p f i a}))).mpr (if p_eq : p = 0 then of_eq_true (Eq.trans (Eq.trans (congrFun' (congrArg Membership.mem (congrArg iUnion (funext fun i => congrArg setOf (funext fun a => Eq.trans (congrFun' (congrArg LE.le p_eq) (f i a)) (one_le._simp_3 (f i a)))))) x) mem_iUnion._simp_1) (Eq.trans (congrArg Exists (funext fun i => mem_univ._simp_1 x)) (exists_const._simp_1 ))) else Eq.ndrec (motive := fun p => ¬p = 0 x i, {a | p f i a}) (fun p_eq => have this := Eq.mpr (id (congrArg (fun _a => _a) (Ne.eq_1 (r✝ * s x) 0))) p_eq; have this := right_ne_zero_of_mul this; have this := lt_of_lt_of_le (have this := ENNReal.mul_lt_mul_left (ne_of_gt (lt_of_le_of_ne' (zero_le (s x)) this)) (hsfin x) right✝; Eq.mpr (id gt_iff_lt._simp_1) (Eq.mp (congrArg (LT.lt (r✝ * s x)) (one_mul (s x))) this)) (hsf x); Exists.casesOn (lt_iSup_iff.mp this) fun i hi => mem_iUnion.mpr (Exists.intro i (le_of_lt hi))) (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx) p_eq)))mono: (r : ℝ≥0∞), Monotone fun n => rs ⁻¹' {r} {a | r f n a} := fun r i j h => inter_subset_inter_right (rs ⁻¹' {r}) (id (Eq.mpr (id (forall_congr fun x => implies_congr lintegral_iSup._simp_1 lintegral_iSup._simp_1)) fun x hx => le_trans hx (h_mono h x)))h_meas: (n : ), MeasurableSet {a | rs a f n a} := fun n => measurableSet_le (SimpleFunc.measurable rs) (hf n)r * s.lintegral μ n, ∫⁻ (a : X), f n a μ calc (r : ℝ≥0∞) * (s).lintegral μ = ((SimpleFunc.const X r : SimpleFunc X) * s).lintegral μ := X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rfleq: (p : ℝ≥0∞), rs ⁻¹' {p} = n, rs ⁻¹' {p} {a | p f n a} := fun p => Eq.mpr (id (congrArg (fun _a => rs ⁻¹' {p} = _a) (Eq.symm (inter_iUnion (rs ⁻¹' {p}) fun n => {a | p f n a})))) (Eq.mpr (id (congrArg (fun _a => _a = rs ⁻¹' {p} i, {a | p f i a}) (Eq.symm (inter_univ (rs ⁻¹' {p}))))) (ext fun x => and_congr_right fun hx => (iff_of_eq (true_iff (x i, {a | p f i a}))).mpr (if p_eq : p = 0 then of_eq_true (Eq.trans (Eq.trans (congrFun' (congrArg Membership.mem (congrArg iUnion (funext fun i => congrArg setOf (funext fun a => Eq.trans (congrFun' (congrArg LE.le p_eq) (f i a)) (one_le._simp_3 (f i a)))))) x) mem_iUnion._simp_1) (Eq.trans (congrArg Exists (funext fun i => mem_univ._simp_1 x)) (exists_const._simp_1 ))) else Eq.ndrec (motive := fun p => ¬p = 0 x i, {a | p f i a}) (fun p_eq => have this := Eq.mpr (id (congrArg (fun _a => _a) (Ne.eq_1 (r * s x) 0))) p_eq; have this := right_ne_zero_of_mul this; have this := lt_of_lt_of_le (have this := ENNReal.mul_lt_mul_left (ne_of_gt (lt_of_le_of_ne' (zero_le (s x)) this)) (hsfin x) right✝; Eq.mpr (id gt_iff_lt._simp_1) (Eq.mp (congrArg (LT.lt (r * s x)) (one_mul (s x))) this)) (hsf x); Exists.casesOn (lt_iSup_iff.mp this) fun i hi => mem_iUnion.mpr (Exists.intro i (le_of_lt hi))) (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx) p_eq)))mono: (r : ℝ≥0∞), Monotone fun n => rs ⁻¹' {r} {a | r f n a} := fun r i j h => inter_subset_inter_right (rs ⁻¹' {r}) (id (Eq.mpr (id (forall_congr fun x => implies_congr lintegral_iSup._simp_1 lintegral_iSup._simp_1)) fun x hx => le_trans hx (h_mono h x)))h_meas: (n : ), MeasurableSet {a | rs a f n a} := fun n => measurableSet_le (SimpleFunc.measurable rs) (hf n)r * s.lintegral μ = (SimpleFunc.const X r * s).lintegral μ All goals completed! 🐙 _ = r (rs).range, r * μ (rs ⁻¹' {r}) := X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rfleq: (p : ℝ≥0∞), rs ⁻¹' {p} = n, rs ⁻¹' {p} {a | p f n a} := fun p => Eq.mpr (id (congrArg (fun _a => rs ⁻¹' {p} = _a) (Eq.symm (inter_iUnion (rs ⁻¹' {p}) fun n => {a | p f n a})))) (Eq.mpr (id (congrArg (fun _a => _a = rs ⁻¹' {p} i, {a | p f i a}) (Eq.symm (inter_univ (rs ⁻¹' {p}))))) (ext fun x => and_congr_right fun hx => (iff_of_eq (true_iff (x i, {a | p f i a}))).mpr (if p_eq : p = 0 then of_eq_true (Eq.trans (Eq.trans (congrFun' (congrArg Membership.mem (congrArg iUnion (funext fun i => congrArg setOf (funext fun a => Eq.trans (congrFun' (congrArg LE.le p_eq) (f i a)) (one_le._simp_3 (f i a)))))) x) mem_iUnion._simp_1) (Eq.trans (congrArg Exists (funext fun i => mem_univ._simp_1 x)) (exists_const._simp_1 ))) else Eq.ndrec (motive := fun p => ¬p = 0 x i, {a | p f i a}) (fun p_eq => have this := Eq.mpr (id (congrArg (fun _a => _a) (Ne.eq_1 (r * s x) 0))) p_eq; have this := right_ne_zero_of_mul this; have this := lt_of_lt_of_le (have this := ENNReal.mul_lt_mul_left (ne_of_gt (lt_of_le_of_ne' (zero_le (s x)) this)) (hsfin x) right✝; Eq.mpr (id gt_iff_lt._simp_1) (Eq.mp (congrArg (LT.lt (r * s x)) (one_mul (s x))) this)) (hsf x); Exists.casesOn (lt_iSup_iff.mp this) fun i hi => mem_iUnion.mpr (Exists.intro i (le_of_lt hi))) (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx) p_eq)))mono: (r : ℝ≥0∞), Monotone fun n => rs ⁻¹' {r} {a | r f n a} := fun r i j h => inter_subset_inter_right (rs ⁻¹' {r}) (id (Eq.mpr (id (forall_congr fun x => implies_congr lintegral_iSup._simp_1 lintegral_iSup._simp_1)) fun x hx => le_trans hx (h_mono h x)))h_meas: (n : ), MeasurableSet {a | rs a f n a} := fun n => measurableSet_le (SimpleFunc.measurable rs) (hf n)(SimpleFunc.const X r * s).lintegral μ = r rs.range, r * μ (rs ⁻¹' {r}) X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rfleq: (p : ℝ≥0∞), rs ⁻¹' {p} = n, rs ⁻¹' {p} {a | p f n a} := fun p => Eq.mpr (id (congrArg (fun _a => rs ⁻¹' {p} = _a) (Eq.symm (inter_iUnion (rs ⁻¹' {p}) fun n => {a | p f n a})))) (Eq.mpr (id (congrArg (fun _a => _a = rs ⁻¹' {p} i, {a | p f i a}) (Eq.symm (inter_univ (rs ⁻¹' {p}))))) (ext fun x => and_congr_right fun hx => (iff_of_eq (true_iff (x i, {a | p f i a}))).mpr (if p_eq : p = 0 then of_eq_true (Eq.trans (Eq.trans (congrFun' (congrArg Membership.mem (congrArg iUnion (funext fun i => congrArg setOf (funext fun a => Eq.trans (congrFun' (congrArg LE.le p_eq) (f i a)) (one_le._simp_3 (f i a)))))) x) mem_iUnion._simp_1) (Eq.trans (congrArg Exists (funext fun i => mem_univ._simp_1 x)) (exists_const._simp_1 ))) else Eq.ndrec (motive := fun p => ¬p = 0 x i, {a | p f i a}) (fun p_eq => have this := Eq.mpr (id (congrArg (fun _a => _a) (Ne.eq_1 (r * s x) 0))) p_eq; have this := right_ne_zero_of_mul this; have this := lt_of_lt_of_le (have this := ENNReal.mul_lt_mul_left (ne_of_gt (lt_of_le_of_ne' (zero_le (s x)) this)) (hsfin x) right✝; Eq.mpr (id gt_iff_lt._simp_1) (Eq.mp (congrArg (LT.lt (r * s x)) (one_mul (s x))) this)) (hsf x); Exists.casesOn (lt_iSup_iff.mp this) fun i hi => mem_iUnion.mpr (Exists.intro i (le_of_lt hi))) (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx) p_eq)))mono: (r : ℝ≥0∞), Monotone fun n => rs ⁻¹' {r} {a | r f n a} := fun r i j h => inter_subset_inter_right (rs ⁻¹' {r}) (id (Eq.mpr (id (forall_congr fun x => implies_congr lintegral_iSup._simp_1 lintegral_iSup._simp_1)) fun x hx => le_trans hx (h_mono h x)))h_meas: (n : ), MeasurableSet {a | rs a f n a} := fun n => measurableSet_le (SimpleFunc.measurable rs) (hf n)(SimpleFunc.const X r * s).lintegral μ = r_1 (SimpleFunc.const X r * s).range, r_1 * μ ((SimpleFunc.const X r * s) ⁻¹' {r_1}) All goals completed! 🐙 _ = r (rs).range, r * μ ( n, rs ⁻¹' {r} { a | r f n a }) := X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rfleq: (p : ℝ≥0∞), rs ⁻¹' {p} = n, rs ⁻¹' {p} {a | p f n a} := fun p => Eq.mpr (id (congrArg (fun _a => rs ⁻¹' {p} = _a) (Eq.symm (inter_iUnion (rs ⁻¹' {p}) fun n => {a | p f n a})))) (Eq.mpr (id (congrArg (fun _a => _a = rs ⁻¹' {p} i, {a | p f i a}) (Eq.symm (inter_univ (rs ⁻¹' {p}))))) (ext fun x => and_congr_right fun hx => (iff_of_eq (true_iff (x i, {a | p f i a}))).mpr (if p_eq : p = 0 then of_eq_true (Eq.trans (Eq.trans (congrFun' (congrArg Membership.mem (congrArg iUnion (funext fun i => congrArg setOf (funext fun a => Eq.trans (congrFun' (congrArg LE.le p_eq) (f i a)) (one_le._simp_3 (f i a)))))) x) mem_iUnion._simp_1) (Eq.trans (congrArg Exists (funext fun i => mem_univ._simp_1 x)) (exists_const._simp_1 ))) else Eq.ndrec (motive := fun p => ¬p = 0 x i, {a | p f i a}) (fun p_eq => have this := Eq.mpr (id (congrArg (fun _a => _a) (Ne.eq_1 (r * s x) 0))) p_eq; have this := right_ne_zero_of_mul this; have this := lt_of_lt_of_le (have this := ENNReal.mul_lt_mul_left (ne_of_gt (lt_of_le_of_ne' (zero_le (s x)) this)) (hsfin x) right✝; Eq.mpr (id gt_iff_lt._simp_1) (Eq.mp (congrArg (LT.lt (r * s x)) (one_mul (s x))) this)) (hsf x); Exists.casesOn (lt_iSup_iff.mp this) fun i hi => mem_iUnion.mpr (Exists.intro i (le_of_lt hi))) (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx) p_eq)))mono: (r : ℝ≥0∞), Monotone fun n => rs ⁻¹' {r} {a | r f n a} := fun r i j h => inter_subset_inter_right (rs ⁻¹' {r}) (id (Eq.mpr (id (forall_congr fun x => implies_congr lintegral_iSup._simp_1 lintegral_iSup._simp_1)) fun x hx => le_trans hx (h_mono h x)))h_meas: (n : ), MeasurableSet {a | rs a f n a} := fun n => measurableSet_le (SimpleFunc.measurable rs) (hf n) r rs.range, r * μ (rs ⁻¹' {r}) = r rs.range, r * μ (⋃ n, rs ⁻¹' {r} {a | r f n a}) All goals completed! 🐙 _ = r (rs).range, n, r * μ (rs ⁻¹' {r} { a | r f n a }) := Finset.sum_congr rfl fun x _ X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rfleq: (p : ℝ≥0∞), rs ⁻¹' {p} = n, rs ⁻¹' {p} {a | p f n a} := fun p => Eq.mpr (id (congrArg (fun _a => rs ⁻¹' {p} = _a) (Eq.symm (inter_iUnion (rs ⁻¹' {p}) fun n => {a | p f n a})))) (Eq.mpr (id (congrArg (fun _a => _a = rs ⁻¹' {p} i, {a | p f i a}) (Eq.symm (inter_univ (rs ⁻¹' {p}))))) (ext fun x => and_congr_right fun hx => (iff_of_eq (true_iff (x i, {a | p f i a}))).mpr (if p_eq : p = 0 then of_eq_true (Eq.trans (Eq.trans (congrFun' (congrArg Membership.mem (congrArg iUnion (funext fun i => congrArg setOf (funext fun a => Eq.trans (congrFun' (congrArg LE.le p_eq) (f i a)) (one_le._simp_3 (f i a)))))) x) mem_iUnion._simp_1) (Eq.trans (congrArg Exists (funext fun i => mem_univ._simp_1 x)) (exists_const._simp_1 ))) else Eq.ndrec (motive := fun p => ¬p = 0 x i, {a | p f i a}) (fun p_eq => have this := Eq.mpr (id (congrArg (fun _a => _a) (Ne.eq_1 (r * s x) 0))) p_eq; have this := right_ne_zero_of_mul this; have this := lt_of_lt_of_le (have this := ENNReal.mul_lt_mul_left (ne_of_gt (lt_of_le_of_ne' (zero_le (s x)) this)) (hsfin x) right✝; Eq.mpr (id gt_iff_lt._simp_1) (Eq.mp (congrArg (LT.lt (r * s x)) (one_mul (s x))) this)) (hsf x); Exists.casesOn (lt_iSup_iff.mp this) fun i hi => mem_iUnion.mpr (Exists.intro i (le_of_lt hi))) (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx) p_eq)))mono: (r : ℝ≥0∞), Monotone fun n => rs ⁻¹' {r} {a | r f n a} := fun r i j h => inter_subset_inter_right (rs ⁻¹' {r}) (id (Eq.mpr (id (forall_congr fun x => implies_congr lintegral_iSup._simp_1 lintegral_iSup._simp_1)) fun x hx => le_trans hx (h_mono h x)))h_meas: (n : ), MeasurableSet {a | rs a f n a} := fun n => measurableSet_le (SimpleFunc.measurable rs) (hf n)x:ℝ≥0∞x✝:x rs.rangex * μ (⋃ n, rs ⁻¹' {x} {a | x f n a}) = n, x * μ (rs ⁻¹' {x} {a | x f n a}) All goals completed! 🐙 _ = n, r (rs).range, r * μ (rs ⁻¹' {r} { a | r f n a }) := X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rfleq: (p : ℝ≥0∞), rs ⁻¹' {p} = n, rs ⁻¹' {p} {a | p f n a} := fun p => Eq.mpr (id (congrArg (fun _a => rs ⁻¹' {p} = _a) (Eq.symm (inter_iUnion (rs ⁻¹' {p}) fun n => {a | p f n a})))) (Eq.mpr (id (congrArg (fun _a => _a = rs ⁻¹' {p} i, {a | p f i a}) (Eq.symm (inter_univ (rs ⁻¹' {p}))))) (ext fun x => and_congr_right fun hx => (iff_of_eq (true_iff (x i, {a | p f i a}))).mpr (if p_eq : p = 0 then of_eq_true (Eq.trans (Eq.trans (congrFun' (congrArg Membership.mem (congrArg iUnion (funext fun i => congrArg setOf (funext fun a => Eq.trans (congrFun' (congrArg LE.le p_eq) (f i a)) (one_le._simp_3 (f i a)))))) x) mem_iUnion._simp_1) (Eq.trans (congrArg Exists (funext fun i => mem_univ._simp_1 x)) (exists_const._simp_1 ))) else Eq.ndrec (motive := fun p => ¬p = 0 x i, {a | p f i a}) (fun p_eq => have this := Eq.mpr (id (congrArg (fun _a => _a) (Ne.eq_1 (r * s x) 0))) p_eq; have this := right_ne_zero_of_mul this; have this := lt_of_lt_of_le (have this := ENNReal.mul_lt_mul_left (ne_of_gt (lt_of_le_of_ne' (zero_le (s x)) this)) (hsfin x) right✝; Eq.mpr (id gt_iff_lt._simp_1) (Eq.mp (congrArg (LT.lt (r * s x)) (one_mul (s x))) this)) (hsf x); Exists.casesOn (lt_iSup_iff.mp this) fun i hi => mem_iUnion.mpr (Exists.intro i (le_of_lt hi))) (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx) p_eq)))mono: (r : ℝ≥0∞), Monotone fun n => rs ⁻¹' {r} {a | r f n a} := fun r i j h => inter_subset_inter_right (rs ⁻¹' {r}) (id (Eq.mpr (id (forall_congr fun x => implies_congr lintegral_iSup._simp_1 lintegral_iSup._simp_1)) fun x hx => le_trans hx (h_mono h x)))h_meas: (n : ), MeasurableSet {a | rs a f n a} := fun n => measurableSet_le (SimpleFunc.measurable rs) (hf n) r rs.range, n, r * μ (rs ⁻¹' {r} {a | r f n a}) = n, r rs.range, r * μ (rs ⁻¹' {r} {a | r f n a}) X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rfleq: (p : ℝ≥0∞), rs ⁻¹' {p} = n, rs ⁻¹' {p} {a | p f n a} := fun p => Eq.mpr (id (congrArg (fun _a => rs ⁻¹' {p} = _a) (Eq.symm (inter_iUnion (rs ⁻¹' {p}) fun n => {a | p f n a})))) (Eq.mpr (id (congrArg (fun _a => _a = rs ⁻¹' {p} i, {a | p f i a}) (Eq.symm (inter_univ (rs ⁻¹' {p}))))) (ext fun x => and_congr_right fun hx => (iff_of_eq (true_iff (x i, {a | p f i a}))).mpr (if p_eq : p = 0 then of_eq_true (Eq.trans (Eq.trans (congrFun' (congrArg Membership.mem (congrArg iUnion (funext fun i => congrArg setOf (funext fun a => Eq.trans (congrFun' (congrArg LE.le p_eq) (f i a)) (one_le._simp_3 (f i a)))))) x) mem_iUnion._simp_1) (Eq.trans (congrArg Exists (funext fun i => mem_univ._simp_1 x)) (exists_const._simp_1 ))) else Eq.ndrec (motive := fun p => ¬p = 0 x i, {a | p f i a}) (fun p_eq => have this := Eq.mpr (id (congrArg (fun _a => _a) (Ne.eq_1 (r * s x) 0))) p_eq; have this := right_ne_zero_of_mul this; have this := lt_of_lt_of_le (have this := ENNReal.mul_lt_mul_left (ne_of_gt (lt_of_le_of_ne' (zero_le (s x)) this)) (hsfin x) right✝; Eq.mpr (id gt_iff_lt._simp_1) (Eq.mp (congrArg (LT.lt (r * s x)) (one_mul (s x))) this)) (hsf x); Exists.casesOn (lt_iSup_iff.mp this) fun i hi => mem_iUnion.mpr (Exists.intro i (le_of_lt hi))) (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx) p_eq)))mono: (r : ℝ≥0∞), Monotone fun n => rs ⁻¹' {r} {a | r f n a} := fun r i j h => inter_subset_inter_right (rs ⁻¹' {r}) (id (Eq.mpr (id (forall_congr fun x => implies_congr lintegral_iSup._simp_1 lintegral_iSup._simp_1)) fun x hx => le_trans hx (h_mono h x)))h_meas: (n : ), MeasurableSet {a | rs a f n a} := fun n => measurableSet_le (SimpleFunc.measurable rs) (hf n)p:ℝ≥0∞i:j:h:i jp * μ (rs ⁻¹' {p} {a | p f i a}) p * μ (rs ⁻¹' {p} {a | p f j a}) X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rfleq: (p : ℝ≥0∞), rs ⁻¹' {p} = n, rs ⁻¹' {p} {a | p f n a} := fun p => Eq.mpr (id (congrArg (fun _a => rs ⁻¹' {p} = _a) (Eq.symm (inter_iUnion (rs ⁻¹' {p}) fun n => {a | p f n a})))) (Eq.mpr (id (congrArg (fun _a => _a = rs ⁻¹' {p} i, {a | p f i a}) (Eq.symm (inter_univ (rs ⁻¹' {p}))))) (ext fun x => and_congr_right fun hx => (iff_of_eq (true_iff (x i, {a | p f i a}))).mpr (if p_eq : p = 0 then of_eq_true (Eq.trans (Eq.trans (congrFun' (congrArg Membership.mem (congrArg iUnion (funext fun i => congrArg setOf (funext fun a => Eq.trans (congrFun' (congrArg LE.le p_eq) (f i a)) (one_le._simp_3 (f i a)))))) x) mem_iUnion._simp_1) (Eq.trans (congrArg Exists (funext fun i => mem_univ._simp_1 x)) (exists_const._simp_1 ))) else Eq.ndrec (motive := fun p => ¬p = 0 x i, {a | p f i a}) (fun p_eq => have this := Eq.mpr (id (congrArg (fun _a => _a) (Ne.eq_1 (r * s x) 0))) p_eq; have this := right_ne_zero_of_mul this; have this := lt_of_lt_of_le (have this := ENNReal.mul_lt_mul_left (ne_of_gt (lt_of_le_of_ne' (zero_le (s x)) this)) (hsfin x) right✝; Eq.mpr (id gt_iff_lt._simp_1) (Eq.mp (congrArg (LT.lt (r * s x)) (one_mul (s x))) this)) (hsf x); Exists.casesOn (lt_iSup_iff.mp this) fun i hi => mem_iUnion.mpr (Exists.intro i (le_of_lt hi))) (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx) p_eq)))mono: (r : ℝ≥0∞), Monotone fun n => rs ⁻¹' {r} {a | r f n a} := fun r i j h => inter_subset_inter_right (rs ⁻¹' {r}) (id (Eq.mpr (id (forall_congr fun x => implies_congr lintegral_iSup._simp_1 lintegral_iSup._simp_1)) fun x hx => le_trans hx (h_mono h x)))h_meas: (n : ), MeasurableSet {a | rs a f n a} := fun n => measurableSet_le (SimpleFunc.measurable rs) (hf n)p:ℝ≥0∞i:j:h:i jrs ⁻¹' {p} {a | p f i a} rs ⁻¹' {p} {a | p f j a} All goals completed! 🐙 _ n : , ((rs).restrict { a | rs a f n a }).lintegral μ := X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rfleq: (p : ℝ≥0∞), rs ⁻¹' {p} = n, rs ⁻¹' {p} {a | p f n a} := fun p => Eq.mpr (id (congrArg (fun _a => rs ⁻¹' {p} = _a) (Eq.symm (inter_iUnion (rs ⁻¹' {p}) fun n => {a | p f n a})))) (Eq.mpr (id (congrArg (fun _a => _a = rs ⁻¹' {p} i, {a | p f i a}) (Eq.symm (inter_univ (rs ⁻¹' {p}))))) (ext fun x => and_congr_right fun hx => (iff_of_eq (true_iff (x i, {a | p f i a}))).mpr (if p_eq : p = 0 then of_eq_true (Eq.trans (Eq.trans (congrFun' (congrArg Membership.mem (congrArg iUnion (funext fun i => congrArg setOf (funext fun a => Eq.trans (congrFun' (congrArg LE.le p_eq) (f i a)) (one_le._simp_3 (f i a)))))) x) mem_iUnion._simp_1) (Eq.trans (congrArg Exists (funext fun i => mem_univ._simp_1 x)) (exists_const._simp_1 ))) else Eq.ndrec (motive := fun p => ¬p = 0 x i, {a | p f i a}) (fun p_eq => have this := Eq.mpr (id (congrArg (fun _a => _a) (Ne.eq_1 (r * s x) 0))) p_eq; have this := right_ne_zero_of_mul this; have this := lt_of_lt_of_le (have this := ENNReal.mul_lt_mul_left (ne_of_gt (lt_of_le_of_ne' (zero_le (s x)) this)) (hsfin x) right✝; Eq.mpr (id gt_iff_lt._simp_1) (Eq.mp (congrArg (LT.lt (r * s x)) (one_mul (s x))) this)) (hsf x); Exists.casesOn (lt_iSup_iff.mp this) fun i hi => mem_iUnion.mpr (Exists.intro i (le_of_lt hi))) (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx) p_eq)))mono: (r : ℝ≥0∞), Monotone fun n => rs ⁻¹' {r} {a | r f n a} := fun r i j h => inter_subset_inter_right (rs ⁻¹' {r}) (id (Eq.mpr (id (forall_congr fun x => implies_congr lintegral_iSup._simp_1 lintegral_iSup._simp_1)) fun x hx => le_trans hx (h_mono h x)))h_meas: (n : ), MeasurableSet {a | rs a f n a} := fun n => measurableSet_le (SimpleFunc.measurable rs) (hf n) n, r rs.range, r * μ (rs ⁻¹' {r} {a | r f n a}) n, (rs.restrict {a | rs a f n a}).lintegral μ X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rfleq: (p : ℝ≥0∞), rs ⁻¹' {p} = n, rs ⁻¹' {p} {a | p f n a} := fun p => Eq.mpr (id (congrArg (fun _a => rs ⁻¹' {p} = _a) (Eq.symm (inter_iUnion (rs ⁻¹' {p}) fun n => {a | p f n a})))) (Eq.mpr (id (congrArg (fun _a => _a = rs ⁻¹' {p} i, {a | p f i a}) (Eq.symm (inter_univ (rs ⁻¹' {p}))))) (ext fun x => and_congr_right fun hx => (iff_of_eq (true_iff (x i, {a | p f i a}))).mpr (if p_eq : p = 0 then of_eq_true (Eq.trans (Eq.trans (congrFun' (congrArg Membership.mem (congrArg iUnion (funext fun i => congrArg setOf (funext fun a => Eq.trans (congrFun' (congrArg LE.le p_eq) (f i a)) (one_le._simp_3 (f i a)))))) x) mem_iUnion._simp_1) (Eq.trans (congrArg Exists (funext fun i => mem_univ._simp_1 x)) (exists_const._simp_1 ))) else Eq.ndrec (motive := fun p => ¬p = 0 x i, {a | p f i a}) (fun p_eq => have this := Eq.mpr (id (congrArg (fun _a => _a) (Ne.eq_1 (r * s x) 0))) p_eq; have this := right_ne_zero_of_mul this; have this := lt_of_lt_of_le (have this := ENNReal.mul_lt_mul_left (ne_of_gt (lt_of_le_of_ne' (zero_le (s x)) this)) (hsfin x) right✝; Eq.mpr (id gt_iff_lt._simp_1) (Eq.mp (congrArg (LT.lt (r * s x)) (one_mul (s x))) this)) (hsf x); Exists.casesOn (lt_iSup_iff.mp this) fun i hi => mem_iUnion.mpr (Exists.intro i (le_of_lt hi))) (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx) p_eq)))mono: (r : ℝ≥0∞), Monotone fun n => rs ⁻¹' {r} {a | r f n a} := fun r i j h => inter_subset_inter_right (rs ⁻¹' {r}) (id (Eq.mpr (id (forall_congr fun x => implies_congr lintegral_iSup._simp_1 lintegral_iSup._simp_1)) fun x hx => le_trans hx (h_mono h x)))h_meas: (n : ), MeasurableSet {a | rs a f n a} := fun n => measurableSet_le (SimpleFunc.measurable rs) (hf n)n: r rs.range, r * μ (rs ⁻¹' {r} {a | r f n a}) (rs.restrict {a | rs a f n a}).lintegral μ X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rfleq: (p : ℝ≥0∞), rs ⁻¹' {p} = n, rs ⁻¹' {p} {a | p f n a} := fun p => Eq.mpr (id (congrArg (fun _a => rs ⁻¹' {p} = _a) (Eq.symm (inter_iUnion (rs ⁻¹' {p}) fun n => {a | p f n a})))) (Eq.mpr (id (congrArg (fun _a => _a = rs ⁻¹' {p} i, {a | p f i a}) (Eq.symm (inter_univ (rs ⁻¹' {p}))))) (ext fun x => and_congr_right fun hx => (iff_of_eq (true_iff (x i, {a | p f i a}))).mpr (if p_eq : p = 0 then of_eq_true (Eq.trans (Eq.trans (congrFun' (congrArg Membership.mem (congrArg iUnion (funext fun i => congrArg setOf (funext fun a => Eq.trans (congrFun' (congrArg LE.le p_eq) (f i a)) (one_le._simp_3 (f i a)))))) x) mem_iUnion._simp_1) (Eq.trans (congrArg Exists (funext fun i => mem_univ._simp_1 x)) (exists_const._simp_1 ))) else Eq.ndrec (motive := fun p => ¬p = 0 x i, {a | p f i a}) (fun p_eq => have this := Eq.mpr (id (congrArg (fun _a => _a) (Ne.eq_1 (r * s x) 0))) p_eq; have this := right_ne_zero_of_mul this; have this := lt_of_lt_of_le (have this := ENNReal.mul_lt_mul_left (ne_of_gt (lt_of_le_of_ne' (zero_le (s x)) this)) (hsfin x) right✝; Eq.mpr (id gt_iff_lt._simp_1) (Eq.mp (congrArg (LT.lt (r * s x)) (one_mul (s x))) this)) (hsf x); Exists.casesOn (lt_iSup_iff.mp this) fun i hi => mem_iUnion.mpr (Exists.intro i (le_of_lt hi))) (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx) p_eq)))mono: (r : ℝ≥0∞), Monotone fun n => rs ⁻¹' {r} {a | r f n a} := fun r i j h => inter_subset_inter_right (rs ⁻¹' {r}) (id (Eq.mpr (id (forall_congr fun x => implies_congr lintegral_iSup._simp_1 lintegral_iSup._simp_1)) fun x hx => le_trans hx (h_mono h x)))h_meas: (n : ), MeasurableSet {a | rs a f n a} := fun n => measurableSet_le (SimpleFunc.measurable rs) (hf n)n: r rs.range, r * μ (rs ⁻¹' {r} {a | r f n a}) r rs.range, r * μ (rs ⁻¹' {r} {a | rs a f n a}) X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r✝:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rfleq: (p : ℝ≥0∞), rs ⁻¹' {p} = n, rs ⁻¹' {p} {a | p f n a} := fun p => Eq.mpr (id (congrArg (fun _a => rs ⁻¹' {p} = _a) (Eq.symm (inter_iUnion (rs ⁻¹' {p}) fun n => {a | p f n a})))) (Eq.mpr (id (congrArg (fun _a => _a = rs ⁻¹' {p} i, {a | p f i a}) (Eq.symm (inter_univ (rs ⁻¹' {p}))))) (ext fun x => and_congr_right fun hx => (iff_of_eq (true_iff (x i, {a | p f i a}))).mpr (if p_eq : p = 0 then of_eq_true (Eq.trans (Eq.trans (congrFun' (congrArg Membership.mem (congrArg iUnion (funext fun i => congrArg setOf (funext fun a => Eq.trans (congrFun' (congrArg LE.le p_eq) (f i a)) (one_le._simp_3 (f i a)))))) x) mem_iUnion._simp_1) (Eq.trans (congrArg Exists (funext fun i => mem_univ._simp_1 x)) (exists_const._simp_1 ))) else Eq.ndrec (motive := fun p => ¬p = 0 x i, {a | p f i a}) (fun p_eq => have this := Eq.mpr (id (congrArg (fun _a => _a) (Ne.eq_1 (r * s x) 0))) p_eq; have this := right_ne_zero_of_mul this; have this := lt_of_lt_of_le (have this := ENNReal.mul_lt_mul_left (ne_of_gt (lt_of_le_of_ne' (zero_le (s x)) this)) (hsfin x) right✝; Eq.mpr (id gt_iff_lt._simp_1) (Eq.mp (congrArg (LT.lt (r * s x)) (one_mul (s x))) this)) (hsf x); Exists.casesOn (lt_iSup_iff.mp this) fun i hi => mem_iUnion.mpr (Exists.intro i (le_of_lt hi))) (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx) p_eq)))mono: (r : ℝ≥0∞), Monotone fun n => rs ⁻¹' {r} {a | r f n a} := fun r i j h => inter_subset_inter_right (rs ⁻¹' {r}) (id (Eq.mpr (id (forall_congr fun x => implies_congr lintegral_iSup._simp_1 lintegral_iSup._simp_1)) fun x hx => le_trans hx (h_mono h x)))h_meas: (n : ), MeasurableSet {a | rs a f n a} := fun n => measurableSet_le (SimpleFunc.measurable rs) (hf n)n:r:ℝ≥0∞x✝:r rs.ranger * μ (rs ⁻¹' {r} {a | r f n a}) = r * μ (rs ⁻¹' {r} {a | rs a f n a}) X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r✝:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rfleq: (p : ℝ≥0∞), rs ⁻¹' {p} = n, rs ⁻¹' {p} {a | p f n a} := fun p => Eq.mpr (id (congrArg (fun _a => rs ⁻¹' {p} = _a) (Eq.symm (inter_iUnion (rs ⁻¹' {p}) fun n => {a | p f n a})))) (Eq.mpr (id (congrArg (fun _a => _a = rs ⁻¹' {p} i, {a | p f i a}) (Eq.symm (inter_univ (rs ⁻¹' {p}))))) (ext fun x => and_congr_right fun hx => (iff_of_eq (true_iff (x i, {a | p f i a}))).mpr (if p_eq : p = 0 then of_eq_true (Eq.trans (Eq.trans (congrFun' (congrArg Membership.mem (congrArg iUnion (funext fun i => congrArg setOf (funext fun a => Eq.trans (congrFun' (congrArg LE.le p_eq) (f i a)) (one_le._simp_3 (f i a)))))) x) mem_iUnion._simp_1) (Eq.trans (congrArg Exists (funext fun i => mem_univ._simp_1 x)) (exists_const._simp_1 ))) else Eq.ndrec (motive := fun p => ¬p = 0 x i, {a | p f i a}) (fun p_eq => have this := Eq.mpr (id (congrArg (fun _a => _a) (Ne.eq_1 (r * s x) 0))) p_eq; have this := right_ne_zero_of_mul this; have this := lt_of_lt_of_le (have this := ENNReal.mul_lt_mul_left (ne_of_gt (lt_of_le_of_ne' (zero_le (s x)) this)) (hsfin x) right✝; Eq.mpr (id gt_iff_lt._simp_1) (Eq.mp (congrArg (LT.lt (r * s x)) (one_mul (s x))) this)) (hsf x); Exists.casesOn (lt_iSup_iff.mp this) fun i hi => mem_iUnion.mpr (Exists.intro i (le_of_lt hi))) (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx) p_eq)))mono: (r : ℝ≥0∞), Monotone fun n => rs ⁻¹' {r} {a | r f n a} := fun r i j h => inter_subset_inter_right (rs ⁻¹' {r}) (id (Eq.mpr (id (forall_congr fun x => implies_congr lintegral_iSup._simp_1 lintegral_iSup._simp_1)) fun x hx => le_trans hx (h_mono h x)))h_meas: (n : ), MeasurableSet {a | rs a f n a} := fun n => measurableSet_le (SimpleFunc.measurable rs) (hf n)n:r:ℝ≥0∞x✝:r rs.rangea:Xa rs ⁻¹' {r} {a | r f n a} a rs ⁻¹' {r} {a | rs a f n a} X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r✝:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rfleq: (p : ℝ≥0∞), rs ⁻¹' {p} = n, rs ⁻¹' {p} {a | p f n a} := fun p => Eq.mpr (id (congrArg (fun _a => rs ⁻¹' {p} = _a) (Eq.symm (inter_iUnion (rs ⁻¹' {p}) fun n => {a | p f n a})))) (Eq.mpr (id (congrArg (fun _a => _a = rs ⁻¹' {p} i, {a | p f i a}) (Eq.symm (inter_univ (rs ⁻¹' {p}))))) (ext fun x => and_congr_right fun hx => (iff_of_eq (true_iff (x i, {a | p f i a}))).mpr (if p_eq : p = 0 then of_eq_true (Eq.trans (Eq.trans (congrFun' (congrArg Membership.mem (congrArg iUnion (funext fun i => congrArg setOf (funext fun a => Eq.trans (congrFun' (congrArg LE.le p_eq) (f i a)) (one_le._simp_3 (f i a)))))) x) mem_iUnion._simp_1) (Eq.trans (congrArg Exists (funext fun i => mem_univ._simp_1 x)) (exists_const._simp_1 ))) else Eq.ndrec (motive := fun p => ¬p = 0 x i, {a | p f i a}) (fun p_eq => have this := Eq.mpr (id (congrArg (fun _a => _a) (Ne.eq_1 (r * s x) 0))) p_eq; have this := right_ne_zero_of_mul this; have this := lt_of_lt_of_le (have this := ENNReal.mul_lt_mul_left (ne_of_gt (lt_of_le_of_ne' (zero_le (s x)) this)) (hsfin x) right✝; Eq.mpr (id gt_iff_lt._simp_1) (Eq.mp (congrArg (LT.lt (r * s x)) (one_mul (s x))) this)) (hsf x); Exists.casesOn (lt_iSup_iff.mp this) fun i hi => mem_iUnion.mpr (Exists.intro i (le_of_lt hi))) (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx) p_eq)))mono: (r : ℝ≥0∞), Monotone fun n => rs ⁻¹' {r} {a | r f n a} := fun r i j h => inter_subset_inter_right (rs ⁻¹' {r}) (id (Eq.mpr (id (forall_congr fun x => implies_congr lintegral_iSup._simp_1 lintegral_iSup._simp_1)) fun x hx => le_trans hx (h_mono h x)))h_meas: (n : ), MeasurableSet {a | rs a f n a} := fun n => measurableSet_le (SimpleFunc.measurable rs) (hf n)n:r:ℝ≥0∞x✝:r rs.rangea:Xa rs ⁻¹' {r} (a {a | r f n a} a {a | rs a f n a}) All goals completed! 🐙 _ n, ∫⁻ a, f n a μ := X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rfleq: (p : ℝ≥0∞), rs ⁻¹' {p} = n, rs ⁻¹' {p} {a | p f n a} := fun p => Eq.mpr (id (congrArg (fun _a => rs ⁻¹' {p} = _a) (Eq.symm (inter_iUnion (rs ⁻¹' {p}) fun n => {a | p f n a})))) (Eq.mpr (id (congrArg (fun _a => _a = rs ⁻¹' {p} i, {a | p f i a}) (Eq.symm (inter_univ (rs ⁻¹' {p}))))) (ext fun x => and_congr_right fun hx => (iff_of_eq (true_iff (x i, {a | p f i a}))).mpr (if p_eq : p = 0 then of_eq_true (Eq.trans (Eq.trans (congrFun' (congrArg Membership.mem (congrArg iUnion (funext fun i => congrArg setOf (funext fun a => Eq.trans (congrFun' (congrArg LE.le p_eq) (f i a)) (one_le._simp_3 (f i a)))))) x) mem_iUnion._simp_1) (Eq.trans (congrArg Exists (funext fun i => mem_univ._simp_1 x)) (exists_const._simp_1 ))) else Eq.ndrec (motive := fun p => ¬p = 0 x i, {a | p f i a}) (fun p_eq => have this := Eq.mpr (id (congrArg (fun _a => _a) (Ne.eq_1 (r * s x) 0))) p_eq; have this := right_ne_zero_of_mul this; have this := lt_of_lt_of_le (have this := ENNReal.mul_lt_mul_left (ne_of_gt (lt_of_le_of_ne' (zero_le (s x)) this)) (hsfin x) right✝; Eq.mpr (id gt_iff_lt._simp_1) (Eq.mp (congrArg (LT.lt (r * s x)) (one_mul (s x))) this)) (hsf x); Exists.casesOn (lt_iSup_iff.mp this) fun i hi => mem_iUnion.mpr (Exists.intro i (le_of_lt hi))) (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx) p_eq)))mono: (r : ℝ≥0∞), Monotone fun n => rs ⁻¹' {r} {a | r f n a} := fun r i j h => inter_subset_inter_right (rs ⁻¹' {r}) (id (Eq.mpr (id (forall_congr fun x => implies_congr lintegral_iSup._simp_1 lintegral_iSup._simp_1)) fun x hx => le_trans hx (h_mono h x)))h_meas: (n : ), MeasurableSet {a | rs a f n a} := fun n => measurableSet_le (SimpleFunc.measurable rs) (hf n) n, (rs.restrict {a | rs a f n a}).lintegral μ n, ∫⁻ (a : X), f n a μ X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rfleq: (p : ℝ≥0∞), rs ⁻¹' {p} = n, rs ⁻¹' {p} {a | p f n a} := fun p => Eq.mpr (id (congrArg (fun _a => rs ⁻¹' {p} = _a) (Eq.symm (inter_iUnion (rs ⁻¹' {p}) fun n => {a | p f n a})))) (Eq.mpr (id (congrArg (fun _a => _a = rs ⁻¹' {p} i, {a | p f i a}) (Eq.symm (inter_univ (rs ⁻¹' {p}))))) (ext fun x => and_congr_right fun hx => (iff_of_eq (true_iff (x i, {a | p f i a}))).mpr (if p_eq : p = 0 then of_eq_true (Eq.trans (Eq.trans (congrFun' (congrArg Membership.mem (congrArg iUnion (funext fun i => congrArg setOf (funext fun a => Eq.trans (congrFun' (congrArg LE.le p_eq) (f i a)) (one_le._simp_3 (f i a)))))) x) mem_iUnion._simp_1) (Eq.trans (congrArg Exists (funext fun i => mem_univ._simp_1 x)) (exists_const._simp_1 ))) else Eq.ndrec (motive := fun p => ¬p = 0 x i, {a | p f i a}) (fun p_eq => have this := Eq.mpr (id (congrArg (fun _a => _a) (Ne.eq_1 (r * s x) 0))) p_eq; have this := right_ne_zero_of_mul this; have this := lt_of_lt_of_le (have this := ENNReal.mul_lt_mul_left (ne_of_gt (lt_of_le_of_ne' (zero_le (s x)) this)) (hsfin x) right✝; Eq.mpr (id gt_iff_lt._simp_1) (Eq.mp (congrArg (LT.lt (r * s x)) (one_mul (s x))) this)) (hsf x); Exists.casesOn (lt_iSup_iff.mp this) fun i hi => mem_iUnion.mpr (Exists.intro i (le_of_lt hi))) (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx) p_eq)))mono: (r : ℝ≥0∞), Monotone fun n => rs ⁻¹' {r} {a | r f n a} := fun r i j h => inter_subset_inter_right (rs ⁻¹' {r}) (id (Eq.mpr (id (forall_congr fun x => implies_congr lintegral_iSup._simp_1 lintegral_iSup._simp_1)) fun x hx => le_trans hx (h_mono h x)))h_meas: (n : ), MeasurableSet {a | rs a f n a} := fun n => measurableSet_le (SimpleFunc.measurable rs) (hf n)n:(rs.restrict {a | rs a f n a}).lintegral μ n, ∫⁻ (a : X), f n a μ X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rfleq: (p : ℝ≥0∞), rs ⁻¹' {p} = n, rs ⁻¹' {p} {a | p f n a} := fun p => Eq.mpr (id (congrArg (fun _a => rs ⁻¹' {p} = _a) (Eq.symm (inter_iUnion (rs ⁻¹' {p}) fun n => {a | p f n a})))) (Eq.mpr (id (congrArg (fun _a => _a = rs ⁻¹' {p} i, {a | p f i a}) (Eq.symm (inter_univ (rs ⁻¹' {p}))))) (ext fun x => and_congr_right fun hx => (iff_of_eq (true_iff (x i, {a | p f i a}))).mpr (if p_eq : p = 0 then of_eq_true (Eq.trans (Eq.trans (congrFun' (congrArg Membership.mem (congrArg iUnion (funext fun i => congrArg setOf (funext fun a => Eq.trans (congrFun' (congrArg LE.le p_eq) (f i a)) (one_le._simp_3 (f i a)))))) x) mem_iUnion._simp_1) (Eq.trans (congrArg Exists (funext fun i => mem_univ._simp_1 x)) (exists_const._simp_1 ))) else Eq.ndrec (motive := fun p => ¬p = 0 x i, {a | p f i a}) (fun p_eq => have this := Eq.mpr (id (congrArg (fun _a => _a) (Ne.eq_1 (r * s x) 0))) p_eq; have this := right_ne_zero_of_mul this; have this := lt_of_lt_of_le (have this := ENNReal.mul_lt_mul_left (ne_of_gt (lt_of_le_of_ne' (zero_le (s x)) this)) (hsfin x) right✝; Eq.mpr (id gt_iff_lt._simp_1) (Eq.mp (congrArg (LT.lt (r * s x)) (one_mul (s x))) this)) (hsf x); Exists.casesOn (lt_iSup_iff.mp this) fun i hi => mem_iUnion.mpr (Exists.intro i (le_of_lt hi))) (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx) p_eq)))mono: (r : ℝ≥0∞), Monotone fun n => rs ⁻¹' {r} {a | r f n a} := fun r i j h => inter_subset_inter_right (rs ⁻¹' {r}) (id (Eq.mpr (id (forall_congr fun x => implies_congr lintegral_iSup._simp_1 lintegral_iSup._simp_1)) fun x hx => le_trans hx (h_mono h x)))h_meas: (n : ), MeasurableSet {a | rs a f n a} := fun n => measurableSet_le (SimpleFunc.measurable rs) (hf n)n:(rs.restrict {a | rs a f n a}).lintegral μ ∫⁻ (a : X), f n a μ X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rfleq: (p : ℝ≥0∞), rs ⁻¹' {p} = n, rs ⁻¹' {p} {a | p f n a} := fun p => Eq.mpr (id (congrArg (fun _a => rs ⁻¹' {p} = _a) (Eq.symm (inter_iUnion (rs ⁻¹' {p}) fun n => {a | p f n a})))) (Eq.mpr (id (congrArg (fun _a => _a = rs ⁻¹' {p} i, {a | p f i a}) (Eq.symm (inter_univ (rs ⁻¹' {p}))))) (ext fun x => and_congr_right fun hx => (iff_of_eq (true_iff (x i, {a | p f i a}))).mpr (if p_eq : p = 0 then of_eq_true (Eq.trans (Eq.trans (congrFun' (congrArg Membership.mem (congrArg iUnion (funext fun i => congrArg setOf (funext fun a => Eq.trans (congrFun' (congrArg LE.le p_eq) (f i a)) (one_le._simp_3 (f i a)))))) x) mem_iUnion._simp_1) (Eq.trans (congrArg Exists (funext fun i => mem_univ._simp_1 x)) (exists_const._simp_1 ))) else Eq.ndrec (motive := fun p => ¬p = 0 x i, {a | p f i a}) (fun p_eq => have this := Eq.mpr (id (congrArg (fun _a => _a) (Ne.eq_1 (r * s x) 0))) p_eq; have this := right_ne_zero_of_mul this; have this := lt_of_lt_of_le (have this := ENNReal.mul_lt_mul_left (ne_of_gt (lt_of_le_of_ne' (zero_le (s x)) this)) (hsfin x) right✝; Eq.mpr (id gt_iff_lt._simp_1) (Eq.mp (congrArg (LT.lt (r * s x)) (one_mul (s x))) this)) (hsf x); Exists.casesOn (lt_iSup_iff.mp this) fun i hi => mem_iUnion.mpr (Exists.intro i (le_of_lt hi))) (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx) p_eq)))mono: (r : ℝ≥0∞), Monotone fun n => rs ⁻¹' {r} {a | r f n a} := fun r i j h => inter_subset_inter_right (rs ⁻¹' {r}) (id (Eq.mpr (id (forall_congr fun x => implies_congr lintegral_iSup._simp_1 lintegral_iSup._simp_1)) fun x hx => le_trans hx (h_mono h x)))h_meas: (n : ), MeasurableSet {a | rs a f n a} := fun n => measurableSet_le (SimpleFunc.measurable rs) (hf n)n:t:SimpleFunc X := rs.restrict {a | rs a f n a}(rs.restrict {a | rs a f n a}).lintegral μ ∫⁻ (a : X), f n a μ have ht : a, t a f n a := X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rfleq: (p : ℝ≥0∞), rs ⁻¹' {p} = n, rs ⁻¹' {p} {a | p f n a} := fun p => Eq.mpr (id (congrArg (fun _a => rs ⁻¹' {p} = _a) (Eq.symm (inter_iUnion (rs ⁻¹' {p}) fun n => {a | p f n a})))) (Eq.mpr (id (congrArg (fun _a => _a = rs ⁻¹' {p} i, {a | p f i a}) (Eq.symm (inter_univ (rs ⁻¹' {p}))))) (ext fun x => and_congr_right fun hx => (iff_of_eq (true_iff (x i, {a | p f i a}))).mpr (if p_eq : p = 0 then of_eq_true (Eq.trans (Eq.trans (congrFun' (congrArg Membership.mem (congrArg iUnion (funext fun i => congrArg setOf (funext fun a => Eq.trans (congrFun' (congrArg LE.le p_eq) (f i a)) (one_le._simp_3 (f i a)))))) x) mem_iUnion._simp_1) (Eq.trans (congrArg Exists (funext fun i => mem_univ._simp_1 x)) (exists_const._simp_1 ))) else Eq.ndrec (motive := fun p => ¬p = 0 x i, {a | p f i a}) (fun p_eq => have this := Eq.mpr (id (congrArg (fun _a => _a) (Ne.eq_1 (r * s x) 0))) p_eq; have this := right_ne_zero_of_mul this; have this := lt_of_lt_of_le (have this := ENNReal.mul_lt_mul_left (ne_of_gt (lt_of_le_of_ne' (zero_le (s x)) this)) (hsfin x) right✝; Eq.mpr (id gt_iff_lt._simp_1) (Eq.mp (congrArg (LT.lt (r * s x)) (one_mul (s x))) this)) (hsf x); Exists.casesOn (lt_iSup_iff.mp this) fun i hi => mem_iUnion.mpr (Exists.intro i (le_of_lt hi))) (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx) p_eq)))mono: (r : ℝ≥0∞), Monotone fun n => rs ⁻¹' {r} {a | r f n a} := fun r i j h => inter_subset_inter_right (rs ⁻¹' {r}) (id (Eq.mpr (id (forall_congr fun x => implies_congr lintegral_iSup._simp_1 lintegral_iSup._simp_1)) fun x hx => le_trans hx (h_mono h x)))h_meas: (n : ), MeasurableSet {a | rs a f n a} := fun n => measurableSet_le (SimpleFunc.measurable rs) (hf n) n, (rs.restrict {a | rs a f n a}).lintegral μ n, ∫⁻ (a : X), f n a μ X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rfleq: (p : ℝ≥0∞), rs ⁻¹' {p} = n, rs ⁻¹' {p} {a | p f n a} := fun p => Eq.mpr (id (congrArg (fun _a => rs ⁻¹' {p} = _a) (Eq.symm (inter_iUnion (rs ⁻¹' {p}) fun n => {a | p f n a})))) (Eq.mpr (id (congrArg (fun _a => _a = rs ⁻¹' {p} i, {a | p f i a}) (Eq.symm (inter_univ (rs ⁻¹' {p}))))) (ext fun x => and_congr_right fun hx => (iff_of_eq (true_iff (x i, {a | p f i a}))).mpr (if p_eq : p = 0 then of_eq_true (Eq.trans (Eq.trans (congrFun' (congrArg Membership.mem (congrArg iUnion (funext fun i => congrArg setOf (funext fun a => Eq.trans (congrFun' (congrArg LE.le p_eq) (f i a)) (one_le._simp_3 (f i a)))))) x) mem_iUnion._simp_1) (Eq.trans (congrArg Exists (funext fun i => mem_univ._simp_1 x)) (exists_const._simp_1 ))) else Eq.ndrec (motive := fun p => ¬p = 0 x i, {a | p f i a}) (fun p_eq => have this := Eq.mpr (id (congrArg (fun _a => _a) (Ne.eq_1 (r * s x) 0))) p_eq; have this := right_ne_zero_of_mul this; have this := lt_of_lt_of_le (have this := ENNReal.mul_lt_mul_left (ne_of_gt (lt_of_le_of_ne' (zero_le (s x)) this)) (hsfin x) right✝; Eq.mpr (id gt_iff_lt._simp_1) (Eq.mp (congrArg (LT.lt (r * s x)) (one_mul (s x))) this)) (hsf x); Exists.casesOn (lt_iSup_iff.mp this) fun i hi => mem_iUnion.mpr (Exists.intro i (le_of_lt hi))) (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx) p_eq)))mono: (r : ℝ≥0∞), Monotone fun n => rs ⁻¹' {r} {a | r f n a} := fun r i j h => inter_subset_inter_right (rs ⁻¹' {r}) (id (Eq.mpr (id (forall_congr fun x => implies_congr lintegral_iSup._simp_1 lintegral_iSup._simp_1)) fun x hx => le_trans hx (h_mono h x)))h_meas: (n : ), MeasurableSet {a | rs a f n a} := fun n => measurableSet_le (SimpleFunc.measurable rs) (hf n)n:t:SimpleFunc X := rs.restrict {a | rs a f n a}a:Xt a f n a X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rfleq: (p : ℝ≥0∞), rs ⁻¹' {p} = n, rs ⁻¹' {p} {a | p f n a} := fun p => Eq.mpr (id (congrArg (fun _a => rs ⁻¹' {p} = _a) (Eq.symm (inter_iUnion (rs ⁻¹' {p}) fun n => {a | p f n a})))) (Eq.mpr (id (congrArg (fun _a => _a = rs ⁻¹' {p} i, {a | p f i a}) (Eq.symm (inter_univ (rs ⁻¹' {p}))))) (ext fun x => and_congr_right fun hx => (iff_of_eq (true_iff (x i, {a | p f i a}))).mpr (if p_eq : p = 0 then of_eq_true (Eq.trans (Eq.trans (congrFun' (congrArg Membership.mem (congrArg iUnion (funext fun i => congrArg setOf (funext fun a => Eq.trans (congrFun' (congrArg LE.le p_eq) (f i a)) (one_le._simp_3 (f i a)))))) x) mem_iUnion._simp_1) (Eq.trans (congrArg Exists (funext fun i => mem_univ._simp_1 x)) (exists_const._simp_1 ))) else Eq.ndrec (motive := fun p => ¬p = 0 x i, {a | p f i a}) (fun p_eq => have this := Eq.mpr (id (congrArg (fun _a => _a) (Ne.eq_1 (r * s x) 0))) p_eq; have this := right_ne_zero_of_mul this; have this := lt_of_lt_of_le (have this := ENNReal.mul_lt_mul_left (ne_of_gt (lt_of_le_of_ne' (zero_le (s x)) this)) (hsfin x) right✝; Eq.mpr (id gt_iff_lt._simp_1) (Eq.mp (congrArg (LT.lt (r * s x)) (one_mul (s x))) this)) (hsf x); Exists.casesOn (lt_iSup_iff.mp this) fun i hi => mem_iUnion.mpr (Exists.intro i (le_of_lt hi))) (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx) p_eq)))mono: (r : ℝ≥0∞), Monotone fun n => rs ⁻¹' {r} {a | r f n a} := fun r i j h => inter_subset_inter_right (rs ⁻¹' {r}) (id (Eq.mpr (id (forall_congr fun x => implies_congr lintegral_iSup._simp_1 lintegral_iSup._simp_1)) fun x hx => le_trans hx (h_mono h x)))h_meas: (n : ), MeasurableSet {a | rs a f n a} := fun n => measurableSet_le (SimpleFunc.measurable rs) (hf n)n:t:SimpleFunc X := rs.restrict {a | rs a f n a}a:X(rs.restrict {a | rs a f n a}) a f n a X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞hf: (n : ), Measurable (f n)h_mono:Monotone fc:ℝ≥0 ℝ≥0∞ := ofNNRealF:X ℝ≥0∞ := fun a => n, f n as:SimpleFunc Xhsf: (x : X), s x n, f n xhsfin: (x : X), s x r:ℝ≥0right✝:r < 1ha✝:r < 1ha:r < 1 := ENNReal.coe_lt_coe.mp ha✝rs:SimpleFunc X := SimpleFunc.map (fun a => r * a) seq_rs:rs = SimpleFunc.const X r * s := rfleq: (p : ℝ≥0∞), rs ⁻¹' {p} = n, rs ⁻¹' {p} {a | p f n a} := fun p => Eq.mpr (id (congrArg (fun _a => rs ⁻¹' {p} = _a) (Eq.symm (inter_iUnion (rs ⁻¹' {p}) fun n => {a | p f n a})))) (Eq.mpr (id (congrArg (fun _a => _a = rs ⁻¹' {p} i, {a | p f i a}) (Eq.symm (inter_univ (rs ⁻¹' {p}))))) (ext fun x => and_congr_right fun hx => (iff_of_eq (true_iff (x i, {a | p f i a}))).mpr (if p_eq : p = 0 then of_eq_true (Eq.trans (Eq.trans (congrFun' (congrArg Membership.mem (congrArg iUnion (funext fun i => congrArg setOf (funext fun a => Eq.trans (congrFun' (congrArg LE.le p_eq) (f i a)) (one_le._simp_3 (f i a)))))) x) mem_iUnion._simp_1) (Eq.trans (congrArg Exists (funext fun i => mem_univ._simp_1 x)) (exists_const._simp_1 ))) else Eq.ndrec (motive := fun p => ¬p = 0 x i, {a | p f i a}) (fun p_eq => have this := Eq.mpr (id (congrArg (fun _a => _a) (Ne.eq_1 (r * s x) 0))) p_eq; have this := right_ne_zero_of_mul this; have this := lt_of_lt_of_le (have this := ENNReal.mul_lt_mul_left (ne_of_gt (lt_of_le_of_ne' (zero_le (s x)) this)) (hsfin x) right✝; Eq.mpr (id gt_iff_lt._simp_1) (Eq.mp (congrArg (LT.lt (r * s x)) (one_mul (s x))) this)) (hsf x); Exists.casesOn (lt_iSup_iff.mp this) fun i hi => mem_iUnion.mpr (Exists.intro i (le_of_lt hi))) (Eq.mp (Eq.trans lintegral_eq_nnreal._simp_2 lintegral_eq_nnreal._simp_3) hx) p_eq)))mono: (r : ℝ≥0∞), Monotone fun n => rs ⁻¹' {r} {a | r f n a} := fun r i j h => inter_subset_inter_right (rs ⁻¹' {r}) (id (Eq.mpr (id (forall_congr fun x => implies_congr lintegral_iSup._simp_1 lintegral_iSup._simp_1)) fun x hx => le_trans hx (h_mono h x)))h_meas: (n : ), MeasurableSet {a | rs a f n a} := fun n => measurableSet_le (SimpleFunc.measurable rs) (hf n)n:t:SimpleFunc X := rs.restrict {a | rs a f n a}a:X{a | rs a f n a}.indicator (⇑rs) a f n a All goals completed! 🐙 All goals completed! 🐙
定理.

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

Lean code
theorem lintegral_add {f g : X ℝ≥0∞} (hf : Measurable f) (hg : Measurable g) : ∫⁻ a, f a + g a μ = ∫⁻ a, f a μ + ∫⁻ a, g a μ := calc ∫⁻ a, f a + g a μ = ∫⁻ a, ( n, (SimpleFunc.eapprox f n : X ℝ≥0∞) a) + n, (SimpleFunc.eapprox g n : X ℝ≥0∞) a μ := X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable g∫⁻ (a : X), f a + g a μ = ∫⁻ (a : X), (⨆ n, (SimpleFunc.eapprox f n) a) + n, (SimpleFunc.eapprox g n) a μ All goals completed! 🐙 _ = ∫⁻ a, n, (SimpleFunc.eapprox f n + SimpleFunc.eapprox g n : X ℝ≥0∞) a μ := X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable g∫⁻ (a : X), (⨆ n, (SimpleFunc.eapprox f n) a) + n, (SimpleFunc.eapprox g n) a μ = ∫⁻ (a : X), n, ((SimpleFunc.eapprox f n) + (SimpleFunc.eapprox g n)) a μ X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable g(fun a => (⨆ n, (SimpleFunc.eapprox f n) a) + n, (SimpleFunc.eapprox g n) a) = fun a => n, ((SimpleFunc.eapprox f n) + (SimpleFunc.eapprox g n)) a; X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable ga:X(⨆ n, (SimpleFunc.eapprox f n) a) + n, (SimpleFunc.eapprox g n) a = n, ((SimpleFunc.eapprox f n) + (SimpleFunc.eapprox g n)) a X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable ga:X a_1, (SimpleFunc.eapprox f a_1) a + (SimpleFunc.eapprox g a_1) a = n, ((SimpleFunc.eapprox f n) + (SimpleFunc.eapprox g n)) aX:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable ga:XMonotone fun n => (SimpleFunc.eapprox f n) aX:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable ga:XMonotone fun n => (SimpleFunc.eapprox g n) a X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable ga:X a_1, (SimpleFunc.eapprox f a_1) a + (SimpleFunc.eapprox g a_1) a = n, ((SimpleFunc.eapprox f n) + (SimpleFunc.eapprox g n)) a All goals completed! 🐙 X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable ga:XMonotone fun n => (SimpleFunc.eapprox f n) a intro i X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable ga:Xi:j:i j (fun n => (SimpleFunc.eapprox f n) a) i (fun n => (SimpleFunc.eapprox f n) a) j X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable ga:Xi:j:h:i j(fun n => (SimpleFunc.eapprox f n) a) i (fun n => (SimpleFunc.eapprox f n) a) j All goals completed! 🐙 X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable ga:XMonotone fun n => (SimpleFunc.eapprox g n) a intro i X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable ga:Xi:j:i j (fun n => (SimpleFunc.eapprox g n) a) i (fun n => (SimpleFunc.eapprox g n) a) j X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable ga:Xi:j:h:i j(fun n => (SimpleFunc.eapprox g n) a) i (fun n => (SimpleFunc.eapprox g n) a) j All goals completed! 🐙 _ = n, (SimpleFunc.eapprox f n).lintegral μ + (SimpleFunc.eapprox g n).lintegral μ := X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable g∫⁻ (a : X), n, ((SimpleFunc.eapprox f n) + (SimpleFunc.eapprox g n)) a μ = n, (SimpleFunc.eapprox f n).lintegral μ + (SimpleFunc.eapprox g n).lintegral μ X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable g n, ∫⁻ (a : X), ((SimpleFunc.eapprox f n) + (SimpleFunc.eapprox g n)) a μ = n, (SimpleFunc.eapprox f n).lintegral μ + (SimpleFunc.eapprox g n).lintegral μX:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable g (n : ), Measurable ((SimpleFunc.eapprox f n) + (SimpleFunc.eapprox g n))X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable gMonotone fun n => (SimpleFunc.eapprox f n) + (SimpleFunc.eapprox g n) X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable g n, ∫⁻ (a : X), ((SimpleFunc.eapprox f n) + (SimpleFunc.eapprox g n)) a μ = n, (SimpleFunc.eapprox f n).lintegral μ + (SimpleFunc.eapprox g n).lintegral μ X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable gn:∫⁻ (a : X), ((SimpleFunc.eapprox f n) + (SimpleFunc.eapprox g n)) a μ = (SimpleFunc.eapprox f n).lintegral μ + (SimpleFunc.eapprox g n).lintegral μ calc ∫⁻ a, (SimpleFunc.eapprox f n + SimpleFunc.eapprox g n : X ℝ≥0∞) a μ = (SimpleFunc.eapprox f n + SimpleFunc.eapprox g n).lintegral μ := X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable gn:∫⁻ (a : X), ((SimpleFunc.eapprox f n) + (SimpleFunc.eapprox g n)) a μ = (SimpleFunc.eapprox f n + SimpleFunc.eapprox g n).lintegral μ All goals completed! 🐙 _ = (SimpleFunc.eapprox f n).lintegral μ + (SimpleFunc.eapprox g n).lintegral μ := X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable gn:(SimpleFunc.eapprox f n + SimpleFunc.eapprox g n).lintegral μ = (SimpleFunc.eapprox f n).lintegral μ + (SimpleFunc.eapprox g n).lintegral μ All goals completed! 🐙 X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable g (n : ), Measurable ((SimpleFunc.eapprox f n) + (SimpleFunc.eapprox g n)) X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable gn:Measurable ((SimpleFunc.eapprox f n) + (SimpleFunc.eapprox g n)) All goals completed! 🐙 X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable gMonotone fun n => (SimpleFunc.eapprox f n) + (SimpleFunc.eapprox g n) intro i X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable gi:j:i j (fun n => (SimpleFunc.eapprox f n) + (SimpleFunc.eapprox g n)) i (fun n => (SimpleFunc.eapprox f n) + (SimpleFunc.eapprox g n)) j X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable gi:j:h:i j(fun n => (SimpleFunc.eapprox f n) + (SimpleFunc.eapprox g n)) i (fun n => (SimpleFunc.eapprox f n) + (SimpleFunc.eapprox g n)) j X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable gi:j:h:i ja:X(fun n => (SimpleFunc.eapprox f n) + (SimpleFunc.eapprox g n)) i a (fun n => (SimpleFunc.eapprox f n) + (SimpleFunc.eapprox g n)) j a All goals completed! 🐙 _ = ( n, (SimpleFunc.eapprox f n).lintegral μ) + n, (SimpleFunc.eapprox g n).lintegral μ := X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable g n, (SimpleFunc.eapprox f n).lintegral μ + (SimpleFunc.eapprox g n).lintegral μ = (⨆ n, (SimpleFunc.eapprox f n).lintegral μ) + n, (SimpleFunc.eapprox g n).lintegral μ X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable gMonotone fun n => (SimpleFunc.eapprox f n).lintegral μX:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable gMonotone fun n => (SimpleFunc.eapprox g n).lintegral μ X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable gMonotone fun n => (SimpleFunc.eapprox f n).lintegral μX:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable gMonotone fun n => (SimpleFunc.eapprox g n).lintegral μ X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable gMonotone fun n => (SimpleFunc.eapprox g n).lintegral μ intro i X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable gi:j:i j (fun n => (SimpleFunc.eapprox g n).lintegral μ) i (fun n => (SimpleFunc.eapprox g n).lintegral μ) j X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable gi:j:h:i j(fun n => (SimpleFunc.eapprox g n).lintegral μ) i (fun n => (SimpleFunc.eapprox g n).lintegral μ) j All goals completed! 🐙 _ = ∫⁻ a, f a μ + ∫⁻ a, g a μ := X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hf:Measurable fhg:Measurable g(⨆ n, (SimpleFunc.eapprox f n).lintegral μ) + n, (SimpleFunc.eapprox g n).lintegral μ = ∫⁻ (a : X), f a μ + ∫⁻ (a : X), g a μ All goals completed! 🐙
定理.

f, g : X \to [0,\infty] を可測関数とする。 g \le f かつ \underline{\int}_{x \in X} g(x)\,d\mu < \infty と仮定する。 このとき \underline{\int}_{x \in X} (f(x)-g(x))\,d\mu = \underline{\int}_{x \in X} f(x)\,d\mu - \underline{\int}_{x \in X} g(x)\,d\mu. が成り立つ。

Lean code
theorem lintegral_sub {f g : X ℝ≥0∞} (hg : Measurable g) (hg_fin : ∫⁻ a, g a μ ) (h_le : g f) : ∫⁻ a, f a - g a μ = ∫⁻ a, f a μ - ∫⁻ a, g a μ := X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hg:Measurable ghg_fin:∫⁻ (a : X), g a μ h_le:g f∫⁻ (a : X), f a - g a μ = ∫⁻ (a : X), f a μ - ∫⁻ (a : X), g a μ X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hg:Measurable ghg_fin:∫⁻ (a : X), g a μ h_le:g f∫⁻ (a : X), f a - g a μ + ∫⁻ (a : X), g a μ = ∫⁻ (a : X), f a μ X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X ℝ≥0∞g:X ℝ≥0∞hg:Measurable ghg_fin:∫⁻ (a : X), g a μ h_le:g f∫⁻ (a : X), f a - g a + g a μ = ∫⁻ (a : X), f a μ All goals completed! 🐙
定理 (単調収束定理(減少列版)).

f_0, f_1, \dots : X \to [0,\infty] を可測関数の減少列とする。 もし \underline{\int}_{x \in X} f_0(x)\,d\mu < \infty ならば \underline{\int}_{x \in X} \inf_{n \in \mathbb{N}} f_n(x)\,d\mu = \inf_{n \in \mathbb{N}} \underline{\int}_{x \in X} f_n(x)\,d\mu. が成り立つ。

Lean code
theorem le_iInf_lintegral {ι : Sort*} (f : ι X ℝ≥0∞) : ∫⁻ a, i, f i a μ i, ∫⁻ a, f i a μ := X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xι:Sort u_2f:ι X ℝ≥0∞∫⁻ (a : X), i, f i a μ i, ∫⁻ (a : X), f i a μ X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xι:Sort u_2f:ι X ℝ≥0∞∫⁻ (a : X), (⨅ i, f i) a μ i, ∫⁻ (a : X), f i a μ All goals completed! 🐙
theorem lintegral_iInf {f : X ℝ≥0∞} (h_meas : n, Measurable (f n)) (h_anti : Antitone f) (h_fin : ∫⁻ a, f 0 a μ ) : ∫⁻ a, n, f n a μ = n, ∫⁻ a, f n a μ := have fn_le_f0 : ∫⁻ a, n, f n a μ ∫⁻ a, f 0 a μ := lintegral_mono fun _ iInf_le_of_le 0 le_rfl have fn_le_f0' : n, ∫⁻ a, f n a μ ∫⁻ a, f 0 a μ := iInf_le_of_le 0 le_rfl (ENNReal.sub_right_inj h_fin fn_le_f0 fn_le_f0').1 <| show ∫⁻ a, f 0 a μ - ∫⁻ a, n, f n a μ = ∫⁻ a, f 0 a μ - n, ∫⁻ a, f n a μ from calc ∫⁻ a, f 0 a μ - ∫⁻ a, n, f n a μ = ∫⁻ a, f 0 a - n, f n a μ := (lintegral_sub (Measurable.iInf h_meas) (ne_top_of_le_ne_top h_fin fn_le_f0) (fun a iInf_le _ _)).symm _ = ∫⁻ a, n, f 0 a - f n a μ := congr rfl (funext fun _ ENNReal.sub_iInf) _ = n, ∫⁻ a, f 0 a - f n a μ := X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞h_meas: (n : ), Measurable (f n)h_anti:Antitone fh_fin:∫⁻ (a : X), f 0 a μ fn_le_f0:∫⁻ (a : X), n, f n a μ ∫⁻ (a : X), f 0 a μ := lintegral_mono fun x => iInf_le_of_le 0 le_rflfn_le_f0': n, ∫⁻ (a : X), f n a μ ∫⁻ (a : X), f 0 a μ := iInf_le_of_le 0 le_rfl∫⁻ (a : X), n, f 0 a - f n a μ = n, ∫⁻ (a : X), f 0 a - f n a μ X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞h_meas: (n : ), Measurable (f n)h_anti:Antitone fh_fin:∫⁻ (a : X), f 0 a μ fn_le_f0:∫⁻ (a : X), n, f n a μ ∫⁻ (a : X), f 0 a μ := lintegral_mono fun x => iInf_le_of_le 0 le_rflfn_le_f0': n, ∫⁻ (a : X), f n a μ ∫⁻ (a : X), f 0 a μ := iInf_le_of_le 0 le_rflMonotone fun n a => f 0 a - f n a intro i X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞h_meas: (n : ), Measurable (f n)h_anti:Antitone fh_fin:∫⁻ (a : X), f 0 a μ fn_le_f0:∫⁻ (a : X), n, f n a μ ∫⁻ (a : X), f 0 a μ := lintegral_mono fun x => iInf_le_of_le 0 le_rflfn_le_f0': n, ∫⁻ (a : X), f n a μ ∫⁻ (a : X), f 0 a μ := iInf_le_of_le 0 le_rfli:j:i j (fun n a => f 0 a - f n a) i (fun n a => f 0 a - f n a) j X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞h_meas: (n : ), Measurable (f n)h_anti:Antitone fh_fin:∫⁻ (a : X), f 0 a μ fn_le_f0:∫⁻ (a : X), n, f n a μ ∫⁻ (a : X), f 0 a μ := lintegral_mono fun x => iInf_le_of_le 0 le_rflfn_le_f0': n, ∫⁻ (a : X), f n a μ ∫⁻ (a : X), f 0 a μ := iInf_le_of_le 0 le_rfli:j:h:i j(fun n a => f 0 a - f n a) i (fun n a => f 0 a - f n a) j X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞h_meas: (n : ), Measurable (f n)h_anti:Antitone fh_fin:∫⁻ (a : X), f 0 a μ fn_le_f0:∫⁻ (a : X), n, f n a μ ∫⁻ (a : X), f 0 a μ := lintegral_mono fun x => iInf_le_of_le 0 le_rflfn_le_f0': n, ∫⁻ (a : X), f n a μ ∫⁻ (a : X), f 0 a μ := iInf_le_of_le 0 le_rfli:j:h:i ja:X(fun n a => f 0 a - f n a) i a (fun n a => f 0 a - f n a) j a All goals completed! 🐙 _ = n, ∫⁻ a, f 0 a μ - ∫⁻ a, f n a μ := (have h_mono : a, n : , f n.succ a f n a := fun a n h_anti (Nat.le_succ n) a have h_mono : n, a, f n a f 0 a := fun n a h_anti (Nat.zero_le n) _ congr_arg iSup <| funext fun n lintegral_sub (h_meas n) (ne_top_of_le_ne_top h_fin (lintegral_mono (h_mono n))) (h_mono n)) _ = ∫⁻ a, f 0 a μ - n, ∫⁻ a, f n a μ := ENNReal.sub_iInf.symm
定理 (ファトゥの補題).

f_0, f_1, \dots : X \to [0,\infty] を可測関数の列とする。 このとき \underline{\int}_{x \in X} \liminf_{n \to \infty} f_n(x)\,d\mu \le \liminf_{n \to \infty} \underline{\int}_{x \in X} f_n(x)\,d\mu. が成り立つ。

Lean code
theorem lintegral_liminf_le {f : X ℝ≥0∞} (h_meas : n, Measurable (f n)) : ∫⁻ a, liminf (fun n f n a) atTop μ liminf (fun n ∫⁻ a, f n a μ) atTop := calc ∫⁻ a, liminf (fun n f n a) atTop μ = ∫⁻ a, n : , i n, f i a μ := X:Type u_2inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞h_meas: (n : ), Measurable (f n)∫⁻ (a : X), liminf (fun n => f n a) atTop μ = ∫⁻ (a : X), n, i, (_ : i n), f i a μ All goals completed! 🐙 _ = n : , ∫⁻ a, i n, f i a μ := (lintegral_iSup (fun _ .biInf _ (to_countable _) (fun i _ h_meas i)) (fun _ _ hnm _ iInf_le_iInf_of_subset fun _ hi le_trans hnm hi)) _ n : , i n, ∫⁻ a, f i a μ := iSup_mono fun _ le_iInf₂_lintegral _ _ = atTop.liminf fun n ∫⁻ a, f n a μ := Filter.liminf_eq_iSup_iInf_of_nat.symm
定理 (ファトゥの補題(limsup 版)).

f_0, f_1, \dots : X \to [0,\infty] を可測関数とし、 g : X \to [0,\infty] が全ての n に対して f_n \le g を満たすとする。 さらに \underline{\int}_{x \in X} g(x)\,d\mu < \infty と仮定する。 このとき \limsup_{n \to \infty} \underline{\int}_{x \in X} f_n(x)\,d\mu \le \underline{\int}_{x \in X} \limsup_{n \to \infty} f_n(x)\,d\mu. が成り立つ。

Lean code
theorem limsup_lintegral_le {f : X ℝ≥0∞} (g : X ℝ≥0∞) (hf_meas : n, Measurable (f n)) (h_bound : n, f n g) (h_fin : ∫⁻ a, g a μ ) : limsup (fun n ∫⁻ a, f n a μ) atTop ∫⁻ a, limsup (fun n f n a) atTop μ := calc limsup (fun n ∫⁻ a, f n a μ) atTop = n : , i n, ∫⁻ a, f i a μ := limsup_eq_iInf_iSup_of_nat _ n : , ∫⁻ a, i n, f i a μ := iInf_mono fun _ iSup₂_lintegral_le _ _ = ∫⁻ a, n : , i n, f i a μ := X:Type u_2inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞g:X ℝ≥0∞hf_meas: (n : ), Measurable (f n)h_bound: (n : ), f n gh_fin:∫⁻ (a : X), g a μ n, ∫⁻ (a : X), i, (_ : i n), f i a μ = ∫⁻ (a : X), n, i, (_ : i n), f i a μ X:Type u_2inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞g:X ℝ≥0∞hf_meas: (n : ), Measurable (f n)h_bound: (n : ), f n gh_fin:∫⁻ (a : X), g a μ (n : ), Measurable fun a => i, (_ : i n), f i aX:Type u_2inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞g:X ℝ≥0∞hf_meas: (n : ), Measurable (f n)h_bound: (n : ), f n gh_fin:∫⁻ (a : X), g a μ Antitone fun n a => i, (_ : i n), f i aX:Type u_2inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞g:X ℝ≥0∞hf_meas: (n : ), Measurable (f n)h_bound: (n : ), f n gh_fin:∫⁻ (a : X), g a μ ∫⁻ (a : X), i, (_ : i 0), f i a μ X:Type u_2inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞g:X ℝ≥0∞hf_meas: (n : ), Measurable (f n)h_bound: (n : ), f n gh_fin:∫⁻ (a : X), g a μ (n : ), Measurable fun a => i, (_ : i n), f i a X:Type u_2inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞g:X ℝ≥0∞hf_meas: (n : ), Measurable (f n)h_bound: (n : ), f n gh_fin:∫⁻ (a : X), g a μ n:Measurable fun a => i, (_ : i n), f i a All goals completed! 🐙 X:Type u_2inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞g:X ℝ≥0∞hf_meas: (n : ), Measurable (f n)h_bound: (n : ), f n gh_fin:∫⁻ (a : X), g a μ Antitone fun n a => i, (_ : i n), f i a intro n X:Type u_2inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞g:X ℝ≥0∞hf_meas: (n : ), Measurable (f n)h_bound: (n : ), f n gh_fin:∫⁻ (a : X), g a μ n:m:n m (fun n a => i, (_ : i n), f i a) m (fun n a => i, (_ : i n), f i a) n X:Type u_2inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞g:X ℝ≥0∞hf_meas: (n : ), Measurable (f n)h_bound: (n : ), f n gh_fin:∫⁻ (a : X), g a μ n:m:hnm:n m(fun n a => i, (_ : i n), f i a) m (fun n a => i, (_ : i n), f i a) n X:Type u_2inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞g:X ℝ≥0∞hf_meas: (n : ), Measurable (f n)h_bound: (n : ), f n gh_fin:∫⁻ (a : X), g a μ n:m:hnm:n ma:X(fun n a => i, (_ : i n), f i a) m a (fun n a => i, (_ : i n), f i a) n a All goals completed! 🐙 X:Type u_2inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞g:X ℝ≥0∞hf_meas: (n : ), Measurable (f n)h_bound: (n : ), f n gh_fin:∫⁻ (a : X), g a μ ∫⁻ (a : X), i, (_ : i 0), f i a μ X:Type u_2inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞g:X ℝ≥0∞hf_meas: (n : ), Measurable (f n)h_bound: (n : ), f n gh_fin:∫⁻ (a : X), g a μ (fun a => i, (_ : i 0), f i a) g X:Type u_2inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞g:X ℝ≥0∞hf_meas: (n : ), Measurable (f n)h_bound: (n : ), f n gh_fin:∫⁻ (a : X), g a μ n:X(fun a => i, (_ : i 0), f i a) n g n All goals completed! 🐙 _ = ∫⁻ a, limsup (fun n f n a) atTop μ := X:Type u_2inst✝:MeasurableSpace Xμ:Measure Xf: X ℝ≥0∞g:X ℝ≥0∞hf_meas: (n : ), Measurable (f n)h_bound: (n : ), f n gh_fin:∫⁻ (a : X), g a μ ∫⁻ (a : X), n, i, (_ : i n), f i a μ = ∫⁻ (a : X), limsup (fun n => f n a) atTop μ All goals completed! 🐙
定理 (優収束定理).

f_0, f_1, \dots : X \to [0,\infty] を可測関数の列とし、 F : X \to [0,\infty] を関数、g : X \to [0,\infty] を関数とする。 次を仮定する。

  1. 任意の n と任意の x \in X に対して f_n(x) \le g(x) である。

  2. \underline{\int}_{x \in X} g(x)\,d\mu < \infty である。

  3. 任意の x \in X に対して、列 f_0(x), f_1(x), \dotsF(x) に収束する。

このとき \lim_{n \to \infty} \underline{\int}_{x \in X} f_n(x)\,d\mu = \underline{\int}_{x \in X} F(x)\,d\mu. が成り立つ。

Lean code
theorem tendsto_lintegral_of_dominated_convergence {F : X ℝ≥0∞} {f : X ℝ≥0∞} (bound : X ℝ≥0∞) (hF_meas : n, Measurable (F n)) (h_bound : n, F n bound) (h_fin : ∫⁻ a, bound a μ ) (h_lim : a, Tendsto (fun n F n a) atTop (𝓝 (f a))) : Tendsto (fun n ∫⁻ a, F n a μ) atTop (𝓝 (∫⁻ a, f a μ)) := tendsto_of_le_liminf_of_limsup_le (calc ∫⁻ a, f a μ = ∫⁻ a, liminf (fun n : F n a) atTop μ := lintegral_congr <| fun a (h_lim a).liminf_eq.symm _ liminf (fun n ∫⁻ a, F n a μ) atTop := lintegral_liminf_le hF_meas) (calc limsup (fun n : ∫⁻ a, F n a μ) atTop ∫⁻ a, limsup (fun n F n a) atTop μ := limsup_lintegral_le _ hF_meas h_bound h_fin _ = ∫⁻ a, f a μ := lintegral_congr <| fun a (h_lim a).limsup_eq)