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
で定める。このとき次が成り立つ。
-
任意の
nに対して、\approxFun_n fは単関数である。 -
i \le jならば\approxFun_i f \le \approxFun_j fである。 -
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 ≤ j⊢ eapprox 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 < i⊢ k ∈ 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 < i⊢ k ∈ Finset.range j refine Finset.mem_range.mpr (X:Type u_1inst✝:MeasurableSpace Xf:X → ℝ≥0∞i:ℕj:ℕhij:i ≤ jk:ℕhk:k < i⊢ k < 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:X⊢ f 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 x⊢ ennrealRatEmbed k ≤ f xX:Type u_1inst✝:MeasurableSpace Xf:X → ℝ≥0∞hf:Measurable fx:Xn:ℕk:ℕx✝:k ∈ Finset.range nhki:¬ennrealRatEmbed k ≤ f x⊢ 0 ≤ f x
X:Type u_1inst✝:MeasurableSpace Xf:X → ℝ≥0∞hf:Measurable fx:Xn:ℕk:ℕx✝:k ∈ Finset.range nhki:ennrealRatEmbed k ≤ f x⊢ ennrealRatEmbed 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 x⊢ 0 ≤ f x All goals completed! 🐙
X:Type u_1inst✝:MeasurableSpace Xf:X → ℝ≥0∞hf:Measurable fx:X⊢ f 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 x⊢ False
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⊢ False
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 を可測空間とし、\mu を X 上の測度、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 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 ≠ ∞⊢ 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) g⊢ g.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 h⊢ 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 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 hψ : ∀ 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 {∞}hψ:∀ (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 {∞}hψ:∀ (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 ⟨ψ, hψ, ?_, (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 {∞}hψ:∀ (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⊢ b < ψ.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 {∞}hψ:∀ (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 {∞}hψ:∀ (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 {∞}hψ:∀ (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 {∞}hψ:∀ (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 {∞}hψ:∀ (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 {∞}hψ:∀ (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 {∞}hψ:∀ (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⊢ 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 {∞}hψ:∀ (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 {∞}hψ:∀ (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⊢ Function.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 a⊢ lintegral μ 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⊢ lintegral μ 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 < 1⊢ a * 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 < 1⊢ ↑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✝⊢ ↑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) s⊢ ↑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) seq_rs:rs = SimpleFunc.const X ↑r * s := rfl⊢ ↑r * 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 = 0⊢ 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 = 0⊢ 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 = 0⊢ x ∈ ⋃ 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 = 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 := rflx:Xp_eq:¬rs x = 0⊢ x ∈ ⋃ 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.283⊢ rs 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 x⊢ x ∈ ⋃ 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 x⊢ r ≤ 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.range⊢ x * μ (⋃ 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 ≤ j⊢ p * μ (⇑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 ≤ j⊢ ⇑rs ⁻¹' {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.range⊢ r * μ (⇑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:X⊢ a ∈ ⇑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:X⊢ a ∈ ⇑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:X⊢ 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:ℕ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:X⊢ Monotone fun n => (SimpleFunc.eapprox f n) aX:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X → ℝ≥0∞g:X → ℝ≥0∞hf:Measurable fhg:Measurable ga:X⊢ Monotone 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:X⊢ Monotone 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:X⊢ Monotone 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 g⊢ Monotone 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 g⊢ Monotone 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 g⊢ Monotone fun n => (SimpleFunc.eapprox f n).lintegral μX:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X → ℝ≥0∞g:X → ℝ≥0∞hf:Measurable fhg:Measurable g⊢ Monotone fun n => (SimpleFunc.eapprox g n).lintegral μ X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X → ℝ≥0∞g:X → ℝ≥0∞hf:Measurable fhg:Measurable g⊢ Monotone fun n => (SimpleFunc.eapprox f n).lintegral μX:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X → ℝ≥0∞g:X → ℝ≥0∞hf:Measurable fhg:Measurable g⊢ Monotone fun n => (SimpleFunc.eapprox g n).lintegral μ
X:Type u_1inst✝:MeasurableSpace Xμ:Measure Xf:X → ℝ≥0∞g:X → ℝ≥0∞hf:Measurable fhg:Measurable g⊢ Monotone 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_rfl⊢ Monotone 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
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] を関数とする。
次を仮定する。
-
任意の
nと任意のx \in Xに対してf_n(x) \le g(x)である。 -
\underline{\int}_{x \in X} g(x)\,d\mu < \inftyである。 -
任意の
x \in Xに対して、列f_0(x), f_1(x), \dotsはF(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)