Theorem: MeasureTheory.lintegral_trim
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

tactic: refine'
  @Measurable.ennreal_induction α m (fun f => (∫⁻ a, f a ∂μ.trim hm) = ∫⁻ a, f a ∂μ) _ _ _ f hf
state_before: α : Type u_1
β : Type ?u.1822393
γ : Type ?u.1822396
δ : Type ?u.1822399
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
f : α → ℝ≥0∞
hf : Measurable f
⊢ (∫⁻ (a : α), f a ∂Measure.trim μ hm) = ∫⁻ (a : α), f a ∂μ

tactic: intro c s hs
state_before: case refine'_1
α : Type u_1
β : Type ?u.1822393
γ : Type ?u.1822396
δ : Type ?u.1822399
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
f : α → ℝ≥0∞
hf : Measurable f
⊢ ∀ (c : ℝ≥0∞) ⦃s : Set α⦄,
    MeasurableSet s → (fun f => (∫⁻ (a : α), f a ∂Measure.trim μ hm) = ∫⁻ (a : α), f a ∂μ) (indicator s fun x => c)

tactic: rw [lintegral_indicator _ hs, lintegral_indicator _ (hm s hs), set_lintegral_const,
  set_lintegral_const]
state_before: case refine'_1
α : Type u_1
β : Type ?u.1822393
γ : Type ?u.1822396
δ : Type ?u.1822399
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
f : α → ℝ≥0∞
hf : Measurable f
c : ℝ≥0∞
s : Set α
hs : MeasurableSet s
⊢ (∫⁻ (a : α), indicator s (fun x => c) a ∂Measure.trim μ hm) = ∫⁻ (a : α), indicator s (fun x => c) a ∂μ

tactic: suffices h_trim_s : μ.trim hm s = μ s
state_before: case refine'_1
α : Type u_1
β : Type ?u.1822393
γ : Type ?u.1822396
δ : Type ?u.1822399
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
f : α → ℝ≥0∞
hf : Measurable f
c : ℝ≥0∞
s : Set α
hs : MeasurableSet s
⊢ c * ↑↑(Measure.trim μ hm) s = c * ↑↑μ s

tactic: exact trim_measurableSet_eq hm hs
state_before: case h_trim_s
α : Type u_1
β : Type ?u.1822393
γ : Type ?u.1822396
δ : Type ?u.1822399
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
f : α → ℝ≥0∞
hf : Measurable f
c : ℝ≥0∞
s : Set α
hs : MeasurableSet s
⊢ ↑↑(Measure.trim μ hm) s = ↑↑μ s

tactic: rw [h_trim_s]
state_before: case refine'_1
α : Type u_1
β : Type ?u.1822393
γ : Type ?u.1822396
δ : Type ?u.1822399
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
f : α → ℝ≥0∞
hf : Measurable f
c : ℝ≥0∞
s : Set α
hs : MeasurableSet s
h_trim_s : ↑↑(Measure.trim μ hm) s = ↑↑μ s
⊢ c * ↑↑(Measure.trim μ hm) s = c * ↑↑μ s

tactic: intro f g _ hf _ hf_prop hg_prop
state_before: case refine'_2
α : Type u_1
β : Type ?u.1822393
γ : Type ?u.1822396
δ : Type ?u.1822399
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
f : α → ℝ≥0∞
hf : Measurable f
⊢ ∀ ⦃f g : α → ℝ≥0∞⦄,
    Disjoint (support f) (support g) →
      Measurable f →
        Measurable g →
          (fun f => (∫⁻ (a : α), f a ∂Measure.trim μ hm) = ∫⁻ (a : α), f a ∂μ) f →
            (fun f => (∫⁻ (a : α), f a ∂Measure.trim μ hm) = ∫⁻ (a : α), f a ∂μ) g →
              (fun f => (∫⁻ (a : α), f a ∂Measure.trim μ hm) = ∫⁻ (a : α), f a ∂μ) (f + g)

tactic: have h_m := lintegral_add_left (μ := Measure.trim μ hm) hf g
state_before: case refine'_2
α : Type u_1
β : Type ?u.1822393
γ : Type ?u.1822396
δ : Type ?u.1822399
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
f✝ : α → ℝ≥0∞
hf✝ : Measurable f✝
f g : α → ℝ≥0∞
a✝¹ : Disjoint (support f) (support g)
hf : Measurable f
a✝ : Measurable g
hf_prop : (∫⁻ (a : α), f a ∂Measure.trim μ hm) = ∫⁻ (a : α), f a ∂μ
hg_prop : (∫⁻ (a : α), g a ∂Measure.trim μ hm) = ∫⁻ (a : α), g a ∂μ
⊢ (∫⁻ (a : α), (f + g) a ∂Measure.trim μ hm) = ∫⁻ (a : α), (f + g) a ∂μ

tactic: have h_m0 := lintegral_add_left (μ := μ) (Measurable.mono hf hm le_rfl) g
state_before: case refine'_2
α : Type u_1
β : Type ?u.1822393
γ : Type ?u.1822396
δ : Type ?u.1822399
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
f✝ : α → ℝ≥0∞
hf✝ : Measurable f✝
f g : α → ℝ≥0∞
a✝¹ : Disjoint (support f) (support g)
hf : Measurable f
a✝ : Measurable g
hf_prop : (∫⁻ (a : α), f a ∂Measure.trim μ hm) = ∫⁻ (a : α), f a ∂μ
hg_prop : (∫⁻ (a : α), g a ∂Measure.trim μ hm) = ∫⁻ (a : α), g a ∂μ
h_m :
  (∫⁻ (a : α), f a + g a ∂Measure.trim μ hm) = (∫⁻ (a : α), f a ∂Measure.trim μ hm) + ∫⁻ (a : α), g a ∂Measure.trim μ hm
⊢ (∫⁻ (a : α), (f + g) a ∂Measure.trim μ hm) = ∫⁻ (a : α), (f + g) a ∂μ

tactic: rwa [hf_prop, hg_prop, ← h_m0] at h_m
state_before: case refine'_2
α : Type u_1
β : Type ?u.1822393
γ : Type ?u.1822396
δ : Type ?u.1822399
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
f✝ : α → ℝ≥0∞
hf✝ : Measurable f✝
f g : α → ℝ≥0∞
a✝¹ : Disjoint (support f) (support g)
hf : Measurable f
a✝ : Measurable g
hf_prop : (∫⁻ (a : α), f a ∂Measure.trim μ hm) = ∫⁻ (a : α), f a ∂μ
hg_prop : (∫⁻ (a : α), g a ∂Measure.trim μ hm) = ∫⁻ (a : α), g a ∂μ
h_m :
  (∫⁻ (a : α), f a + g a ∂Measure.trim μ hm) = (∫⁻ (a : α), f a ∂Measure.trim μ hm) + ∫⁻ (a : α), g a ∂Measure.trim μ hm
h_m0 : (∫⁻ (a : α), f a + g a ∂μ) = (∫⁻ (a : α), f a ∂μ) + ∫⁻ (a : α), g a ∂μ
⊢ (∫⁻ (a : α), (f + g) a ∂Measure.trim μ hm) = ∫⁻ (a : α), (f + g) a ∂μ

tactic: intro f hf hf_mono hf_prop
state_before: case refine'_3
α : Type u_1
β : Type ?u.1822393
γ : Type ?u.1822396
δ : Type ?u.1822399
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
f : α → ℝ≥0∞
hf : Measurable f
⊢ ∀ ⦃f : ℕ → α → ℝ≥0∞⦄,
    (∀ (n : ℕ), Measurable (f n)) →
      Monotone f →
        (∀ (n : ℕ), (fun f => (∫⁻ (a : α), f a ∂Measure.trim μ hm) = ∫⁻ (a : α), f a ∂μ) (f n)) →
          (fun f => (∫⁻ (a : α), f a ∂Measure.trim μ hm) = ∫⁻ (a : α), f a ∂μ) fun x => ⨆ (n : ℕ), f n x

tactic: rw [lintegral_iSup hf hf_mono]
state_before: case refine'_3
α : Type u_1
β : Type ?u.1822393
γ : Type ?u.1822396
δ : Type ?u.1822399
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
f✝ : α → ℝ≥0∞
hf✝ : Measurable f✝
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
hf_mono : Monotone f
hf_prop : ∀ (n : ℕ), (fun f => (∫⁻ (a : α), f a ∂Measure.trim μ hm) = ∫⁻ (a : α), f a ∂μ) (f n)
⊢ (∫⁻ (a : α), (fun x => ⨆ (n : ℕ), f n x) a ∂Measure.trim μ hm) = ∫⁻ (a : α), (fun x => ⨆ (n : ℕ), f n x) a ∂μ

tactic: rw [lintegral_iSup (fun n => Measurable.mono (hf n) hm le_rfl) hf_mono]
state_before: case refine'_3
α : Type u_1
β : Type ?u.1822393
γ : Type ?u.1822396
δ : Type ?u.1822399
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
f✝ : α → ℝ≥0∞
hf✝ : Measurable f✝
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
hf_mono : Monotone f
hf_prop : ∀ (n : ℕ), (fun f => (∫⁻ (a : α), f a ∂Measure.trim μ hm) = ∫⁻ (a : α), f a ∂μ) (f n)
⊢ (⨆ (n : ℕ), ∫⁻ (a : α), f n a ∂Measure.trim μ hm) = ∫⁻ (a : α), (fun x => ⨆ (n : ℕ), f n x) a ∂μ

tactic: congr
state_before: case refine'_3
α : Type u_1
β : Type ?u.1822393
γ : Type ?u.1822396
δ : Type ?u.1822399
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
f✝ : α → ℝ≥0∞
hf✝ : Measurable f✝
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
hf_mono : Monotone f
hf_prop : ∀ (n : ℕ), (fun f => (∫⁻ (a : α), f a ∂Measure.trim μ hm) = ∫⁻ (a : α), f a ∂μ) (f n)
⊢ (⨆ (n : ℕ), ∫⁻ (a : α), f n a ∂Measure.trim μ hm) = ⨆ (n : ℕ), ∫⁻ (a : α), f n a ∂μ

tactic: exact funext fun n => hf_prop n
state_before: case refine'_3.e_s
α : Type u_1
β : Type ?u.1822393
γ : Type ?u.1822396
δ : Type ?u.1822399
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
f✝ : α → ℝ≥0∞
hf✝ : Measurable f✝
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
hf_mono : Monotone f
hf_prop : ∀ (n : ℕ), (fun f => (∫⁻ (a : α), f a ∂Measure.trim μ hm) = ∫⁻ (a : α), f a ∂μ) (f n)
⊢ (fun n => ∫⁻ (a : α), f n a ∂Measure.trim μ hm) = fun n => ∫⁻ (a : α), f n a ∂μ