[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
h : HaveLebesgueDecomposition μ ν
⊢ Measurable (rnDeriv μ ν) ∧ singularPart μ ν ⟂ₘ ν ∧ μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
[PROOFSTEP]
rw [singularPart, rnDeriv, dif_pos h, dif_pos h]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
h : HaveLebesgueDecomposition μ ν
⊢ Measurable (Classical.choose (_ : ∃ p, Measurable p.snd ∧ p.fst ⟂ₘ ν ∧ μ = p.fst + withDensity ν p.snd)).snd ∧
    (Classical.choose (_ : ∃ p, Measurable p.snd ∧ p.fst ⟂ₘ ν ∧ μ = p.fst + withDensity ν p.snd)).fst ⟂ₘ ν ∧
      μ =
        (Classical.choose (_ : ∃ p, Measurable p.snd ∧ p.fst ⟂ₘ ν ∧ μ = p.fst + withDensity ν p.snd)).fst +
          withDensity ν
            (Classical.choose (_ : ∃ p, Measurable p.snd ∧ p.fst ⟂ₘ ν ∧ μ = p.fst + withDensity ν p.snd)).snd
[PROOFSTEP]
exact Classical.choose_spec h.lebesgue_decomposition
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝ : HaveLebesgueDecomposition μ ν
r : ℝ≥0
⊢ ∃ p, Measurable p.snd ∧ p.fst ⟂ₘ ν ∧ r • μ = p.fst + withDensity ν p.snd
[PROOFSTEP]
obtain ⟨hmeas, hsing, hadd⟩ := haveLebesgueDecomposition_spec μ ν
[GOAL]
case intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝ : HaveLebesgueDecomposition μ ν
r : ℝ≥0
hmeas : Measurable (rnDeriv μ ν)
hsing : singularPart μ ν ⟂ₘ ν
hadd : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
⊢ ∃ p, Measurable p.snd ∧ p.fst ⟂ₘ ν ∧ r • μ = p.fst + withDensity ν p.snd
[PROOFSTEP]
refine' ⟨⟨r • μ.singularPart ν, r • μ.rnDeriv ν⟩, _, hsing.smul _, _⟩
[GOAL]
case intro.intro.refine'_1
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝ : HaveLebesgueDecomposition μ ν
r : ℝ≥0
hmeas : Measurable (rnDeriv μ ν)
hsing : singularPart μ ν ⟂ₘ ν
hadd : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
⊢ Measurable (r • singularPart μ ν, r • rnDeriv μ ν).snd
[PROOFSTEP]
change
  Measurable
    ((r : ℝ≥0∞) • μ.rnDeriv ν)
      -- cannot remove this line
[GOAL]
case intro.intro.refine'_1
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝ : HaveLebesgueDecomposition μ ν
r : ℝ≥0
hmeas : Measurable (rnDeriv μ ν)
hsing : singularPart μ ν ⟂ₘ ν
hadd : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
⊢ Measurable (↑r • rnDeriv μ ν)
[PROOFSTEP]
exact hmeas.const_smul _
[GOAL]
case intro.intro.refine'_2
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝ : HaveLebesgueDecomposition μ ν
r : ℝ≥0
hmeas : Measurable (rnDeriv μ ν)
hsing : singularPart μ ν ⟂ₘ ν
hadd : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
⊢ r • μ = (r • singularPart μ ν, r • rnDeriv μ ν).fst + withDensity ν (r • singularPart μ ν, r • rnDeriv μ ν).snd
[PROOFSTEP]
change _ = (r : ℝ≥0∞) • _ + ν.withDensity ((r : ℝ≥0∞) • _)
[GOAL]
case intro.intro.refine'_2
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝ : HaveLebesgueDecomposition μ ν
r : ℝ≥0
hmeas : Measurable (rnDeriv μ ν)
hsing : singularPart μ ν ⟂ₘ ν
hadd : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
⊢ r • μ = ↑r • singularPart μ ν + withDensity ν (↑r • fun i => rnDeriv μ ν i)
[PROOFSTEP]
rw [withDensity_smul _ hmeas, ← smul_add, ← hadd]
[GOAL]
case intro.intro.refine'_2
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝ : HaveLebesgueDecomposition μ ν
r : ℝ≥0
hmeas : Measurable (rnDeriv μ ν)
hsing : singularPart μ ν ⟂ₘ ν
hadd : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
⊢ r • μ = ↑r • μ
[PROOFSTEP]
rfl
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
⊢ Measurable (rnDeriv μ ν)
[PROOFSTEP]
by_cases h : HaveLebesgueDecomposition μ ν
[GOAL]
case pos
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
h : HaveLebesgueDecomposition μ ν
⊢ Measurable (rnDeriv μ ν)
[PROOFSTEP]
exact (haveLebesgueDecomposition_spec μ ν).1
[GOAL]
case neg
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
h : ¬HaveLebesgueDecomposition μ ν
⊢ Measurable (rnDeriv μ ν)
[PROOFSTEP]
rw [rnDeriv, dif_neg h]
[GOAL]
case neg
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
h : ¬HaveLebesgueDecomposition μ ν
⊢ Measurable 0
[PROOFSTEP]
exact measurable_zero
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
⊢ singularPart μ ν ⟂ₘ ν
[PROOFSTEP]
by_cases h : HaveLebesgueDecomposition μ ν
[GOAL]
case pos
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
h : HaveLebesgueDecomposition μ ν
⊢ singularPart μ ν ⟂ₘ ν
[PROOFSTEP]
exact (haveLebesgueDecomposition_spec μ ν).2.1
[GOAL]
case neg
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
h : ¬HaveLebesgueDecomposition μ ν
⊢ singularPart μ ν ⟂ₘ ν
[PROOFSTEP]
rw [singularPart, dif_neg h]
[GOAL]
case neg
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
h : ¬HaveLebesgueDecomposition μ ν
⊢ 0 ⟂ₘ ν
[PROOFSTEP]
exact MutuallySingular.zero_left
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
⊢ singularPart μ ν ≤ μ
[PROOFSTEP]
by_cases hl : HaveLebesgueDecomposition μ ν
[GOAL]
case pos
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
hl : HaveLebesgueDecomposition μ ν
⊢ singularPart μ ν ≤ μ
[PROOFSTEP]
cases' (haveLebesgueDecomposition_spec μ ν).2 with _ h
[GOAL]
case pos.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
hl : HaveLebesgueDecomposition μ ν
left✝ : singularPart μ ν ⟂ₘ ν
h : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
⊢ singularPart μ ν ≤ μ
[PROOFSTEP]
conv_rhs => rw [h]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
hl : HaveLebesgueDecomposition μ ν
left✝ : singularPart μ ν ⟂ₘ ν
h : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
| μ
[PROOFSTEP]
rw [h]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
hl : HaveLebesgueDecomposition μ ν
left✝ : singularPart μ ν ⟂ₘ ν
h : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
| μ
[PROOFSTEP]
rw [h]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
hl : HaveLebesgueDecomposition μ ν
left✝ : singularPart μ ν ⟂ₘ ν
h : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
| μ
[PROOFSTEP]
rw [h]
[GOAL]
case pos.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
hl : HaveLebesgueDecomposition μ ν
left✝ : singularPart μ ν ⟂ₘ ν
h : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
⊢ singularPart μ ν ≤ singularPart μ ν + withDensity ν (rnDeriv μ ν)
[PROOFSTEP]
exact Measure.le_add_right le_rfl
[GOAL]
case neg
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
hl : ¬HaveLebesgueDecomposition μ ν
⊢ singularPart μ ν ≤ μ
[PROOFSTEP]
rw [singularPart, dif_neg hl]
[GOAL]
case neg
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
hl : ¬HaveLebesgueDecomposition μ ν
⊢ 0 ≤ μ
[PROOFSTEP]
exact Measure.zero_le μ
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
⊢ withDensity ν (rnDeriv μ ν) ≤ μ
[PROOFSTEP]
by_cases hl : HaveLebesgueDecomposition μ ν
[GOAL]
case pos
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
hl : HaveLebesgueDecomposition μ ν
⊢ withDensity ν (rnDeriv μ ν) ≤ μ
[PROOFSTEP]
cases' (haveLebesgueDecomposition_spec μ ν).2 with _ h
[GOAL]
case pos.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
hl : HaveLebesgueDecomposition μ ν
left✝ : singularPart μ ν ⟂ₘ ν
h : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
⊢ withDensity ν (rnDeriv μ ν) ≤ μ
[PROOFSTEP]
conv_rhs => rw [h]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
hl : HaveLebesgueDecomposition μ ν
left✝ : singularPart μ ν ⟂ₘ ν
h : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
| μ
[PROOFSTEP]
rw [h]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
hl : HaveLebesgueDecomposition μ ν
left✝ : singularPart μ ν ⟂ₘ ν
h : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
| μ
[PROOFSTEP]
rw [h]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
hl : HaveLebesgueDecomposition μ ν
left✝ : singularPart μ ν ⟂ₘ ν
h : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
| μ
[PROOFSTEP]
rw [h]
[GOAL]
case pos.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
hl : HaveLebesgueDecomposition μ ν
left✝ : singularPart μ ν ⟂ₘ ν
h : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
⊢ withDensity ν (rnDeriv μ ν) ≤ singularPart μ ν + withDensity ν (rnDeriv μ ν)
[PROOFSTEP]
exact Measure.le_add_left le_rfl
[GOAL]
case neg
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
hl : ¬HaveLebesgueDecomposition μ ν
⊢ withDensity ν (rnDeriv μ ν) ≤ μ
[PROOFSTEP]
rw [rnDeriv, dif_neg hl, withDensity_zero]
[GOAL]
case neg
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
hl : ¬HaveLebesgueDecomposition μ ν
⊢ 0 ≤ μ
[PROOFSTEP]
exact Measure.zero_le μ
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
s : Set α
hs : ↑↑μ s ≠ ⊤
⊢ ∫⁻ (x : α) in s, rnDeriv μ ν x ∂ν < ⊤
[PROOFSTEP]
by_cases hl : HaveLebesgueDecomposition μ ν
[GOAL]
case pos
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
s : Set α
hs : ↑↑μ s ≠ ⊤
hl : HaveLebesgueDecomposition μ ν
⊢ ∫⁻ (x : α) in s, rnDeriv μ ν x ∂ν < ⊤
[PROOFSTEP]
haveI := hl
[GOAL]
case pos
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
s : Set α
hs : ↑↑μ s ≠ ⊤
hl this : HaveLebesgueDecomposition μ ν
⊢ ∫⁻ (x : α) in s, rnDeriv μ ν x ∂ν < ⊤
[PROOFSTEP]
obtain ⟨-, -, hadd⟩ := haveLebesgueDecomposition_spec μ ν
[GOAL]
case pos.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
s : Set α
hs : ↑↑μ s ≠ ⊤
hl this : HaveLebesgueDecomposition μ ν
hadd : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
⊢ ∫⁻ (x : α) in s, rnDeriv μ ν x ∂ν < ⊤
[PROOFSTEP]
suffices : (∫⁻ x in toMeasurable μ s, μ.rnDeriv ν x ∂ν) < ∞
[GOAL]
case pos.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
s : Set α
hs : ↑↑μ s ≠ ⊤
hl this✝ : HaveLebesgueDecomposition μ ν
hadd : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
this : ∫⁻ (x : α) in toMeasurable μ s, rnDeriv μ ν x ∂ν < ⊤
⊢ ∫⁻ (x : α) in s, rnDeriv μ ν x ∂ν < ⊤
case this
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
s : Set α
hs : ↑↑μ s ≠ ⊤
hl this : HaveLebesgueDecomposition μ ν
hadd : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
⊢ ∫⁻ (x : α) in toMeasurable μ s, rnDeriv μ ν x ∂ν < ⊤
[PROOFSTEP]
exact lt_of_le_of_lt (lintegral_mono_set (subset_toMeasurable _ _)) this
[GOAL]
case this
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
s : Set α
hs : ↑↑μ s ≠ ⊤
hl this : HaveLebesgueDecomposition μ ν
hadd : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
⊢ ∫⁻ (x : α) in toMeasurable μ s, rnDeriv μ ν x ∂ν < ⊤
[PROOFSTEP]
rw [← withDensity_apply _ (measurableSet_toMeasurable _ _)]
[GOAL]
case this
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
s : Set α
hs : ↑↑μ s ≠ ⊤
hl this : HaveLebesgueDecomposition μ ν
hadd : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
⊢ ↑↑(withDensity ν fun x => rnDeriv μ ν x) (toMeasurable μ s) < ⊤
[PROOFSTEP]
refine'
  lt_of_le_of_lt
    (le_add_left le_rfl : _ ≤ μ.singularPart ν (toMeasurable μ s) + ν.withDensity (μ.rnDeriv ν) (toMeasurable μ s)) _
[GOAL]
case this
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
s : Set α
hs : ↑↑μ s ≠ ⊤
hl this : HaveLebesgueDecomposition μ ν
hadd : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
⊢ ↑↑(singularPart μ ν) (toMeasurable μ s) + ↑↑(withDensity ν (rnDeriv μ ν)) (toMeasurable μ s) < ⊤
[PROOFSTEP]
rw [← Measure.add_apply, ← hadd, measure_toMeasurable]
[GOAL]
case this
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
s : Set α
hs : ↑↑μ s ≠ ⊤
hl this : HaveLebesgueDecomposition μ ν
hadd : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
⊢ ↑↑μ s < ⊤
[PROOFSTEP]
exact hs.lt_top
[GOAL]
case neg
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
s : Set α
hs : ↑↑μ s ≠ ⊤
hl : ¬HaveLebesgueDecomposition μ ν
⊢ ∫⁻ (x : α) in s, rnDeriv μ ν x ∂ν < ⊤
[PROOFSTEP]
erw [Measure.rnDeriv, dif_neg hl, lintegral_zero]
[GOAL]
case neg
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
s : Set α
hs : ↑↑μ s ≠ ⊤
hl : ¬HaveLebesgueDecomposition μ ν
⊢ 0 < ⊤
[PROOFSTEP]
exact WithTop.zero_lt_top
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝ : IsFiniteMeasure μ
⊢ ∫⁻ (x : α), rnDeriv μ ν x ∂ν < ⊤
[PROOFSTEP]
rw [← set_lintegral_univ]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝ : IsFiniteMeasure μ
⊢ ∫⁻ (x : α) in univ, rnDeriv μ ν x ∂ν < ⊤
[PROOFSTEP]
exact lintegral_rnDeriv_lt_top_of_measure_ne_top _ (measure_lt_top _ _).ne
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝ : SigmaFinite μ
⊢ ∀ᵐ (x : α) ∂ν, rnDeriv μ ν x < ⊤
[PROOFSTEP]
suffices ∀ n, ∀ᵐ x ∂ν, x ∈ spanningSets μ n → μ.rnDeriv ν x < ∞ by
  filter_upwards [ae_all_iff.2 this] with _ hx using hx _ (mem_spanningSetsIndex _ _)
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝ : SigmaFinite μ
this : ∀ (n : ℕ), ∀ᵐ (x : α) ∂ν, x ∈ spanningSets μ n → rnDeriv μ ν x < ⊤
⊢ ∀ᵐ (x : α) ∂ν, rnDeriv μ ν x < ⊤
[PROOFSTEP]
filter_upwards [ae_all_iff.2 this] with _ hx using hx _ (mem_spanningSetsIndex _ _)
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝ : SigmaFinite μ
⊢ ∀ (n : ℕ), ∀ᵐ (x : α) ∂ν, x ∈ spanningSets μ n → rnDeriv μ ν x < ⊤
[PROOFSTEP]
intro n
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝ : SigmaFinite μ
n : ℕ
⊢ ∀ᵐ (x : α) ∂ν, x ∈ spanningSets μ n → rnDeriv μ ν x < ⊤
[PROOFSTEP]
rw [← ae_restrict_iff' (measurable_spanningSets _ _)]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝ : SigmaFinite μ
n : ℕ
⊢ ∀ᵐ (x : α) ∂restrict ν (spanningSets μ n), rnDeriv μ ν x < ⊤
[PROOFSTEP]
apply ae_lt_top (measurable_rnDeriv _ _)
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝ : SigmaFinite μ
n : ℕ
⊢ ∫⁻ (x : α) in spanningSets μ n, rnDeriv μ ν x ∂ν ≠ ⊤
[PROOFSTEP]
refine' (lintegral_rnDeriv_lt_top_of_measure_ne_top _ _).ne
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝ : SigmaFinite μ
n : ℕ
⊢ ↑↑μ (spanningSets μ n) ≠ ⊤
[PROOFSTEP]
exact (measure_spanningSets_lt_top _ _).ne
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hs : s ⟂ₘ ν
hadd : μ = s + withDensity ν f
⊢ s = singularPart μ ν
[PROOFSTEP]
haveI : HaveLebesgueDecomposition μ ν := ⟨⟨⟨s, f⟩, hf, hs, hadd⟩⟩
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hs : s ⟂ₘ ν
hadd : μ = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
⊢ s = singularPart μ ν
[PROOFSTEP]
obtain ⟨hmeas, hsing, hadd'⟩ := haveLebesgueDecomposition_spec μ ν
[GOAL]
case intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hs : s ⟂ₘ ν
hadd : μ = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hsing : singularPart μ ν ⟂ₘ ν
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
⊢ s = singularPart μ ν
[PROOFSTEP]
obtain ⟨⟨S, hS₁, hS₂, hS₃⟩, ⟨T, hT₁, hT₂, hT₃⟩⟩ := hs, hsing
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : μ = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
⊢ s = singularPart μ ν
[PROOFSTEP]
rw [hadd'] at hadd 
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
⊢ s = singularPart μ ν
[PROOFSTEP]
have hνinter : ν (S ∩ T)ᶜ = 0 := by
  rw [compl_inter]
  refine' nonpos_iff_eq_zero.1 (le_trans (measure_union_le _ _) _)
  rw [hT₃, hS₃, add_zero]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
⊢ ↑↑ν (S ∩ T)ᶜ = 0
[PROOFSTEP]
rw [compl_inter]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
⊢ ↑↑ν (Sᶜ ∪ Tᶜ) = 0
[PROOFSTEP]
refine' nonpos_iff_eq_zero.1 (le_trans (measure_union_le _ _) _)
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
⊢ ↑↑ν Sᶜ + ↑↑ν Tᶜ ≤ 0
[PROOFSTEP]
rw [hT₃, hS₃, add_zero]
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
⊢ s = singularPart μ ν
[PROOFSTEP]
have heq : s.restrict (S ∩ T)ᶜ = (μ.singularPart ν).restrict (S ∩ T)ᶜ :=
  by
  ext1 A hA
  have hf : ν.withDensity f (A ∩ (S ∩ T)ᶜ) = 0 :=
    by
    refine' withDensity_absolutelyContinuous ν _ _
    rw [← nonpos_iff_eq_zero]
    exact hνinter ▸ measure_mono (inter_subset_right _ _)
  have hrn : ν.withDensity (μ.rnDeriv ν) (A ∩ (S ∩ T)ᶜ) = 0 :=
    by
    refine' withDensity_absolutelyContinuous ν _ _
    rw [← nonpos_iff_eq_zero]
    exact hνinter ▸ measure_mono (inter_subset_right _ _)
  rw [restrict_apply hA, restrict_apply hA, ← add_zero (s (A ∩ (S ∩ T)ᶜ)), ← hf, ← add_apply, ← hadd, add_apply, hrn,
    add_zero]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
⊢ restrict s (S ∩ T)ᶜ = restrict (singularPart μ ν) (S ∩ T)ᶜ
[PROOFSTEP]
ext1 A hA
[GOAL]
case h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
A : Set α
hA : MeasurableSet A
⊢ ↑↑(restrict s (S ∩ T)ᶜ) A = ↑↑(restrict (singularPart μ ν) (S ∩ T)ᶜ) A
[PROOFSTEP]
have hf : ν.withDensity f (A ∩ (S ∩ T)ᶜ) = 0 :=
  by
  refine' withDensity_absolutelyContinuous ν _ _
  rw [← nonpos_iff_eq_zero]
  exact hνinter ▸ measure_mono (inter_subset_right _ _)
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
A : Set α
hA : MeasurableSet A
⊢ ↑↑(withDensity ν f) (A ∩ (S ∩ T)ᶜ) = 0
[PROOFSTEP]
refine' withDensity_absolutelyContinuous ν _ _
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
A : Set α
hA : MeasurableSet A
⊢ ↑↑ν (A ∩ (S ∩ T)ᶜ) = 0
[PROOFSTEP]
rw [← nonpos_iff_eq_zero]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
A : Set α
hA : MeasurableSet A
⊢ ↑↑ν (A ∩ (S ∩ T)ᶜ) ≤ 0
[PROOFSTEP]
exact hνinter ▸ measure_mono (inter_subset_right _ _)
[GOAL]
case h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf✝ : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
A : Set α
hA : MeasurableSet A
hf : ↑↑(withDensity ν f) (A ∩ (S ∩ T)ᶜ) = 0
⊢ ↑↑(restrict s (S ∩ T)ᶜ) A = ↑↑(restrict (singularPart μ ν) (S ∩ T)ᶜ) A
[PROOFSTEP]
have hrn : ν.withDensity (μ.rnDeriv ν) (A ∩ (S ∩ T)ᶜ) = 0 :=
  by
  refine' withDensity_absolutelyContinuous ν _ _
  rw [← nonpos_iff_eq_zero]
  exact hνinter ▸ measure_mono (inter_subset_right _ _)
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf✝ : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
A : Set α
hA : MeasurableSet A
hf : ↑↑(withDensity ν f) (A ∩ (S ∩ T)ᶜ) = 0
⊢ ↑↑(withDensity ν (rnDeriv μ ν)) (A ∩ (S ∩ T)ᶜ) = 0
[PROOFSTEP]
refine' withDensity_absolutelyContinuous ν _ _
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf✝ : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
A : Set α
hA : MeasurableSet A
hf : ↑↑(withDensity ν f) (A ∩ (S ∩ T)ᶜ) = 0
⊢ ↑↑ν (A ∩ (S ∩ T)ᶜ) = 0
[PROOFSTEP]
rw [← nonpos_iff_eq_zero]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf✝ : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
A : Set α
hA : MeasurableSet A
hf : ↑↑(withDensity ν f) (A ∩ (S ∩ T)ᶜ) = 0
⊢ ↑↑ν (A ∩ (S ∩ T)ᶜ) ≤ 0
[PROOFSTEP]
exact hνinter ▸ measure_mono (inter_subset_right _ _)
[GOAL]
case h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf✝ : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
A : Set α
hA : MeasurableSet A
hf : ↑↑(withDensity ν f) (A ∩ (S ∩ T)ᶜ) = 0
hrn : ↑↑(withDensity ν (rnDeriv μ ν)) (A ∩ (S ∩ T)ᶜ) = 0
⊢ ↑↑(restrict s (S ∩ T)ᶜ) A = ↑↑(restrict (singularPart μ ν) (S ∩ T)ᶜ) A
[PROOFSTEP]
rw [restrict_apply hA, restrict_apply hA, ← add_zero (s (A ∩ (S ∩ T)ᶜ)), ← hf, ← add_apply, ← hadd, add_apply, hrn,
  add_zero]
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
heq : restrict s (S ∩ T)ᶜ = restrict (singularPart μ ν) (S ∩ T)ᶜ
⊢ s = singularPart μ ν
[PROOFSTEP]
have heq' : ∀ A : Set α, MeasurableSet A → s A = s.restrict (S ∩ T)ᶜ A :=
  by
  intro A hA
  have hsinter : s (A ∩ (S ∩ T)) = 0 := by
    rw [← nonpos_iff_eq_zero]
    exact hS₂ ▸ measure_mono ((inter_subset_right _ _).trans (inter_subset_left _ _))
  rw [restrict_apply hA, ← diff_eq, AEDisjoint.measure_diff_left hsinter]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
heq : restrict s (S ∩ T)ᶜ = restrict (singularPart μ ν) (S ∩ T)ᶜ
⊢ ∀ (A : Set α), MeasurableSet A → ↑↑s A = ↑↑(restrict s (S ∩ T)ᶜ) A
[PROOFSTEP]
intro A hA
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
heq : restrict s (S ∩ T)ᶜ = restrict (singularPart μ ν) (S ∩ T)ᶜ
A : Set α
hA : MeasurableSet A
⊢ ↑↑s A = ↑↑(restrict s (S ∩ T)ᶜ) A
[PROOFSTEP]
have hsinter : s (A ∩ (S ∩ T)) = 0 := by
  rw [← nonpos_iff_eq_zero]
  exact hS₂ ▸ measure_mono ((inter_subset_right _ _).trans (inter_subset_left _ _))
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
heq : restrict s (S ∩ T)ᶜ = restrict (singularPart μ ν) (S ∩ T)ᶜ
A : Set α
hA : MeasurableSet A
⊢ ↑↑s (A ∩ (S ∩ T)) = 0
[PROOFSTEP]
rw [← nonpos_iff_eq_zero]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
heq : restrict s (S ∩ T)ᶜ = restrict (singularPart μ ν) (S ∩ T)ᶜ
A : Set α
hA : MeasurableSet A
⊢ ↑↑s (A ∩ (S ∩ T)) ≤ 0
[PROOFSTEP]
exact hS₂ ▸ measure_mono ((inter_subset_right _ _).trans (inter_subset_left _ _))
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
heq : restrict s (S ∩ T)ᶜ = restrict (singularPart μ ν) (S ∩ T)ᶜ
A : Set α
hA : MeasurableSet A
hsinter : ↑↑s (A ∩ (S ∩ T)) = 0
⊢ ↑↑s A = ↑↑(restrict s (S ∩ T)ᶜ) A
[PROOFSTEP]
rw [restrict_apply hA, ← diff_eq, AEDisjoint.measure_diff_left hsinter]
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
heq : restrict s (S ∩ T)ᶜ = restrict (singularPart μ ν) (S ∩ T)ᶜ
heq' : ∀ (A : Set α), MeasurableSet A → ↑↑s A = ↑↑(restrict s (S ∩ T)ᶜ) A
⊢ s = singularPart μ ν
[PROOFSTEP]
ext1 A hA
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
heq : restrict s (S ∩ T)ᶜ = restrict (singularPart μ ν) (S ∩ T)ᶜ
heq' : ∀ (A : Set α), MeasurableSet A → ↑↑s A = ↑↑(restrict s (S ∩ T)ᶜ) A
A : Set α
hA : MeasurableSet A
⊢ ↑↑s A = ↑↑(singularPart μ ν) A
[PROOFSTEP]
have hμinter : μ.singularPart ν (A ∩ (S ∩ T)) = 0 :=
  by
  rw [← nonpos_iff_eq_zero]
  exact hT₂ ▸ measure_mono ((inter_subset_right _ _).trans (inter_subset_right _ _))
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
heq : restrict s (S ∩ T)ᶜ = restrict (singularPart μ ν) (S ∩ T)ᶜ
heq' : ∀ (A : Set α), MeasurableSet A → ↑↑s A = ↑↑(restrict s (S ∩ T)ᶜ) A
A : Set α
hA : MeasurableSet A
⊢ ↑↑(singularPart μ ν) (A ∩ (S ∩ T)) = 0
[PROOFSTEP]
rw [← nonpos_iff_eq_zero]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
heq : restrict s (S ∩ T)ᶜ = restrict (singularPart μ ν) (S ∩ T)ᶜ
heq' : ∀ (A : Set α), MeasurableSet A → ↑↑s A = ↑↑(restrict s (S ∩ T)ᶜ) A
A : Set α
hA : MeasurableSet A
⊢ ↑↑(singularPart μ ν) (A ∩ (S ∩ T)) ≤ 0
[PROOFSTEP]
exact hT₂ ▸ measure_mono ((inter_subset_right _ _).trans (inter_subset_right _ _))
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
heq : restrict s (S ∩ T)ᶜ = restrict (singularPart μ ν) (S ∩ T)ᶜ
heq' : ∀ (A : Set α), MeasurableSet A → ↑↑s A = ↑↑(restrict s (S ∩ T)ᶜ) A
A : Set α
hA : MeasurableSet A
hμinter : ↑↑(singularPart μ ν) (A ∩ (S ∩ T)) = 0
⊢ ↑↑s A = ↑↑(singularPart μ ν) A
[PROOFSTEP]
rw [heq' A hA, heq, restrict_apply hA, ← diff_eq, AEDisjoint.measure_diff_left hμinter]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν✝ ν : Measure α
⊢ singularPart 0 ν = 0
[PROOFSTEP]
refine' (eq_singularPart measurable_zero MutuallySingular.zero_left _).symm
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν✝ ν : Measure α
⊢ 0 = 0 + withDensity ν 0
[PROOFSTEP]
rw [zero_add, withDensity_zero]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
r : ℝ≥0
⊢ singularPart (r • μ) ν = r • singularPart μ ν
[PROOFSTEP]
by_cases hr : r = 0
[GOAL]
case pos
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
r : ℝ≥0
hr : r = 0
⊢ singularPart (r • μ) ν = r • singularPart μ ν
[PROOFSTEP]
rw [hr, zero_smul, zero_smul, singularPart_zero]
[GOAL]
case neg
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
r : ℝ≥0
hr : ¬r = 0
⊢ singularPart (r • μ) ν = r • singularPart μ ν
[PROOFSTEP]
by_cases hl : HaveLebesgueDecomposition μ ν
[GOAL]
case pos
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
r : ℝ≥0
hr : ¬r = 0
hl : HaveLebesgueDecomposition μ ν
⊢ singularPart (r • μ) ν = r • singularPart μ ν
[PROOFSTEP]
haveI := hl
[GOAL]
case pos
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
r : ℝ≥0
hr : ¬r = 0
hl this : HaveLebesgueDecomposition μ ν
⊢ singularPart (r • μ) ν = r • singularPart μ ν
[PROOFSTEP]
refine'
  (eq_singularPart ((measurable_rnDeriv μ ν).const_smul (r : ℝ≥0∞))
      (MutuallySingular.smul r (haveLebesgueDecomposition_spec _ _).2.1) _).symm
[GOAL]
case pos
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
r : ℝ≥0
hr : ¬r = 0
hl this : HaveLebesgueDecomposition μ ν
⊢ r • μ = ↑r • singularPart μ ν + withDensity ν (↑r • rnDeriv μ ν)
[PROOFSTEP]
rw [withDensity_smul _ (measurable_rnDeriv _ _), ← smul_add, ← haveLebesgueDecomposition_add μ ν, ENNReal.smul_def]
[GOAL]
case neg
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
r : ℝ≥0
hr : ¬r = 0
hl : ¬HaveLebesgueDecomposition μ ν
⊢ singularPart (r • μ) ν = r • singularPart μ ν
[PROOFSTEP]
rw [singularPart, singularPart, dif_neg hl, dif_neg, smul_zero]
[GOAL]
case neg.hnc
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
r : ℝ≥0
hr : ¬r = 0
hl : ¬HaveLebesgueDecomposition μ ν
⊢ ¬HaveLebesgueDecomposition (r • μ) ν
[PROOFSTEP]
refine' fun hl' => hl _
[GOAL]
case neg.hnc
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
r : ℝ≥0
hr : ¬r = 0
hl : ¬HaveLebesgueDecomposition μ ν
hl' : HaveLebesgueDecomposition (r • μ) ν
⊢ HaveLebesgueDecomposition μ ν
[PROOFSTEP]
rw [← inv_smul_smul₀ hr μ]
[GOAL]
case neg.hnc
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
r : ℝ≥0
hr : ¬r = 0
hl : ¬HaveLebesgueDecomposition μ ν
hl' : HaveLebesgueDecomposition (r • μ) ν
⊢ HaveLebesgueDecomposition (r⁻¹ • r • μ) ν
[PROOFSTEP]
exact @Measure.haveLebesgueDecomposition_smul _ _ _ _ hl' _
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν✝ μ₁ μ₂ ν : Measure α
inst✝¹ : HaveLebesgueDecomposition μ₁ ν
inst✝ : HaveLebesgueDecomposition μ₂ ν
⊢ singularPart (μ₁ + μ₂) ν = singularPart μ₁ ν + singularPart μ₂ ν
[PROOFSTEP]
refine'
  (eq_singularPart ((measurable_rnDeriv μ₁ ν).add (measurable_rnDeriv μ₂ ν))
      ((haveLebesgueDecomposition_spec _ _).2.1.add_left (haveLebesgueDecomposition_spec _ _).2.1) _).symm
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν✝ μ₁ μ₂ ν : Measure α
inst✝¹ : HaveLebesgueDecomposition μ₁ ν
inst✝ : HaveLebesgueDecomposition μ₂ ν
⊢ μ₁ + μ₂ = singularPart μ₁ ν + singularPart μ₂ ν + withDensity ν fun a => rnDeriv μ₁ ν a + rnDeriv μ₂ ν a
[PROOFSTEP]
erw [withDensity_add_left (measurable_rnDeriv μ₁ ν)]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν✝ μ₁ μ₂ ν : Measure α
inst✝¹ : HaveLebesgueDecomposition μ₁ ν
inst✝ : HaveLebesgueDecomposition μ₂ ν
⊢ μ₁ + μ₂ =
    singularPart μ₁ ν + singularPart μ₂ ν + (withDensity ν (rnDeriv μ₁ ν) + withDensity ν fun a => rnDeriv μ₂ ν a)
[PROOFSTEP]
conv_rhs => rw [add_assoc, add_comm (μ₂.singularPart ν), ← add_assoc, ← add_assoc]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν✝ μ₁ μ₂ ν : Measure α
inst✝¹ : HaveLebesgueDecomposition μ₁ ν
inst✝ : HaveLebesgueDecomposition μ₂ ν
| singularPart μ₁ ν + singularPart μ₂ ν + (withDensity ν (rnDeriv μ₁ ν) + withDensity ν fun a => rnDeriv μ₂ ν a)
[PROOFSTEP]
rw [add_assoc, add_comm (μ₂.singularPart ν), ← add_assoc, ← add_assoc]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν✝ μ₁ μ₂ ν : Measure α
inst✝¹ : HaveLebesgueDecomposition μ₁ ν
inst✝ : HaveLebesgueDecomposition μ₂ ν
| singularPart μ₁ ν + singularPart μ₂ ν + (withDensity ν (rnDeriv μ₁ ν) + withDensity ν fun a => rnDeriv μ₂ ν a)
[PROOFSTEP]
rw [add_assoc, add_comm (μ₂.singularPart ν), ← add_assoc, ← add_assoc]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν✝ μ₁ μ₂ ν : Measure α
inst✝¹ : HaveLebesgueDecomposition μ₁ ν
inst✝ : HaveLebesgueDecomposition μ₂ ν
| singularPart μ₁ ν + singularPart μ₂ ν + (withDensity ν (rnDeriv μ₁ ν) + withDensity ν fun a => rnDeriv μ₂ ν a)
[PROOFSTEP]
rw [add_assoc, add_comm (μ₂.singularPart ν), ← add_assoc, ← add_assoc]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν✝ μ₁ μ₂ ν : Measure α
inst✝¹ : HaveLebesgueDecomposition μ₁ ν
inst✝ : HaveLebesgueDecomposition μ₂ ν
⊢ μ₁ + μ₂ =
    (singularPart μ₁ ν + withDensity ν (rnDeriv μ₁ ν) + withDensity ν fun a => rnDeriv μ₂ ν a) + singularPart μ₂ ν
[PROOFSTEP]
rw [← haveLebesgueDecomposition_add μ₁ ν, add_assoc, add_comm (ν.withDensity (μ₂.rnDeriv ν)), ←
  haveLebesgueDecomposition_add μ₂ ν]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν✝ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
⊢ withDensity ν f = 0 + withDensity ν f
[PROOFSTEP]
rw [zero_add]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hs : s ⟂ₘ ν
hadd : μ = s + withDensity ν f
⊢ withDensity ν f = withDensity ν (rnDeriv μ ν)
[PROOFSTEP]
haveI : HaveLebesgueDecomposition μ ν := ⟨⟨⟨s, f⟩, hf, hs, hadd⟩⟩
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hs : s ⟂ₘ ν
hadd : μ = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
⊢ withDensity ν f = withDensity ν (rnDeriv μ ν)
[PROOFSTEP]
obtain ⟨hmeas, hsing, hadd'⟩ := haveLebesgueDecomposition_spec μ ν
[GOAL]
case intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hs : s ⟂ₘ ν
hadd : μ = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hsing : singularPart μ ν ⟂ₘ ν
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
⊢ withDensity ν f = withDensity ν (rnDeriv μ ν)
[PROOFSTEP]
obtain ⟨⟨S, hS₁, hS₂, hS₃⟩, ⟨T, hT₁, hT₂, hT₃⟩⟩ := hs, hsing
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : μ = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
⊢ withDensity ν f = withDensity ν (rnDeriv μ ν)
[PROOFSTEP]
rw [hadd'] at hadd 
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
⊢ withDensity ν f = withDensity ν (rnDeriv μ ν)
[PROOFSTEP]
have hνinter : ν (S ∩ T)ᶜ = 0 := by
  rw [compl_inter]
  refine' nonpos_iff_eq_zero.1 (le_trans (measure_union_le _ _) _)
  rw [hT₃, hS₃, add_zero]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
⊢ ↑↑ν (S ∩ T)ᶜ = 0
[PROOFSTEP]
rw [compl_inter]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
⊢ ↑↑ν (Sᶜ ∪ Tᶜ) = 0
[PROOFSTEP]
refine' nonpos_iff_eq_zero.1 (le_trans (measure_union_le _ _) _)
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
⊢ ↑↑ν Sᶜ + ↑↑ν Tᶜ ≤ 0
[PROOFSTEP]
rw [hT₃, hS₃, add_zero]
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
⊢ withDensity ν f = withDensity ν (rnDeriv μ ν)
[PROOFSTEP]
have heq : (ν.withDensity f).restrict (S ∩ T) = (ν.withDensity (μ.rnDeriv ν)).restrict (S ∩ T) :=
  by
  ext1 A hA
  have hs : s (A ∩ (S ∩ T)) = 0 := by
    rw [← nonpos_iff_eq_zero]
    exact hS₂ ▸ measure_mono ((inter_subset_right _ _).trans (inter_subset_left _ _))
  have hsing : μ.singularPart ν (A ∩ (S ∩ T)) = 0 :=
    by
    rw [← nonpos_iff_eq_zero]
    exact hT₂ ▸ measure_mono ((inter_subset_right _ _).trans (inter_subset_right _ _))
  rw [restrict_apply hA, restrict_apply hA, ← add_zero (ν.withDensity f (A ∩ (S ∩ T))), ← hs, ← add_apply, add_comm, ←
    hadd, add_apply, hsing, zero_add]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
⊢ restrict (withDensity ν f) (S ∩ T) = restrict (withDensity ν (rnDeriv μ ν)) (S ∩ T)
[PROOFSTEP]
ext1 A hA
[GOAL]
case h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
A : Set α
hA : MeasurableSet A
⊢ ↑↑(restrict (withDensity ν f) (S ∩ T)) A = ↑↑(restrict (withDensity ν (rnDeriv μ ν)) (S ∩ T)) A
[PROOFSTEP]
have hs : s (A ∩ (S ∩ T)) = 0 := by
  rw [← nonpos_iff_eq_zero]
  exact hS₂ ▸ measure_mono ((inter_subset_right _ _).trans (inter_subset_left _ _))
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
A : Set α
hA : MeasurableSet A
⊢ ↑↑s (A ∩ (S ∩ T)) = 0
[PROOFSTEP]
rw [← nonpos_iff_eq_zero]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
A : Set α
hA : MeasurableSet A
⊢ ↑↑s (A ∩ (S ∩ T)) ≤ 0
[PROOFSTEP]
exact hS₂ ▸ measure_mono ((inter_subset_right _ _).trans (inter_subset_left _ _))
[GOAL]
case h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
A : Set α
hA : MeasurableSet A
hs : ↑↑s (A ∩ (S ∩ T)) = 0
⊢ ↑↑(restrict (withDensity ν f) (S ∩ T)) A = ↑↑(restrict (withDensity ν (rnDeriv μ ν)) (S ∩ T)) A
[PROOFSTEP]
have hsing : μ.singularPart ν (A ∩ (S ∩ T)) = 0 :=
  by
  rw [← nonpos_iff_eq_zero]
  exact hT₂ ▸ measure_mono ((inter_subset_right _ _).trans (inter_subset_right _ _))
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
A : Set α
hA : MeasurableSet A
hs : ↑↑s (A ∩ (S ∩ T)) = 0
⊢ ↑↑(singularPart μ ν) (A ∩ (S ∩ T)) = 0
[PROOFSTEP]
rw [← nonpos_iff_eq_zero]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
A : Set α
hA : MeasurableSet A
hs : ↑↑s (A ∩ (S ∩ T)) = 0
⊢ ↑↑(singularPart μ ν) (A ∩ (S ∩ T)) ≤ 0
[PROOFSTEP]
exact hT₂ ▸ measure_mono ((inter_subset_right _ _).trans (inter_subset_right _ _))
[GOAL]
case h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
A : Set α
hA : MeasurableSet A
hs : ↑↑s (A ∩ (S ∩ T)) = 0
hsing : ↑↑(singularPart μ ν) (A ∩ (S ∩ T)) = 0
⊢ ↑↑(restrict (withDensity ν f) (S ∩ T)) A = ↑↑(restrict (withDensity ν (rnDeriv μ ν)) (S ∩ T)) A
[PROOFSTEP]
rw [restrict_apply hA, restrict_apply hA, ← add_zero (ν.withDensity f (A ∩ (S ∩ T))), ← hs, ← add_apply, add_comm, ←
  hadd, add_apply, hsing, zero_add]
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
heq : restrict (withDensity ν f) (S ∩ T) = restrict (withDensity ν (rnDeriv μ ν)) (S ∩ T)
⊢ withDensity ν f = withDensity ν (rnDeriv μ ν)
[PROOFSTEP]
have heq' : ∀ A : Set α, MeasurableSet A → ν.withDensity f A = (ν.withDensity f).restrict (S ∩ T) A :=
  by
  intro A hA
  have hνfinter : ν.withDensity f (A ∩ (S ∩ T)ᶜ) = 0 :=
    by
    rw [← nonpos_iff_eq_zero]
    exact withDensity_absolutelyContinuous ν f hνinter ▸ measure_mono (inter_subset_right _ _)
  rw [restrict_apply hA, ← add_zero (ν.withDensity f (A ∩ (S ∩ T))), ← hνfinter, ← diff_eq,
    measure_inter_add_diff _ (hS₁.inter hT₁)]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
heq : restrict (withDensity ν f) (S ∩ T) = restrict (withDensity ν (rnDeriv μ ν)) (S ∩ T)
⊢ ∀ (A : Set α), MeasurableSet A → ↑↑(withDensity ν f) A = ↑↑(restrict (withDensity ν f) (S ∩ T)) A
[PROOFSTEP]
intro A hA
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
heq : restrict (withDensity ν f) (S ∩ T) = restrict (withDensity ν (rnDeriv μ ν)) (S ∩ T)
A : Set α
hA : MeasurableSet A
⊢ ↑↑(withDensity ν f) A = ↑↑(restrict (withDensity ν f) (S ∩ T)) A
[PROOFSTEP]
have hνfinter : ν.withDensity f (A ∩ (S ∩ T)ᶜ) = 0 :=
  by
  rw [← nonpos_iff_eq_zero]
  exact withDensity_absolutelyContinuous ν f hνinter ▸ measure_mono (inter_subset_right _ _)
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
heq : restrict (withDensity ν f) (S ∩ T) = restrict (withDensity ν (rnDeriv μ ν)) (S ∩ T)
A : Set α
hA : MeasurableSet A
⊢ ↑↑(withDensity ν f) (A ∩ (S ∩ T)ᶜ) = 0
[PROOFSTEP]
rw [← nonpos_iff_eq_zero]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
heq : restrict (withDensity ν f) (S ∩ T) = restrict (withDensity ν (rnDeriv μ ν)) (S ∩ T)
A : Set α
hA : MeasurableSet A
⊢ ↑↑(withDensity ν f) (A ∩ (S ∩ T)ᶜ) ≤ 0
[PROOFSTEP]
exact withDensity_absolutelyContinuous ν f hνinter ▸ measure_mono (inter_subset_right _ _)
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
heq : restrict (withDensity ν f) (S ∩ T) = restrict (withDensity ν (rnDeriv μ ν)) (S ∩ T)
A : Set α
hA : MeasurableSet A
hνfinter : ↑↑(withDensity ν f) (A ∩ (S ∩ T)ᶜ) = 0
⊢ ↑↑(withDensity ν f) A = ↑↑(restrict (withDensity ν f) (S ∩ T)) A
[PROOFSTEP]
rw [restrict_apply hA, ← add_zero (ν.withDensity f (A ∩ (S ∩ T))), ← hνfinter, ← diff_eq,
  measure_inter_add_diff _ (hS₁.inter hT₁)]
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
heq : restrict (withDensity ν f) (S ∩ T) = restrict (withDensity ν (rnDeriv μ ν)) (S ∩ T)
heq' : ∀ (A : Set α), MeasurableSet A → ↑↑(withDensity ν f) A = ↑↑(restrict (withDensity ν f) (S ∩ T)) A
⊢ withDensity ν f = withDensity ν (rnDeriv μ ν)
[PROOFSTEP]
ext1 A hA
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
heq : restrict (withDensity ν f) (S ∩ T) = restrict (withDensity ν (rnDeriv μ ν)) (S ∩ T)
heq' : ∀ (A : Set α), MeasurableSet A → ↑↑(withDensity ν f) A = ↑↑(restrict (withDensity ν f) (S ∩ T)) A
A : Set α
hA : MeasurableSet A
⊢ ↑↑(withDensity ν f) A = ↑↑(withDensity ν (rnDeriv μ ν)) A
[PROOFSTEP]
have hνrn : ν.withDensity (μ.rnDeriv ν) (A ∩ (S ∩ T)ᶜ) = 0 :=
  by
  rw [← nonpos_iff_eq_zero]
  exact withDensity_absolutelyContinuous ν (μ.rnDeriv ν) hνinter ▸ measure_mono (inter_subset_right _ _)
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
heq : restrict (withDensity ν f) (S ∩ T) = restrict (withDensity ν (rnDeriv μ ν)) (S ∩ T)
heq' : ∀ (A : Set α), MeasurableSet A → ↑↑(withDensity ν f) A = ↑↑(restrict (withDensity ν f) (S ∩ T)) A
A : Set α
hA : MeasurableSet A
⊢ ↑↑(withDensity ν (rnDeriv μ ν)) (A ∩ (S ∩ T)ᶜ) = 0
[PROOFSTEP]
rw [← nonpos_iff_eq_zero]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
heq : restrict (withDensity ν f) (S ∩ T) = restrict (withDensity ν (rnDeriv μ ν)) (S ∩ T)
heq' : ∀ (A : Set α), MeasurableSet A → ↑↑(withDensity ν f) A = ↑↑(restrict (withDensity ν f) (S ∩ T)) A
A : Set α
hA : MeasurableSet A
⊢ ↑↑(withDensity ν (rnDeriv μ ν)) (A ∩ (S ∩ T)ᶜ) ≤ 0
[PROOFSTEP]
exact withDensity_absolutelyContinuous ν (μ.rnDeriv ν) hνinter ▸ measure_mono (inter_subset_right _ _)
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hadd : singularPart μ ν + withDensity ν (rnDeriv μ ν) = s + withDensity ν f
this : HaveLebesgueDecomposition μ ν
hmeas : Measurable (rnDeriv μ ν)
hadd' : μ = singularPart μ ν + withDensity ν (rnDeriv μ ν)
S : Set α
hS₁ : MeasurableSet S
hS₂ : ↑↑s S = 0
hS₃ : ↑↑ν Sᶜ = 0
T : Set α
hT₁ : MeasurableSet T
hT₂ : ↑↑(singularPart μ ν) T = 0
hT₃ : ↑↑ν Tᶜ = 0
hνinter : ↑↑ν (S ∩ T)ᶜ = 0
heq : restrict (withDensity ν f) (S ∩ T) = restrict (withDensity ν (rnDeriv μ ν)) (S ∩ T)
heq' : ∀ (A : Set α), MeasurableSet A → ↑↑(withDensity ν f) A = ↑↑(restrict (withDensity ν f) (S ∩ T)) A
A : Set α
hA : MeasurableSet A
hνrn : ↑↑(withDensity ν (rnDeriv μ ν)) (A ∩ (S ∩ T)ᶜ) = 0
⊢ ↑↑(withDensity ν f) A = ↑↑(withDensity ν (rnDeriv μ ν)) A
[PROOFSTEP]
rw [heq' A hA, heq, ← add_zero ((ν.withDensity (μ.rnDeriv ν)).restrict (S ∩ T) A), ← hνrn, restrict_apply hA, ← diff_eq,
  measure_inter_add_diff _ (hS₁.inter hT₁)]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝ : SigmaFinite ν
s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hs : s ⟂ₘ ν
hadd : μ = s + withDensity ν f
⊢ f =ᶠ[ae ν] rnDeriv μ ν
[PROOFSTEP]
refine' ae_eq_of_forall_set_lintegral_eq_of_sigmaFinite hf (measurable_rnDeriv μ ν) _
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝ : SigmaFinite ν
s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hs : s ⟂ₘ ν
hadd : μ = s + withDensity ν f
⊢ ∀ (s : Set α), MeasurableSet s → ↑↑ν s < ⊤ → ∫⁻ (x : α) in s, f x ∂ν = ∫⁻ (x : α) in s, rnDeriv μ ν x ∂ν
[PROOFSTEP]
intro a ha _
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝ : SigmaFinite ν
s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hs : s ⟂ₘ ν
hadd : μ = s + withDensity ν f
a : Set α
ha : MeasurableSet a
a✝ : ↑↑ν a < ⊤
⊢ ∫⁻ (x : α) in a, f x ∂ν = ∫⁻ (x : α) in a, rnDeriv μ ν x ∂ν
[PROOFSTEP]
calc
  ∫⁻ x : α in a, f x ∂ν = ν.withDensity f a := (withDensity_apply f ha).symm
  _ = ν.withDensity (μ.rnDeriv ν) a := by rw [eq_withDensity_rnDeriv hf hs hadd]
  _ = ∫⁻ x : α in a, μ.rnDeriv ν x ∂ν := withDensity_apply _ ha
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝ : SigmaFinite ν
s : Measure α
f : α → ℝ≥0∞
hf : Measurable f
hs : s ⟂ₘ ν
hadd : μ = s + withDensity ν f
a : Set α
ha : MeasurableSet a
a✝ : ↑↑ν a < ⊤
⊢ ↑↑(withDensity ν f) a = ↑↑(withDensity ν (rnDeriv μ ν)) a
[PROOFSTEP]
rw [eq_withDensity_rnDeriv hf hs hadd]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν✝ ν : Measure α
inst✝ : SigmaFinite ν
f : α → ℝ≥0∞
hf : Measurable f
⊢ withDensity ν f = 0 + withDensity ν f
[PROOFSTEP]
rw [zero_add]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν✝ ν : Measure α
inst✝ : SigmaFinite ν
s : Set α
hs : MeasurableSet s
⊢ rnDeriv (restrict ν s) ν =ᶠ[ae ν] indicator s 1
[PROOFSTEP]
rw [← withDensity_indicator_one hs]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν✝ ν : Measure α
inst✝ : SigmaFinite ν
s : Set α
hs : MeasurableSet s
⊢ rnDeriv (withDensity ν (indicator s 1)) ν =ᶠ[ae ν] indicator s 1
[PROOFSTEP]
exact rnDeriv_withDensity _ (measurable_one.indicator hs)
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
⊢ ∃ ε,
    0 < ε ∧
      ∃ E,
        MeasurableSet E ∧
          0 < ↑↑ν E ∧
            VectorMeasure.restrict 0 E ≤ VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure (ε • ν)) E
[PROOFSTEP]
have :
  ∀ n : ℕ,
    ∃ i : Set α,
      MeasurableSet i ∧
        0 ≤[i] μ.toSignedMeasure - ((1 / (n + 1) : ℝ≥0) • ν).toSignedMeasure ∧
          μ.toSignedMeasure - ((1 / (n + 1) : ℝ≥0) • ν).toSignedMeasure ≤[iᶜ] 0 :=
  by intro; exact exists_compl_positive_negative _
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
⊢ ∀ (n : ℕ),
    ∃ i,
      MeasurableSet i ∧
        VectorMeasure.restrict 0 i ≤
            VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) i ∧
          VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) iᶜ ≤
            VectorMeasure.restrict 0 iᶜ
[PROOFSTEP]
intro
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
n✝ : ℕ
⊢ ∃ i,
    MeasurableSet i ∧
      VectorMeasure.restrict 0 i ≤
          VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n✝ + 1)) • ν)) i ∧
        VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n✝ + 1)) • ν)) iᶜ ≤
          VectorMeasure.restrict 0 iᶜ
[PROOFSTEP]
exact exists_compl_positive_negative _
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
this :
  ∀ (n : ℕ),
    ∃ i,
      MeasurableSet i ∧
        VectorMeasure.restrict 0 i ≤
            VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) i ∧
          VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) iᶜ ≤
            VectorMeasure.restrict 0 iᶜ
⊢ ∃ ε,
    0 < ε ∧
      ∃ E,
        MeasurableSet E ∧
          0 < ↑↑ν E ∧
            VectorMeasure.restrict 0 E ≤ VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure (ε • ν)) E
[PROOFSTEP]
choose f hf₁ hf₂ hf₃ using this
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
⊢ ∃ ε,
    0 < ε ∧
      ∃ E,
        MeasurableSet E ∧
          0 < ↑↑ν E ∧
            VectorMeasure.restrict 0 E ≤ VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure (ε • ν)) E
[PROOFSTEP]
set A := ⋂ n, (f n)ᶜ with hA₁
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hA₁ : A = ⋂ (n : ℕ), (f n)ᶜ
⊢ ∃ ε,
    0 < ε ∧
      ∃ E,
        MeasurableSet E ∧
          0 < ↑↑ν E ∧
            VectorMeasure.restrict 0 E ≤ VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure (ε • ν)) E
[PROOFSTEP]
have hAmeas : MeasurableSet A := MeasurableSet.iInter fun n => (hf₁ n).compl
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hA₁ : A = ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet A
⊢ ∃ ε,
    0 < ε ∧
      ∃ E,
        MeasurableSet E ∧
          0 < ↑↑ν E ∧
            VectorMeasure.restrict 0 E ≤ VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure (ε • ν)) E
[PROOFSTEP]
have hA₂ : ∀ n : ℕ, μ.toSignedMeasure - ((1 / (n + 1) : ℝ≥0) • ν).toSignedMeasure ≤[A] 0 := by intro n;
  exact restrict_le_restrict_subset _ _ (hf₁ n).compl (hf₃ n) (iInter_subset _ _)
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hA₁ : A = ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet A
⊢ ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) A ≤ VectorMeasure.restrict 0 A
[PROOFSTEP]
intro n
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hA₁ : A = ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet A
n : ℕ
⊢ VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) A ≤ VectorMeasure.restrict 0 A
[PROOFSTEP]
exact restrict_le_restrict_subset _ _ (hf₁ n).compl (hf₃ n) (iInter_subset _ _)
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hA₁ : A = ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet A
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) A ≤ VectorMeasure.restrict 0 A
⊢ ∃ ε,
    0 < ε ∧
      ∃ E,
        MeasurableSet E ∧
          0 < ↑↑ν E ∧
            VectorMeasure.restrict 0 E ≤ VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure (ε • ν)) E
[PROOFSTEP]
have hA₃ : ∀ n : ℕ, μ A ≤ (1 / (n + 1) : ℝ≥0) * ν A := by
  intro n
  have := nonpos_of_restrict_le_zero _ (hA₂ n)
  rwa [toSignedMeasure_sub_apply hAmeas, sub_nonpos, ENNReal.toReal_le_toReal] at this 
  exacts [ne_of_lt (measure_lt_top _ _), ne_of_lt (measure_lt_top _ _)]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hA₁ : A = ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet A
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) A ≤ VectorMeasure.restrict 0 A
⊢ ∀ (n : ℕ), ↑↑μ A ≤ ↑(1 / (↑n + 1)) * ↑↑ν A
[PROOFSTEP]
intro n
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hA₁ : A = ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet A
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) A ≤ VectorMeasure.restrict 0 A
n : ℕ
⊢ ↑↑μ A ≤ ↑(1 / (↑n + 1)) * ↑↑ν A
[PROOFSTEP]
have := nonpos_of_restrict_le_zero _ (hA₂ n)
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hA₁ : A = ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet A
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) A ≤ VectorMeasure.restrict 0 A
n : ℕ
this : ↑(toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) A ≤ 0
⊢ ↑↑μ A ≤ ↑(1 / (↑n + 1)) * ↑↑ν A
[PROOFSTEP]
rwa [toSignedMeasure_sub_apply hAmeas, sub_nonpos, ENNReal.toReal_le_toReal] at this 
[GOAL]
case ha
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hA₁ : A = ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet A
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) A ≤ VectorMeasure.restrict 0 A
n : ℕ
this : ENNReal.toReal (↑↑μ A) ≤ ENNReal.toReal (↑↑((1 / (↑n + 1)) • ν) A)
⊢ ↑↑μ A ≠ ⊤
case hb
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hA₁ : A = ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet A
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) A ≤ VectorMeasure.restrict 0 A
n : ℕ
this : ENNReal.toReal (↑↑μ A) ≤ ENNReal.toReal (↑↑((1 / (↑n + 1)) • ν) A)
⊢ ↑↑((1 / (↑n + 1)) • ν) A ≠ ⊤
[PROOFSTEP]
exacts [ne_of_lt (measure_lt_top _ _), ne_of_lt (measure_lt_top _ _)]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hA₁ : A = ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet A
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) A ≤ VectorMeasure.restrict 0 A
hA₃ : ∀ (n : ℕ), ↑↑μ A ≤ ↑(1 / (↑n + 1)) * ↑↑ν A
⊢ ∃ ε,
    0 < ε ∧
      ∃ E,
        MeasurableSet E ∧
          0 < ↑↑ν E ∧
            VectorMeasure.restrict 0 E ≤ VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure (ε • ν)) E
[PROOFSTEP]
have hμ : μ A = 0 := by
  lift μ A to ℝ≥0 using ne_of_lt (measure_lt_top _ _) with μA
  lift ν A to ℝ≥0 using ne_of_lt (measure_lt_top _ _) with νA
  rw [ENNReal.coe_eq_zero]
  by_cases hb : 0 < νA
  · suffices ∀ b, 0 < b → μA ≤ b by
      by_contra h
      have h' := this (μA / 2) (half_pos (zero_lt_iff.2 h))
      rw [← @Classical.not_not (μA ≤ μA / 2)] at h' 
      exact h' (not_le.2 (NNReal.half_lt_self h))
    intro c hc
    have : ∃ n : ℕ, 1 / (n + 1 : ℝ) < c * (νA : ℝ)⁻¹; refine' exists_nat_one_div_lt _
    · refine' mul_pos hc _
      rw [_root_.inv_pos]; exact hb
    rcases this with ⟨n, hn⟩
    have hb₁ : (0 : ℝ) < (νA : ℝ)⁻¹ := by rw [_root_.inv_pos]; exact hb
    have h' : 1 / (↑n + 1) * νA < c :=
      by
      rw [← NNReal.coe_lt_coe, ← mul_lt_mul_right hb₁, NNReal.coe_mul, mul_assoc, ← NNReal.coe_inv, ← NNReal.coe_mul,
        _root_.mul_inv_cancel, ← NNReal.coe_mul, mul_one, NNReal.coe_inv]
      · exact hn
      · exact Ne.symm (ne_of_lt hb)
    refine' le_trans _ (le_of_lt h')
    rw [← ENNReal.coe_le_coe, ENNReal.coe_mul]
    exact hA₃ n
  · rw [not_lt, le_zero_iff] at hb 
    specialize hA₃ 0
    simp [hb, le_zero_iff] at hA₃ 
    assumption
      -- since `μ` and `ν` are not mutually singular, `μ A = 0` implies `ν Aᶜ > 0`
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hA₁ : A = ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet A
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) A ≤ VectorMeasure.restrict 0 A
hA₃ : ∀ (n : ℕ), ↑↑μ A ≤ ↑(1 / (↑n + 1)) * ↑↑ν A
⊢ ↑↑μ A = 0
[PROOFSTEP]
lift μ A to ℝ≥0 using ne_of_lt (measure_lt_top _ _) with μA
[GOAL]
case intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet (⋂ (n : ℕ), (f n)ᶜ)
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (⋂ (n : ℕ), (f n)ᶜ) ≤
      VectorMeasure.restrict 0 (⋂ (n : ℕ), (f n)ᶜ)
μA : ℝ≥0
hA₁✝ hA₁ : True
hA₃✝ hA₃ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑↑ν (⋂ (n : ℕ), (f n)ᶜ)
⊢ ↑μA = 0
[PROOFSTEP]
lift ν A to ℝ≥0 using ne_of_lt (measure_lt_top _ _) with νA
[GOAL]
case intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet (⋂ (n : ℕ), (f n)ᶜ)
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (⋂ (n : ℕ), (f n)ᶜ) ≤
      VectorMeasure.restrict 0 (⋂ (n : ℕ), (f n)ᶜ)
μA : ℝ≥0
hA₁✝ hA₁ : True
hA₃✝¹ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑↑ν (⋂ (n : ℕ), (f n)ᶜ)
νA : ℝ≥0
hA₃✝ hA₃ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑νA
⊢ ↑μA = 0
[PROOFSTEP]
rw [ENNReal.coe_eq_zero]
[GOAL]
case intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet (⋂ (n : ℕ), (f n)ᶜ)
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (⋂ (n : ℕ), (f n)ᶜ) ≤
      VectorMeasure.restrict 0 (⋂ (n : ℕ), (f n)ᶜ)
μA : ℝ≥0
hA₁✝ hA₁ : True
hA₃✝¹ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑↑ν (⋂ (n : ℕ), (f n)ᶜ)
νA : ℝ≥0
hA₃✝ hA₃ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑νA
⊢ μA = 0
[PROOFSTEP]
by_cases hb : 0 < νA
[GOAL]
case pos
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet (⋂ (n : ℕ), (f n)ᶜ)
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (⋂ (n : ℕ), (f n)ᶜ) ≤
      VectorMeasure.restrict 0 (⋂ (n : ℕ), (f n)ᶜ)
μA : ℝ≥0
hA₁✝ hA₁ : True
hA₃✝¹ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑↑ν (⋂ (n : ℕ), (f n)ᶜ)
νA : ℝ≥0
hA₃✝ hA₃ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑νA
hb : 0 < νA
⊢ μA = 0
[PROOFSTEP]
suffices ∀ b, 0 < b → μA ≤ b by
  by_contra h
  have h' := this (μA / 2) (half_pos (zero_lt_iff.2 h))
  rw [← @Classical.not_not (μA ≤ μA / 2)] at h' 
  exact h' (not_le.2 (NNReal.half_lt_self h))
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet (⋂ (n : ℕ), (f n)ᶜ)
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (⋂ (n : ℕ), (f n)ᶜ) ≤
      VectorMeasure.restrict 0 (⋂ (n : ℕ), (f n)ᶜ)
μA : ℝ≥0
hA₁✝ hA₁ : True
hA₃✝¹ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑↑ν (⋂ (n : ℕ), (f n)ᶜ)
νA : ℝ≥0
hA₃✝ hA₃ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑νA
hb : 0 < νA
this : ∀ (b : ℝ≥0), 0 < b → μA ≤ b
⊢ μA = 0
[PROOFSTEP]
by_contra h
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h✝ : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet (⋂ (n : ℕ), (f n)ᶜ)
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (⋂ (n : ℕ), (f n)ᶜ) ≤
      VectorMeasure.restrict 0 (⋂ (n : ℕ), (f n)ᶜ)
μA : ℝ≥0
hA₁✝ hA₁ : True
hA₃✝¹ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑↑ν (⋂ (n : ℕ), (f n)ᶜ)
νA : ℝ≥0
hA₃✝ hA₃ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑νA
hb : 0 < νA
this : ∀ (b : ℝ≥0), 0 < b → μA ≤ b
h : ¬μA = 0
⊢ False
[PROOFSTEP]
have h' := this (μA / 2) (half_pos (zero_lt_iff.2 h))
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h✝ : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet (⋂ (n : ℕ), (f n)ᶜ)
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (⋂ (n : ℕ), (f n)ᶜ) ≤
      VectorMeasure.restrict 0 (⋂ (n : ℕ), (f n)ᶜ)
μA : ℝ≥0
hA₁✝ hA₁ : True
hA₃✝¹ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑↑ν (⋂ (n : ℕ), (f n)ᶜ)
νA : ℝ≥0
hA₃✝ hA₃ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑νA
hb : 0 < νA
this : ∀ (b : ℝ≥0), 0 < b → μA ≤ b
h : ¬μA = 0
h' : μA ≤ μA / 2
⊢ False
[PROOFSTEP]
rw [← @Classical.not_not (μA ≤ μA / 2)] at h' 
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h✝ : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet (⋂ (n : ℕ), (f n)ᶜ)
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (⋂ (n : ℕ), (f n)ᶜ) ≤
      VectorMeasure.restrict 0 (⋂ (n : ℕ), (f n)ᶜ)
μA : ℝ≥0
hA₁✝ hA₁ : True
hA₃✝¹ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑↑ν (⋂ (n : ℕ), (f n)ᶜ)
νA : ℝ≥0
hA₃✝ hA₃ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑νA
hb : 0 < νA
this : ∀ (b : ℝ≥0), 0 < b → μA ≤ b
h : ¬μA = 0
h' : ¬¬μA ≤ μA / 2
⊢ False
[PROOFSTEP]
exact h' (not_le.2 (NNReal.half_lt_self h))
[GOAL]
case pos
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet (⋂ (n : ℕ), (f n)ᶜ)
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (⋂ (n : ℕ), (f n)ᶜ) ≤
      VectorMeasure.restrict 0 (⋂ (n : ℕ), (f n)ᶜ)
μA : ℝ≥0
hA₁✝ hA₁ : True
hA₃✝¹ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑↑ν (⋂ (n : ℕ), (f n)ᶜ)
νA : ℝ≥0
hA₃✝ hA₃ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑νA
hb : 0 < νA
⊢ ∀ (b : ℝ≥0), 0 < b → μA ≤ b
[PROOFSTEP]
intro c hc
[GOAL]
case pos
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet (⋂ (n : ℕ), (f n)ᶜ)
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (⋂ (n : ℕ), (f n)ᶜ) ≤
      VectorMeasure.restrict 0 (⋂ (n : ℕ), (f n)ᶜ)
μA : ℝ≥0
hA₁✝ hA₁ : True
hA₃✝¹ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑↑ν (⋂ (n : ℕ), (f n)ᶜ)
νA : ℝ≥0
hA₃✝ hA₃ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑νA
hb : 0 < νA
c : ℝ≥0
hc : 0 < c
⊢ μA ≤ c
[PROOFSTEP]
have : ∃ n : ℕ, 1 / (n + 1 : ℝ) < c * (νA : ℝ)⁻¹
[GOAL]
case this
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet (⋂ (n : ℕ), (f n)ᶜ)
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (⋂ (n : ℕ), (f n)ᶜ) ≤
      VectorMeasure.restrict 0 (⋂ (n : ℕ), (f n)ᶜ)
μA : ℝ≥0
hA₁✝ hA₁ : True
hA₃✝¹ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑↑ν (⋂ (n : ℕ), (f n)ᶜ)
νA : ℝ≥0
hA₃✝ hA₃ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑νA
hb : 0 < νA
c : ℝ≥0
hc : 0 < c
⊢ ∃ n, 1 / (↑n + 1) < ↑c * (↑νA)⁻¹
case pos
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet (⋂ (n : ℕ), (f n)ᶜ)
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (⋂ (n : ℕ), (f n)ᶜ) ≤
      VectorMeasure.restrict 0 (⋂ (n : ℕ), (f n)ᶜ)
μA : ℝ≥0
hA₁✝ hA₁ : True
hA₃✝¹ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑↑ν (⋂ (n : ℕ), (f n)ᶜ)
νA : ℝ≥0
hA₃✝ hA₃ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑νA
hb : 0 < νA
c : ℝ≥0
hc : 0 < c
this : ∃ n, 1 / (↑n + 1) < ↑c * (↑νA)⁻¹
⊢ μA ≤ c
[PROOFSTEP]
refine' exists_nat_one_div_lt _
[GOAL]
case this
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet (⋂ (n : ℕ), (f n)ᶜ)
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (⋂ (n : ℕ), (f n)ᶜ) ≤
      VectorMeasure.restrict 0 (⋂ (n : ℕ), (f n)ᶜ)
μA : ℝ≥0
hA₁✝ hA₁ : True
hA₃✝¹ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑↑ν (⋂ (n : ℕ), (f n)ᶜ)
νA : ℝ≥0
hA₃✝ hA₃ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑νA
hb : 0 < νA
c : ℝ≥0
hc : 0 < c
⊢ 0 < ↑c * (↑νA)⁻¹
[PROOFSTEP]
refine' mul_pos hc _
[GOAL]
case this
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet (⋂ (n : ℕ), (f n)ᶜ)
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (⋂ (n : ℕ), (f n)ᶜ) ≤
      VectorMeasure.restrict 0 (⋂ (n : ℕ), (f n)ᶜ)
μA : ℝ≥0
hA₁✝ hA₁ : True
hA₃✝¹ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑↑ν (⋂ (n : ℕ), (f n)ᶜ)
νA : ℝ≥0
hA₃✝ hA₃ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑νA
hb : 0 < νA
c : ℝ≥0
hc : 0 < c
⊢ 0 < (↑νA)⁻¹
[PROOFSTEP]
rw [_root_.inv_pos]
[GOAL]
case this
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet (⋂ (n : ℕ), (f n)ᶜ)
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (⋂ (n : ℕ), (f n)ᶜ) ≤
      VectorMeasure.restrict 0 (⋂ (n : ℕ), (f n)ᶜ)
μA : ℝ≥0
hA₁✝ hA₁ : True
hA₃✝¹ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑↑ν (⋂ (n : ℕ), (f n)ᶜ)
νA : ℝ≥0
hA₃✝ hA₃ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑νA
hb : 0 < νA
c : ℝ≥0
hc : 0 < c
⊢ 0 < ↑νA
[PROOFSTEP]
exact hb
[GOAL]
case pos
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet (⋂ (n : ℕ), (f n)ᶜ)
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (⋂ (n : ℕ), (f n)ᶜ) ≤
      VectorMeasure.restrict 0 (⋂ (n : ℕ), (f n)ᶜ)
μA : ℝ≥0
hA₁✝ hA₁ : True
hA₃✝¹ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑↑ν (⋂ (n : ℕ), (f n)ᶜ)
νA : ℝ≥0
hA₃✝ hA₃ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑νA
hb : 0 < νA
c : ℝ≥0
hc : 0 < c
this : ∃ n, 1 / (↑n + 1) < ↑c * (↑νA)⁻¹
⊢ μA ≤ c
[PROOFSTEP]
rcases this with ⟨n, hn⟩
[GOAL]
case pos.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet (⋂ (n : ℕ), (f n)ᶜ)
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (⋂ (n : ℕ), (f n)ᶜ) ≤
      VectorMeasure.restrict 0 (⋂ (n : ℕ), (f n)ᶜ)
μA : ℝ≥0
hA₁✝ hA₁ : True
hA₃✝¹ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑↑ν (⋂ (n : ℕ), (f n)ᶜ)
νA : ℝ≥0
hA₃✝ hA₃ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑νA
hb : 0 < νA
c : ℝ≥0
hc : 0 < c
n : ℕ
hn : 1 / (↑n + 1) < ↑c * (↑νA)⁻¹
⊢ μA ≤ c
[PROOFSTEP]
have hb₁ : (0 : ℝ) < (νA : ℝ)⁻¹ := by rw [_root_.inv_pos]; exact hb
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet (⋂ (n : ℕ), (f n)ᶜ)
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (⋂ (n : ℕ), (f n)ᶜ) ≤
      VectorMeasure.restrict 0 (⋂ (n : ℕ), (f n)ᶜ)
μA : ℝ≥0
hA₁✝ hA₁ : True
hA₃✝¹ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑↑ν (⋂ (n : ℕ), (f n)ᶜ)
νA : ℝ≥0
hA₃✝ hA₃ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑νA
hb : 0 < νA
c : ℝ≥0
hc : 0 < c
n : ℕ
hn : 1 / (↑n + 1) < ↑c * (↑νA)⁻¹
⊢ 0 < (↑νA)⁻¹
[PROOFSTEP]
rw [_root_.inv_pos]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet (⋂ (n : ℕ), (f n)ᶜ)
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (⋂ (n : ℕ), (f n)ᶜ) ≤
      VectorMeasure.restrict 0 (⋂ (n : ℕ), (f n)ᶜ)
μA : ℝ≥0
hA₁✝ hA₁ : True
hA₃✝¹ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑↑ν (⋂ (n : ℕ), (f n)ᶜ)
νA : ℝ≥0
hA₃✝ hA₃ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑νA
hb : 0 < νA
c : ℝ≥0
hc : 0 < c
n : ℕ
hn : 1 / (↑n + 1) < ↑c * (↑νA)⁻¹
⊢ 0 < ↑νA
[PROOFSTEP]
exact hb
[GOAL]
case pos.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet (⋂ (n : ℕ), (f n)ᶜ)
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (⋂ (n : ℕ), (f n)ᶜ) ≤
      VectorMeasure.restrict 0 (⋂ (n : ℕ), (f n)ᶜ)
μA : ℝ≥0
hA₁✝ hA₁ : True
hA₃✝¹ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑↑ν (⋂ (n : ℕ), (f n)ᶜ)
νA : ℝ≥0
hA₃✝ hA₃ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑νA
hb : 0 < νA
c : ℝ≥0
hc : 0 < c
n : ℕ
hn : 1 / (↑n + 1) < ↑c * (↑νA)⁻¹
hb₁ : 0 < (↑νA)⁻¹
⊢ μA ≤ c
[PROOFSTEP]
have h' : 1 / (↑n + 1) * νA < c :=
  by
  rw [← NNReal.coe_lt_coe, ← mul_lt_mul_right hb₁, NNReal.coe_mul, mul_assoc, ← NNReal.coe_inv, ← NNReal.coe_mul,
    _root_.mul_inv_cancel, ← NNReal.coe_mul, mul_one, NNReal.coe_inv]
  · exact hn
  · exact Ne.symm (ne_of_lt hb)
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet (⋂ (n : ℕ), (f n)ᶜ)
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (⋂ (n : ℕ), (f n)ᶜ) ≤
      VectorMeasure.restrict 0 (⋂ (n : ℕ), (f n)ᶜ)
μA : ℝ≥0
hA₁✝ hA₁ : True
hA₃✝¹ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑↑ν (⋂ (n : ℕ), (f n)ᶜ)
νA : ℝ≥0
hA₃✝ hA₃ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑νA
hb : 0 < νA
c : ℝ≥0
hc : 0 < c
n : ℕ
hn : 1 / (↑n + 1) < ↑c * (↑νA)⁻¹
hb₁ : 0 < (↑νA)⁻¹
⊢ 1 / (↑n + 1) * νA < c
[PROOFSTEP]
rw [← NNReal.coe_lt_coe, ← mul_lt_mul_right hb₁, NNReal.coe_mul, mul_assoc, ← NNReal.coe_inv, ← NNReal.coe_mul,
  _root_.mul_inv_cancel, ← NNReal.coe_mul, mul_one, NNReal.coe_inv]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet (⋂ (n : ℕ), (f n)ᶜ)
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (⋂ (n : ℕ), (f n)ᶜ) ≤
      VectorMeasure.restrict 0 (⋂ (n : ℕ), (f n)ᶜ)
μA : ℝ≥0
hA₁✝ hA₁ : True
hA₃✝¹ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑↑ν (⋂ (n : ℕ), (f n)ᶜ)
νA : ℝ≥0
hA₃✝ hA₃ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑νA
hb : 0 < νA
c : ℝ≥0
hc : 0 < c
n : ℕ
hn : 1 / (↑n + 1) < ↑c * (↑νA)⁻¹
hb₁ : 0 < (↑νA)⁻¹
⊢ ↑(1 / (↑n + 1)) < ↑c * (↑νA)⁻¹
[PROOFSTEP]
exact hn
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet (⋂ (n : ℕ), (f n)ᶜ)
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (⋂ (n : ℕ), (f n)ᶜ) ≤
      VectorMeasure.restrict 0 (⋂ (n : ℕ), (f n)ᶜ)
μA : ℝ≥0
hA₁✝ hA₁ : True
hA₃✝¹ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑↑ν (⋂ (n : ℕ), (f n)ᶜ)
νA : ℝ≥0
hA₃✝ hA₃ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑νA
hb : 0 < νA
c : ℝ≥0
hc : 0 < c
n : ℕ
hn : 1 / (↑n + 1) < ↑c * (↑νA)⁻¹
hb₁ : 0 < (↑νA)⁻¹
⊢ νA ≠ 0
[PROOFSTEP]
exact Ne.symm (ne_of_lt hb)
[GOAL]
case pos.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet (⋂ (n : ℕ), (f n)ᶜ)
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (⋂ (n : ℕ), (f n)ᶜ) ≤
      VectorMeasure.restrict 0 (⋂ (n : ℕ), (f n)ᶜ)
μA : ℝ≥0
hA₁✝ hA₁ : True
hA₃✝¹ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑↑ν (⋂ (n : ℕ), (f n)ᶜ)
νA : ℝ≥0
hA₃✝ hA₃ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑νA
hb : 0 < νA
c : ℝ≥0
hc : 0 < c
n : ℕ
hn : 1 / (↑n + 1) < ↑c * (↑νA)⁻¹
hb₁ : 0 < (↑νA)⁻¹
h' : 1 / (↑n + 1) * νA < c
⊢ μA ≤ c
[PROOFSTEP]
refine' le_trans _ (le_of_lt h')
[GOAL]
case pos.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet (⋂ (n : ℕ), (f n)ᶜ)
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (⋂ (n : ℕ), (f n)ᶜ) ≤
      VectorMeasure.restrict 0 (⋂ (n : ℕ), (f n)ᶜ)
μA : ℝ≥0
hA₁✝ hA₁ : True
hA₃✝¹ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑↑ν (⋂ (n : ℕ), (f n)ᶜ)
νA : ℝ≥0
hA₃✝ hA₃ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑νA
hb : 0 < νA
c : ℝ≥0
hc : 0 < c
n : ℕ
hn : 1 / (↑n + 1) < ↑c * (↑νA)⁻¹
hb₁ : 0 < (↑νA)⁻¹
h' : 1 / (↑n + 1) * νA < c
⊢ μA ≤ 1 / (↑n + 1) * νA
[PROOFSTEP]
rw [← ENNReal.coe_le_coe, ENNReal.coe_mul]
[GOAL]
case pos.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet (⋂ (n : ℕ), (f n)ᶜ)
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (⋂ (n : ℕ), (f n)ᶜ) ≤
      VectorMeasure.restrict 0 (⋂ (n : ℕ), (f n)ᶜ)
μA : ℝ≥0
hA₁✝ hA₁ : True
hA₃✝¹ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑↑ν (⋂ (n : ℕ), (f n)ᶜ)
νA : ℝ≥0
hA₃✝ hA₃ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑νA
hb : 0 < νA
c : ℝ≥0
hc : 0 < c
n : ℕ
hn : 1 / (↑n + 1) < ↑c * (↑νA)⁻¹
hb₁ : 0 < (↑νA)⁻¹
h' : 1 / (↑n + 1) * νA < c
⊢ ↑μA ≤ ↑(1 / (↑n + 1)) * ↑νA
[PROOFSTEP]
exact hA₃ n
[GOAL]
case neg
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet (⋂ (n : ℕ), (f n)ᶜ)
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (⋂ (n : ℕ), (f n)ᶜ) ≤
      VectorMeasure.restrict 0 (⋂ (n : ℕ), (f n)ᶜ)
μA : ℝ≥0
hA₁✝ hA₁ : True
hA₃✝¹ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑↑ν (⋂ (n : ℕ), (f n)ᶜ)
νA : ℝ≥0
hA₃✝ hA₃ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑νA
hb : ¬0 < νA
⊢ μA = 0
[PROOFSTEP]
rw [not_lt, le_zero_iff] at hb 
[GOAL]
case neg
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet (⋂ (n : ℕ), (f n)ᶜ)
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (⋂ (n : ℕ), (f n)ᶜ) ≤
      VectorMeasure.restrict 0 (⋂ (n : ℕ), (f n)ᶜ)
μA : ℝ≥0
hA₁✝ hA₁ : True
hA₃✝¹ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑↑ν (⋂ (n : ℕ), (f n)ᶜ)
νA : ℝ≥0
hA₃✝ hA₃ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑νA
hb : νA = 0
⊢ μA = 0
[PROOFSTEP]
specialize hA₃ 0
[GOAL]
case neg
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet (⋂ (n : ℕ), (f n)ᶜ)
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (⋂ (n : ℕ), (f n)ᶜ) ≤
      VectorMeasure.restrict 0 (⋂ (n : ℕ), (f n)ᶜ)
μA : ℝ≥0
hA₁✝ hA₁ : True
hA₃✝¹ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑↑ν (⋂ (n : ℕ), (f n)ᶜ)
νA : ℝ≥0
hA₃✝ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑νA
hb : νA = 0
hA₃ : ↑μA ≤ ↑(1 / (↑0 + 1)) * ↑νA
⊢ μA = 0
[PROOFSTEP]
simp [hb, le_zero_iff] at hA₃ 
[GOAL]
case neg
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet (⋂ (n : ℕ), (f n)ᶜ)
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (⋂ (n : ℕ), (f n)ᶜ) ≤
      VectorMeasure.restrict 0 (⋂ (n : ℕ), (f n)ᶜ)
μA : ℝ≥0
hA₁✝ hA₁ : True
hA₃✝¹ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑↑ν (⋂ (n : ℕ), (f n)ᶜ)
νA : ℝ≥0
hA₃✝ : ∀ (n : ℕ), ↑μA ≤ ↑(1 / (↑n + 1)) * ↑νA
hb : νA = 0
hA₃ : μA = 0
⊢ μA = 0
[PROOFSTEP]
assumption
  -- since `μ` and `ν` are not mutually singular, `μ A = 0` implies `ν Aᶜ > 0`
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬μ ⟂ₘ ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hA₁ : A = ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet A
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) A ≤ VectorMeasure.restrict 0 A
hA₃ : ∀ (n : ℕ), ↑↑μ A ≤ ↑(1 / (↑n + 1)) * ↑↑ν A
hμ : ↑↑μ A = 0
⊢ ∃ ε,
    0 < ε ∧
      ∃ E,
        MeasurableSet E ∧
          0 < ↑↑ν E ∧
            VectorMeasure.restrict 0 E ≤ VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure (ε • ν)) E
[PROOFSTEP]
rw [MutuallySingular] at h 
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h : ¬∃ s, MeasurableSet s ∧ ↑↑μ s = 0 ∧ ↑↑ν sᶜ = 0
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hA₁ : A = ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet A
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) A ≤ VectorMeasure.restrict 0 A
hA₃ : ∀ (n : ℕ), ↑↑μ A ≤ ↑(1 / (↑n + 1)) * ↑↑ν A
hμ : ↑↑μ A = 0
⊢ ∃ ε,
    0 < ε ∧
      ∃ E,
        MeasurableSet E ∧
          0 < ↑↑ν E ∧
            VectorMeasure.restrict 0 E ≤ VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure (ε • ν)) E
[PROOFSTEP]
push_neg at h 
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hA₁ : A = ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet A
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) A ≤ VectorMeasure.restrict 0 A
hA₃ : ∀ (n : ℕ), ↑↑μ A ≤ ↑(1 / (↑n + 1)) * ↑↑ν A
hμ : ↑↑μ A = 0
h : ∀ (s : Set α), MeasurableSet s → ↑↑μ s = 0 → ↑↑ν sᶜ ≠ 0
⊢ ∃ ε,
    0 < ε ∧
      ∃ E,
        MeasurableSet E ∧
          0 < ↑↑ν E ∧
            VectorMeasure.restrict 0 E ≤ VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure (ε • ν)) E
[PROOFSTEP]
have := h _ hAmeas hμ
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hA₁ : A = ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet A
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) A ≤ VectorMeasure.restrict 0 A
hA₃ : ∀ (n : ℕ), ↑↑μ A ≤ ↑(1 / (↑n + 1)) * ↑↑ν A
hμ : ↑↑μ A = 0
h : ∀ (s : Set α), MeasurableSet s → ↑↑μ s = 0 → ↑↑ν sᶜ ≠ 0
this : ↑↑ν Aᶜ ≠ 0
⊢ ∃ ε,
    0 < ε ∧
      ∃ E,
        MeasurableSet E ∧
          0 < ↑↑ν E ∧
            VectorMeasure.restrict 0 E ≤ VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure (ε • ν)) E
[PROOFSTEP]
simp_rw [compl_iInter, compl_compl] at this 
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hA₁ : A = ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet A
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) A ≤ VectorMeasure.restrict 0 A
hA₃ : ∀ (n : ℕ), ↑↑μ A ≤ ↑(1 / (↑n + 1)) * ↑↑ν A
hμ : ↑↑μ A = 0
h : ∀ (s : Set α), MeasurableSet s → ↑↑μ s = 0 → ↑↑ν sᶜ ≠ 0
this : ↑↑ν (⋃ (i : ℕ), f i) ≠ 0
⊢ ∃ ε,
    0 < ε ∧
      ∃ E,
        MeasurableSet E ∧
          0 < ↑↑ν E ∧
            VectorMeasure.restrict 0 E ≤ VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure (ε • ν)) E
[PROOFSTEP]
obtain ⟨n, hn⟩ := exists_measure_pos_of_not_measure_iUnion_null this
[GOAL]
case intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hA₁ : A = ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet A
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) A ≤ VectorMeasure.restrict 0 A
hA₃ : ∀ (n : ℕ), ↑↑μ A ≤ ↑(1 / (↑n + 1)) * ↑↑ν A
hμ : ↑↑μ A = 0
h : ∀ (s : Set α), MeasurableSet s → ↑↑μ s = 0 → ↑↑ν sᶜ ≠ 0
this : ↑↑ν (⋃ (i : ℕ), f i) ≠ 0
n : ℕ
hn : 0 < ↑↑ν (f n)
⊢ ∃ ε,
    0 < ε ∧
      ∃ E,
        MeasurableSet E ∧
          0 < ↑↑ν E ∧
            VectorMeasure.restrict 0 E ≤ VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure (ε • ν)) E
[PROOFSTEP]
exact ⟨1 / (n + 1), by simp, f n, hf₁ n, hn, hf₂ n⟩
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
f : ℕ → Set α
hf₁ : ∀ (n : ℕ), MeasurableSet (f n)
hf₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict 0 (f n) ≤
      VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)
hf₃ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) (f n)ᶜ ≤
      VectorMeasure.restrict 0 (f n)ᶜ
A : Set α := ⋂ (n : ℕ), (f n)ᶜ
hA₁ : A = ⋂ (n : ℕ), (f n)ᶜ
hAmeas : MeasurableSet A
hA₂ :
  ∀ (n : ℕ),
    VectorMeasure.restrict (toSignedMeasure μ - toSignedMeasure ((1 / (↑n + 1)) • ν)) A ≤ VectorMeasure.restrict 0 A
hA₃ : ∀ (n : ℕ), ↑↑μ A ≤ ↑(1 / (↑n + 1)) * ↑↑ν A
hμ : ↑↑μ A = 0
h : ∀ (s : Set α), MeasurableSet s → ↑↑μ s = 0 → ↑↑ν sᶜ ≠ 0
this : ↑↑ν (⋃ (i : ℕ), f i) ≠ 0
n : ℕ
hn : 0 < ↑↑ν (f n)
⊢ 0 < 1 / (↑n + 1)
[PROOFSTEP]
simp
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
A : Set α
x✝ : MeasurableSet A
⊢ ∫⁻ (x : α) in A, OfNat.ofNat 0 x ∂μ ≤ ↑↑ν A
[PROOFSTEP]
simp
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : f ∈ measurableLE μ ν
hg : g ∈ measurableLE μ ν
⊢ (fun a => f a ⊔ g a) ∈ measurableLE μ ν
[PROOFSTEP]
simp_rw [ENNReal.sup_eq_max]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : f ∈ measurableLE μ ν
hg : g ∈ measurableLE μ ν
⊢ (fun a => max (f a) (g a)) ∈ measurableLE μ ν
[PROOFSTEP]
refine' ⟨Measurable.max hf.1 hg.1, fun A hA => _⟩
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : f ∈ measurableLE μ ν
hg : g ∈ measurableLE μ ν
A : Set α
hA : MeasurableSet A
⊢ ∫⁻ (x : α) in A, (fun a => max (f a) (g a)) x ∂μ ≤ ↑↑ν A
[PROOFSTEP]
have h₁ := hA.inter (measurableSet_le hf.1 hg.1)
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : f ∈ measurableLE μ ν
hg : g ∈ measurableLE μ ν
A : Set α
hA : MeasurableSet A
h₁ : MeasurableSet (A ∩ {a | f a ≤ g a})
⊢ ∫⁻ (x : α) in A, (fun a => max (f a) (g a)) x ∂μ ≤ ↑↑ν A
[PROOFSTEP]
have h₂ := hA.inter (measurableSet_lt hg.1 hf.1)
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : f ∈ measurableLE μ ν
hg : g ∈ measurableLE μ ν
A : Set α
hA : MeasurableSet A
h₁ : MeasurableSet (A ∩ {a | f a ≤ g a})
h₂ : MeasurableSet (A ∩ {a | g a < f a})
⊢ ∫⁻ (x : α) in A, (fun a => max (f a) (g a)) x ∂μ ≤ ↑↑ν A
[PROOFSTEP]
rw [set_lintegral_max hf.1 hg.1]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : f ∈ measurableLE μ ν
hg : g ∈ measurableLE μ ν
A : Set α
hA : MeasurableSet A
h₁ : MeasurableSet (A ∩ {a | f a ≤ g a})
h₂ : MeasurableSet (A ∩ {a | g a < f a})
⊢ ∫⁻ (x : α) in A ∩ {x | f x ≤ g x}, g x ∂μ + ∫⁻ (x : α) in A ∩ {x | g x < f x}, f x ∂μ ≤ ↑↑ν A
[PROOFSTEP]
refine' (add_le_add (hg.2 _ h₁) (hf.2 _ h₂)).trans_eq _
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : f ∈ measurableLE μ ν
hg : g ∈ measurableLE μ ν
A : Set α
hA : MeasurableSet A
h₁ : MeasurableSet (A ∩ {a | f a ≤ g a})
h₂ : MeasurableSet (A ∩ {a | g a < f a})
⊢ ↑↑ν (A ∩ {a | f a ≤ g a}) + ↑↑ν (A ∩ {a | g a < f a}) = ↑↑ν A
[PROOFSTEP]
simp only [← not_le, ← compl_setOf, ← diff_eq]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : f ∈ measurableLE μ ν
hg : g ∈ measurableLE μ ν
A : Set α
hA : MeasurableSet A
h₁ : MeasurableSet (A ∩ {a | f a ≤ g a})
h₂ : MeasurableSet (A ∩ {a | g a < f a})
⊢ ↑↑ν (A ∩ {a | f a ≤ g a}) + ↑↑ν (A \ {a | f a ≤ g a}) = ↑↑ν A
[PROOFSTEP]
exact measure_inter_add_diff _ (measurableSet_le hf.1 hg.1)
[GOAL]
α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
μ ν : Measure α✝
α : Sort u_3
f : ℕ → α → ℝ≥0∞
m : ℕ
a : α
⊢ ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a = f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
[PROOFSTEP]
refine Option.ext fun x => ?_
[GOAL]
α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
μ ν : Measure α✝
α : Sort u_3
f : ℕ → α → ℝ≥0∞
m : ℕ
a : α
x : ℝ≥0
⊢ x ∈ ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a ↔ x ∈ f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
[PROOFSTEP]
simp only [Option.mem_def, ENNReal.some_eq_coe]
[GOAL]
α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
μ ν : Measure α✝
α : Sort u_3
f : ℕ → α → ℝ≥0∞
m : ℕ
a : α
x : ℝ≥0
⊢ ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a = ↑x ↔ f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a = ↑x
[PROOFSTEP]
constructor
[GOAL]
case mp
α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
μ ν : Measure α✝
α : Sort u_3
f : ℕ → α → ℝ≥0∞
m : ℕ
a : α
x : ℝ≥0
⊢ ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a = ↑x → f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a = ↑x
[PROOFSTEP]
intro h
[GOAL]
case mpr
α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
μ ν : Measure α✝
α : Sort u_3
f : ℕ → α → ℝ≥0∞
m : ℕ
a : α
x : ℝ≥0
⊢ f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a = ↑x → ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a = ↑x
[PROOFSTEP]
intro h
[GOAL]
case mp
α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
μ ν : Measure α✝
α : Sort u_3
f : ℕ → α → ℝ≥0∞
m : ℕ
a : α
x : ℝ≥0
h : ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a = ↑x
⊢ f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a = ↑x
[PROOFSTEP]
rw [← h]
[GOAL]
case mpr
α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
μ ν : Measure α✝
α : Sort u_3
f : ℕ → α → ℝ≥0∞
m : ℕ
a : α
x : ℝ≥0
h : f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a = ↑x
⊢ ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a = ↑x
[PROOFSTEP]
rw [← h]
[GOAL]
case mp
α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
μ ν : Measure α✝
α : Sort u_3
f : ℕ → α → ℝ≥0∞
m : ℕ
a : α
x : ℝ≥0
h : ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a = ↑x
⊢ f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a = ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
case mpr
α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
μ ν : Measure α✝
α : Sort u_3
f : ℕ → α → ℝ≥0∞
m : ℕ
a : α
x : ℝ≥0
h : f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a = ↑x
⊢ ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a = f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
[PROOFSTEP]
symm
[GOAL]
case mp
α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
μ ν : Measure α✝
α : Sort u_3
f : ℕ → α → ℝ≥0∞
m : ℕ
a : α
x : ℝ≥0
h : ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a = ↑x
⊢ ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a = f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
case mpr
α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
μ ν : Measure α✝
α : Sort u_3
f : ℕ → α → ℝ≥0∞
m : ℕ
a : α
x : ℝ≥0
h : f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a = ↑x
⊢ ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a = f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
[PROOFSTEP]
all_goals
  set c := ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a with hc
  set d := f m.succ a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a with hd
  rw [@le_antisymm_iff ℝ≥0∞, hc, hd]
    -- Specifying the type is weirdly necessary
  refine' ⟨_, _⟩
  · refine' iSup₂_le fun n hn => _
    rcases Nat.of_le_succ hn with (h | h)
    · exact le_sup_of_le_right (le_iSup₂ (f := fun k (_ : k ≤ m) => f k a) n h)
    · exact h ▸ le_sup_left
  · refine' sup_le _ (biSup_mono fun n hn => hn.trans m.le_succ)
    convert @le_iSup₂ ℝ≥0∞ ℕ (fun i => i ≤ m + 1) _ _ m.succ le_rfl
    rfl
[GOAL]
case mp
α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
μ ν : Measure α✝
α : Sort u_3
f : ℕ → α → ℝ≥0∞
m : ℕ
a : α
x : ℝ≥0
h : ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a = ↑x
⊢ ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a = f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
[PROOFSTEP]
set c := ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a with hc
[GOAL]
case mp
α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
μ ν : Measure α✝
α : Sort u_3
f : ℕ → α → ℝ≥0∞
m : ℕ
a : α
x : ℝ≥0
c : ℝ≥0∞ := ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
h : c = ↑x
hc : c = ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
⊢ c = f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
[PROOFSTEP]
set d := f m.succ a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a with hd
[GOAL]
case mp
α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
μ ν : Measure α✝
α : Sort u_3
f : ℕ → α → ℝ≥0∞
m : ℕ
a : α
x : ℝ≥0
c : ℝ≥0∞ := ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
h : c = ↑x
hc : c = ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
d : ℝ≥0∞ := f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
hd : d = f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
⊢ c = d
[PROOFSTEP]
rw [@le_antisymm_iff ℝ≥0∞, hc, hd]
  -- Specifying the type is weirdly necessary
[GOAL]
case mp
α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
μ ν : Measure α✝
α : Sort u_3
f : ℕ → α → ℝ≥0∞
m : ℕ
a : α
x : ℝ≥0
c : ℝ≥0∞ := ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
h : c = ↑x
hc : c = ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
d : ℝ≥0∞ := f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
hd : d = f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
⊢ ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a ≤ f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a ∧
    f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a ≤ ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
[PROOFSTEP]
refine' ⟨_, _⟩
[GOAL]
case mp.refine'_1
α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
μ ν : Measure α✝
α : Sort u_3
f : ℕ → α → ℝ≥0∞
m : ℕ
a : α
x : ℝ≥0
c : ℝ≥0∞ := ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
h : c = ↑x
hc : c = ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
d : ℝ≥0∞ := f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
hd : d = f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
⊢ ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a ≤ f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
[PROOFSTEP]
refine' iSup₂_le fun n hn => _
[GOAL]
case mp.refine'_1
α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
μ ν : Measure α✝
α : Sort u_3
f : ℕ → α → ℝ≥0∞
m : ℕ
a : α
x : ℝ≥0
c : ℝ≥0∞ := ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
h : c = ↑x
hc : c = ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
d : ℝ≥0∞ := f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
hd : d = f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
n : ℕ
hn : n ≤ m + 1
⊢ f n a ≤ f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
[PROOFSTEP]
rcases Nat.of_le_succ hn with (h | h)
[GOAL]
case mp.refine'_1.inl
α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
μ ν : Measure α✝
α : Sort u_3
f : ℕ → α → ℝ≥0∞
m : ℕ
a : α
x : ℝ≥0
c : ℝ≥0∞ := ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
h✝ : c = ↑x
hc : c = ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
d : ℝ≥0∞ := f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
hd : d = f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
n : ℕ
hn : n ≤ m + 1
h : n ≤ m
⊢ f n a ≤ f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
[PROOFSTEP]
exact le_sup_of_le_right (le_iSup₂ (f := fun k (_ : k ≤ m) => f k a) n h)
[GOAL]
case mp.refine'_1.inr
α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
μ ν : Measure α✝
α : Sort u_3
f : ℕ → α → ℝ≥0∞
m : ℕ
a : α
x : ℝ≥0
c : ℝ≥0∞ := ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
h✝ : c = ↑x
hc : c = ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
d : ℝ≥0∞ := f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
hd : d = f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
n : ℕ
hn : n ≤ m + 1
h : n = Nat.succ m
⊢ f n a ≤ f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
[PROOFSTEP]
exact h ▸ le_sup_left
[GOAL]
case mp.refine'_2
α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
μ ν : Measure α✝
α : Sort u_3
f : ℕ → α → ℝ≥0∞
m : ℕ
a : α
x : ℝ≥0
c : ℝ≥0∞ := ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
h : c = ↑x
hc : c = ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
d : ℝ≥0∞ := f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
hd : d = f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
⊢ f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a ≤ ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
[PROOFSTEP]
refine' sup_le _ (biSup_mono fun n hn => hn.trans m.le_succ)
[GOAL]
case mp.refine'_2
α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
μ ν : Measure α✝
α : Sort u_3
f : ℕ → α → ℝ≥0∞
m : ℕ
a : α
x : ℝ≥0
c : ℝ≥0∞ := ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
h : c = ↑x
hc : c = ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
d : ℝ≥0∞ := f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
hd : d = f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
⊢ f (Nat.succ m) a ≤ ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
[PROOFSTEP]
convert @le_iSup₂ ℝ≥0∞ ℕ (fun i => i ≤ m + 1) _ _ m.succ le_rfl
[GOAL]
case h.e'_3
α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
μ ν : Measure α✝
α : Sort u_3
f : ℕ → α → ℝ≥0∞
m : ℕ
a : α
x : ℝ≥0
c : ℝ≥0∞ := ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
h : c = ↑x
hc : c = ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
d : ℝ≥0∞ := f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
hd : d = f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
⊢ f (Nat.succ m) a = f (Nat.succ m) a
[PROOFSTEP]
rfl
[GOAL]
case mpr
α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
μ ν : Measure α✝
α : Sort u_3
f : ℕ → α → ℝ≥0∞
m : ℕ
a : α
x : ℝ≥0
h : f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a = ↑x
⊢ ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a = f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
[PROOFSTEP]
set c := ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a with hc
[GOAL]
case mpr
α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
μ ν : Measure α✝
α : Sort u_3
f : ℕ → α → ℝ≥0∞
m : ℕ
a : α
x : ℝ≥0
h : f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a = ↑x
c : ℝ≥0∞ := ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
hc : c = ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
⊢ c = f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
[PROOFSTEP]
set d := f m.succ a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a with hd
[GOAL]
case mpr
α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
μ ν : Measure α✝
α : Sort u_3
f : ℕ → α → ℝ≥0∞
m : ℕ
a : α
x : ℝ≥0
c : ℝ≥0∞ := ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
hc : c = ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
d : ℝ≥0∞ := f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
h : d = ↑x
hd : d = f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
⊢ c = d
[PROOFSTEP]
rw [@le_antisymm_iff ℝ≥0∞, hc, hd]
  -- Specifying the type is weirdly necessary
[GOAL]
case mpr
α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
μ ν : Measure α✝
α : Sort u_3
f : ℕ → α → ℝ≥0∞
m : ℕ
a : α
x : ℝ≥0
c : ℝ≥0∞ := ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
hc : c = ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
d : ℝ≥0∞ := f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
h : d = ↑x
hd : d = f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
⊢ ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a ≤ f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a ∧
    f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a ≤ ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
[PROOFSTEP]
refine' ⟨_, _⟩
[GOAL]
case mpr.refine'_1
α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
μ ν : Measure α✝
α : Sort u_3
f : ℕ → α → ℝ≥0∞
m : ℕ
a : α
x : ℝ≥0
c : ℝ≥0∞ := ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
hc : c = ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
d : ℝ≥0∞ := f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
h : d = ↑x
hd : d = f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
⊢ ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a ≤ f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
[PROOFSTEP]
refine' iSup₂_le fun n hn => _
[GOAL]
case mpr.refine'_1
α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
μ ν : Measure α✝
α : Sort u_3
f : ℕ → α → ℝ≥0∞
m : ℕ
a : α
x : ℝ≥0
c : ℝ≥0∞ := ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
hc : c = ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
d : ℝ≥0∞ := f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
h : d = ↑x
hd : d = f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
n : ℕ
hn : n ≤ m + 1
⊢ f n a ≤ f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
[PROOFSTEP]
rcases Nat.of_le_succ hn with (h | h)
[GOAL]
case mpr.refine'_1.inl
α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
μ ν : Measure α✝
α : Sort u_3
f : ℕ → α → ℝ≥0∞
m : ℕ
a : α
x : ℝ≥0
c : ℝ≥0∞ := ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
hc : c = ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
d : ℝ≥0∞ := f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
h✝ : d = ↑x
hd : d = f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
n : ℕ
hn : n ≤ m + 1
h : n ≤ m
⊢ f n a ≤ f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
[PROOFSTEP]
exact le_sup_of_le_right (le_iSup₂ (f := fun k (_ : k ≤ m) => f k a) n h)
[GOAL]
case mpr.refine'_1.inr
α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
μ ν : Measure α✝
α : Sort u_3
f : ℕ → α → ℝ≥0∞
m : ℕ
a : α
x : ℝ≥0
c : ℝ≥0∞ := ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
hc : c = ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
d : ℝ≥0∞ := f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
h✝ : d = ↑x
hd : d = f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
n : ℕ
hn : n ≤ m + 1
h : n = Nat.succ m
⊢ f n a ≤ f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
[PROOFSTEP]
exact h ▸ le_sup_left
[GOAL]
case mpr.refine'_2
α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
μ ν : Measure α✝
α : Sort u_3
f : ℕ → α → ℝ≥0∞
m : ℕ
a : α
x : ℝ≥0
c : ℝ≥0∞ := ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
hc : c = ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
d : ℝ≥0∞ := f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
h : d = ↑x
hd : d = f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
⊢ f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a ≤ ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
[PROOFSTEP]
refine' sup_le _ (biSup_mono fun n hn => hn.trans m.le_succ)
[GOAL]
case mpr.refine'_2
α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
μ ν : Measure α✝
α : Sort u_3
f : ℕ → α → ℝ≥0∞
m : ℕ
a : α
x : ℝ≥0
c : ℝ≥0∞ := ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
hc : c = ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
d : ℝ≥0∞ := f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
h : d = ↑x
hd : d = f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
⊢ f (Nat.succ m) a ≤ ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
[PROOFSTEP]
convert @le_iSup₂ ℝ≥0∞ ℕ (fun i => i ≤ m + 1) _ _ m.succ le_rfl
[GOAL]
case h.e'_3
α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
μ ν : Measure α✝
α : Sort u_3
f : ℕ → α → ℝ≥0∞
m : ℕ
a : α
x : ℝ≥0
c : ℝ≥0∞ := ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
hc : c = ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a
d : ℝ≥0∞ := f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
h : d = ↑x
hd : d = f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
⊢ f (Nat.succ m) a = f (Nat.succ m) a
[PROOFSTEP]
rfl
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), f n ∈ measurableLE μ ν
n : ℕ
⊢ (fun x => ⨆ (k : ℕ) (_ : k ≤ n), f k x) ∈ measurableLE μ ν
[PROOFSTEP]
induction' n with m hm
[GOAL]
case zero
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), f n ∈ measurableLE μ ν
⊢ (fun x => ⨆ (k : ℕ) (_ : k ≤ Nat.zero), f k x) ∈ measurableLE μ ν
[PROOFSTEP]
refine' ⟨_, _⟩
[GOAL]
case zero.refine'_1
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), f n ∈ measurableLE μ ν
⊢ Measurable fun x => ⨆ (k : ℕ) (_ : k ≤ Nat.zero), f k x
[PROOFSTEP]
simp [(hf 0).1]
[GOAL]
case zero.refine'_2
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), f n ∈ measurableLE μ ν
⊢ ∀ (A : Set α), MeasurableSet A → ∫⁻ (x : α) in A, (fun x => ⨆ (k : ℕ) (_ : k ≤ Nat.zero), f k x) x ∂μ ≤ ↑↑ν A
[PROOFSTEP]
intro A hA
[GOAL]
case zero.refine'_2
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), f n ∈ measurableLE μ ν
A : Set α
hA : MeasurableSet A
⊢ ∫⁻ (x : α) in A, (fun x => ⨆ (k : ℕ) (_ : k ≤ Nat.zero), f k x) x ∂μ ≤ ↑↑ν A
[PROOFSTEP]
simp [(hf 0).2 A hA]
[GOAL]
case succ
α : Type u_1
β : Type u_2
m✝ : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), f n ∈ measurableLE μ ν
m : ℕ
hm : (fun x => ⨆ (k : ℕ) (_ : k ≤ m), f k x) ∈ measurableLE μ ν
⊢ (fun x => ⨆ (k : ℕ) (_ : k ≤ Nat.succ m), f k x) ∈ measurableLE μ ν
[PROOFSTEP]
have : (fun a : α => ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a) = fun a => f m.succ a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a :=
  funext fun _ => iSup_succ_eq_sup _ _ _
[GOAL]
case succ
α : Type u_1
β : Type u_2
m✝ : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), f n ∈ measurableLE μ ν
m : ℕ
hm : (fun x => ⨆ (k : ℕ) (_ : k ≤ m), f k x) ∈ measurableLE μ ν
this : (fun a => ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a) = fun a => f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
⊢ (fun x => ⨆ (k : ℕ) (_ : k ≤ Nat.succ m), f k x) ∈ measurableLE μ ν
[PROOFSTEP]
refine' ⟨measurable_iSup fun n => Measurable.iSup_Prop _ (hf n).1, fun A hA => _⟩
[GOAL]
case succ
α : Type u_1
β : Type u_2
m✝ : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), f n ∈ measurableLE μ ν
m : ℕ
hm : (fun x => ⨆ (k : ℕ) (_ : k ≤ m), f k x) ∈ measurableLE μ ν
this : (fun a => ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a) = fun a => f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
A : Set α
hA : MeasurableSet A
⊢ ∫⁻ (x : α) in A, (fun x => ⨆ (k : ℕ) (_ : k ≤ Nat.succ m), f k x) x ∂μ ≤ ↑↑ν A
[PROOFSTEP]
rw [this]
[GOAL]
case succ
α : Type u_1
β : Type u_2
m✝ : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), f n ∈ measurableLE μ ν
m : ℕ
hm : (fun x => ⨆ (k : ℕ) (_ : k ≤ m), f k x) ∈ measurableLE μ ν
this : (fun a => ⨆ (k : ℕ) (_ : k ≤ m + 1), f k a) = fun a => f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a
A : Set α
hA : MeasurableSet A
⊢ ∫⁻ (a : α) in A, f (Nat.succ m) a ⊔ ⨆ (k : ℕ) (_ : k ≤ m), f k a ∂μ ≤ ↑↑ν A
[PROOFSTEP]
exact (sup_mem_measurableLE (hf m.succ) hm).2 A hA
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), f n ∈ measurableLE μ ν
n : ℕ
⊢ ⨆ (k : ℕ) (_ : k ≤ n), f k ∈ measurableLE μ ν
[PROOFSTEP]
convert iSup_mem_measurableLE f hf n
[GOAL]
case h.e'_4.h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), f n ∈ measurableLE μ ν
n : ℕ
x✝ : α
⊢ iSup (fun k => ⨆ (_ : k ≤ n), f k) x✝ = ⨆ (k : ℕ) (_ : k ≤ n), f k x✝
[PROOFSTEP]
refine Option.ext fun x => ?_
[GOAL]
case h.e'_4.h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), f n ∈ measurableLE μ ν
n : ℕ
x✝ : α
x : ℝ≥0
⊢ x ∈ iSup (fun k => ⨆ (_ : k ≤ n), f k) x✝ ↔ x ∈ ⨆ (k : ℕ) (_ : k ≤ n), f k x✝
[PROOFSTEP]
simp
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
⊢ ∃ p, Measurable p.snd ∧ p.fst ⟂ₘ ν ∧ μ = p.fst + withDensity ν p.snd
[PROOFSTEP]
have h :=
  @exists_seq_tendsto_sSup _ _ _ _ _ (measurableLEEval ν μ) ⟨0, 0, zero_mem_measurableLE, by simp⟩ (OrderTop.bddAbove _)
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
⊢ (fun f => ∫⁻ (x : α), f x ∂ν) 0 = 0
[PROOFSTEP]
simp
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
h :
  ∃ u,
    Monotone u ∧
      Filter.Tendsto u Filter.atTop (nhds (sSup (measurableLEEval ν μ))) ∧ ∀ (n : ℕ), u n ∈ measurableLEEval ν μ
⊢ ∃ p, Measurable p.snd ∧ p.fst ⟂ₘ ν ∧ μ = p.fst + withDensity ν p.snd
[PROOFSTEP]
choose g _ hg₂ f hf₁ hf₂ using h
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
⊢ ∃ p, Measurable p.snd ∧ p.fst ⟂ₘ ν ∧ μ = p.fst + withDensity ν p.snd
[PROOFSTEP]
set ξ := ⨆ (n) (k) (_ : k ≤ n), f k with hξ
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
⊢ ∃ p, Measurable p.snd ∧ p.fst ⟂ₘ ν ∧ μ = p.fst + withDensity ν p.snd
[PROOFSTEP]
have hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ a, ξ a ∂ν :=
  by
  have :=
    @lintegral_tendsto_of_tendsto_of_monotone _ _ ν (fun n => ⨆ (k) (_ : k ≤ n), f k) (⨆ (n) (k) (_ : k ≤ n), f k) ?_ ?_
      ?_
  · refine' tendsto_nhds_unique _ this
    refine' tendsto_of_tendsto_of_tendsto_of_le_of_le hg₂ tendsto_const_nhds _ _
    · intro n; rw [← hf₂ n]
      apply lintegral_mono
      simp only [iSup_apply, iSup_le_le f n n le_rfl]
    · intro n
      exact le_sSup ⟨⨆ (k : ℕ) (_ : k ≤ n), f k, iSup_mem_measurableLE' _ hf₁ _, rfl⟩
  · intro n
    refine' Measurable.aemeasurable _
    convert (iSup_mem_measurableLE _ hf₁ n).1
    refine Option.ext fun x => ?_; simp
  · refine' Filter.eventually_of_forall fun a => _
    simp [iSup_monotone' f _]
  · refine' Filter.eventually_of_forall fun a => _
    simp [tendsto_atTop_iSup (iSup_monotone' f a)]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
⊢ sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
[PROOFSTEP]
have :=
  @lintegral_tendsto_of_tendsto_of_monotone _ _ ν (fun n => ⨆ (k) (_ : k ≤ n), f k) (⨆ (n) (k) (_ : k ≤ n), f k) ?_ ?_
    ?_
[GOAL]
case refine_4
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
this :
  Filter.Tendsto (fun n => ∫⁻ (x : α), iSup (fun k => ⨆ (_ : k ≤ n), f k) x ∂ν) Filter.atTop
    (nhds (∫⁻ (x : α), iSup (fun n => ⨆ (k : ℕ) (_ : k ≤ n), f k) x ∂ν))
⊢ sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
[PROOFSTEP]
refine' tendsto_nhds_unique _ this
[GOAL]
case refine_4
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
this :
  Filter.Tendsto (fun n => ∫⁻ (x : α), iSup (fun k => ⨆ (_ : k ≤ n), f k) x ∂ν) Filter.atTop
    (nhds (∫⁻ (x : α), iSup (fun n => ⨆ (k : ℕ) (_ : k ≤ n), f k) x ∂ν))
⊢ Filter.Tendsto (fun n => ∫⁻ (x : α), iSup (fun k => ⨆ (_ : k ≤ n), f k) x ∂ν) Filter.atTop
    (nhds (sSup (measurableLEEval ν μ)))
[PROOFSTEP]
refine' tendsto_of_tendsto_of_tendsto_of_le_of_le hg₂ tendsto_const_nhds _ _
[GOAL]
case refine_4.refine'_1
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
this :
  Filter.Tendsto (fun n => ∫⁻ (x : α), iSup (fun k => ⨆ (_ : k ≤ n), f k) x ∂ν) Filter.atTop
    (nhds (∫⁻ (x : α), iSup (fun n => ⨆ (k : ℕ) (_ : k ≤ n), f k) x ∂ν))
⊢ g ≤ fun n => ∫⁻ (x : α), iSup (fun k => ⨆ (_ : k ≤ n), f k) x ∂ν
[PROOFSTEP]
intro n
[GOAL]
case refine_4.refine'_1
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
this :
  Filter.Tendsto (fun n => ∫⁻ (x : α), iSup (fun k => ⨆ (_ : k ≤ n), f k) x ∂ν) Filter.atTop
    (nhds (∫⁻ (x : α), iSup (fun n => ⨆ (k : ℕ) (_ : k ≤ n), f k) x ∂ν))
n : ℕ
⊢ g n ≤ (fun n => ∫⁻ (x : α), iSup (fun k => ⨆ (_ : k ≤ n), f k) x ∂ν) n
[PROOFSTEP]
rw [← hf₂ n]
[GOAL]
case refine_4.refine'_1
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
this :
  Filter.Tendsto (fun n => ∫⁻ (x : α), iSup (fun k => ⨆ (_ : k ≤ n), f k) x ∂ν) Filter.atTop
    (nhds (∫⁻ (x : α), iSup (fun n => ⨆ (k : ℕ) (_ : k ≤ n), f k) x ∂ν))
n : ℕ
⊢ (fun f => ∫⁻ (x : α), f x ∂ν) (f n) ≤ (fun n => ∫⁻ (x : α), iSup (fun k => ⨆ (_ : k ≤ n), f k) x ∂ν) n
[PROOFSTEP]
apply lintegral_mono
[GOAL]
case refine_4.refine'_1.hfg
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
this :
  Filter.Tendsto (fun n => ∫⁻ (x : α), iSup (fun k => ⨆ (_ : k ≤ n), f k) x ∂ν) Filter.atTop
    (nhds (∫⁻ (x : α), iSup (fun n => ⨆ (k : ℕ) (_ : k ≤ n), f k) x ∂ν))
n : ℕ
⊢ (fun a => f n a) ≤ fun a => iSup (fun k => ⨆ (_ : k ≤ n), f k) a
[PROOFSTEP]
simp only [iSup_apply, iSup_le_le f n n le_rfl]
[GOAL]
case refine_4.refine'_2
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
this :
  Filter.Tendsto (fun n => ∫⁻ (x : α), iSup (fun k => ⨆ (_ : k ≤ n), f k) x ∂ν) Filter.atTop
    (nhds (∫⁻ (x : α), iSup (fun n => ⨆ (k : ℕ) (_ : k ≤ n), f k) x ∂ν))
⊢ (fun n => ∫⁻ (x : α), iSup (fun k => ⨆ (_ : k ≤ n), f k) x ∂ν) ≤ fun x => sSup (measurableLEEval ν μ)
[PROOFSTEP]
intro n
[GOAL]
case refine_4.refine'_2
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
this :
  Filter.Tendsto (fun n => ∫⁻ (x : α), iSup (fun k => ⨆ (_ : k ≤ n), f k) x ∂ν) Filter.atTop
    (nhds (∫⁻ (x : α), iSup (fun n => ⨆ (k : ℕ) (_ : k ≤ n), f k) x ∂ν))
n : ℕ
⊢ (fun n => ∫⁻ (x : α), iSup (fun k => ⨆ (_ : k ≤ n), f k) x ∂ν) n ≤ (fun x => sSup (measurableLEEval ν μ)) n
[PROOFSTEP]
exact le_sSup ⟨⨆ (k : ℕ) (_ : k ≤ n), f k, iSup_mem_measurableLE' _ hf₁ _, rfl⟩
[GOAL]
case refine_1
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
⊢ ∀ (n : ℕ), AEMeasurable ((fun n => ⨆ (k : ℕ) (_ : k ≤ n), f k) n)
[PROOFSTEP]
intro n
[GOAL]
case refine_1
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
n : ℕ
⊢ AEMeasurable ((fun n => ⨆ (k : ℕ) (_ : k ≤ n), f k) n)
[PROOFSTEP]
refine' Measurable.aemeasurable _
[GOAL]
case refine_1
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
n : ℕ
⊢ Measurable ((fun n => ⨆ (k : ℕ) (_ : k ≤ n), f k) n)
[PROOFSTEP]
convert (iSup_mem_measurableLE _ hf₁ n).1
[GOAL]
case h.e'_5.h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
n : ℕ
x✝ : α
⊢ (fun n => ⨆ (k : ℕ) (_ : k ≤ n), f k) n x✝ = ⨆ (k : ℕ) (_ : k ≤ n), f k x✝
[PROOFSTEP]
refine Option.ext fun x => ?_
[GOAL]
case h.e'_5.h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
n : ℕ
x✝ : α
x : ℝ≥0
⊢ x ∈ (fun n => ⨆ (k : ℕ) (_ : k ≤ n), f k) n x✝ ↔ x ∈ ⨆ (k : ℕ) (_ : k ≤ n), f k x✝
[PROOFSTEP]
simp
[GOAL]
case refine_2
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
⊢ ∀ᵐ (x : α) ∂ν, Monotone fun n => (fun n => ⨆ (k : ℕ) (_ : k ≤ n), f k) n x
[PROOFSTEP]
refine' Filter.eventually_of_forall fun a => _
[GOAL]
case refine_2
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
a : α
⊢ Monotone fun n => (fun n => ⨆ (k : ℕ) (_ : k ≤ n), f k) n a
[PROOFSTEP]
simp [iSup_monotone' f _]
[GOAL]
case refine_3
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
⊢ ∀ᵐ (x : α) ∂ν,
    Filter.Tendsto (fun n => (fun n => ⨆ (k : ℕ) (_ : k ≤ n), f k) n x) Filter.atTop
      (nhds (iSup (fun n => ⨆ (k : ℕ) (_ : k ≤ n), f k) x))
[PROOFSTEP]
refine' Filter.eventually_of_forall fun a => _
[GOAL]
case refine_3
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
a : α
⊢ Filter.Tendsto (fun n => (fun n => ⨆ (k : ℕ) (_ : k ≤ n), f k) n a) Filter.atTop
    (nhds (iSup (fun n => ⨆ (k : ℕ) (_ : k ≤ n), f k) a))
[PROOFSTEP]
simp [tendsto_atTop_iSup (iSup_monotone' f a)]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
⊢ ∃ p, Measurable p.snd ∧ p.fst ⟂ₘ ν ∧ μ = p.fst + withDensity ν p.snd
[PROOFSTEP]
have hξm : Measurable ξ :=
  by
  convert measurable_iSup fun n => (iSup_mem_measurableLE _ hf₁ n).1
  refine Option.ext fun x => ?_;
  simp [hξ]
    -- `ξ` is the `f` in the theorem statement and we set `μ₁` to be `μ - ν.withDensity ξ`
        -- since we need `μ₁ + ν.withDensity ξ = μ`
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
⊢ Measurable ξ
[PROOFSTEP]
convert measurable_iSup fun n => (iSup_mem_measurableLE _ hf₁ n).1
[GOAL]
case h.e'_5.h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
x✝ : α
⊢ ξ x✝ = ⨆ (i : ℕ) (k : ℕ) (_ : k ≤ i), f k x✝
[PROOFSTEP]
refine Option.ext fun x => ?_
[GOAL]
case h.e'_5.h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
x✝ : α
x : ℝ≥0
⊢ x ∈ ξ x✝ ↔ x ∈ ⨆ (i : ℕ) (k : ℕ) (_ : k ≤ i), f k x✝
[PROOFSTEP]
simp [hξ]
  -- `ξ` is the `f` in the theorem statement and we set `μ₁` to be `μ - ν.withDensity ξ`
      -- since we need `μ₁ + ν.withDensity ξ = μ`
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
⊢ ∃ p, Measurable p.snd ∧ p.fst ⟂ₘ ν ∧ μ = p.fst + withDensity ν p.snd
[PROOFSTEP]
set μ₁ := μ - ν.withDensity ξ with hμ₁
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
⊢ ∃ p, Measurable p.snd ∧ p.fst ⟂ₘ ν ∧ μ = p.fst + withDensity ν p.snd
[PROOFSTEP]
have hle : ν.withDensity ξ ≤ μ := by
  intro B hB
  rw [hξ, withDensity_apply _ hB]
  simp_rw [iSup_apply]
  rw [lintegral_iSup (fun i => (iSup_mem_measurableLE _ hf₁ i).1) (iSup_monotone _)]
  exact iSup_le fun i => (iSup_mem_measurableLE _ hf₁ i).2 B hB
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
⊢ withDensity ν ξ ≤ μ
[PROOFSTEP]
intro B hB
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
B : Set α
hB : MeasurableSet B
⊢ ↑↑(withDensity ν ξ) B ≤ ↑↑μ B
[PROOFSTEP]
rw [hξ, withDensity_apply _ hB]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
B : Set α
hB : MeasurableSet B
⊢ ∫⁻ (a : α) in B, iSup (fun n => ⨆ (k : ℕ) (_ : k ≤ n), f k) a ∂ν ≤ ↑↑μ B
[PROOFSTEP]
simp_rw [iSup_apply]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
B : Set α
hB : MeasurableSet B
⊢ ∫⁻ (a : α) in B, ⨆ (i : ℕ) (i_1 : ℕ) (_ : i_1 ≤ i), f i_1 a ∂ν ≤ ↑↑μ B
[PROOFSTEP]
rw [lintegral_iSup (fun i => (iSup_mem_measurableLE _ hf₁ i).1) (iSup_monotone _)]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
B : Set α
hB : MeasurableSet B
⊢ ⨆ (n : ℕ), ∫⁻ (a : α) in B, ⨆ (k : ℕ) (_ : k ≤ n), f k a ∂ν ≤ ↑↑μ B
[PROOFSTEP]
exact iSup_le fun i => (iSup_mem_measurableLE _ hf₁ i).2 B hB
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
⊢ ∃ p, Measurable p.snd ∧ p.fst ⟂ₘ ν ∧ μ = p.fst + withDensity ν p.snd
[PROOFSTEP]
have : IsFiniteMeasure (ν.withDensity ξ) :=
  by
  refine' isFiniteMeasure_withDensity _
  have hle' := hle univ MeasurableSet.univ
  rw [withDensity_apply _ MeasurableSet.univ, Measure.restrict_univ] at hle' 
  exact ne_top_of_le_ne_top (measure_ne_top _ _) hle'
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
⊢ IsFiniteMeasure (withDensity ν ξ)
[PROOFSTEP]
refine' isFiniteMeasure_withDensity _
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
⊢ ∫⁻ (a : α), ξ a ∂ν ≠ ⊤
[PROOFSTEP]
have hle' := hle univ MeasurableSet.univ
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
hle' : ↑↑(withDensity ν ξ) univ ≤ ↑↑μ univ
⊢ ∫⁻ (a : α), ξ a ∂ν ≠ ⊤
[PROOFSTEP]
rw [withDensity_apply _ MeasurableSet.univ, Measure.restrict_univ] at hle' 
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
hle' : ∫⁻ (a : α), ξ a ∂ν ≤ ↑↑μ univ
⊢ ∫⁻ (a : α), ξ a ∂ν ≠ ⊤
[PROOFSTEP]
exact ne_top_of_le_ne_top (measure_ne_top _ _) hle'
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this : IsFiniteMeasure (withDensity ν ξ)
⊢ ∃ p, Measurable p.snd ∧ p.fst ⟂ₘ ν ∧ μ = p.fst + withDensity ν p.snd
[PROOFSTEP]
refine' ⟨⟨μ₁, ξ⟩, hξm, _, _⟩
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this : IsFiniteMeasure (withDensity ν ξ)
⊢ (μ₁, ξ).fst ⟂ₘ ν
[PROOFSTEP]
by_contra h
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this : IsFiniteMeasure (withDensity ν ξ)
h : ¬(μ₁, ξ).fst ⟂ₘ ν
⊢ False
[PROOFSTEP]
obtain ⟨ε, hε₁, E, hE₁, hE₂, hE₃⟩ := exists_positive_of_not_mutuallySingular μ₁ ν h
[GOAL]
case refine'_1.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this : IsFiniteMeasure (withDensity ν ξ)
h : ¬(μ₁, ξ).fst ⟂ₘ ν
ε : ℝ≥0
hε₁ : 0 < ε
E : Set α
hE₁ : MeasurableSet E
hE₂ : 0 < ↑↑ν E
hE₃ : VectorMeasure.restrict 0 E ≤ VectorMeasure.restrict (toSignedMeasure μ₁ - toSignedMeasure (ε • ν)) E
⊢ False
[PROOFSTEP]
simp_rw [hμ₁] at hE₃ 
[GOAL]
case refine'_1.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this : IsFiniteMeasure (withDensity ν ξ)
h : ¬(μ₁, ξ).fst ⟂ₘ ν
ε : ℝ≥0
hε₁ : 0 < ε
E : Set α
hE₁ : MeasurableSet E
hE₂ : 0 < ↑↑ν E
hE₃ :
  VectorMeasure.restrict 0 E ≤
    VectorMeasure.restrict (toSignedMeasure (μ - withDensity ν ξ) - toSignedMeasure (ε • ν)) E
⊢ False
[PROOFSTEP]
have hξle : ∀ A, MeasurableSet A → (∫⁻ a in A, ξ a ∂ν) ≤ μ A :=
  by
  intro A hA; rw [hξ]
  simp_rw [iSup_apply]
  rw [lintegral_iSup (fun n => (iSup_mem_measurableLE _ hf₁ n).1) (iSup_monotone _)]
  exact iSup_le fun n => (iSup_mem_measurableLE _ hf₁ n).2 A hA
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this : IsFiniteMeasure (withDensity ν ξ)
h : ¬(μ₁, ξ).fst ⟂ₘ ν
ε : ℝ≥0
hε₁ : 0 < ε
E : Set α
hE₁ : MeasurableSet E
hE₂ : 0 < ↑↑ν E
hE₃ :
  VectorMeasure.restrict 0 E ≤
    VectorMeasure.restrict (toSignedMeasure (μ - withDensity ν ξ) - toSignedMeasure (ε • ν)) E
⊢ ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A, ξ a ∂ν ≤ ↑↑μ A
[PROOFSTEP]
intro A hA
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this : IsFiniteMeasure (withDensity ν ξ)
h : ¬(μ₁, ξ).fst ⟂ₘ ν
ε : ℝ≥0
hε₁ : 0 < ε
E : Set α
hE₁ : MeasurableSet E
hE₂ : 0 < ↑↑ν E
hE₃ :
  VectorMeasure.restrict 0 E ≤
    VectorMeasure.restrict (toSignedMeasure (μ - withDensity ν ξ) - toSignedMeasure (ε • ν)) E
A : Set α
hA : MeasurableSet A
⊢ ∫⁻ (a : α) in A, ξ a ∂ν ≤ ↑↑μ A
[PROOFSTEP]
rw [hξ]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this : IsFiniteMeasure (withDensity ν ξ)
h : ¬(μ₁, ξ).fst ⟂ₘ ν
ε : ℝ≥0
hε₁ : 0 < ε
E : Set α
hE₁ : MeasurableSet E
hE₂ : 0 < ↑↑ν E
hE₃ :
  VectorMeasure.restrict 0 E ≤
    VectorMeasure.restrict (toSignedMeasure (μ - withDensity ν ξ) - toSignedMeasure (ε • ν)) E
A : Set α
hA : MeasurableSet A
⊢ ∫⁻ (a : α) in A, iSup (fun n => ⨆ (k : ℕ) (_ : k ≤ n), f k) a ∂ν ≤ ↑↑μ A
[PROOFSTEP]
simp_rw [iSup_apply]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this : IsFiniteMeasure (withDensity ν ξ)
h : ¬(μ₁, ξ).fst ⟂ₘ ν
ε : ℝ≥0
hε₁ : 0 < ε
E : Set α
hE₁ : MeasurableSet E
hE₂ : 0 < ↑↑ν E
hE₃ :
  VectorMeasure.restrict 0 E ≤
    VectorMeasure.restrict (toSignedMeasure (μ - withDensity ν ξ) - toSignedMeasure (ε • ν)) E
A : Set α
hA : MeasurableSet A
⊢ ∫⁻ (a : α) in A, ⨆ (i : ℕ) (i_1 : ℕ) (_ : i_1 ≤ i), f i_1 a ∂ν ≤ ↑↑μ A
[PROOFSTEP]
rw [lintegral_iSup (fun n => (iSup_mem_measurableLE _ hf₁ n).1) (iSup_monotone _)]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this : IsFiniteMeasure (withDensity ν ξ)
h : ¬(μ₁, ξ).fst ⟂ₘ ν
ε : ℝ≥0
hε₁ : 0 < ε
E : Set α
hE₁ : MeasurableSet E
hE₂ : 0 < ↑↑ν E
hE₃ :
  VectorMeasure.restrict 0 E ≤
    VectorMeasure.restrict (toSignedMeasure (μ - withDensity ν ξ) - toSignedMeasure (ε • ν)) E
A : Set α
hA : MeasurableSet A
⊢ ⨆ (n : ℕ), ∫⁻ (a : α) in A, ⨆ (k : ℕ) (_ : k ≤ n), f k a ∂ν ≤ ↑↑μ A
[PROOFSTEP]
exact iSup_le fun n => (iSup_mem_measurableLE _ hf₁ n).2 A hA
[GOAL]
case refine'_1.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this : IsFiniteMeasure (withDensity ν ξ)
h : ¬(μ₁, ξ).fst ⟂ₘ ν
ε : ℝ≥0
hε₁ : 0 < ε
E : Set α
hE₁ : MeasurableSet E
hE₂ : 0 < ↑↑ν E
hE₃ :
  VectorMeasure.restrict 0 E ≤
    VectorMeasure.restrict (toSignedMeasure (μ - withDensity ν ξ) - toSignedMeasure (ε • ν)) E
hξle : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A, ξ a ∂ν ≤ ↑↑μ A
⊢ False
[PROOFSTEP]
have hε₂ : ∀ A : Set α, MeasurableSet A → (∫⁻ a in A ∩ E, ε + ξ a ∂ν) ≤ μ (A ∩ E) :=
  by
  intro A hA
  have := subset_le_of_restrict_le_restrict _ _ hE₁ hE₃ (inter_subset_right A E)
  rwa [zero_apply, toSignedMeasure_sub_apply (hA.inter hE₁), Measure.sub_apply (hA.inter hE₁) hle,
    ENNReal.toReal_sub_of_le _ (ne_of_lt (measure_lt_top _ _)), sub_nonneg, le_sub_iff_add_le, ← ENNReal.toReal_add,
    ENNReal.toReal_le_toReal, Measure.coe_smul, Pi.smul_apply, withDensity_apply _ (hA.inter hE₁),
    show ε • ν (A ∩ E) = (ε : ℝ≥0∞) * ν (A ∩ E) by rfl, ← set_lintegral_const, ← lintegral_add_left measurable_const] at
    this 
  · rw [Ne.def, ENNReal.add_eq_top, not_or]
    exact ⟨ne_of_lt (measure_lt_top _ _), ne_of_lt (measure_lt_top _ _)⟩
  · exact ne_of_lt (measure_lt_top _ _)
  · exact ne_of_lt (measure_lt_top _ _)
  · exact ne_of_lt (measure_lt_top _ _)
  · rw [withDensity_apply _ (hA.inter hE₁)]
    exact
      hξle (A ∩ E)
        (hA.inter hE₁)
          -- from this, we can show `ξ + ε * E.indicator` is a function in `measurableLE` with
                -- integral greater than `ξ`
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this : IsFiniteMeasure (withDensity ν ξ)
h : ¬(μ₁, ξ).fst ⟂ₘ ν
ε : ℝ≥0
hε₁ : 0 < ε
E : Set α
hE₁ : MeasurableSet E
hE₂ : 0 < ↑↑ν E
hE₃ :
  VectorMeasure.restrict 0 E ≤
    VectorMeasure.restrict (toSignedMeasure (μ - withDensity ν ξ) - toSignedMeasure (ε • ν)) E
hξle : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A, ξ a ∂ν ≤ ↑↑μ A
⊢ ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A ∩ E, ↑ε + ξ a ∂ν ≤ ↑↑μ (A ∩ E)
[PROOFSTEP]
intro A hA
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this : IsFiniteMeasure (withDensity ν ξ)
h : ¬(μ₁, ξ).fst ⟂ₘ ν
ε : ℝ≥0
hε₁ : 0 < ε
E : Set α
hE₁ : MeasurableSet E
hE₂ : 0 < ↑↑ν E
hE₃ :
  VectorMeasure.restrict 0 E ≤
    VectorMeasure.restrict (toSignedMeasure (μ - withDensity ν ξ) - toSignedMeasure (ε • ν)) E
hξle : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A, ξ a ∂ν ≤ ↑↑μ A
A : Set α
hA : MeasurableSet A
⊢ ∫⁻ (a : α) in A ∩ E, ↑ε + ξ a ∂ν ≤ ↑↑μ (A ∩ E)
[PROOFSTEP]
have := subset_le_of_restrict_le_restrict _ _ hE₁ hE₃ (inter_subset_right A E)
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this✝ : IsFiniteMeasure (withDensity ν ξ)
h : ¬(μ₁, ξ).fst ⟂ₘ ν
ε : ℝ≥0
hε₁ : 0 < ε
E : Set α
hE₁ : MeasurableSet E
hE₂ : 0 < ↑↑ν E
hE₃ :
  VectorMeasure.restrict 0 E ≤
    VectorMeasure.restrict (toSignedMeasure (μ - withDensity ν ξ) - toSignedMeasure (ε • ν)) E
hξle : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A, ξ a ∂ν ≤ ↑↑μ A
A : Set α
hA : MeasurableSet A
this : ↑0 (A ∩ E) ≤ ↑(toSignedMeasure (μ - withDensity ν ξ) - toSignedMeasure (ε • ν)) (A ∩ E)
⊢ ∫⁻ (a : α) in A ∩ E, ↑ε + ξ a ∂ν ≤ ↑↑μ (A ∩ E)
[PROOFSTEP]
rwa [zero_apply, toSignedMeasure_sub_apply (hA.inter hE₁), Measure.sub_apply (hA.inter hE₁) hle,
  ENNReal.toReal_sub_of_le _ (ne_of_lt (measure_lt_top _ _)), sub_nonneg, le_sub_iff_add_le, ← ENNReal.toReal_add,
  ENNReal.toReal_le_toReal, Measure.coe_smul, Pi.smul_apply, withDensity_apply _ (hA.inter hE₁),
  show ε • ν (A ∩ E) = (ε : ℝ≥0∞) * ν (A ∩ E) by rfl, ← set_lintegral_const, ← lintegral_add_left measurable_const] at
  this 
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this✝ : IsFiniteMeasure (withDensity ν ξ)
h : ¬(μ₁, ξ).fst ⟂ₘ ν
ε : ℝ≥0
hε₁ : 0 < ε
E : Set α
hE₁ : MeasurableSet E
hE₂ : 0 < ↑↑ν E
hE₃ :
  VectorMeasure.restrict 0 E ≤
    VectorMeasure.restrict (toSignedMeasure (μ - withDensity ν ξ) - toSignedMeasure (ε • ν)) E
hξle : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A, ξ a ∂ν ≤ ↑↑μ A
A : Set α
hA : MeasurableSet A
this : ε • ↑↑ν (A ∩ E) + ∫⁻ (a : α) in A ∩ E, ξ a ∂ν ≤ ↑↑μ (A ∩ E)
⊢ ε • ↑↑ν (A ∩ E) = ↑ε * ↑↑ν (A ∩ E)
[PROOFSTEP]
rfl
[GOAL]
case ha
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this✝ : IsFiniteMeasure (withDensity ν ξ)
h : ¬(μ₁, ξ).fst ⟂ₘ ν
ε : ℝ≥0
hε₁ : 0 < ε
E : Set α
hE₁ : MeasurableSet E
hE₂ : 0 < ↑↑ν E
hE₃ :
  VectorMeasure.restrict 0 E ≤
    VectorMeasure.restrict (toSignedMeasure (μ - withDensity ν ξ) - toSignedMeasure (ε • ν)) E
hξle : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A, ξ a ∂ν ≤ ↑↑μ A
A : Set α
hA : MeasurableSet A
this : ENNReal.toReal (↑↑(ε • ν) (A ∩ E) + ↑↑(withDensity ν ξ) (A ∩ E)) ≤ ENNReal.toReal (↑↑μ (A ∩ E))
⊢ ↑↑(ε • ν) (A ∩ E) + ↑↑(withDensity ν ξ) (A ∩ E) ≠ ⊤
[PROOFSTEP]
rw [Ne.def, ENNReal.add_eq_top, not_or]
[GOAL]
case ha
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this✝ : IsFiniteMeasure (withDensity ν ξ)
h : ¬(μ₁, ξ).fst ⟂ₘ ν
ε : ℝ≥0
hε₁ : 0 < ε
E : Set α
hE₁ : MeasurableSet E
hE₂ : 0 < ↑↑ν E
hE₃ :
  VectorMeasure.restrict 0 E ≤
    VectorMeasure.restrict (toSignedMeasure (μ - withDensity ν ξ) - toSignedMeasure (ε • ν)) E
hξle : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A, ξ a ∂ν ≤ ↑↑μ A
A : Set α
hA : MeasurableSet A
this : ENNReal.toReal (↑↑(ε • ν) (A ∩ E) + ↑↑(withDensity ν ξ) (A ∩ E)) ≤ ENNReal.toReal (↑↑μ (A ∩ E))
⊢ ¬↑↑(ε • ν) (A ∩ E) = ⊤ ∧ ¬↑↑(withDensity ν ξ) (A ∩ E) = ⊤
[PROOFSTEP]
exact ⟨ne_of_lt (measure_lt_top _ _), ne_of_lt (measure_lt_top _ _)⟩
[GOAL]
case hb
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this✝ : IsFiniteMeasure (withDensity ν ξ)
h : ¬(μ₁, ξ).fst ⟂ₘ ν
ε : ℝ≥0
hε₁ : 0 < ε
E : Set α
hE₁ : MeasurableSet E
hE₂ : 0 < ↑↑ν E
hE₃ :
  VectorMeasure.restrict 0 E ≤
    VectorMeasure.restrict (toSignedMeasure (μ - withDensity ν ξ) - toSignedMeasure (ε • ν)) E
hξle : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A, ξ a ∂ν ≤ ↑↑μ A
A : Set α
hA : MeasurableSet A
this : ENNReal.toReal (↑↑(ε • ν) (A ∩ E) + ↑↑(withDensity ν ξ) (A ∩ E)) ≤ ENNReal.toReal (↑↑μ (A ∩ E))
⊢ ↑↑μ (A ∩ E) ≠ ⊤
[PROOFSTEP]
exact ne_of_lt (measure_lt_top _ _)
[GOAL]
case ha
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this✝ : IsFiniteMeasure (withDensity ν ξ)
h : ¬(μ₁, ξ).fst ⟂ₘ ν
ε : ℝ≥0
hε₁ : 0 < ε
E : Set α
hE₁ : MeasurableSet E
hE₂ : 0 < ↑↑ν E
hE₃ :
  VectorMeasure.restrict 0 E ≤
    VectorMeasure.restrict (toSignedMeasure (μ - withDensity ν ξ) - toSignedMeasure (ε • ν)) E
hξle : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A, ξ a ∂ν ≤ ↑↑μ A
A : Set α
hA : MeasurableSet A
this : ENNReal.toReal (↑↑(ε • ν) (A ∩ E)) + ENNReal.toReal (↑↑(withDensity ν ξ) (A ∩ E)) ≤ ENNReal.toReal (↑↑μ (A ∩ E))
⊢ ↑↑(ε • ν) (A ∩ E) ≠ ⊤
[PROOFSTEP]
exact ne_of_lt (measure_lt_top _ _)
[GOAL]
case hb
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this✝ : IsFiniteMeasure (withDensity ν ξ)
h : ¬(μ₁, ξ).fst ⟂ₘ ν
ε : ℝ≥0
hε₁ : 0 < ε
E : Set α
hE₁ : MeasurableSet E
hE₂ : 0 < ↑↑ν E
hE₃ :
  VectorMeasure.restrict 0 E ≤
    VectorMeasure.restrict (toSignedMeasure (μ - withDensity ν ξ) - toSignedMeasure (ε • ν)) E
hξle : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A, ξ a ∂ν ≤ ↑↑μ A
A : Set α
hA : MeasurableSet A
this : ENNReal.toReal (↑↑(ε • ν) (A ∩ E)) + ENNReal.toReal (↑↑(withDensity ν ξ) (A ∩ E)) ≤ ENNReal.toReal (↑↑μ (A ∩ E))
⊢ ↑↑(withDensity ν ξ) (A ∩ E) ≠ ⊤
[PROOFSTEP]
exact ne_of_lt (measure_lt_top _ _)
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this✝ : IsFiniteMeasure (withDensity ν ξ)
h : ¬(μ₁, ξ).fst ⟂ₘ ν
ε : ℝ≥0
hε₁ : 0 < ε
E : Set α
hE₁ : MeasurableSet E
hE₂ : 0 < ↑↑ν E
hE₃ :
  VectorMeasure.restrict 0 E ≤
    VectorMeasure.restrict (toSignedMeasure (μ - withDensity ν ξ) - toSignedMeasure (ε • ν)) E
hξle : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A, ξ a ∂ν ≤ ↑↑μ A
A : Set α
hA : MeasurableSet A
this : 0 ≤ ENNReal.toReal (↑↑μ (A ∩ E) - ↑↑(withDensity ν ξ) (A ∩ E)) - ENNReal.toReal (↑↑(ε • ν) (A ∩ E))
⊢ ↑↑(withDensity ν ξ) (A ∩ E) ≤ ↑↑μ (A ∩ E)
[PROOFSTEP]
rw [withDensity_apply _ (hA.inter hE₁)]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this✝ : IsFiniteMeasure (withDensity ν ξ)
h : ¬(μ₁, ξ).fst ⟂ₘ ν
ε : ℝ≥0
hε₁ : 0 < ε
E : Set α
hE₁ : MeasurableSet E
hE₂ : 0 < ↑↑ν E
hE₃ :
  VectorMeasure.restrict 0 E ≤
    VectorMeasure.restrict (toSignedMeasure (μ - withDensity ν ξ) - toSignedMeasure (ε • ν)) E
hξle : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A, ξ a ∂ν ≤ ↑↑μ A
A : Set α
hA : MeasurableSet A
this : 0 ≤ ENNReal.toReal (↑↑μ (A ∩ E) - ↑↑(withDensity ν ξ) (A ∩ E)) - ENNReal.toReal (↑↑(ε • ν) (A ∩ E))
⊢ ∫⁻ (a : α) in A ∩ E, ξ a ∂ν ≤ ↑↑μ (A ∩ E)
[PROOFSTEP]
exact
  hξle (A ∩ E)
    (hA.inter hE₁)
      -- from this, we can show `ξ + ε * E.indicator` is a function in `measurableLE` with
            -- integral greater than `ξ`
[GOAL]
case refine'_1.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this : IsFiniteMeasure (withDensity ν ξ)
h : ¬(μ₁, ξ).fst ⟂ₘ ν
ε : ℝ≥0
hε₁ : 0 < ε
E : Set α
hE₁ : MeasurableSet E
hE₂ : 0 < ↑↑ν E
hE₃ :
  VectorMeasure.restrict 0 E ≤
    VectorMeasure.restrict (toSignedMeasure (μ - withDensity ν ξ) - toSignedMeasure (ε • ν)) E
hξle : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A, ξ a ∂ν ≤ ↑↑μ A
hε₂ : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A ∩ E, ↑ε + ξ a ∂ν ≤ ↑↑μ (A ∩ E)
⊢ False
[PROOFSTEP]
have hξε : (ξ + E.indicator fun _ => (ε : ℝ≥0∞)) ∈ measurableLE ν μ :=
  by
  refine' ⟨Measurable.add hξm (Measurable.indicator measurable_const hE₁), fun A hA => _⟩
  have :
    (∫⁻ a in A, (ξ + E.indicator fun _ => (ε : ℝ≥0∞)) a ∂ν) = (∫⁻ a in A ∩ E, ε + ξ a ∂ν) + ∫⁻ a in A \ E, ξ a ∂ν :=
    by
    simp only [lintegral_add_left measurable_const, lintegral_add_left hξm, set_lintegral_const, add_assoc,
      lintegral_inter_add_diff _ _ hE₁, Pi.add_apply, lintegral_indicator _ hE₁, restrict_apply hE₁]
    rw [inter_comm, add_comm]
  rw [this, ← measure_inter_add_diff A hE₁]
  exact add_le_add (hε₂ A hA) (hξle (A \ E) (hA.diff hE₁))
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this : IsFiniteMeasure (withDensity ν ξ)
h : ¬(μ₁, ξ).fst ⟂ₘ ν
ε : ℝ≥0
hε₁ : 0 < ε
E : Set α
hE₁ : MeasurableSet E
hE₂ : 0 < ↑↑ν E
hE₃ :
  VectorMeasure.restrict 0 E ≤
    VectorMeasure.restrict (toSignedMeasure (μ - withDensity ν ξ) - toSignedMeasure (ε • ν)) E
hξle : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A, ξ a ∂ν ≤ ↑↑μ A
hε₂ : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A ∩ E, ↑ε + ξ a ∂ν ≤ ↑↑μ (A ∩ E)
⊢ (ξ + indicator E fun x => ↑ε) ∈ measurableLE ν μ
[PROOFSTEP]
refine' ⟨Measurable.add hξm (Measurable.indicator measurable_const hE₁), fun A hA => _⟩
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this : IsFiniteMeasure (withDensity ν ξ)
h : ¬(μ₁, ξ).fst ⟂ₘ ν
ε : ℝ≥0
hε₁ : 0 < ε
E : Set α
hE₁ : MeasurableSet E
hE₂ : 0 < ↑↑ν E
hE₃ :
  VectorMeasure.restrict 0 E ≤
    VectorMeasure.restrict (toSignedMeasure (μ - withDensity ν ξ) - toSignedMeasure (ε • ν)) E
hξle : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A, ξ a ∂ν ≤ ↑↑μ A
hε₂ : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A ∩ E, ↑ε + ξ a ∂ν ≤ ↑↑μ (A ∩ E)
A : Set α
hA : MeasurableSet A
⊢ ∫⁻ (x : α) in A, (ξ + indicator E fun x => ↑ε) x ∂ν ≤ ↑↑μ A
[PROOFSTEP]
have : (∫⁻ a in A, (ξ + E.indicator fun _ => (ε : ℝ≥0∞)) a ∂ν) = (∫⁻ a in A ∩ E, ε + ξ a ∂ν) + ∫⁻ a in A \ E, ξ a ∂ν :=
  by
  simp only [lintegral_add_left measurable_const, lintegral_add_left hξm, set_lintegral_const, add_assoc,
    lintegral_inter_add_diff _ _ hE₁, Pi.add_apply, lintegral_indicator _ hE₁, restrict_apply hE₁]
  rw [inter_comm, add_comm]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this : IsFiniteMeasure (withDensity ν ξ)
h : ¬(μ₁, ξ).fst ⟂ₘ ν
ε : ℝ≥0
hε₁ : 0 < ε
E : Set α
hE₁ : MeasurableSet E
hE₂ : 0 < ↑↑ν E
hE₃ :
  VectorMeasure.restrict 0 E ≤
    VectorMeasure.restrict (toSignedMeasure (μ - withDensity ν ξ) - toSignedMeasure (ε • ν)) E
hξle : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A, ξ a ∂ν ≤ ↑↑μ A
hε₂ : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A ∩ E, ↑ε + ξ a ∂ν ≤ ↑↑μ (A ∩ E)
A : Set α
hA : MeasurableSet A
⊢ ∫⁻ (a : α) in A, (ξ + indicator E fun x => ↑ε) a ∂ν = ∫⁻ (a : α) in A ∩ E, ↑ε + ξ a ∂ν + ∫⁻ (a : α) in A \ E, ξ a ∂ν
[PROOFSTEP]
simp only [lintegral_add_left measurable_const, lintegral_add_left hξm, set_lintegral_const, add_assoc,
  lintegral_inter_add_diff _ _ hE₁, Pi.add_apply, lintegral_indicator _ hE₁, restrict_apply hE₁]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this : IsFiniteMeasure (withDensity ν ξ)
h : ¬(μ₁, ξ).fst ⟂ₘ ν
ε : ℝ≥0
hε₁ : 0 < ε
E : Set α
hE₁ : MeasurableSet E
hE₂ : 0 < ↑↑ν E
hE₃ :
  VectorMeasure.restrict 0 E ≤
    VectorMeasure.restrict (toSignedMeasure (μ - withDensity ν ξ) - toSignedMeasure (ε • ν)) E
hξle : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A, ξ a ∂ν ≤ ↑↑μ A
hε₂ : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A ∩ E, ↑ε + ξ a ∂ν ≤ ↑↑μ (A ∩ E)
A : Set α
hA : MeasurableSet A
⊢ ∫⁻ (a : α) in A, iSup (fun n => ⨆ (k : ℕ) (_ : k ≤ n), f k) a ∂ν + ↑ε * ↑↑ν (E ∩ A) =
    ↑ε * ↑↑ν (A ∩ E) + ∫⁻ (a : α) in A, iSup (fun n => ⨆ (k : ℕ) (_ : k ≤ n), f k) a ∂ν
[PROOFSTEP]
rw [inter_comm, add_comm]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this✝ : IsFiniteMeasure (withDensity ν ξ)
h : ¬(μ₁, ξ).fst ⟂ₘ ν
ε : ℝ≥0
hε₁ : 0 < ε
E : Set α
hE₁ : MeasurableSet E
hE₂ : 0 < ↑↑ν E
hE₃ :
  VectorMeasure.restrict 0 E ≤
    VectorMeasure.restrict (toSignedMeasure (μ - withDensity ν ξ) - toSignedMeasure (ε • ν)) E
hξle : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A, ξ a ∂ν ≤ ↑↑μ A
hε₂ : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A ∩ E, ↑ε + ξ a ∂ν ≤ ↑↑μ (A ∩ E)
A : Set α
hA : MeasurableSet A
this :
  ∫⁻ (a : α) in A, (ξ + indicator E fun x => ↑ε) a ∂ν = ∫⁻ (a : α) in A ∩ E, ↑ε + ξ a ∂ν + ∫⁻ (a : α) in A \ E, ξ a ∂ν
⊢ ∫⁻ (x : α) in A, (ξ + indicator E fun x => ↑ε) x ∂ν ≤ ↑↑μ A
[PROOFSTEP]
rw [this, ← measure_inter_add_diff A hE₁]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this✝ : IsFiniteMeasure (withDensity ν ξ)
h : ¬(μ₁, ξ).fst ⟂ₘ ν
ε : ℝ≥0
hε₁ : 0 < ε
E : Set α
hE₁ : MeasurableSet E
hE₂ : 0 < ↑↑ν E
hE₃ :
  VectorMeasure.restrict 0 E ≤
    VectorMeasure.restrict (toSignedMeasure (μ - withDensity ν ξ) - toSignedMeasure (ε • ν)) E
hξle : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A, ξ a ∂ν ≤ ↑↑μ A
hε₂ : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A ∩ E, ↑ε + ξ a ∂ν ≤ ↑↑μ (A ∩ E)
A : Set α
hA : MeasurableSet A
this :
  ∫⁻ (a : α) in A, (ξ + indicator E fun x => ↑ε) a ∂ν = ∫⁻ (a : α) in A ∩ E, ↑ε + ξ a ∂ν + ∫⁻ (a : α) in A \ E, ξ a ∂ν
⊢ ∫⁻ (a : α) in A ∩ E, ↑ε + ξ a ∂ν + ∫⁻ (a : α) in A \ E, ξ a ∂ν ≤ ↑↑μ (A ∩ E) + ↑↑μ (A \ E)
[PROOFSTEP]
exact add_le_add (hε₂ A hA) (hξle (A \ E) (hA.diff hE₁))
[GOAL]
case refine'_1.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this : IsFiniteMeasure (withDensity ν ξ)
h : ¬(μ₁, ξ).fst ⟂ₘ ν
ε : ℝ≥0
hε₁ : 0 < ε
E : Set α
hE₁ : MeasurableSet E
hE₂ : 0 < ↑↑ν E
hE₃ :
  VectorMeasure.restrict 0 E ≤
    VectorMeasure.restrict (toSignedMeasure (μ - withDensity ν ξ) - toSignedMeasure (ε • ν)) E
hξle : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A, ξ a ∂ν ≤ ↑↑μ A
hε₂ : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A ∩ E, ↑ε + ξ a ∂ν ≤ ↑↑μ (A ∩ E)
hξε : (ξ + indicator E fun x => ↑ε) ∈ measurableLE ν μ
⊢ False
[PROOFSTEP]
have : (∫⁻ a, ξ a + E.indicator (fun _ => (ε : ℝ≥0∞)) a ∂ν) ≤ sSup (measurableLEEval ν μ) :=
  le_sSup
    ⟨ξ + E.indicator fun _ => (ε : ℝ≥0∞), hξε, rfl⟩
      -- but this contradicts the maximality of `∫⁻ x, ξ x ∂ν`
[GOAL]
case refine'_1.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this✝ : IsFiniteMeasure (withDensity ν ξ)
h : ¬(μ₁, ξ).fst ⟂ₘ ν
ε : ℝ≥0
hε₁ : 0 < ε
E : Set α
hE₁ : MeasurableSet E
hE₂ : 0 < ↑↑ν E
hE₃ :
  VectorMeasure.restrict 0 E ≤
    VectorMeasure.restrict (toSignedMeasure (μ - withDensity ν ξ) - toSignedMeasure (ε • ν)) E
hξle : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A, ξ a ∂ν ≤ ↑↑μ A
hε₂ : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A ∩ E, ↑ε + ξ a ∂ν ≤ ↑↑μ (A ∩ E)
hξε : (ξ + indicator E fun x => ↑ε) ∈ measurableLE ν μ
this : ∫⁻ (a : α), ξ a + indicator E (fun x => ↑ε) a ∂ν ≤ sSup (measurableLEEval ν μ)
⊢ False
[PROOFSTEP]
refine' not_lt.2 this _
[GOAL]
case refine'_1.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this✝ : IsFiniteMeasure (withDensity ν ξ)
h : ¬(μ₁, ξ).fst ⟂ₘ ν
ε : ℝ≥0
hε₁ : 0 < ε
E : Set α
hE₁ : MeasurableSet E
hE₂ : 0 < ↑↑ν E
hE₃ :
  VectorMeasure.restrict 0 E ≤
    VectorMeasure.restrict (toSignedMeasure (μ - withDensity ν ξ) - toSignedMeasure (ε • ν)) E
hξle : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A, ξ a ∂ν ≤ ↑↑μ A
hε₂ : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A ∩ E, ↑ε + ξ a ∂ν ≤ ↑↑μ (A ∩ E)
hξε : (ξ + indicator E fun x => ↑ε) ∈ measurableLE ν μ
this : ∫⁻ (a : α), ξ a + indicator E (fun x => ↑ε) a ∂ν ≤ sSup (measurableLEEval ν μ)
⊢ sSup (measurableLEEval ν μ) < ∫⁻ (a : α), ξ a + indicator E (fun x => ↑ε) a ∂ν
[PROOFSTEP]
rw [hξ₁, lintegral_add_left hξm, lintegral_indicator _ hE₁, set_lintegral_const]
[GOAL]
case refine'_1.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this✝ : IsFiniteMeasure (withDensity ν ξ)
h : ¬(μ₁, ξ).fst ⟂ₘ ν
ε : ℝ≥0
hε₁ : 0 < ε
E : Set α
hE₁ : MeasurableSet E
hE₂ : 0 < ↑↑ν E
hE₃ :
  VectorMeasure.restrict 0 E ≤
    VectorMeasure.restrict (toSignedMeasure (μ - withDensity ν ξ) - toSignedMeasure (ε • ν)) E
hξle : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A, ξ a ∂ν ≤ ↑↑μ A
hε₂ : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A ∩ E, ↑ε + ξ a ∂ν ≤ ↑↑μ (A ∩ E)
hξε : (ξ + indicator E fun x => ↑ε) ∈ measurableLE ν μ
this : ∫⁻ (a : α), ξ a + indicator E (fun x => ↑ε) a ∂ν ≤ sSup (measurableLEEval ν μ)
⊢ ∫⁻ (a : α), ξ a ∂ν < ∫⁻ (a : α), ξ a ∂ν + ↑ε * ↑↑ν E
[PROOFSTEP]
refine' ENNReal.lt_add_right _ (ENNReal.mul_pos_iff.2 ⟨ENNReal.coe_pos.2 hε₁, hE₂⟩).ne'
[GOAL]
case refine'_1.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this✝ : IsFiniteMeasure (withDensity ν ξ)
h : ¬(μ₁, ξ).fst ⟂ₘ ν
ε : ℝ≥0
hε₁ : 0 < ε
E : Set α
hE₁ : MeasurableSet E
hE₂ : 0 < ↑↑ν E
hE₃ :
  VectorMeasure.restrict 0 E ≤
    VectorMeasure.restrict (toSignedMeasure (μ - withDensity ν ξ) - toSignedMeasure (ε • ν)) E
hξle : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A, ξ a ∂ν ≤ ↑↑μ A
hε₂ : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A ∩ E, ↑ε + ξ a ∂ν ≤ ↑↑μ (A ∩ E)
hξε : (ξ + indicator E fun x => ↑ε) ∈ measurableLE ν μ
this : ∫⁻ (a : α), ξ a + indicator E (fun x => ↑ε) a ∂ν ≤ sSup (measurableLEEval ν μ)
⊢ ∫⁻ (a : α), ξ a ∂ν ≠ ⊤
[PROOFSTEP]
have := measure_ne_top (ν.withDensity ξ) univ
[GOAL]
case refine'_1.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this✝¹ : IsFiniteMeasure (withDensity ν ξ)
h : ¬(μ₁, ξ).fst ⟂ₘ ν
ε : ℝ≥0
hε₁ : 0 < ε
E : Set α
hE₁ : MeasurableSet E
hE₂ : 0 < ↑↑ν E
hE₃ :
  VectorMeasure.restrict 0 E ≤
    VectorMeasure.restrict (toSignedMeasure (μ - withDensity ν ξ) - toSignedMeasure (ε • ν)) E
hξle : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A, ξ a ∂ν ≤ ↑↑μ A
hε₂ : ∀ (A : Set α), MeasurableSet A → ∫⁻ (a : α) in A ∩ E, ↑ε + ξ a ∂ν ≤ ↑↑μ (A ∩ E)
hξε : (ξ + indicator E fun x => ↑ε) ∈ measurableLE ν μ
this✝ : ∫⁻ (a : α), ξ a + indicator E (fun x => ↑ε) a ∂ν ≤ sSup (measurableLEEval ν μ)
this : ↑↑(withDensity ν ξ) univ ≠ ⊤
⊢ ∫⁻ (a : α), ξ a ∂ν ≠ ⊤
[PROOFSTEP]
rwa [withDensity_apply _ MeasurableSet.univ, Measure.restrict_univ] at this 
[GOAL]
case refine'_2
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this : IsFiniteMeasure (withDensity ν ξ)
⊢ μ = (μ₁, ξ).fst + withDensity ν (μ₁, ξ).snd
[PROOFSTEP]
rw [hμ₁]
[GOAL]
case refine'_2
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this : IsFiniteMeasure (withDensity ν ξ)
⊢ μ = (μ - withDensity ν ξ, ξ).fst + withDensity ν (μ - withDensity ν ξ, ξ).snd
[PROOFSTEP]
ext1 A hA
[GOAL]
case refine'_2.h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
g : ℕ → ℝ≥0∞
h✝ : Monotone g
hg₂ : Filter.Tendsto g Filter.atTop (nhds (sSup (measurableLEEval ν μ)))
f : ℕ → α → ℝ≥0∞
hf₁ : ∀ (n : ℕ), f n ∈ measurableLE ν μ
hf₂ : ∀ (n : ℕ), (fun f => ∫⁻ (x : α), f x ∂ν) (f n) = g n
ξ : α → ℝ≥0∞ := ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ : ξ = ⨆ (n : ℕ) (k : ℕ) (_ : k ≤ n), f k
hξ₁ : sSup (measurableLEEval ν μ) = ∫⁻ (a : α), ξ a ∂ν
hξm : Measurable ξ
μ₁ : Measure α := μ - withDensity ν ξ
hμ₁ : μ₁ = μ - withDensity ν ξ
hle : withDensity ν ξ ≤ μ
this : IsFiniteMeasure (withDensity ν ξ)
A : Set α
hA : MeasurableSet A
⊢ ↑↑μ A = ↑↑((μ - withDensity ν ξ, ξ).fst + withDensity ν (μ - withDensity ν ξ, ξ).snd) A
[PROOFSTEP]
rw [Measure.coe_add, Pi.add_apply, Measure.sub_apply hA hle, add_comm, add_tsub_cancel_of_le (hle A hA)]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
n : ℕ
⊢ ↑↑(restrict μ (FiniteSpanningSetsIn.set S n)) univ < ⊤
[PROOFSTEP]
rw [restrict_apply MeasurableSet.univ, univ_inter]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
n : ℕ
⊢ ↑↑μ (FiniteSpanningSetsIn.set S n) < ⊤
[PROOFSTEP]
exact S.finite _
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
⊢ ∃ p, Measurable p.snd ∧ p.fst ⟂ₘ ν ∧ μ = p.fst + withDensity ν p.snd
[PROOFSTEP]
obtain ⟨S, T, h₁, h₂⟩ := exists_eq_disjoint_finiteSpanningSetsIn μ ν
[GOAL]
case intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
⊢ ∃ p, Measurable p.snd ∧ p.fst ⟂ₘ ν ∧ μ = p.fst + withDensity ν p.snd
[PROOFSTEP]
have h₃ : Pairwise (Disjoint on T.set) := h₁ ▸ h₂
[GOAL]
case intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
⊢ ∃ p, Measurable p.snd ∧ p.fst ⟂ₘ ν ∧ μ = p.fst + withDensity ν p.snd
[PROOFSTEP]
set μn : ℕ → Measure α := fun n => μ.restrict (S.set n) with hμn
[GOAL]
case intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
⊢ ∃ p, Measurable p.snd ∧ p.fst ⟂ₘ ν ∧ μ = p.fst + withDensity ν p.snd
[PROOFSTEP]
have hμ : μ = sum μn := by rw [hμn, ← restrict_iUnion h₂ S.set_mem, S.spanning, restrict_univ]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
⊢ μ = sum μn
[PROOFSTEP]
rw [hμn, ← restrict_iUnion h₂ S.set_mem, S.spanning, restrict_univ]
[GOAL]
case intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
⊢ ∃ p, Measurable p.snd ∧ p.fst ⟂ₘ ν ∧ μ = p.fst + withDensity ν p.snd
[PROOFSTEP]
set νn : ℕ → Measure α := fun n => ν.restrict (T.set n) with hνn
[GOAL]
case intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
⊢ ∃ p, Measurable p.snd ∧ p.fst ⟂ₘ ν ∧ μ = p.fst + withDensity ν p.snd
[PROOFSTEP]
have hν : ν = sum νn := by
  rw [hνn, ← restrict_iUnion h₃ T.set_mem, T.spanning, restrict_univ]
    -- As `S` is finite with respect to both `μ` and `ν`, it is clear that `μn n` and `νn n` are
        -- finite measures for all `n : ℕ`. Thus, we may apply the finite Lebesgue decomposition theorem
        -- to `μn n` and `νn n`. We define `ξ` as the sum of the singular part of the Lebesgue
        -- decompositions of `μn n` and `νn n`, and `f` as the sum of the Radon-Nikodym derivatives of
        -- `μn n` and `νn n` restricted on `S n`
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
⊢ ν = sum νn
[PROOFSTEP]
rw [hνn, ← restrict_iUnion h₃ T.set_mem, T.spanning, restrict_univ]
  -- As `S` is finite with respect to both `μ` and `ν`, it is clear that `μn n` and `νn n` are
      -- finite measures for all `n : ℕ`. Thus, we may apply the finite Lebesgue decomposition theorem
      -- to `μn n` and `νn n`. We define `ξ` as the sum of the singular part of the Lebesgue
      -- decompositions of `μn n` and `νn n`, and `f` as the sum of the Radon-Nikodym derivatives of
      -- `μn n` and `νn n` restricted on `S n`
[GOAL]
case intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
⊢ ∃ p, Measurable p.snd ∧ p.fst ⟂ₘ ν ∧ μ = p.fst + withDensity ν p.snd
[PROOFSTEP]
set ξ := sum fun n => singularPart (μn n) (νn n) with hξ
[GOAL]
case intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
⊢ ∃ p, Measurable p.snd ∧ p.fst ⟂ₘ ν ∧ μ = p.fst + withDensity ν p.snd
[PROOFSTEP]
set f :=
  ∑' n,
    (S.set n).indicator
      (rnDeriv (μn n) (νn n))
        -- I claim `ξ` and `f` form a Lebesgue decomposition of `μ` and `ν`
[GOAL]
case intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
⊢ ∃ p, Measurable p.snd ∧ p.fst ⟂ₘ ν ∧ μ = p.fst + withDensity ν p.snd
[PROOFSTEP]
refine' ⟨⟨ξ, f⟩, _, _, _⟩
[GOAL]
case intro.intro.intro.refine'_1
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
⊢ Measurable (ξ, f).snd
[PROOFSTEP]
exact
  Measurable.ennreal_tsum' fun n =>
    Measurable.indicator (measurable_rnDeriv (μn n) (νn n))
      (S.set_mem n)
        -- We show that `ξ` is mutually singular with respect to `ν`
[GOAL]
case intro.intro.intro.refine'_2
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
⊢ (ξ, f).fst ⟂ₘ ν
[PROOFSTEP]
choose A hA₁ hA₂ hA₃ using fun n => mutuallySingular_singularPart (μn n) (νn n)
[GOAL]
case intro.intro.intro.refine'_2
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
⊢ (ξ, f).fst ⟂ₘ ν
[PROOFSTEP]
simp only [hξ]
  -- We use the set `B := ⋃ j, (S.set j) ∩ A j` where `A n` is the set provided as
        -- `singularPart (μn n) (νn n) ⟂ₘ νn n`
[GOAL]
case intro.intro.intro.refine'_2
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
⊢ (sum fun n => singularPart (μn n) (νn n)) ⟂ₘ ν
[PROOFSTEP]
refine'
  ⟨⋃ j, S.set j ∩ A j, MeasurableSet.iUnion fun n => (S.set_mem n).inter (hA₁ n), _, _⟩
    -- `ξ B = 0` since `ξ B = ∑ i j, singularPart (μn j) (νn j) (S.set i ∩ A i)`
          --                     `= ∑ i, singularPart (μn i) (νn i) (S.set i ∩ A i)`
          --                     `≤ ∑ i, singularPart (μn i) (νn i) (A i) = 0`
          -- where the second equality follows as `singularPart (μn j) (νn j) (S.set i ∩ A i)` vanishes
          -- for all `i ≠ j`
[GOAL]
case intro.intro.intro.refine'_2.refine'_1
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
⊢ ↑↑(sum fun n => singularPart (μn n) (νn n)) (⋃ (j : ℕ), FiniteSpanningSetsIn.set S j ∩ A j) = 0
[PROOFSTEP]
rw [measure_iUnion]
[GOAL]
case intro.intro.intro.refine'_2.refine'_1
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
⊢ ∑' (i : ℕ), ↑↑(sum fun n => singularPart (μn n) (νn n)) (FiniteSpanningSetsIn.set S i ∩ A i) = 0
[PROOFSTEP]
have : ∀ i, (sum fun n => (μn n).singularPart (νn n)) (S.set i ∩ A i) = (μn i).singularPart (νn i) (S.set i ∩ A i) :=
  by
  intro i; rw [sum_apply _ ((S.set_mem i).inter (hA₁ i)), tsum_eq_single i]
  · intro j hij
    rw [hμn, ← nonpos_iff_eq_zero]
    refine' le_trans ((singularPart_le _ _) _ ((S.set_mem i).inter (hA₁ i))) (le_of_eq _)
    rw [restrict_apply ((S.set_mem i).inter (hA₁ i)), inter_comm, ← inter_assoc]
    have : Disjoint (S.set j) (S.set i) := h₂ hij
    rw [disjoint_iff_inter_eq_empty] at this 
    rw [this, empty_inter, measure_empty]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
⊢ ∀ (i : ℕ),
    ↑↑(sum fun n => singularPart (μn n) (νn n)) (FiniteSpanningSetsIn.set S i ∩ A i) =
      ↑↑(singularPart (μn i) (νn i)) (FiniteSpanningSetsIn.set S i ∩ A i)
[PROOFSTEP]
intro i
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
i : ℕ
⊢ ↑↑(sum fun n => singularPart (μn n) (νn n)) (FiniteSpanningSetsIn.set S i ∩ A i) =
    ↑↑(singularPart (μn i) (νn i)) (FiniteSpanningSetsIn.set S i ∩ A i)
[PROOFSTEP]
rw [sum_apply _ ((S.set_mem i).inter (hA₁ i)), tsum_eq_single i]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
i : ℕ
⊢ ∀ (b' : ℕ), b' ≠ i → ↑↑(singularPart (μn b') (νn b')) (FiniteSpanningSetsIn.set S i ∩ A i) = 0
[PROOFSTEP]
intro j hij
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
i j : ℕ
hij : j ≠ i
⊢ ↑↑(singularPart (μn j) (νn j)) (FiniteSpanningSetsIn.set S i ∩ A i) = 0
[PROOFSTEP]
rw [hμn, ← nonpos_iff_eq_zero]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
i j : ℕ
hij : j ≠ i
⊢ ↑↑(singularPart ((fun n => restrict μ (FiniteSpanningSetsIn.set S n)) j) (νn j))
      (FiniteSpanningSetsIn.set S i ∩ A i) ≤
    0
[PROOFSTEP]
refine' le_trans ((singularPart_le _ _) _ ((S.set_mem i).inter (hA₁ i))) (le_of_eq _)
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
i j : ℕ
hij : j ≠ i
⊢ ↑↑((fun n => restrict μ (FiniteSpanningSetsIn.set S n)) j) (FiniteSpanningSetsIn.set S i ∩ A i) = 0
[PROOFSTEP]
rw [restrict_apply ((S.set_mem i).inter (hA₁ i)), inter_comm, ← inter_assoc]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
i j : ℕ
hij : j ≠ i
⊢ ↑↑μ (FiniteSpanningSetsIn.set S j ∩ FiniteSpanningSetsIn.set S i ∩ A i) = 0
[PROOFSTEP]
have : Disjoint (S.set j) (S.set i) := h₂ hij
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
i j : ℕ
hij : j ≠ i
this : Disjoint (FiniteSpanningSetsIn.set S j) (FiniteSpanningSetsIn.set S i)
⊢ ↑↑μ (FiniteSpanningSetsIn.set S j ∩ FiniteSpanningSetsIn.set S i ∩ A i) = 0
[PROOFSTEP]
rw [disjoint_iff_inter_eq_empty] at this 
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
i j : ℕ
hij : j ≠ i
this : FiniteSpanningSetsIn.set S j ∩ FiniteSpanningSetsIn.set S i = ∅
⊢ ↑↑μ (FiniteSpanningSetsIn.set S j ∩ FiniteSpanningSetsIn.set S i ∩ A i) = 0
[PROOFSTEP]
rw [this, empty_inter, measure_empty]
[GOAL]
case intro.intro.intro.refine'_2.refine'_1
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
this :
  ∀ (i : ℕ),
    ↑↑(sum fun n => singularPart (μn n) (νn n)) (FiniteSpanningSetsIn.set S i ∩ A i) =
      ↑↑(singularPart (μn i) (νn i)) (FiniteSpanningSetsIn.set S i ∩ A i)
⊢ ∑' (i : ℕ), ↑↑(sum fun n => singularPart (μn n) (νn n)) (FiniteSpanningSetsIn.set S i ∩ A i) = 0
[PROOFSTEP]
simp_rw [this, tsum_eq_zero_iff ENNReal.summable]
[GOAL]
case intro.intro.intro.refine'_2.refine'_1
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
this :
  ∀ (i : ℕ),
    ↑↑(sum fun n => singularPart (μn n) (νn n)) (FiniteSpanningSetsIn.set S i ∩ A i) =
      ↑↑(singularPart (μn i) (νn i)) (FiniteSpanningSetsIn.set S i ∩ A i)
⊢ ∀ (x : ℕ),
    ↑↑(singularPart (restrict μ (FiniteSpanningSetsIn.set S x)) (restrict ν (FiniteSpanningSetsIn.set T x)))
        (FiniteSpanningSetsIn.set S x ∩ A x) =
      0
[PROOFSTEP]
intro n
[GOAL]
case intro.intro.intro.refine'_2.refine'_1
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
this :
  ∀ (i : ℕ),
    ↑↑(sum fun n => singularPart (μn n) (νn n)) (FiniteSpanningSetsIn.set S i ∩ A i) =
      ↑↑(singularPart (μn i) (νn i)) (FiniteSpanningSetsIn.set S i ∩ A i)
n : ℕ
⊢ ↑↑(singularPart (restrict μ (FiniteSpanningSetsIn.set S n)) (restrict ν (FiniteSpanningSetsIn.set T n)))
      (FiniteSpanningSetsIn.set S n ∩ A n) =
    0
[PROOFSTEP]
exact measure_mono_null (inter_subset_right _ _) (hA₂ n)
[GOAL]
case intro.intro.intro.refine'_2.refine'_1.hn
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
⊢ Pairwise (Disjoint on fun j => FiniteSpanningSetsIn.set S j ∩ A j)
[PROOFSTEP]
exact h₂.mono fun i j => Disjoint.mono inf_le_left inf_le_left
[GOAL]
case intro.intro.intro.refine'_2.refine'_1.h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
⊢ ∀ (i : ℕ), MeasurableSet (FiniteSpanningSetsIn.set S i ∩ A i)
[PROOFSTEP]
exact fun n =>
  (S.set_mem n).inter
    (hA₁ n)
      -- We will now show `ν Bᶜ = 0`. This follows since `Bᶜ = ⋃ n, S.set n ∩ (A n)ᶜ` and thus,
            -- `ν Bᶜ = ∑ i, ν (S.set i ∩ (A i)ᶜ) = ∑ i, (νn i) (A i)ᶜ = 0`
[GOAL]
case intro.intro.intro.refine'_2.refine'_2
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
⊢ ↑↑ν (⋃ (j : ℕ), FiniteSpanningSetsIn.set S j ∩ A j)ᶜ = 0
[PROOFSTEP]
have hcompl : IsCompl (⋃ n, S.set n ∩ A n) (⋃ n, S.set n ∩ (A n)ᶜ) :=
  by
  constructor
  · rw [disjoint_iff_inf_le]
    rintro x ⟨hx₁, hx₂⟩; rw [mem_iUnion] at hx₁ hx₂ 
    obtain ⟨⟨i, hi₁, hi₂⟩, ⟨j, hj₁, hj₂⟩⟩ := hx₁, hx₂
    have : i = j := by by_contra hij; exact (h₂ hij).le_bot ⟨hi₁, hj₁⟩
    exact hj₂ (this ▸ hi₂)
  · rw [codisjoint_iff_le_sup]
    intro x hx
    simp only [mem_iUnion, sup_eq_union, mem_inter_iff, mem_union, mem_compl_iff, or_iff_not_imp_left]
    intro h; push_neg at h 
    rw [top_eq_univ, ← S.spanning, mem_iUnion] at hx 
    obtain ⟨i, hi⟩ := hx
    exact ⟨i, hi, h i hi⟩
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
⊢ IsCompl (⋃ (n : ℕ), FiniteSpanningSetsIn.set S n ∩ A n) (⋃ (n : ℕ), FiniteSpanningSetsIn.set S n ∩ (A n)ᶜ)
[PROOFSTEP]
constructor
[GOAL]
case disjoint
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
⊢ Disjoint (⋃ (n : ℕ), FiniteSpanningSetsIn.set S n ∩ A n) (⋃ (n : ℕ), FiniteSpanningSetsIn.set S n ∩ (A n)ᶜ)
[PROOFSTEP]
rw [disjoint_iff_inf_le]
[GOAL]
case disjoint
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
⊢ (⋃ (n : ℕ), FiniteSpanningSetsIn.set S n ∩ A n) ⊓ ⋃ (n : ℕ), FiniteSpanningSetsIn.set S n ∩ (A n)ᶜ ≤ ⊥
[PROOFSTEP]
rintro x ⟨hx₁, hx₂⟩
[GOAL]
case disjoint.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
x : α
hx₁ : x ∈ ⋃ (n : ℕ), FiniteSpanningSetsIn.set S n ∩ A n
hx₂ : x ∈ ⋃ (n : ℕ), FiniteSpanningSetsIn.set S n ∩ (A n)ᶜ
⊢ x ∈ ⊥
[PROOFSTEP]
rw [mem_iUnion] at hx₁ hx₂ 
[GOAL]
case disjoint.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
x : α
hx₁ : ∃ i, x ∈ FiniteSpanningSetsIn.set S i ∩ A i
hx₂ : ∃ i, x ∈ FiniteSpanningSetsIn.set S i ∩ (A i)ᶜ
⊢ x ∈ ⊥
[PROOFSTEP]
obtain ⟨⟨i, hi₁, hi₂⟩, ⟨j, hj₁, hj₂⟩⟩ := hx₁, hx₂
[GOAL]
case disjoint.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
x : α
i : ℕ
hi₁ : x ∈ FiniteSpanningSetsIn.set S i
hi₂ : x ∈ A i
j : ℕ
hj₁ : x ∈ FiniteSpanningSetsIn.set S j
hj₂ : x ∈ (A j)ᶜ
⊢ x ∈ ⊥
[PROOFSTEP]
have : i = j := by by_contra hij; exact (h₂ hij).le_bot ⟨hi₁, hj₁⟩
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
x : α
i : ℕ
hi₁ : x ∈ FiniteSpanningSetsIn.set S i
hi₂ : x ∈ A i
j : ℕ
hj₁ : x ∈ FiniteSpanningSetsIn.set S j
hj₂ : x ∈ (A j)ᶜ
⊢ i = j
[PROOFSTEP]
by_contra hij
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
x : α
i : ℕ
hi₁ : x ∈ FiniteSpanningSetsIn.set S i
hi₂ : x ∈ A i
j : ℕ
hj₁ : x ∈ FiniteSpanningSetsIn.set S j
hj₂ : x ∈ (A j)ᶜ
hij : ¬i = j
⊢ False
[PROOFSTEP]
exact (h₂ hij).le_bot ⟨hi₁, hj₁⟩
[GOAL]
case disjoint.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
x : α
i : ℕ
hi₁ : x ∈ FiniteSpanningSetsIn.set S i
hi₂ : x ∈ A i
j : ℕ
hj₁ : x ∈ FiniteSpanningSetsIn.set S j
hj₂ : x ∈ (A j)ᶜ
this : i = j
⊢ x ∈ ⊥
[PROOFSTEP]
exact hj₂ (this ▸ hi₂)
[GOAL]
case codisjoint
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
⊢ Codisjoint (⋃ (n : ℕ), FiniteSpanningSetsIn.set S n ∩ A n) (⋃ (n : ℕ), FiniteSpanningSetsIn.set S n ∩ (A n)ᶜ)
[PROOFSTEP]
rw [codisjoint_iff_le_sup]
[GOAL]
case codisjoint
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
⊢ ⊤ ≤ (⋃ (n : ℕ), FiniteSpanningSetsIn.set S n ∩ A n) ⊔ ⋃ (n : ℕ), FiniteSpanningSetsIn.set S n ∩ (A n)ᶜ
[PROOFSTEP]
intro x hx
[GOAL]
case codisjoint
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
x : α
hx : x ∈ ⊤
⊢ x ∈ (⋃ (n : ℕ), FiniteSpanningSetsIn.set S n ∩ A n) ⊔ ⋃ (n : ℕ), FiniteSpanningSetsIn.set S n ∩ (A n)ᶜ
[PROOFSTEP]
simp only [mem_iUnion, sup_eq_union, mem_inter_iff, mem_union, mem_compl_iff, or_iff_not_imp_left]
[GOAL]
case codisjoint
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
x : α
hx : x ∈ ⊤
⊢ (¬∃ i, x ∈ FiniteSpanningSetsIn.set S i ∧ x ∈ A i) → ∃ i, x ∈ FiniteSpanningSetsIn.set S i ∧ ¬x ∈ A i
[PROOFSTEP]
intro h
[GOAL]
case codisjoint
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
x : α
hx : x ∈ ⊤
h : ¬∃ i, x ∈ FiniteSpanningSetsIn.set S i ∧ x ∈ A i
⊢ ∃ i, x ∈ FiniteSpanningSetsIn.set S i ∧ ¬x ∈ A i
[PROOFSTEP]
push_neg at h 
[GOAL]
case codisjoint
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
x : α
hx : x ∈ ⊤
h : ∀ (i : ℕ), x ∈ FiniteSpanningSetsIn.set S i → ¬x ∈ A i
⊢ ∃ i, x ∈ FiniteSpanningSetsIn.set S i ∧ ¬x ∈ A i
[PROOFSTEP]
rw [top_eq_univ, ← S.spanning, mem_iUnion] at hx 
[GOAL]
case codisjoint
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
x : α
hx : ∃ i, x ∈ FiniteSpanningSetsIn.set S i
h : ∀ (i : ℕ), x ∈ FiniteSpanningSetsIn.set S i → ¬x ∈ A i
⊢ ∃ i, x ∈ FiniteSpanningSetsIn.set S i ∧ ¬x ∈ A i
[PROOFSTEP]
obtain ⟨i, hi⟩ := hx
[GOAL]
case codisjoint.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
x : α
h : ∀ (i : ℕ), x ∈ FiniteSpanningSetsIn.set S i → ¬x ∈ A i
i : ℕ
hi : x ∈ FiniteSpanningSetsIn.set S i
⊢ ∃ i, x ∈ FiniteSpanningSetsIn.set S i ∧ ¬x ∈ A i
[PROOFSTEP]
exact ⟨i, hi, h i hi⟩
[GOAL]
case intro.intro.intro.refine'_2.refine'_2
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
hcompl : IsCompl (⋃ (n : ℕ), FiniteSpanningSetsIn.set S n ∩ A n) (⋃ (n : ℕ), FiniteSpanningSetsIn.set S n ∩ (A n)ᶜ)
⊢ ↑↑ν (⋃ (j : ℕ), FiniteSpanningSetsIn.set S j ∩ A j)ᶜ = 0
[PROOFSTEP]
rw [hcompl.compl_eq, measure_iUnion, tsum_eq_zero_iff ENNReal.summable]
[GOAL]
case intro.intro.intro.refine'_2.refine'_2
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
hcompl : IsCompl (⋃ (n : ℕ), FiniteSpanningSetsIn.set S n ∩ A n) (⋃ (n : ℕ), FiniteSpanningSetsIn.set S n ∩ (A n)ᶜ)
⊢ ∀ (x : ℕ), ↑↑ν (FiniteSpanningSetsIn.set S x ∩ (A x)ᶜ) = 0
[PROOFSTEP]
intro n
[GOAL]
case intro.intro.intro.refine'_2.refine'_2
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
hcompl : IsCompl (⋃ (n : ℕ), FiniteSpanningSetsIn.set S n ∩ A n) (⋃ (n : ℕ), FiniteSpanningSetsIn.set S n ∩ (A n)ᶜ)
n : ℕ
⊢ ↑↑ν (FiniteSpanningSetsIn.set S n ∩ (A n)ᶜ) = 0
[PROOFSTEP]
rw [inter_comm, ← restrict_apply (hA₁ n).compl, ← hA₃ n, hνn, h₁]
[GOAL]
case intro.intro.intro.refine'_2.refine'_2.hn
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
hcompl : IsCompl (⋃ (n : ℕ), FiniteSpanningSetsIn.set S n ∩ A n) (⋃ (n : ℕ), FiniteSpanningSetsIn.set S n ∩ (A n)ᶜ)
⊢ Pairwise (Disjoint on fun n => FiniteSpanningSetsIn.set S n ∩ (A n)ᶜ)
[PROOFSTEP]
exact h₂.mono fun i j => Disjoint.mono inf_le_left inf_le_left
[GOAL]
case intro.intro.intro.refine'_2.refine'_2.h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
A : ℕ → Set α
hA₁ : ∀ (n : ℕ), MeasurableSet (A n)
hA₂ : ∀ (n : ℕ), ↑↑(singularPart (μn n) (νn n)) (A n) = 0
hA₃ : ∀ (n : ℕ), ↑↑(νn n) (A n)ᶜ = 0
hcompl : IsCompl (⋃ (n : ℕ), FiniteSpanningSetsIn.set S n ∩ A n) (⋃ (n : ℕ), FiniteSpanningSetsIn.set S n ∩ (A n)ᶜ)
⊢ ∀ (i : ℕ), MeasurableSet (FiniteSpanningSetsIn.set S i ∩ (A i)ᶜ)
[PROOFSTEP]
exact fun n => (S.set_mem n).inter (hA₁ n).compl
[GOAL]
case intro.intro.intro.refine'_3
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
⊢ μ = (ξ, f).fst + withDensity ν (ξ, f).snd
[PROOFSTEP]
simp only
[GOAL]
case intro.intro.intro.refine'_3
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
⊢ μ =
    (sum fun n =>
        singularPart (restrict μ (FiniteSpanningSetsIn.set S n)) (restrict ν (FiniteSpanningSetsIn.set T n))) +
      withDensity ν
        (∑' (n : ℕ),
          indicator (FiniteSpanningSetsIn.set S n)
            (rnDeriv (restrict μ (FiniteSpanningSetsIn.set S n)) (restrict ν (FiniteSpanningSetsIn.set T n))))
[PROOFSTEP]
nth_rw 1 [hμ]
[GOAL]
case intro.intro.intro.refine'_3
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
⊢ sum μn =
    (sum fun n =>
        singularPart (restrict μ (FiniteSpanningSetsIn.set S n)) (restrict ν (FiniteSpanningSetsIn.set T n))) +
      withDensity ν
        (∑' (n : ℕ),
          indicator (FiniteSpanningSetsIn.set S n)
            (rnDeriv (restrict μ (FiniteSpanningSetsIn.set S n)) (restrict ν (FiniteSpanningSetsIn.set T n))))
[PROOFSTEP]
rw [withDensity_tsum _, sum_add_sum]
[GOAL]
case intro.intro.intro.refine'_3
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
⊢ sum μn =
    sum fun n =>
      singularPart (restrict μ (FiniteSpanningSetsIn.set S n)) (restrict ν (FiniteSpanningSetsIn.set T n)) +
        withDensity ν
          (indicator (FiniteSpanningSetsIn.set S n)
            (rnDeriv (restrict μ (FiniteSpanningSetsIn.set S n)) (restrict ν (FiniteSpanningSetsIn.set T n))))
[PROOFSTEP]
refine' sum_congr fun n => _
[GOAL]
case intro.intro.intro.refine'_3
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
n : ℕ
⊢ μn n =
    singularPart (restrict μ (FiniteSpanningSetsIn.set S n)) (restrict ν (FiniteSpanningSetsIn.set T n)) +
      withDensity ν
        (indicator (FiniteSpanningSetsIn.set S n)
          (rnDeriv (restrict μ (FiniteSpanningSetsIn.set S n)) (restrict ν (FiniteSpanningSetsIn.set T n))))
[PROOFSTEP]
nth_rw 1 [haveLebesgueDecomposition_add (μn n) (νn n)]
[GOAL]
case intro.intro.intro.refine'_3
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
n : ℕ
⊢ singularPart (μn n) (νn n) + withDensity (νn n) (rnDeriv (μn n) (νn n)) =
    singularPart (restrict μ (FiniteSpanningSetsIn.set S n)) (restrict ν (FiniteSpanningSetsIn.set T n)) +
      withDensity ν
        (indicator (FiniteSpanningSetsIn.set S n)
          (rnDeriv (restrict μ (FiniteSpanningSetsIn.set S n)) (restrict ν (FiniteSpanningSetsIn.set T n))))
[PROOFSTEP]
suffices heq : (νn n).withDensity ((μn n).rnDeriv (νn n)) = ν.withDensity ((S.set n).indicator ((μn n).rnDeriv (νn n)))
[GOAL]
case intro.intro.intro.refine'_3
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
n : ℕ
heq :
  withDensity (νn n) (rnDeriv (μn n) (νn n)) =
    withDensity ν (indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n)))
⊢ singularPart (μn n) (νn n) + withDensity (νn n) (rnDeriv (μn n) (νn n)) =
    singularPart (restrict μ (FiniteSpanningSetsIn.set S n)) (restrict ν (FiniteSpanningSetsIn.set T n)) +
      withDensity ν
        (indicator (FiniteSpanningSetsIn.set S n)
          (rnDeriv (restrict μ (FiniteSpanningSetsIn.set S n)) (restrict ν (FiniteSpanningSetsIn.set T n))))
[PROOFSTEP]
rw [heq]
[GOAL]
case heq
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
n : ℕ
⊢ withDensity (νn n) (rnDeriv (μn n) (νn n)) =
    withDensity ν (indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n)))
[PROOFSTEP]
rw [hν, withDensity_indicator (S.set_mem n), restrict_sum _ (S.set_mem n)]
[GOAL]
case heq
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
n : ℕ
⊢ withDensity (νn n) (rnDeriv (μn n) (νn n)) =
    withDensity (sum fun i => restrict (νn i) (FiniteSpanningSetsIn.set S n)) (rnDeriv (μn n) (νn n))
[PROOFSTEP]
suffices hsumeq : (sum fun i : ℕ => (νn i).restrict (S.set n)) = νn n
[GOAL]
case heq
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
n : ℕ
hsumeq : (sum fun i => restrict (νn i) (FiniteSpanningSetsIn.set S n)) = νn n
⊢ withDensity (νn n) (rnDeriv (μn n) (νn n)) =
    withDensity (sum fun i => restrict (νn i) (FiniteSpanningSetsIn.set S n)) (rnDeriv (μn n) (νn n))
[PROOFSTEP]
rw [hsumeq]
[GOAL]
case hsumeq
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
n : ℕ
⊢ (sum fun i => restrict (νn i) (FiniteSpanningSetsIn.set S n)) = νn n
[PROOFSTEP]
ext1 s hs
[GOAL]
case hsumeq.h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
n : ℕ
s : Set α
hs : MeasurableSet s
⊢ ↑↑(sum fun i => restrict (νn i) (FiniteSpanningSetsIn.set S n)) s = ↑↑(νn n) s
[PROOFSTEP]
rw [sum_apply _ hs, tsum_eq_single n, hνn, h₁, restrict_restrict (T.set_mem n), inter_self]
[GOAL]
case hsumeq.h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
n : ℕ
s : Set α
hs : MeasurableSet s
⊢ ∀ (b' : ℕ), b' ≠ n → ↑↑(restrict (νn b') (FiniteSpanningSetsIn.set S n)) s = 0
[PROOFSTEP]
intro m hm
[GOAL]
case hsumeq.h
α : Type u_1
β : Type u_2
m✝ : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
n : ℕ
s : Set α
hs : MeasurableSet s
m : ℕ
hm : m ≠ n
⊢ ↑↑(restrict (νn m) (FiniteSpanningSetsIn.set S n)) s = 0
[PROOFSTEP]
rw [hνn, h₁, restrict_restrict (T.set_mem n), (h₃ hm.symm).inter_eq, restrict_empty, coe_zero, Pi.zero_apply]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
S : FiniteSpanningSetsIn μ {s | MeasurableSet s}
T : FiniteSpanningSetsIn ν {s | MeasurableSet s}
h₁ : S.set = T.set
h₂ : Pairwise (Disjoint on S.set)
h₃ : Pairwise (Disjoint on T.set)
μn : ℕ → Measure α := fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμn : μn = fun n => restrict μ (FiniteSpanningSetsIn.set S n)
hμ : μ = sum μn
νn : ℕ → Measure α := fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hνn : νn = fun n => restrict ν (FiniteSpanningSetsIn.set T n)
hν : ν = sum νn
ξ : Measure α := sum fun n => singularPart (μn n) (νn n)
hξ : ξ = sum fun n => singularPart (μn n) (νn n)
f : α → ℝ≥0∞ := ∑' (n : ℕ), indicator (FiniteSpanningSetsIn.set S n) (rnDeriv (μn n) (νn n))
⊢ ∀ (i : ℕ),
    Measurable
      (indicator (FiniteSpanningSetsIn.set S i)
        (rnDeriv (restrict μ (FiniteSpanningSetsIn.set S i)) (restrict ν (FiniteSpanningSetsIn.set T i))))
[PROOFSTEP]
exact fun n => Measurable.indicator (measurable_rnDeriv _ _) (S.set_mem n)
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ Measure.HaveLebesgueDecomposition (toJordanDecomposition (-s)).posPart μ
[PROOFSTEP]
rw [toJordanDecomposition_neg, JordanDecomposition.neg_posPart]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ Measure.HaveLebesgueDecomposition (toJordanDecomposition s).negPart μ
[PROOFSTEP]
infer_instance
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ Measure.HaveLebesgueDecomposition (toJordanDecomposition (-s)).negPart μ
[PROOFSTEP]
rw [toJordanDecomposition_neg, JordanDecomposition.neg_negPart]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ Measure.HaveLebesgueDecomposition (toJordanDecomposition s).posPart μ
[PROOFSTEP]
infer_instance
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
inst✝ : HaveLebesgueDecomposition s μ
r : ℝ≥0
⊢ Measure.HaveLebesgueDecomposition (toJordanDecomposition (r • s)).posPart μ
[PROOFSTEP]
rw [toJordanDecomposition_smul, JordanDecomposition.smul_posPart]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
inst✝ : HaveLebesgueDecomposition s μ
r : ℝ≥0
⊢ Measure.HaveLebesgueDecomposition (r • (toJordanDecomposition s).posPart) μ
[PROOFSTEP]
infer_instance
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
inst✝ : HaveLebesgueDecomposition s μ
r : ℝ≥0
⊢ Measure.HaveLebesgueDecomposition (toJordanDecomposition (r • s)).negPart μ
[PROOFSTEP]
rw [toJordanDecomposition_smul, JordanDecomposition.smul_negPart]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
inst✝ : HaveLebesgueDecomposition s μ
r : ℝ≥0
⊢ Measure.HaveLebesgueDecomposition (r • (toJordanDecomposition s).negPart) μ
[PROOFSTEP]
infer_instance
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
inst✝ : HaveLebesgueDecomposition s μ
r : ℝ
⊢ HaveLebesgueDecomposition (r • s) μ
[PROOFSTEP]
by_cases hr : 0 ≤ r
[GOAL]
case pos
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
inst✝ : HaveLebesgueDecomposition s μ
r : ℝ
hr : 0 ≤ r
⊢ HaveLebesgueDecomposition (r • s) μ
[PROOFSTEP]
lift r to ℝ≥0 using hr
[GOAL]
case pos.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
inst✝ : HaveLebesgueDecomposition s μ
r : ℝ≥0
⊢ HaveLebesgueDecomposition (↑r • s) μ
[PROOFSTEP]
exact s.haveLebesgueDecomposition_smul μ _
[GOAL]
case neg
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
inst✝ : HaveLebesgueDecomposition s μ
r : ℝ
hr : ¬0 ≤ r
⊢ HaveLebesgueDecomposition (r • s) μ
[PROOFSTEP]
rw [not_le] at hr 
[GOAL]
case neg
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
inst✝ : HaveLebesgueDecomposition s μ
r : ℝ
hr : r < 0
⊢ HaveLebesgueDecomposition (r • s) μ
[PROOFSTEP]
refine'
  { posPart := by
      rw [toJordanDecomposition_smul_real, JordanDecomposition.real_smul_posPart_neg _ _ hr]
      infer_instance
    negPart := by
      rw [toJordanDecomposition_smul_real, JordanDecomposition.real_smul_negPart_neg _ _ hr]
      infer_instance }
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
inst✝ : HaveLebesgueDecomposition s μ
r : ℝ
hr : r < 0
⊢ Measure.HaveLebesgueDecomposition (toJordanDecomposition (r • s)).posPart μ
[PROOFSTEP]
rw [toJordanDecomposition_smul_real, JordanDecomposition.real_smul_posPart_neg _ _ hr]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
inst✝ : HaveLebesgueDecomposition s μ
r : ℝ
hr : r < 0
⊢ Measure.HaveLebesgueDecomposition (Real.toNNReal (-r) • (toJordanDecomposition s).negPart) μ
[PROOFSTEP]
infer_instance
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
inst✝ : HaveLebesgueDecomposition s μ
r : ℝ
hr : r < 0
⊢ Measure.HaveLebesgueDecomposition (toJordanDecomposition (r • s)).negPart μ
[PROOFSTEP]
rw [toJordanDecomposition_smul_real, JordanDecomposition.real_smul_negPart_neg _ _ hr]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
inst✝ : HaveLebesgueDecomposition s μ
r : ℝ
hr : r < 0
⊢ Measure.HaveLebesgueDecomposition (Real.toNNReal (-r) • (toJordanDecomposition s).posPart) μ
[PROOFSTEP]
infer_instance
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
⊢ Measure.singularPart (toJordanDecomposition s).posPart μ ⟂ₘ Measure.singularPart (toJordanDecomposition s).negPart μ
[PROOFSTEP]
by_cases hl : s.HaveLebesgueDecomposition μ
[GOAL]
case pos
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
hl : HaveLebesgueDecomposition s μ
⊢ Measure.singularPart (toJordanDecomposition s).posPart μ ⟂ₘ Measure.singularPart (toJordanDecomposition s).negPart μ
[PROOFSTEP]
haveI := hl
[GOAL]
case pos
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
hl this : HaveLebesgueDecomposition s μ
⊢ Measure.singularPart (toJordanDecomposition s).posPart μ ⟂ₘ Measure.singularPart (toJordanDecomposition s).negPart μ
[PROOFSTEP]
obtain ⟨i, hi, hpos, hneg⟩ := s.toJordanDecomposition.mutuallySingular
[GOAL]
case pos.intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
hl this : HaveLebesgueDecomposition s μ
i : Set α
hi : MeasurableSet i
hpos : ↑↑(toJordanDecomposition s).posPart i = 0
hneg : ↑↑(toJordanDecomposition s).negPart iᶜ = 0
⊢ Measure.singularPart (toJordanDecomposition s).posPart μ ⟂ₘ Measure.singularPart (toJordanDecomposition s).negPart μ
[PROOFSTEP]
rw [s.toJordanDecomposition.posPart.haveLebesgueDecomposition_add μ] at hpos 
[GOAL]
case pos.intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
hl this : HaveLebesgueDecomposition s μ
i : Set α
hi : MeasurableSet i
hpos :
  ↑↑(Measure.singularPart (toJordanDecomposition s).posPart μ +
            withDensity μ (rnDeriv (toJordanDecomposition s).posPart μ))
      i =
    0
hneg : ↑↑(toJordanDecomposition s).negPart iᶜ = 0
⊢ Measure.singularPart (toJordanDecomposition s).posPart μ ⟂ₘ Measure.singularPart (toJordanDecomposition s).negPart μ
[PROOFSTEP]
rw [s.toJordanDecomposition.negPart.haveLebesgueDecomposition_add μ] at hneg 
[GOAL]
case pos.intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
hl this : HaveLebesgueDecomposition s μ
i : Set α
hi : MeasurableSet i
hpos :
  ↑↑(Measure.singularPart (toJordanDecomposition s).posPart μ +
            withDensity μ (rnDeriv (toJordanDecomposition s).posPart μ))
      i =
    0
hneg :
  ↑↑(Measure.singularPart (toJordanDecomposition s).negPart μ +
            withDensity μ (rnDeriv (toJordanDecomposition s).negPart μ))
      iᶜ =
    0
⊢ Measure.singularPart (toJordanDecomposition s).posPart μ ⟂ₘ Measure.singularPart (toJordanDecomposition s).negPart μ
[PROOFSTEP]
rw [add_apply, add_eq_zero_iff] at hpos hneg 
[GOAL]
case pos.intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
hl this : HaveLebesgueDecomposition s μ
i : Set α
hi : MeasurableSet i
hpos :
  ↑↑(Measure.singularPart (toJordanDecomposition s).posPart μ) i = 0 ∧
    ↑↑(withDensity μ (rnDeriv (toJordanDecomposition s).posPart μ)) i = 0
hneg :
  ↑↑(Measure.singularPart (toJordanDecomposition s).negPart μ) iᶜ = 0 ∧
    ↑↑(withDensity μ (rnDeriv (toJordanDecomposition s).negPart μ)) iᶜ = 0
⊢ Measure.singularPart (toJordanDecomposition s).posPart μ ⟂ₘ Measure.singularPart (toJordanDecomposition s).negPart μ
[PROOFSTEP]
exact ⟨i, hi, hpos.1, hneg.1⟩
[GOAL]
case neg
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
hl : ¬HaveLebesgueDecomposition s μ
⊢ Measure.singularPart (toJordanDecomposition s).posPart μ ⟂ₘ Measure.singularPart (toJordanDecomposition s).negPart μ
[PROOFSTEP]
rw [not_haveLebesgueDecomposition_iff] at hl 
[GOAL]
case neg
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
hl :
  ¬Measure.HaveLebesgueDecomposition (toJordanDecomposition s).posPart μ ∨
    ¬Measure.HaveLebesgueDecomposition (toJordanDecomposition s).negPart μ
⊢ Measure.singularPart (toJordanDecomposition s).posPart μ ⟂ₘ Measure.singularPart (toJordanDecomposition s).negPart μ
[PROOFSTEP]
cases' hl with hp hn
[GOAL]
case neg.inl
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
hp : ¬Measure.HaveLebesgueDecomposition (toJordanDecomposition s).posPart μ
⊢ Measure.singularPart (toJordanDecomposition s).posPart μ ⟂ₘ Measure.singularPart (toJordanDecomposition s).negPart μ
[PROOFSTEP]
rw [Measure.singularPart, dif_neg hp]
[GOAL]
case neg.inl
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
hp : ¬Measure.HaveLebesgueDecomposition (toJordanDecomposition s).posPart μ
⊢ 0 ⟂ₘ Measure.singularPart (toJordanDecomposition s).negPart μ
[PROOFSTEP]
exact MutuallySingular.zero_left
[GOAL]
case neg.inr
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
hn : ¬Measure.HaveLebesgueDecomposition (toJordanDecomposition s).negPart μ
⊢ Measure.singularPart (toJordanDecomposition s).posPart μ ⟂ₘ Measure.singularPart (toJordanDecomposition s).negPart μ
[PROOFSTEP]
rw [Measure.singularPart, Measure.singularPart, dif_neg hn]
[GOAL]
case neg.inr
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
hn : ¬Measure.HaveLebesgueDecomposition (toJordanDecomposition s).negPart μ
⊢ (if h : Measure.HaveLebesgueDecomposition (toJordanDecomposition s).posPart μ then
      (Classical.choose
          (_ :
            ∃ p, Measurable p.snd ∧ p.fst ⟂ₘ μ ∧ (toJordanDecomposition s).posPart = p.fst + withDensity μ p.snd)).fst
    else 0) ⟂ₘ
    0
[PROOFSTEP]
exact MutuallySingular.zero_right
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
⊢ totalVariation (singularPart s μ) =
    Measure.singularPart (toJordanDecomposition s).posPart μ + Measure.singularPart (toJordanDecomposition s).negPart μ
[PROOFSTEP]
have :
  (s.singularPart μ).toJordanDecomposition =
    ⟨s.toJordanDecomposition.posPart.singularPart μ, s.toJordanDecomposition.negPart.singularPart μ,
      singularPart_mutuallySingular s μ⟩ :=
  by
  refine' JordanDecomposition.toSignedMeasure_injective _
  rw [toSignedMeasure_toJordanDecomposition]
  rfl
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
⊢ toJordanDecomposition (singularPart s μ) =
    JordanDecomposition.mk (Measure.singularPart (toJordanDecomposition s).posPart μ)
      (Measure.singularPart (toJordanDecomposition s).negPart μ)
      (_ :
        Measure.singularPart (toJordanDecomposition s).posPart μ ⟂ₘ
          Measure.singularPart (toJordanDecomposition s).negPart μ)
[PROOFSTEP]
refine' JordanDecomposition.toSignedMeasure_injective _
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
⊢ JordanDecomposition.toSignedMeasure (toJordanDecomposition (singularPart s μ)) =
    JordanDecomposition.toSignedMeasure
      (JordanDecomposition.mk (Measure.singularPart (toJordanDecomposition s).posPart μ)
        (Measure.singularPart (toJordanDecomposition s).negPart μ)
        (_ :
          Measure.singularPart (toJordanDecomposition s).posPart μ ⟂ₘ
            Measure.singularPart (toJordanDecomposition s).negPart μ))
[PROOFSTEP]
rw [toSignedMeasure_toJordanDecomposition]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
⊢ singularPart s μ =
    JordanDecomposition.toSignedMeasure
      (JordanDecomposition.mk (Measure.singularPart (toJordanDecomposition s).posPart μ)
        (Measure.singularPart (toJordanDecomposition s).negPart μ)
        (_ :
          Measure.singularPart (toJordanDecomposition s).posPart μ ⟂ₘ
            Measure.singularPart (toJordanDecomposition s).negPart μ))
[PROOFSTEP]
rfl
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
this :
  toJordanDecomposition (singularPart s μ) =
    JordanDecomposition.mk (Measure.singularPart (toJordanDecomposition s).posPart μ)
      (Measure.singularPart (toJordanDecomposition s).negPart μ)
      (_ :
        Measure.singularPart (toJordanDecomposition s).posPart μ ⟂ₘ
          Measure.singularPart (toJordanDecomposition s).negPart μ)
⊢ totalVariation (singularPart s μ) =
    Measure.singularPart (toJordanDecomposition s).posPart μ + Measure.singularPart (toJordanDecomposition s).negPart μ
[PROOFSTEP]
rw [totalVariation, this]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
⊢ singularPart s μ ⟂ᵥ toENNRealVectorMeasure μ
[PROOFSTEP]
rw [mutuallySingular_ennreal_iff, singularPart_totalVariation]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
⊢ Measure.singularPart (toJordanDecomposition s).posPart μ + Measure.singularPart (toJordanDecomposition s).negPart μ ⟂ₘ
    VectorMeasure.ennrealToMeasure (toENNRealVectorMeasure μ)
[PROOFSTEP]
change _ ⟂ₘ VectorMeasure.equivMeasure.toFun (VectorMeasure.equivMeasure.invFun μ)
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
⊢ Measure.singularPart (toJordanDecomposition s).posPart μ + Measure.singularPart (toJordanDecomposition s).negPart μ ⟂ₘ
    Equiv.toFun VectorMeasure.equivMeasure (Equiv.invFun VectorMeasure.equivMeasure μ)
[PROOFSTEP]
rw [VectorMeasure.equivMeasure.right_inv μ]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s : SignedMeasure α
μ : Measure α
⊢ Measure.singularPart (toJordanDecomposition s).posPart μ + Measure.singularPart (toJordanDecomposition s).negPart μ ⟂ₘ
    μ
[PROOFSTEP]
exact (mutuallySingular_singularPart _ _).add_left (mutuallySingular_singularPart _ _)
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
⊢ Measurable (rnDeriv s μ)
[PROOFSTEP]
rw [rnDeriv]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
⊢ Measurable fun x =>
    ENNReal.toReal (Measure.rnDeriv (toJordanDecomposition s).posPart μ x) -
      ENNReal.toReal (Measure.rnDeriv (toJordanDecomposition s).negPart μ x)
[PROOFSTEP]
measurability
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
⊢ Integrable (rnDeriv s μ)
[PROOFSTEP]
refine' Integrable.sub _ _
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
⊢ Integrable fun x => ENNReal.toReal (Measure.rnDeriv (toJordanDecomposition s).posPart μ x)
[PROOFSTEP]
constructor
[GOAL]
case refine'_1.left
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
⊢ AEStronglyMeasurable (fun x => ENNReal.toReal (Measure.rnDeriv (toJordanDecomposition s).posPart μ x)) μ
[PROOFSTEP]
apply Measurable.aestronglyMeasurable
[GOAL]
case refine'_1.left.hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
⊢ Measurable fun x => ENNReal.toReal (Measure.rnDeriv (toJordanDecomposition s).posPart μ x)
[PROOFSTEP]
measurability
[GOAL]
case refine'_1.right
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
⊢ HasFiniteIntegral fun x => ENNReal.toReal (Measure.rnDeriv (toJordanDecomposition s).posPart μ x)
[PROOFSTEP]
exact hasFiniteIntegral_toReal_of_lintegral_ne_top (lintegral_rnDeriv_lt_top _ μ).ne
[GOAL]
case refine'_2
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
⊢ Integrable fun x => ENNReal.toReal (Measure.rnDeriv (toJordanDecomposition s).negPart μ x)
[PROOFSTEP]
constructor
[GOAL]
case refine'_2.left
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
⊢ AEStronglyMeasurable (fun x => ENNReal.toReal (Measure.rnDeriv (toJordanDecomposition s).negPart μ x)) μ
[PROOFSTEP]
apply Measurable.aestronglyMeasurable
[GOAL]
case refine'_2.left.hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
⊢ Measurable fun x => ENNReal.toReal (Measure.rnDeriv (toJordanDecomposition s).negPart μ x)
[PROOFSTEP]
measurability
[GOAL]
case refine'_2.right
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
⊢ HasFiniteIntegral fun x => ENNReal.toReal (Measure.rnDeriv (toJordanDecomposition s).negPart μ x)
[PROOFSTEP]
exact hasFiniteIntegral_toReal_of_lintegral_ne_top (lintegral_rnDeriv_lt_top _ μ).ne
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ singularPart s μ + withDensityᵥ μ (rnDeriv s μ) = s
[PROOFSTEP]
conv_rhs => rw [← toSignedMeasure_toJordanDecomposition s, JordanDecomposition.toSignedMeasure]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
| s
[PROOFSTEP]
rw [← toSignedMeasure_toJordanDecomposition s, JordanDecomposition.toSignedMeasure]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
| s
[PROOFSTEP]
rw [← toSignedMeasure_toJordanDecomposition s, JordanDecomposition.toSignedMeasure]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
| s
[PROOFSTEP]
rw [← toSignedMeasure_toJordanDecomposition s, JordanDecomposition.toSignedMeasure]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ singularPart s μ + withDensityᵥ μ (rnDeriv s μ) =
    toSignedMeasure (toJordanDecomposition s).posPart - toSignedMeasure (toJordanDecomposition s).negPart
[PROOFSTEP]
rw [singularPart, rnDeriv,
  withDensityᵥ_sub' (integrable_toReal_of_lintegral_ne_top _ _) (integrable_toReal_of_lintegral_ne_top _ _),
  withDensityᵥ_toReal, withDensityᵥ_toReal, sub_eq_add_neg, sub_eq_add_neg,
  add_comm (s.toJordanDecomposition.posPart.singularPart μ).toSignedMeasure, ← add_assoc,
  add_assoc (-(s.toJordanDecomposition.negPart.singularPart μ).toSignedMeasure), ← toSignedMeasure_add, add_comm, ←
  add_assoc, ← neg_add, ← toSignedMeasure_add, add_comm, ← sub_eq_add_neg]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ toSignedMeasure
        (Measure.singularPart (toJordanDecomposition s).posPart μ +
          withDensity μ fun x => Measure.rnDeriv (toJordanDecomposition s).posPart μ x) -
      toSignedMeasure
        ((withDensity μ fun x => Measure.rnDeriv (toJordanDecomposition s).negPart μ x) +
          Measure.singularPart (toJordanDecomposition s).negPart μ) =
    toSignedMeasure (toJordanDecomposition s).posPart - toSignedMeasure (toJordanDecomposition s).negPart
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).posPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).negPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).negPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).posPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).negPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).posPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).negPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).posPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).negPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).posPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).posPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).negPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).posPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).negPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).posPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).negPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).posPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).negPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).posPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).negPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).posPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).negPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).posPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).negPart μ x ∂μ ≠ ⊤
case hfm
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ AEMeasurable fun x => Measure.rnDeriv (toJordanDecomposition s).negPart μ x
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).negPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).posPart μ x ∂μ ≠ ⊤
case hfm
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ AEMeasurable fun x => Measure.rnDeriv (toJordanDecomposition s).posPart μ x
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).posPart μ x ∂μ ≠ ⊤
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ AEMeasurable fun x => Measure.rnDeriv (toJordanDecomposition s).posPart μ x
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).posPart μ x ∂μ ≠ ⊤
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ AEMeasurable fun x => Measure.rnDeriv (toJordanDecomposition s).negPart μ x
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).negPart μ x ∂μ ≠ ⊤
[PROOFSTEP]
convert rfl
[GOAL]
case h.e'_3.h.e'_5.h.e'_3
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ (toJordanDecomposition s).posPart =
    Measure.singularPart (toJordanDecomposition s).posPart μ +
      withDensity μ fun x => Measure.rnDeriv (toJordanDecomposition s).posPart μ x
[PROOFSTEP]
exact s.toJordanDecomposition.posPart.haveLebesgueDecomposition_add μ
[GOAL]
case h.e'_3.h.e'_6.h.e'_3
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ (toJordanDecomposition s).negPart =
    (withDensity μ fun x => Measure.rnDeriv (toJordanDecomposition s).negPart μ x) +
      Measure.singularPart (toJordanDecomposition s).negPart μ
[PROOFSTEP]
rw [add_comm]
[GOAL]
case h.e'_3.h.e'_6.h.e'_3
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ (toJordanDecomposition s).negPart =
    Measure.singularPart (toJordanDecomposition s).negPart μ +
      withDensity μ fun x => Measure.rnDeriv (toJordanDecomposition s).negPart μ x
[PROOFSTEP]
exact s.toJordanDecomposition.negPart.haveLebesgueDecomposition_add μ
[GOAL]
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).posPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).negPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).negPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).posPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).negPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).posPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).negPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).posPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).negPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).posPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).posPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).negPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).posPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).negPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).posPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).negPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).posPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).negPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).posPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).negPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).posPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).negPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).posPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).negPart μ x ∂μ ≠ ⊤
case hfm
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ AEMeasurable fun x => Measure.rnDeriv (toJordanDecomposition s).negPart μ x
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).negPart μ x ∂μ ≠ ⊤
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).posPart μ x ∂μ ≠ ⊤
case hfm
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ AEMeasurable fun x => Measure.rnDeriv (toJordanDecomposition s).posPart μ x
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).posPart μ x ∂μ ≠ ⊤
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ AEMeasurable fun x => Measure.rnDeriv (toJordanDecomposition s).posPart μ x
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).posPart μ x ∂μ ≠ ⊤
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ AEMeasurable fun x => Measure.rnDeriv (toJordanDecomposition s).negPart μ x
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).negPart μ x ∂μ ≠ ⊤
[PROOFSTEP]
all_goals
  first
  | exact (lintegral_rnDeriv_lt_top _ _).ne
  | measurability
[GOAL]
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).posPart μ x ∂μ ≠ ⊤
[PROOFSTEP]
first
| exact (lintegral_rnDeriv_lt_top _ _).ne
| measurability
[GOAL]
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).posPart μ x ∂μ ≠ ⊤
[PROOFSTEP]
exact (lintegral_rnDeriv_lt_top _ _).ne
[GOAL]
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).negPart μ x ∂μ ≠ ⊤
[PROOFSTEP]
first
| exact (lintegral_rnDeriv_lt_top _ _).ne
| measurability
[GOAL]
case hf
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).negPart μ x ∂μ ≠ ⊤
[PROOFSTEP]
exact (lintegral_rnDeriv_lt_top _ _).ne
[GOAL]
case hfm
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ AEMeasurable fun x => Measure.rnDeriv (toJordanDecomposition s).negPart μ x
[PROOFSTEP]
first
| exact (lintegral_rnDeriv_lt_top _ _).ne
| measurability
[GOAL]
case hfm
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ AEMeasurable fun x => Measure.rnDeriv (toJordanDecomposition s).negPart μ x
[PROOFSTEP]
exact (lintegral_rnDeriv_lt_top _ _).ne
[GOAL]
case hfm
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ AEMeasurable fun x => Measure.rnDeriv (toJordanDecomposition s).negPart μ x
[PROOFSTEP]
measurability
[GOAL]
case hfm
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ AEMeasurable fun x => Measure.rnDeriv (toJordanDecomposition s).posPart μ x
[PROOFSTEP]
first
| exact (lintegral_rnDeriv_lt_top _ _).ne
| measurability
[GOAL]
case hfm
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ AEMeasurable fun x => Measure.rnDeriv (toJordanDecomposition s).posPart μ x
[PROOFSTEP]
exact (lintegral_rnDeriv_lt_top _ _).ne
[GOAL]
case hfm
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ AEMeasurable fun x => Measure.rnDeriv (toJordanDecomposition s).posPart μ x
[PROOFSTEP]
measurability
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ AEMeasurable fun x => Measure.rnDeriv (toJordanDecomposition s).posPart μ x
[PROOFSTEP]
first
| exact (lintegral_rnDeriv_lt_top _ _).ne
| measurability
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ AEMeasurable fun x => Measure.rnDeriv (toJordanDecomposition s).posPart μ x
[PROOFSTEP]
exact (lintegral_rnDeriv_lt_top _ _).ne
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ AEMeasurable fun x => Measure.rnDeriv (toJordanDecomposition s).posPart μ x
[PROOFSTEP]
measurability
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).posPart μ x ∂μ ≠ ⊤
[PROOFSTEP]
first
| exact (lintegral_rnDeriv_lt_top _ _).ne
| measurability
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).posPart μ x ∂μ ≠ ⊤
[PROOFSTEP]
exact (lintegral_rnDeriv_lt_top _ _).ne
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ AEMeasurable fun x => Measure.rnDeriv (toJordanDecomposition s).negPart μ x
[PROOFSTEP]
first
| exact (lintegral_rnDeriv_lt_top _ _).ne
| measurability
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ AEMeasurable fun x => Measure.rnDeriv (toJordanDecomposition s).negPart μ x
[PROOFSTEP]
exact (lintegral_rnDeriv_lt_top _ _).ne
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ AEMeasurable fun x => Measure.rnDeriv (toJordanDecomposition s).negPart μ x
[PROOFSTEP]
measurability
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).negPart μ x ∂μ ≠ ⊤
[PROOFSTEP]
first
| exact (lintegral_rnDeriv_lt_top _ _).ne
| measurability
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ ∫⁻ (x : α), Measure.rnDeriv (toJordanDecomposition s).negPart μ x ∂μ ≠ ⊤
[PROOFSTEP]
exact (lintegral_rnDeriv_lt_top _ _).ne
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
f : α → ℝ
hf : Measurable f
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
⊢ ((toJordanDecomposition t).posPart + withDensity μ fun x => ENNReal.ofReal (f x)) ⟂ₘ
    (toJordanDecomposition t).negPart + withDensity μ fun x => ENNReal.ofReal (-f x)
[PROOFSTEP]
rw [mutuallySingular_ennreal_iff, totalVariation_mutuallySingular_iff] at htμ 
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
f : α → ℝ
hf : Measurable f
htμ :
  (toJordanDecomposition t).posPart ⟂ₘ VectorMeasure.ennrealToMeasure (toENNRealVectorMeasure μ) ∧
    (toJordanDecomposition t).negPart ⟂ₘ VectorMeasure.ennrealToMeasure (toENNRealVectorMeasure μ)
⊢ ((toJordanDecomposition t).posPart + withDensity μ fun x => ENNReal.ofReal (f x)) ⟂ₘ
    (toJordanDecomposition t).negPart + withDensity μ fun x => ENNReal.ofReal (-f x)
[PROOFSTEP]
change
  _ ⟂ₘ VectorMeasure.equivMeasure.toFun (VectorMeasure.equivMeasure.invFun μ) ∧
    _ ⟂ₘ VectorMeasure.equivMeasure.toFun (VectorMeasure.equivMeasure.invFun μ) at
  htμ 
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
f : α → ℝ
hf : Measurable f
htμ :
  (toJordanDecomposition t).posPart ⟂ₘ
      Equiv.toFun VectorMeasure.equivMeasure (Equiv.invFun VectorMeasure.equivMeasure μ) ∧
    (toJordanDecomposition t).negPart ⟂ₘ
      Equiv.toFun VectorMeasure.equivMeasure (Equiv.invFun VectorMeasure.equivMeasure μ)
⊢ ((toJordanDecomposition t).posPart + withDensity μ fun x => ENNReal.ofReal (f x)) ⟂ₘ
    (toJordanDecomposition t).negPart + withDensity μ fun x => ENNReal.ofReal (-f x)
[PROOFSTEP]
rw [VectorMeasure.equivMeasure.right_inv] at htμ 
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
f : α → ℝ
hf : Measurable f
htμ : (toJordanDecomposition t).posPart ⟂ₘ μ ∧ (toJordanDecomposition t).negPart ⟂ₘ μ
⊢ ((toJordanDecomposition t).posPart + withDensity μ fun x => ENNReal.ofReal (f x)) ⟂ₘ
    (toJordanDecomposition t).negPart + withDensity μ fun x => ENNReal.ofReal (-f x)
[PROOFSTEP]
exact
  ((JordanDecomposition.mutuallySingular _).add_right
        (htμ.1.mono_ac (refl _) (withDensity_absolutelyContinuous _ _))).add_left
    ((htμ.2.symm.mono_ac (withDensity_absolutelyContinuous _ _) (refl _)).add_right
      (withDensity_ofReal_mutuallySingular hf))
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t + withDensityᵥ μ f
⊢ IsFiniteMeasure ((toJordanDecomposition t).posPart + withDensity μ fun x => ENNReal.ofReal (f x))
[PROOFSTEP]
haveI := isFiniteMeasure_withDensity_ofReal hfi.2
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t + withDensityᵥ μ f
this : IsFiniteMeasure (withDensity μ fun x => ENNReal.ofReal (f x))
⊢ IsFiniteMeasure ((toJordanDecomposition t).posPart + withDensity μ fun x => ENNReal.ofReal (f x))
[PROOFSTEP]
infer_instance
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t + withDensityᵥ μ f
⊢ IsFiniteMeasure ((toJordanDecomposition t).negPart + withDensity μ fun x => ENNReal.ofReal (-f x))
[PROOFSTEP]
haveI := isFiniteMeasure_withDensity_ofReal hfi.neg.2
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t + withDensityᵥ μ f
this : IsFiniteMeasure (withDensity μ fun x => ENNReal.ofReal ((-f) x))
⊢ IsFiniteMeasure ((toJordanDecomposition t).negPart + withDensity μ fun x => ENNReal.ofReal (-f x))
[PROOFSTEP]
infer_instance
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t + withDensityᵥ μ f
⊢ toJordanDecomposition s =
    JordanDecomposition.mk ((toJordanDecomposition t).posPart + withDensity μ fun x => ENNReal.ofReal (f x))
      ((toJordanDecomposition t).negPart + withDensity μ fun x => ENNReal.ofReal (-f x))
      (_ :
        ((toJordanDecomposition t).posPart + withDensity μ fun x => ENNReal.ofReal (f x)) ⟂ₘ
          (toJordanDecomposition t).negPart + withDensity μ fun x => ENNReal.ofReal (-f x))
[PROOFSTEP]
haveI := isFiniteMeasure_withDensity_ofReal hfi.2
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t + withDensityᵥ μ f
this : IsFiniteMeasure (withDensity μ fun x => ENNReal.ofReal (f x))
⊢ toJordanDecomposition s =
    JordanDecomposition.mk ((toJordanDecomposition t).posPart + withDensity μ fun x => ENNReal.ofReal (f x))
      ((toJordanDecomposition t).negPart + withDensity μ fun x => ENNReal.ofReal (-f x))
      (_ :
        ((toJordanDecomposition t).posPart + withDensity μ fun x => ENNReal.ofReal (f x)) ⟂ₘ
          (toJordanDecomposition t).negPart + withDensity μ fun x => ENNReal.ofReal (-f x))
[PROOFSTEP]
haveI := isFiniteMeasure_withDensity_ofReal hfi.neg.2
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t + withDensityᵥ μ f
this✝ : IsFiniteMeasure (withDensity μ fun x => ENNReal.ofReal (f x))
this : IsFiniteMeasure (withDensity μ fun x => ENNReal.ofReal ((-f) x))
⊢ toJordanDecomposition s =
    JordanDecomposition.mk ((toJordanDecomposition t).posPart + withDensity μ fun x => ENNReal.ofReal (f x))
      ((toJordanDecomposition t).negPart + withDensity μ fun x => ENNReal.ofReal (-f x))
      (_ :
        ((toJordanDecomposition t).posPart + withDensity μ fun x => ENNReal.ofReal (f x)) ⟂ₘ
          (toJordanDecomposition t).negPart + withDensity μ fun x => ENNReal.ofReal (-f x))
[PROOFSTEP]
refine' toJordanDecomposition_eq _
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t + withDensityᵥ μ f
this✝ : IsFiniteMeasure (withDensity μ fun x => ENNReal.ofReal (f x))
this : IsFiniteMeasure (withDensity μ fun x => ENNReal.ofReal ((-f) x))
⊢ s =
    JordanDecomposition.toSignedMeasure
      (JordanDecomposition.mk ((toJordanDecomposition t).posPart + withDensity μ fun x => ENNReal.ofReal (f x))
        ((toJordanDecomposition t).negPart + withDensity μ fun x => ENNReal.ofReal (-f x))
        (_ :
          ((toJordanDecomposition t).posPart + withDensity μ fun x => ENNReal.ofReal (f x)) ⟂ₘ
            (toJordanDecomposition t).negPart + withDensity μ fun x => ENNReal.ofReal (-f x)))
[PROOFSTEP]
simp_rw [JordanDecomposition.toSignedMeasure, hadd]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t + withDensityᵥ μ f
this✝ : IsFiniteMeasure (withDensity μ fun x => ENNReal.ofReal (f x))
this : IsFiniteMeasure (withDensity μ fun x => ENNReal.ofReal ((-f) x))
⊢ t + withDensityᵥ μ f =
    toSignedMeasure ((toJordanDecomposition t).posPart + withDensity μ fun x => ENNReal.ofReal (f x)) -
      toSignedMeasure ((toJordanDecomposition t).negPart + withDensity μ fun x => ENNReal.ofReal (-f x))
[PROOFSTEP]
ext i hi
[GOAL]
case h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t + withDensityᵥ μ f
this✝ : IsFiniteMeasure (withDensity μ fun x => ENNReal.ofReal (f x))
this : IsFiniteMeasure (withDensity μ fun x => ENNReal.ofReal ((-f) x))
i : Set α
hi : MeasurableSet i
⊢ ↑(t + withDensityᵥ μ f) i =
    ↑(toSignedMeasure ((toJordanDecomposition t).posPart + withDensity μ fun x => ENNReal.ofReal (f x)) -
          toSignedMeasure ((toJordanDecomposition t).negPart + withDensity μ fun x => ENNReal.ofReal (-f x)))
      i
[PROOFSTEP]
rw [VectorMeasure.sub_apply, toSignedMeasure_apply_measurable hi, toSignedMeasure_apply_measurable hi, add_apply,
  add_apply, ENNReal.toReal_add, ENNReal.toReal_add, add_sub_add_comm, ← toSignedMeasure_apply_measurable hi, ←
  toSignedMeasure_apply_measurable hi, ← VectorMeasure.sub_apply, ← JordanDecomposition.toSignedMeasure,
  toSignedMeasure_toJordanDecomposition, VectorMeasure.add_apply, ← toSignedMeasure_apply_measurable hi, ←
  toSignedMeasure_apply_measurable hi, withDensityᵥ_eq_withDensity_pos_part_sub_withDensity_neg_part hfi,
  VectorMeasure.sub_apply]
[GOAL]
case h.ha
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t + withDensityᵥ μ f
this✝ : IsFiniteMeasure (withDensity μ fun x => ENNReal.ofReal (f x))
this : IsFiniteMeasure (withDensity μ fun x => ENNReal.ofReal ((-f) x))
i : Set α
hi : MeasurableSet i
⊢ ↑↑(toJordanDecomposition t).negPart i ≠ ⊤
[PROOFSTEP]
exact (measure_lt_top _ _).ne
[GOAL]
case h.hb
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t + withDensityᵥ μ f
this✝ : IsFiniteMeasure (withDensity μ fun x => ENNReal.ofReal (f x))
this : IsFiniteMeasure (withDensity μ fun x => ENNReal.ofReal ((-f) x))
i : Set α
hi : MeasurableSet i
⊢ ↑↑(withDensity μ fun x => ENNReal.ofReal (-f x)) i ≠ ⊤
[PROOFSTEP]
exact (measure_lt_top _ _).ne
[GOAL]
case h.ha
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t + withDensityᵥ μ f
this✝ : IsFiniteMeasure (withDensity μ fun x => ENNReal.ofReal (f x))
this : IsFiniteMeasure (withDensity μ fun x => ENNReal.ofReal ((-f) x))
i : Set α
hi : MeasurableSet i
⊢ ↑↑(toJordanDecomposition t).posPart i ≠ ⊤
[PROOFSTEP]
exact (measure_lt_top _ _).ne
[GOAL]
case h.hb
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t : SignedMeasure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t + withDensityᵥ μ f
this✝ : IsFiniteMeasure (withDensity μ fun x => ENNReal.ofReal (f x))
this : IsFiniteMeasure (withDensity μ fun x => ENNReal.ofReal ((-f) x))
i : Set α
hi : MeasurableSet i
⊢ ↑↑(withDensity μ fun x => ENNReal.ofReal (f x)) i ≠ ⊤
[PROOFSTEP]
exact (measure_lt_top _ _).ne
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s t : SignedMeasure α
μ : Measure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t + withDensityᵥ μ f
⊢ HaveLebesgueDecomposition s μ
[PROOFSTEP]
have htμ' := htμ
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s t : SignedMeasure α
μ : Measure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t + withDensityᵥ μ f
htμ' : t ⟂ᵥ toENNRealVectorMeasure μ
⊢ HaveLebesgueDecomposition s μ
[PROOFSTEP]
rw [mutuallySingular_ennreal_iff] at htμ 
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s t : SignedMeasure α
μ : Measure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
htμ : totalVariation t ⟂ₘ VectorMeasure.ennrealToMeasure (toENNRealVectorMeasure μ)
hadd : s = t + withDensityᵥ μ f
htμ' : t ⟂ᵥ toENNRealVectorMeasure μ
⊢ HaveLebesgueDecomposition s μ
[PROOFSTEP]
change _ ⟂ₘ VectorMeasure.equivMeasure.toFun (VectorMeasure.equivMeasure.invFun μ) at htμ 
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s t : SignedMeasure α
μ : Measure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
hadd : s = t + withDensityᵥ μ f
htμ' : t ⟂ᵥ toENNRealVectorMeasure μ
htμ : totalVariation t ⟂ₘ Equiv.toFun VectorMeasure.equivMeasure (Equiv.invFun VectorMeasure.equivMeasure μ)
⊢ HaveLebesgueDecomposition s μ
[PROOFSTEP]
rw [VectorMeasure.equivMeasure.right_inv, totalVariation_mutuallySingular_iff] at htμ 
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s t : SignedMeasure α
μ : Measure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
hadd : s = t + withDensityᵥ μ f
htμ' : t ⟂ᵥ toENNRealVectorMeasure μ
htμ : (toJordanDecomposition t).posPart ⟂ₘ μ ∧ (toJordanDecomposition t).negPart ⟂ₘ μ
⊢ HaveLebesgueDecomposition s μ
[PROOFSTEP]
refine'
  { posPart := by
      use⟨t.toJordanDecomposition.posPart, fun x => ENNReal.ofReal (f x)⟩
      refine' ⟨hf.ennreal_ofReal, htμ.1, _⟩
      rw [toJordanDecomposition_eq_of_eq_add_withDensity hf hfi htμ' hadd]
    negPart := by
      use⟨t.toJordanDecomposition.negPart, fun x => ENNReal.ofReal (-f x)⟩
      refine' ⟨hf.neg.ennreal_ofReal, htμ.2, _⟩
      rw [toJordanDecomposition_eq_of_eq_add_withDensity hf hfi htμ' hadd] }
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s t : SignedMeasure α
μ : Measure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
hadd : s = t + withDensityᵥ μ f
htμ' : t ⟂ᵥ toENNRealVectorMeasure μ
htμ : (toJordanDecomposition t).posPart ⟂ₘ μ ∧ (toJordanDecomposition t).negPart ⟂ₘ μ
⊢ Measure.HaveLebesgueDecomposition (toJordanDecomposition s).posPart μ
[PROOFSTEP]
use⟨t.toJordanDecomposition.posPart, fun x => ENNReal.ofReal (f x)⟩
[GOAL]
case h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s t : SignedMeasure α
μ : Measure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
hadd : s = t + withDensityᵥ μ f
htμ' : t ⟂ᵥ toENNRealVectorMeasure μ
htμ : (toJordanDecomposition t).posPart ⟂ₘ μ ∧ (toJordanDecomposition t).negPart ⟂ₘ μ
⊢ Measurable ((toJordanDecomposition t).posPart, fun x => ENNReal.ofReal (f x)).snd ∧
    ((toJordanDecomposition t).posPart, fun x => ENNReal.ofReal (f x)).fst ⟂ₘ μ ∧
      (toJordanDecomposition s).posPart =
        ((toJordanDecomposition t).posPart, fun x => ENNReal.ofReal (f x)).fst +
          withDensity μ ((toJordanDecomposition t).posPart, fun x => ENNReal.ofReal (f x)).snd
[PROOFSTEP]
refine' ⟨hf.ennreal_ofReal, htμ.1, _⟩
[GOAL]
case h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s t : SignedMeasure α
μ : Measure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
hadd : s = t + withDensityᵥ μ f
htμ' : t ⟂ᵥ toENNRealVectorMeasure μ
htμ : (toJordanDecomposition t).posPart ⟂ₘ μ ∧ (toJordanDecomposition t).negPart ⟂ₘ μ
⊢ (toJordanDecomposition s).posPart =
    ((toJordanDecomposition t).posPart, fun x => ENNReal.ofReal (f x)).fst +
      withDensity μ ((toJordanDecomposition t).posPart, fun x => ENNReal.ofReal (f x)).snd
[PROOFSTEP]
rw [toJordanDecomposition_eq_of_eq_add_withDensity hf hfi htμ' hadd]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s t : SignedMeasure α
μ : Measure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
hadd : s = t + withDensityᵥ μ f
htμ' : t ⟂ᵥ toENNRealVectorMeasure μ
htμ : (toJordanDecomposition t).posPart ⟂ₘ μ ∧ (toJordanDecomposition t).negPart ⟂ₘ μ
⊢ Measure.HaveLebesgueDecomposition (toJordanDecomposition s).negPart μ
[PROOFSTEP]
use⟨t.toJordanDecomposition.negPart, fun x => ENNReal.ofReal (-f x)⟩
[GOAL]
case h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s t : SignedMeasure α
μ : Measure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
hadd : s = t + withDensityᵥ μ f
htμ' : t ⟂ᵥ toENNRealVectorMeasure μ
htμ : (toJordanDecomposition t).posPart ⟂ₘ μ ∧ (toJordanDecomposition t).negPart ⟂ₘ μ
⊢ Measurable ((toJordanDecomposition t).negPart, fun x => ENNReal.ofReal (-f x)).snd ∧
    ((toJordanDecomposition t).negPart, fun x => ENNReal.ofReal (-f x)).fst ⟂ₘ μ ∧
      (toJordanDecomposition s).negPart =
        ((toJordanDecomposition t).negPart, fun x => ENNReal.ofReal (-f x)).fst +
          withDensity μ ((toJordanDecomposition t).negPart, fun x => ENNReal.ofReal (-f x)).snd
[PROOFSTEP]
refine' ⟨hf.neg.ennreal_ofReal, htμ.2, _⟩
[GOAL]
case h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s t : SignedMeasure α
μ : Measure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
hadd : s = t + withDensityᵥ μ f
htμ' : t ⟂ᵥ toENNRealVectorMeasure μ
htμ : (toJordanDecomposition t).posPart ⟂ₘ μ ∧ (toJordanDecomposition t).negPart ⟂ₘ μ
⊢ (toJordanDecomposition s).negPart =
    ((toJordanDecomposition t).negPart, fun x => ENNReal.ofReal (-f x)).fst +
      withDensity μ ((toJordanDecomposition t).negPart, fun x => ENNReal.ofReal (-f x)).snd
[PROOFSTEP]
rw [toJordanDecomposition_eq_of_eq_add_withDensity hf hfi htμ' hadd]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s t : SignedMeasure α
μ : Measure α
f : α → ℝ
hf : Measurable f
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t + withDensityᵥ μ f
⊢ HaveLebesgueDecomposition s μ
[PROOFSTEP]
by_cases hfi : Integrable f μ
[GOAL]
case pos
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s t : SignedMeasure α
μ : Measure α
f : α → ℝ
hf : Measurable f
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t + withDensityᵥ μ f
hfi : Integrable f
⊢ HaveLebesgueDecomposition s μ
[PROOFSTEP]
exact haveLebesgueDecomposition_mk' μ hf hfi htμ hadd
[GOAL]
case neg
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s t : SignedMeasure α
μ : Measure α
f : α → ℝ
hf : Measurable f
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t + withDensityᵥ μ f
hfi : ¬Integrable f
⊢ HaveLebesgueDecomposition s μ
[PROOFSTEP]
rw [withDensityᵥ, dif_neg hfi, add_zero] at hadd 
[GOAL]
case neg
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s t : SignedMeasure α
μ : Measure α
f : α → ℝ
hf : Measurable f
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t
hfi : ¬Integrable f
⊢ HaveLebesgueDecomposition s μ
[PROOFSTEP]
refine' haveLebesgueDecomposition_mk' μ measurable_zero (integrable_zero _ _ μ) htμ _
[GOAL]
case neg
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s t : SignedMeasure α
μ : Measure α
f : α → ℝ
hf : Measurable f
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t
hfi : ¬Integrable f
⊢ s = t + withDensityᵥ μ 0
[PROOFSTEP]
rwa [withDensityᵥ_zero, add_zero]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t✝ t : SignedMeasure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t + withDensityᵥ μ f
⊢ t = singularPart s μ
[PROOFSTEP]
have htμ' := htμ
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t✝ t : SignedMeasure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t + withDensityᵥ μ f
htμ' : t ⟂ᵥ toENNRealVectorMeasure μ
⊢ t = singularPart s μ
[PROOFSTEP]
rw [mutuallySingular_ennreal_iff, totalVariation_mutuallySingular_iff] at htμ 
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t✝ t : SignedMeasure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
htμ :
  (toJordanDecomposition t).posPart ⟂ₘ VectorMeasure.ennrealToMeasure (toENNRealVectorMeasure μ) ∧
    (toJordanDecomposition t).negPart ⟂ₘ VectorMeasure.ennrealToMeasure (toENNRealVectorMeasure μ)
hadd : s = t + withDensityᵥ μ f
htμ' : t ⟂ᵥ toENNRealVectorMeasure μ
⊢ t = singularPart s μ
[PROOFSTEP]
change
  _ ⟂ₘ VectorMeasure.equivMeasure.toFun (VectorMeasure.equivMeasure.invFun μ) ∧
    _ ⟂ₘ VectorMeasure.equivMeasure.toFun (VectorMeasure.equivMeasure.invFun μ) at
  htμ 
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t✝ t : SignedMeasure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
hadd : s = t + withDensityᵥ μ f
htμ' : t ⟂ᵥ toENNRealVectorMeasure μ
htμ :
  (toJordanDecomposition t).posPart ⟂ₘ
      Equiv.toFun VectorMeasure.equivMeasure (Equiv.invFun VectorMeasure.equivMeasure μ) ∧
    (toJordanDecomposition t).negPart ⟂ₘ
      Equiv.toFun VectorMeasure.equivMeasure (Equiv.invFun VectorMeasure.equivMeasure μ)
⊢ t = singularPart s μ
[PROOFSTEP]
rw [VectorMeasure.equivMeasure.right_inv] at htμ 
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t✝ t : SignedMeasure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
hadd : s = t + withDensityᵥ μ f
htμ' : t ⟂ᵥ toENNRealVectorMeasure μ
htμ : (toJordanDecomposition t).posPart ⟂ₘ μ ∧ (toJordanDecomposition t).negPart ⟂ₘ μ
⊢ t = singularPart s μ
[PROOFSTEP]
rw [singularPart, ← t.toSignedMeasure_toJordanDecomposition, JordanDecomposition.toSignedMeasure]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t✝ t : SignedMeasure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
hadd : s = t + withDensityᵥ μ f
htμ' : t ⟂ᵥ toENNRealVectorMeasure μ
htμ : (toJordanDecomposition t).posPart ⟂ₘ μ ∧ (toJordanDecomposition t).negPart ⟂ₘ μ
⊢ toSignedMeasure (toJordanDecomposition t).posPart - toSignedMeasure (toJordanDecomposition t).negPart =
    toSignedMeasure (Measure.singularPart (toJordanDecomposition s).posPart μ) -
      toSignedMeasure (Measure.singularPart (toJordanDecomposition s).negPart μ)
[PROOFSTEP]
congr
[GOAL]
case e_a.e_μ
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t✝ t : SignedMeasure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
hadd : s = t + withDensityᵥ μ f
htμ' : t ⟂ᵥ toENNRealVectorMeasure μ
htμ : (toJordanDecomposition t).posPart ⟂ₘ μ ∧ (toJordanDecomposition t).negPart ⟂ₘ μ
⊢ (toJordanDecomposition t).posPart = Measure.singularPart (toJordanDecomposition s).posPart μ
[PROOFSTEP]
have hfpos : Measurable fun x => ENNReal.ofReal (f x) := by measurability
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t✝ t : SignedMeasure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
hadd : s = t + withDensityᵥ μ f
htμ' : t ⟂ᵥ toENNRealVectorMeasure μ
htμ : (toJordanDecomposition t).posPart ⟂ₘ μ ∧ (toJordanDecomposition t).negPart ⟂ₘ μ
⊢ Measurable fun x => ENNReal.ofReal (f x)
[PROOFSTEP]
measurability
[GOAL]
case e_a.e_μ
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t✝ t : SignedMeasure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
hadd : s = t + withDensityᵥ μ f
htμ' : t ⟂ᵥ toENNRealVectorMeasure μ
htμ : (toJordanDecomposition t).posPart ⟂ₘ μ ∧ (toJordanDecomposition t).negPart ⟂ₘ μ
hfpos : Measurable fun x => ENNReal.ofReal (f x)
⊢ (toJordanDecomposition t).posPart = Measure.singularPart (toJordanDecomposition s).posPart μ
[PROOFSTEP]
refine' eq_singularPart hfpos htμ.1 _
[GOAL]
case e_a.e_μ
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t✝ t : SignedMeasure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
hadd : s = t + withDensityᵥ μ f
htμ' : t ⟂ᵥ toENNRealVectorMeasure μ
htμ : (toJordanDecomposition t).posPart ⟂ₘ μ ∧ (toJordanDecomposition t).negPart ⟂ₘ μ
hfpos : Measurable fun x => ENNReal.ofReal (f x)
⊢ (toJordanDecomposition s).posPart = (toJordanDecomposition t).posPart + withDensity μ fun x => ENNReal.ofReal (f x)
[PROOFSTEP]
rw [toJordanDecomposition_eq_of_eq_add_withDensity hf hfi htμ' hadd]
[GOAL]
case e_a.e_μ
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t✝ t : SignedMeasure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
hadd : s = t + withDensityᵥ μ f
htμ' : t ⟂ᵥ toENNRealVectorMeasure μ
htμ : (toJordanDecomposition t).posPart ⟂ₘ μ ∧ (toJordanDecomposition t).negPart ⟂ₘ μ
⊢ (toJordanDecomposition t).negPart = Measure.singularPart (toJordanDecomposition s).negPart μ
[PROOFSTEP]
have hfneg : Measurable fun x => ENNReal.ofReal (-f x) := by measurability
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t✝ t : SignedMeasure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
hadd : s = t + withDensityᵥ μ f
htμ' : t ⟂ᵥ toENNRealVectorMeasure μ
htμ : (toJordanDecomposition t).posPart ⟂ₘ μ ∧ (toJordanDecomposition t).negPart ⟂ₘ μ
⊢ Measurable fun x => ENNReal.ofReal (-f x)
[PROOFSTEP]
measurability
[GOAL]
case e_a.e_μ
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t✝ t : SignedMeasure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
hadd : s = t + withDensityᵥ μ f
htμ' : t ⟂ᵥ toENNRealVectorMeasure μ
htμ : (toJordanDecomposition t).posPart ⟂ₘ μ ∧ (toJordanDecomposition t).negPart ⟂ₘ μ
hfneg : Measurable fun x => ENNReal.ofReal (-f x)
⊢ (toJordanDecomposition t).negPart = Measure.singularPart (toJordanDecomposition s).negPart μ
[PROOFSTEP]
refine' eq_singularPart hfneg htμ.2 _
[GOAL]
case e_a.e_μ
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t✝ t : SignedMeasure α
f : α → ℝ
hf : Measurable f
hfi : Integrable f
hadd : s = t + withDensityᵥ μ f
htμ' : t ⟂ᵥ toENNRealVectorMeasure μ
htμ : (toJordanDecomposition t).posPart ⟂ₘ μ ∧ (toJordanDecomposition t).negPart ⟂ₘ μ
hfneg : Measurable fun x => ENNReal.ofReal (-f x)
⊢ (toJordanDecomposition s).negPart = (toJordanDecomposition t).negPart + withDensity μ fun x => ENNReal.ofReal (-f x)
[PROOFSTEP]
rw [toJordanDecomposition_eq_of_eq_add_withDensity hf hfi htμ' hadd]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t✝ t : SignedMeasure α
f : α → ℝ
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t + withDensityᵥ μ f
⊢ t = singularPart s μ
[PROOFSTEP]
by_cases hfi : Integrable f μ
[GOAL]
case pos
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t✝ t : SignedMeasure α
f : α → ℝ
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t + withDensityᵥ μ f
hfi : Integrable f
⊢ t = singularPart s μ
[PROOFSTEP]
refine' eq_singularPart' t hfi.1.measurable_mk (hfi.congr hfi.1.ae_eq_mk) htμ _
[GOAL]
case pos
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t✝ t : SignedMeasure α
f : α → ℝ
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t + withDensityᵥ μ f
hfi : Integrable f
⊢ s = t + withDensityᵥ μ (AEStronglyMeasurable.mk f (_ : AEStronglyMeasurable f μ))
[PROOFSTEP]
convert hadd using 2
[GOAL]
case h.e'_3.h.e'_6
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t✝ t : SignedMeasure α
f : α → ℝ
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t + withDensityᵥ μ f
hfi : Integrable f
⊢ withDensityᵥ μ (AEStronglyMeasurable.mk f (_ : AEStronglyMeasurable f μ)) = withDensityᵥ μ f
[PROOFSTEP]
exact WithDensityᵥEq.congr_ae hfi.1.ae_eq_mk.symm
[GOAL]
case neg
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t✝ t : SignedMeasure α
f : α → ℝ
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t + withDensityᵥ μ f
hfi : ¬Integrable f
⊢ t = singularPart s μ
[PROOFSTEP]
rw [withDensityᵥ, dif_neg hfi, add_zero] at hadd 
[GOAL]
case neg
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t✝ t : SignedMeasure α
f : α → ℝ
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t
hfi : ¬Integrable f
⊢ t = singularPart s μ
[PROOFSTEP]
refine' eq_singularPart' t measurable_zero (integrable_zero _ _ μ) htμ _
[GOAL]
case neg
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t✝ t : SignedMeasure α
f : α → ℝ
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t
hfi : ¬Integrable f
⊢ s = t + withDensityᵥ μ 0
[PROOFSTEP]
rwa [withDensityᵥ_zero, add_zero]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s t : SignedMeasure α
μ : Measure α
⊢ singularPart 0 μ = 0
[PROOFSTEP]
refine' (eq_singularPart 0 0 VectorMeasure.MutuallySingular.zero_left _).symm
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s t : SignedMeasure α
μ : Measure α
⊢ 0 = 0 + withDensityᵥ μ 0
[PROOFSTEP]
rw [zero_add, withDensityᵥ_zero]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
⊢ singularPart (-s) μ = -singularPart s μ
[PROOFSTEP]
have h₁ :
  ((-s).toJordanDecomposition.posPart.singularPart μ).toSignedMeasure =
    (s.toJordanDecomposition.negPart.singularPart μ).toSignedMeasure :=
  by
  refine' toSignedMeasure_congr _
  rw [toJordanDecomposition_neg, JordanDecomposition.neg_posPart]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
⊢ toSignedMeasure (Measure.singularPart (toJordanDecomposition (-s)).posPart μ) =
    toSignedMeasure (Measure.singularPart (toJordanDecomposition s).negPart μ)
[PROOFSTEP]
refine' toSignedMeasure_congr _
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
⊢ Measure.singularPart (toJordanDecomposition (-s)).posPart μ = Measure.singularPart (toJordanDecomposition s).negPart μ
[PROOFSTEP]
rw [toJordanDecomposition_neg, JordanDecomposition.neg_posPart]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
h₁ :
  toSignedMeasure (Measure.singularPart (toJordanDecomposition (-s)).posPart μ) =
    toSignedMeasure (Measure.singularPart (toJordanDecomposition s).negPart μ)
⊢ singularPart (-s) μ = -singularPart s μ
[PROOFSTEP]
have h₂ :
  ((-s).toJordanDecomposition.negPart.singularPart μ).toSignedMeasure =
    (s.toJordanDecomposition.posPart.singularPart μ).toSignedMeasure :=
  by
  refine' toSignedMeasure_congr _
  rw [toJordanDecomposition_neg, JordanDecomposition.neg_negPart]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
h₁ :
  toSignedMeasure (Measure.singularPart (toJordanDecomposition (-s)).posPart μ) =
    toSignedMeasure (Measure.singularPart (toJordanDecomposition s).negPart μ)
⊢ toSignedMeasure (Measure.singularPart (toJordanDecomposition (-s)).negPart μ) =
    toSignedMeasure (Measure.singularPart (toJordanDecomposition s).posPart μ)
[PROOFSTEP]
refine' toSignedMeasure_congr _
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
h₁ :
  toSignedMeasure (Measure.singularPart (toJordanDecomposition (-s)).posPart μ) =
    toSignedMeasure (Measure.singularPart (toJordanDecomposition s).negPart μ)
⊢ Measure.singularPart (toJordanDecomposition (-s)).negPart μ = Measure.singularPart (toJordanDecomposition s).posPart μ
[PROOFSTEP]
rw [toJordanDecomposition_neg, JordanDecomposition.neg_negPart]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
h₁ :
  toSignedMeasure (Measure.singularPart (toJordanDecomposition (-s)).posPart μ) =
    toSignedMeasure (Measure.singularPart (toJordanDecomposition s).negPart μ)
h₂ :
  toSignedMeasure (Measure.singularPart (toJordanDecomposition (-s)).negPart μ) =
    toSignedMeasure (Measure.singularPart (toJordanDecomposition s).posPart μ)
⊢ singularPart (-s) μ = -singularPart s μ
[PROOFSTEP]
rw [singularPart, singularPart, neg_sub, h₁, h₂]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ≥0
⊢ singularPart (r • s) μ = r • singularPart s μ
[PROOFSTEP]
rw [singularPart, singularPart, smul_sub, ← toSignedMeasure_smul, ← toSignedMeasure_smul]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ≥0
⊢ toSignedMeasure (Measure.singularPart (toJordanDecomposition (r • s)).posPart μ) -
      toSignedMeasure (Measure.singularPart (toJordanDecomposition (r • s)).negPart μ) =
    toSignedMeasure (r • Measure.singularPart (toJordanDecomposition s).posPart μ) -
      toSignedMeasure (r • Measure.singularPart (toJordanDecomposition s).negPart μ)
[PROOFSTEP]
conv_lhs =>
  congr
  · congr
    ·rw [toJordanDecomposition_smul, JordanDecomposition.smul_posPart, singularPart_smul]
  · congr
    rw [toJordanDecomposition_smul, JordanDecomposition.smul_negPart, singularPart_smul]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ≥0
| toSignedMeasure (Measure.singularPart (toJordanDecomposition (r • s)).posPart μ) -
    toSignedMeasure (Measure.singularPart (toJordanDecomposition (r • s)).negPart μ)
[PROOFSTEP]
  congr
  · congr
    ·rw [toJordanDecomposition_smul, JordanDecomposition.smul_posPart, singularPart_smul]
  · congr
    rw [toJordanDecomposition_smul, JordanDecomposition.smul_negPart, singularPart_smul]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ≥0
| toSignedMeasure (Measure.singularPart (toJordanDecomposition (r • s)).posPart μ) -
    toSignedMeasure (Measure.singularPart (toJordanDecomposition (r • s)).negPart μ)
[PROOFSTEP]
  congr
  · congr
    ·rw [toJordanDecomposition_smul, JordanDecomposition.smul_posPart, singularPart_smul]
  · congr
    rw [toJordanDecomposition_smul, JordanDecomposition.smul_negPart, singularPart_smul]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ≥0
| toSignedMeasure (Measure.singularPart (toJordanDecomposition (r • s)).posPart μ) -
    toSignedMeasure (Measure.singularPart (toJordanDecomposition (r • s)).negPart μ)
[PROOFSTEP]
congr
[GOAL]
case a
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ≥0
| toSignedMeasure (Measure.singularPart (toJordanDecomposition (r • s)).posPart μ)
case a
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ≥0
| toSignedMeasure (Measure.singularPart (toJordanDecomposition (r • s)).negPart μ)
[PROOFSTEP]
· congr
  ·rw [toJordanDecomposition_smul, JordanDecomposition.smul_posPart, singularPart_smul]
[GOAL]
case a
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ≥0
| toSignedMeasure (Measure.singularPart (toJordanDecomposition (r • s)).posPart μ)
[PROOFSTEP]
  congr
  ·rw [toJordanDecomposition_smul, JordanDecomposition.smul_posPart, singularPart_smul]
[GOAL]
case a
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ≥0
| toSignedMeasure (Measure.singularPart (toJordanDecomposition (r • s)).posPart μ)
[PROOFSTEP]
  congr
  ·rw [toJordanDecomposition_smul, JordanDecomposition.smul_posPart, singularPart_smul]
[GOAL]
case a
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ≥0
| toSignedMeasure (Measure.singularPart (toJordanDecomposition (r • s)).posPart μ)
[PROOFSTEP]
congr
[GOAL]
case a.μ
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ≥0
| Measure.singularPart (toJordanDecomposition (r • s)).posPart μ
[PROOFSTEP]
·rw [toJordanDecomposition_smul, JordanDecomposition.smul_posPart, singularPart_smul]
[GOAL]
case a.μ
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ≥0
| Measure.singularPart (toJordanDecomposition (r • s)).posPart μ
[PROOFSTEP]
rw [toJordanDecomposition_smul, JordanDecomposition.smul_posPart, singularPart_smul]
[GOAL]
case a.μ
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ≥0
| Measure.singularPart (toJordanDecomposition (r • s)).posPart μ
[PROOFSTEP]
rw [toJordanDecomposition_smul, JordanDecomposition.smul_posPart, singularPart_smul]
[GOAL]
case a.μ
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ≥0
| Measure.singularPart (toJordanDecomposition (r • s)).posPart μ
[PROOFSTEP]
rw [toJordanDecomposition_smul, JordanDecomposition.smul_posPart, singularPart_smul]
[GOAL]
case a
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ≥0
| toSignedMeasure (Measure.singularPart (toJordanDecomposition (r • s)).negPart μ)
[PROOFSTEP]
· congr
  rw [toJordanDecomposition_smul, JordanDecomposition.smul_negPart, singularPart_smul]
[GOAL]
case a
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ≥0
| toSignedMeasure (Measure.singularPart (toJordanDecomposition (r • s)).negPart μ)
[PROOFSTEP]
  congr
  rw [toJordanDecomposition_smul, JordanDecomposition.smul_negPart, singularPart_smul]
[GOAL]
case a
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ≥0
| toSignedMeasure (Measure.singularPart (toJordanDecomposition (r • s)).negPart μ)
[PROOFSTEP]
  congr
  rw [toJordanDecomposition_smul, JordanDecomposition.smul_negPart, singularPart_smul]
[GOAL]
case a
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ≥0
| toSignedMeasure (Measure.singularPart (toJordanDecomposition (r • s)).negPart μ)
[PROOFSTEP]
congr
[GOAL]
case a.μ
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ≥0
| Measure.singularPart (toJordanDecomposition (r • s)).negPart μ
[PROOFSTEP]
rw [toJordanDecomposition_smul, JordanDecomposition.smul_negPart, singularPart_smul]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ
⊢ singularPart (r • s) μ = r • singularPart s μ
[PROOFSTEP]
by_cases hr : 0 ≤ r
[GOAL]
case pos
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ
hr : 0 ≤ r
⊢ singularPart (r • s) μ = r • singularPart s μ
[PROOFSTEP]
lift r to ℝ≥0 using hr
[GOAL]
case pos.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ≥0
⊢ singularPart (↑r • s) μ = ↑r • singularPart s μ
[PROOFSTEP]
exact singularPart_smul_nnreal s μ r
[GOAL]
case neg
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ
hr : ¬0 ≤ r
⊢ singularPart (r • s) μ = r • singularPart s μ
[PROOFSTEP]
rw [singularPart, singularPart]
[GOAL]
case neg
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ
hr : ¬0 ≤ r
⊢ toSignedMeasure (Measure.singularPart (toJordanDecomposition (r • s)).posPart μ) -
      toSignedMeasure (Measure.singularPart (toJordanDecomposition (r • s)).negPart μ) =
    r •
      (toSignedMeasure (Measure.singularPart (toJordanDecomposition s).posPart μ) -
        toSignedMeasure (Measure.singularPart (toJordanDecomposition s).negPart μ))
[PROOFSTEP]
conv_lhs =>
  congr
  · congr
    ·rw [toJordanDecomposition_smul_real, JordanDecomposition.real_smul_posPart_neg _ _ (not_le.1 hr),
        singularPart_smul]
  · congr
    ·rw [toJordanDecomposition_smul_real, JordanDecomposition.real_smul_negPart_neg _ _ (not_le.1 hr),
        singularPart_smul]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ
hr : ¬0 ≤ r
| toSignedMeasure (Measure.singularPart (toJordanDecomposition (r • s)).posPart μ) -
    toSignedMeasure (Measure.singularPart (toJordanDecomposition (r • s)).negPart μ)
[PROOFSTEP]
  congr
  · congr
    ·rw [toJordanDecomposition_smul_real, JordanDecomposition.real_smul_posPart_neg _ _ (not_le.1 hr),
        singularPart_smul]
  · congr
    ·rw [toJordanDecomposition_smul_real, JordanDecomposition.real_smul_negPart_neg _ _ (not_le.1 hr),
        singularPart_smul]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ
hr : ¬0 ≤ r
| toSignedMeasure (Measure.singularPart (toJordanDecomposition (r • s)).posPart μ) -
    toSignedMeasure (Measure.singularPart (toJordanDecomposition (r • s)).negPart μ)
[PROOFSTEP]
  congr
  · congr
    ·rw [toJordanDecomposition_smul_real, JordanDecomposition.real_smul_posPart_neg _ _ (not_le.1 hr),
        singularPart_smul]
  · congr
    ·rw [toJordanDecomposition_smul_real, JordanDecomposition.real_smul_negPart_neg _ _ (not_le.1 hr),
        singularPart_smul]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ
hr : ¬0 ≤ r
| toSignedMeasure (Measure.singularPart (toJordanDecomposition (r • s)).posPart μ) -
    toSignedMeasure (Measure.singularPart (toJordanDecomposition (r • s)).negPart μ)
[PROOFSTEP]
congr
[GOAL]
case a
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ
hr : ¬0 ≤ r
| toSignedMeasure (Measure.singularPart (toJordanDecomposition (r • s)).posPart μ)
case a
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ
hr : ¬0 ≤ r
| toSignedMeasure (Measure.singularPart (toJordanDecomposition (r • s)).negPart μ)
[PROOFSTEP]
· congr
  ·rw [toJordanDecomposition_smul_real, JordanDecomposition.real_smul_posPart_neg _ _ (not_le.1 hr), singularPart_smul]
[GOAL]
case a
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ
hr : ¬0 ≤ r
| toSignedMeasure (Measure.singularPart (toJordanDecomposition (r • s)).posPart μ)
[PROOFSTEP]
  congr
  ·rw [toJordanDecomposition_smul_real, JordanDecomposition.real_smul_posPart_neg _ _ (not_le.1 hr), singularPart_smul]
[GOAL]
case a
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ
hr : ¬0 ≤ r
| toSignedMeasure (Measure.singularPart (toJordanDecomposition (r • s)).posPart μ)
[PROOFSTEP]
  congr
  ·rw [toJordanDecomposition_smul_real, JordanDecomposition.real_smul_posPart_neg _ _ (not_le.1 hr), singularPart_smul]
[GOAL]
case a
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ
hr : ¬0 ≤ r
| toSignedMeasure (Measure.singularPart (toJordanDecomposition (r • s)).posPart μ)
[PROOFSTEP]
congr
[GOAL]
case a.μ
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ
hr : ¬0 ≤ r
| Measure.singularPart (toJordanDecomposition (r • s)).posPart μ
[PROOFSTEP]
·rw [toJordanDecomposition_smul_real, JordanDecomposition.real_smul_posPart_neg _ _ (not_le.1 hr), singularPart_smul]
[GOAL]
case a.μ
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ
hr : ¬0 ≤ r
| Measure.singularPart (toJordanDecomposition (r • s)).posPart μ
[PROOFSTEP]
rw [toJordanDecomposition_smul_real, JordanDecomposition.real_smul_posPart_neg _ _ (not_le.1 hr), singularPart_smul]
[GOAL]
case a.μ
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ
hr : ¬0 ≤ r
| Measure.singularPart (toJordanDecomposition (r • s)).posPart μ
[PROOFSTEP]
rw [toJordanDecomposition_smul_real, JordanDecomposition.real_smul_posPart_neg _ _ (not_le.1 hr), singularPart_smul]
[GOAL]
case a.μ
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ
hr : ¬0 ≤ r
| Measure.singularPart (toJordanDecomposition (r • s)).posPart μ
[PROOFSTEP]
rw [toJordanDecomposition_smul_real, JordanDecomposition.real_smul_posPart_neg _ _ (not_le.1 hr), singularPart_smul]
[GOAL]
case a
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ
hr : ¬0 ≤ r
| toSignedMeasure (Measure.singularPart (toJordanDecomposition (r • s)).negPart μ)
[PROOFSTEP]
· congr
  ·rw [toJordanDecomposition_smul_real, JordanDecomposition.real_smul_negPart_neg _ _ (not_le.1 hr), singularPart_smul]
[GOAL]
case a
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ
hr : ¬0 ≤ r
| toSignedMeasure (Measure.singularPart (toJordanDecomposition (r • s)).negPart μ)
[PROOFSTEP]
  congr
  ·rw [toJordanDecomposition_smul_real, JordanDecomposition.real_smul_negPart_neg _ _ (not_le.1 hr), singularPart_smul]
[GOAL]
case a
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ
hr : ¬0 ≤ r
| toSignedMeasure (Measure.singularPart (toJordanDecomposition (r • s)).negPart μ)
[PROOFSTEP]
  congr
  ·rw [toJordanDecomposition_smul_real, JordanDecomposition.real_smul_negPart_neg _ _ (not_le.1 hr), singularPart_smul]
[GOAL]
case a
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ
hr : ¬0 ≤ r
| toSignedMeasure (Measure.singularPart (toJordanDecomposition (r • s)).negPart μ)
[PROOFSTEP]
congr
[GOAL]
case a.μ
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ
hr : ¬0 ≤ r
| Measure.singularPart (toJordanDecomposition (r • s)).negPart μ
[PROOFSTEP]
·rw [toJordanDecomposition_smul_real, JordanDecomposition.real_smul_negPart_neg _ _ (not_le.1 hr), singularPart_smul]
[GOAL]
case a.μ
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ
hr : ¬0 ≤ r
| Measure.singularPart (toJordanDecomposition (r • s)).negPart μ
[PROOFSTEP]
rw [toJordanDecomposition_smul_real, JordanDecomposition.real_smul_negPart_neg _ _ (not_le.1 hr), singularPart_smul]
[GOAL]
case a.μ
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ
hr : ¬0 ≤ r
| Measure.singularPart (toJordanDecomposition (r • s)).negPart μ
[PROOFSTEP]
rw [toJordanDecomposition_smul_real, JordanDecomposition.real_smul_negPart_neg _ _ (not_le.1 hr), singularPart_smul]
[GOAL]
case a.μ
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ
hr : ¬0 ≤ r
| Measure.singularPart (toJordanDecomposition (r • s)).negPart μ
[PROOFSTEP]
rw [toJordanDecomposition_smul_real, JordanDecomposition.real_smul_negPart_neg _ _ (not_le.1 hr), singularPart_smul]
[GOAL]
case neg
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ
hr : ¬0 ≤ r
⊢ toSignedMeasure (Real.toNNReal (-r) • Measure.singularPart (toJordanDecomposition s).negPart μ) -
      toSignedMeasure (Real.toNNReal (-r) • Measure.singularPart (toJordanDecomposition s).posPart μ) =
    r •
      (toSignedMeasure (Measure.singularPart (toJordanDecomposition s).posPart μ) -
        toSignedMeasure (Measure.singularPart (toJordanDecomposition s).negPart μ))
[PROOFSTEP]
rw [toSignedMeasure_smul, toSignedMeasure_smul, ← neg_sub, ← smul_sub]
[GOAL]
case neg
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ
hr : ¬0 ≤ r
⊢ -(Real.toNNReal (-r) •
        (toSignedMeasure (Measure.singularPart (toJordanDecomposition s).posPart μ) -
          toSignedMeasure (Measure.singularPart (toJordanDecomposition s).negPart μ))) =
    r •
      (toSignedMeasure (Measure.singularPart (toJordanDecomposition s).posPart μ) -
        toSignedMeasure (Measure.singularPart (toJordanDecomposition s).negPart μ))
[PROOFSTEP]
change -(((-r).toNNReal : ℝ) • (_ : SignedMeasure α)) = _
[GOAL]
case neg
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ
hr : ¬0 ≤ r
⊢ -(↑(Real.toNNReal (-r)) •
        (toSignedMeasure (Measure.singularPart (toJordanDecomposition s).posPart μ) -
          toSignedMeasure (Measure.singularPart (toJordanDecomposition s).negPart μ))) =
    r •
      (toSignedMeasure (Measure.singularPart (toJordanDecomposition s).posPart μ) -
        toSignedMeasure (Measure.singularPart (toJordanDecomposition s).negPart μ))
[PROOFSTEP]
rw [← neg_smul, Real.coe_toNNReal _ (le_of_lt (neg_pos.mpr (not_le.1 hr))), neg_neg]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t✝ s t : SignedMeasure α
μ : Measure α
inst✝¹ : HaveLebesgueDecomposition s μ
inst✝ : HaveLebesgueDecomposition t μ
⊢ singularPart (s + t) μ = singularPart s μ + singularPart t μ
[PROOFSTEP]
refine'
  (eq_singularPart _ (s.rnDeriv μ + t.rnDeriv μ)
      ((mutuallySingular_singularPart s μ).add_left (mutuallySingular_singularPart t μ)) _).symm
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t✝ s t : SignedMeasure α
μ : Measure α
inst✝¹ : HaveLebesgueDecomposition s μ
inst✝ : HaveLebesgueDecomposition t μ
⊢ s + t = singularPart s μ + singularPart t μ + withDensityᵥ μ (rnDeriv s μ + rnDeriv t μ)
[PROOFSTEP]
erw [withDensityᵥ_add (integrable_rnDeriv s μ) (integrable_rnDeriv t μ)]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t✝ s t : SignedMeasure α
μ : Measure α
inst✝¹ : HaveLebesgueDecomposition s μ
inst✝ : HaveLebesgueDecomposition t μ
⊢ s + t = singularPart s μ + singularPart t μ + (withDensityᵥ μ (rnDeriv s μ) + withDensityᵥ μ (rnDeriv t μ))
[PROOFSTEP]
rw [add_assoc, add_comm (t.singularPart μ), add_assoc, add_comm _ (t.singularPart μ),
  singularPart_add_withDensity_rnDeriv_eq, ← add_assoc, singularPart_add_withDensity_rnDeriv_eq]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t✝ s t : SignedMeasure α
μ : Measure α
inst✝¹ : HaveLebesgueDecomposition s μ
inst✝ : HaveLebesgueDecomposition t μ
⊢ singularPart (s - t) μ = singularPart s μ - singularPart t μ
[PROOFSTEP]
rw [sub_eq_add_neg, sub_eq_add_neg, singularPart_add, singularPart_neg]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t✝ t : SignedMeasure α
f : α → ℝ
hfi : Integrable f
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t + withDensityᵥ μ f
⊢ f =ᶠ[ae μ] rnDeriv s μ
[PROOFSTEP]
set f' := hfi.1.mk f
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t✝ t : SignedMeasure α
f : α → ℝ
hfi : Integrable f
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t + withDensityᵥ μ f
f' : α → ℝ := AEStronglyMeasurable.mk f (_ : AEStronglyMeasurable f μ)
⊢ f =ᶠ[ae μ] rnDeriv s μ
[PROOFSTEP]
have hadd' : s = t + μ.withDensityᵥ f' := by
  convert hadd using 2
  exact WithDensityᵥEq.congr_ae hfi.1.ae_eq_mk.symm
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t✝ t : SignedMeasure α
f : α → ℝ
hfi : Integrable f
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t + withDensityᵥ μ f
f' : α → ℝ := AEStronglyMeasurable.mk f (_ : AEStronglyMeasurable f μ)
⊢ s = t + withDensityᵥ μ f'
[PROOFSTEP]
convert hadd using 2
[GOAL]
case h.e'_3.h.e'_6
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t✝ t : SignedMeasure α
f : α → ℝ
hfi : Integrable f
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t + withDensityᵥ μ f
f' : α → ℝ := AEStronglyMeasurable.mk f (_ : AEStronglyMeasurable f μ)
⊢ withDensityᵥ μ f' = withDensityᵥ μ f
[PROOFSTEP]
exact WithDensityᵥEq.congr_ae hfi.1.ae_eq_mk.symm
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t✝ t : SignedMeasure α
f : α → ℝ
hfi : Integrable f
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t + withDensityᵥ μ f
f' : α → ℝ := AEStronglyMeasurable.mk f (_ : AEStronglyMeasurable f μ)
hadd' : s = t + withDensityᵥ μ f'
⊢ f =ᶠ[ae μ] rnDeriv s μ
[PROOFSTEP]
haveI := haveLebesgueDecomposition_mk μ hfi.1.measurable_mk htμ hadd'
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t✝ t : SignedMeasure α
f : α → ℝ
hfi : Integrable f
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t + withDensityᵥ μ f
f' : α → ℝ := AEStronglyMeasurable.mk f (_ : AEStronglyMeasurable f μ)
hadd' : s = t + withDensityᵥ μ f'
this : HaveLebesgueDecomposition s μ
⊢ f =ᶠ[ae μ] rnDeriv s μ
[PROOFSTEP]
refine' (Integrable.ae_eq_of_withDensityᵥ_eq (integrable_rnDeriv _ _) hfi _).symm
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
s t✝ t : SignedMeasure α
f : α → ℝ
hfi : Integrable f
htμ : t ⟂ᵥ toENNRealVectorMeasure μ
hadd : s = t + withDensityᵥ μ f
f' : α → ℝ := AEStronglyMeasurable.mk f (_ : AEStronglyMeasurable f μ)
hadd' : s = t + withDensityᵥ μ f'
this : HaveLebesgueDecomposition s μ
⊢ withDensityᵥ μ (rnDeriv s μ) = withDensityᵥ μ f
[PROOFSTEP]
rw [← add_right_inj t, ← hadd, eq_singularPart _ f htμ hadd, singularPart_add_withDensity_rnDeriv_eq]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ rnDeriv (-s) μ =ᶠ[ae μ] -rnDeriv s μ
[PROOFSTEP]
refine' Integrable.ae_eq_of_withDensityᵥ_eq (integrable_rnDeriv _ _) (integrable_rnDeriv _ _).neg _
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
inst✝ : HaveLebesgueDecomposition s μ
⊢ withDensityᵥ μ (rnDeriv (-s) μ) = withDensityᵥ μ (-rnDeriv s μ)
[PROOFSTEP]
rw [withDensityᵥ_neg, ← add_right_inj ((-s).singularPart μ), singularPart_add_withDensity_rnDeriv_eq, singularPart_neg,
  ← neg_add, singularPart_add_withDensity_rnDeriv_eq]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
inst✝ : HaveLebesgueDecomposition s μ
r : ℝ
⊢ rnDeriv (r • s) μ =ᶠ[ae μ] r • rnDeriv s μ
[PROOFSTEP]
refine' Integrable.ae_eq_of_withDensityᵥ_eq (integrable_rnDeriv _ _) ((integrable_rnDeriv _ _).smul r) _
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
inst✝ : HaveLebesgueDecomposition s μ
r : ℝ
⊢ withDensityᵥ μ (rnDeriv (r • s) μ) = withDensityᵥ μ (r • rnDeriv s μ)
[PROOFSTEP]
change _ = μ.withDensityᵥ ((r : ℝ) • s.rnDeriv μ)
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
inst✝ : HaveLebesgueDecomposition s μ
r : ℝ
⊢ withDensityᵥ μ (rnDeriv (r • s) μ) = withDensityᵥ μ (r • rnDeriv s μ)
[PROOFSTEP]
rw [withDensityᵥ_smul (rnDeriv s μ) (r : ℝ), ← add_right_inj ((r • s).singularPart μ),
  singularPart_add_withDensity_rnDeriv_eq, singularPart_smul]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
inst✝ : HaveLebesgueDecomposition s μ
r : ℝ
⊢ r • s = r • singularPart s μ + r • withDensityᵥ μ (rnDeriv s μ)
[PROOFSTEP]
change _ = _ + r • _
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
inst✝ : HaveLebesgueDecomposition s μ
r : ℝ
⊢ r • s = r • singularPart s μ + r • withDensityᵥ μ (rnDeriv s μ)
[PROOFSTEP]
rw [← smul_add, singularPart_add_withDensity_rnDeriv_eq]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t✝ s t : SignedMeasure α
μ : Measure α
inst✝² : HaveLebesgueDecomposition s μ
inst✝¹ : HaveLebesgueDecomposition t μ
inst✝ : HaveLebesgueDecomposition (s + t) μ
⊢ rnDeriv (s + t) μ =ᶠ[ae μ] rnDeriv s μ + rnDeriv t μ
[PROOFSTEP]
refine'
  Integrable.ae_eq_of_withDensityᵥ_eq (integrable_rnDeriv _ _) ((integrable_rnDeriv _ _).add (integrable_rnDeriv _ _)) _
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t✝ s t : SignedMeasure α
μ : Measure α
inst✝² : HaveLebesgueDecomposition s μ
inst✝¹ : HaveLebesgueDecomposition t μ
inst✝ : HaveLebesgueDecomposition (s + t) μ
⊢ withDensityᵥ μ (rnDeriv (s + t) μ) = withDensityᵥ μ (rnDeriv s μ + rnDeriv t μ)
[PROOFSTEP]
rw [← add_right_inj ((s + t).singularPart μ), singularPart_add_withDensity_rnDeriv_eq,
  withDensityᵥ_add (integrable_rnDeriv _ _) (integrable_rnDeriv _ _), singularPart_add, add_assoc,
  add_comm (t.singularPart μ), add_assoc, add_comm _ (t.singularPart μ), singularPart_add_withDensity_rnDeriv_eq, ←
  add_assoc, singularPart_add_withDensity_rnDeriv_eq]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t✝ s t : SignedMeasure α
μ : Measure α
inst✝¹ : HaveLebesgueDecomposition s μ
inst✝ : HaveLebesgueDecomposition t μ
hst : HaveLebesgueDecomposition (s - t) μ
⊢ rnDeriv (s - t) μ =ᶠ[ae μ] rnDeriv s μ - rnDeriv t μ
[PROOFSTEP]
rw [sub_eq_add_neg] at hst 
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t✝ s t : SignedMeasure α
μ : Measure α
inst✝¹ : HaveLebesgueDecomposition s μ
inst✝ : HaveLebesgueDecomposition t μ
hst : HaveLebesgueDecomposition (s + -t) μ
⊢ rnDeriv (s - t) μ =ᶠ[ae μ] rnDeriv s μ - rnDeriv t μ
[PROOFSTEP]
rw [sub_eq_add_neg, sub_eq_add_neg]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t✝ s t : SignedMeasure α
μ : Measure α
inst✝¹ : HaveLebesgueDecomposition s μ
inst✝ : HaveLebesgueDecomposition t μ
hst : HaveLebesgueDecomposition (s + -t) μ
⊢ rnDeriv (s + -t) μ =ᶠ[ae μ] rnDeriv s μ + -rnDeriv t μ
[PROOFSTEP]
exact ae_eq_trans (rnDeriv_add _ _ _) (Filter.EventuallyEq.add (ae_eq_refl _) (rnDeriv_neg _ _))
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
c✝ c : ComplexMeasure α
μ : Measure α
⊢ Integrable (rnDeriv c μ)
[PROOFSTEP]
rw [← memℒp_one_iff_integrable, ← memℒp_re_im_iff]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
c✝ c : ComplexMeasure α
μ : Measure α
⊢ Memℒp (fun x => ↑IsROrC.re (rnDeriv c μ x)) 1 ∧ Memℒp (fun x => ↑IsROrC.im (rnDeriv c μ x)) 1
[PROOFSTEP]
exact
  ⟨memℒp_one_iff_integrable.2 (SignedMeasure.integrable_rnDeriv _ _),
    memℒp_one_iff_integrable.2 (SignedMeasure.integrable_rnDeriv _ _)⟩
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
c : ComplexMeasure α
inst✝ : HaveLebesgueDecomposition c μ
⊢ singularPart c μ + Measure.withDensityᵥ μ (rnDeriv c μ) = c
[PROOFSTEP]
conv_rhs => rw [← c.toComplexMeasure_to_signedMeasure]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
c : ComplexMeasure α
inst✝ : HaveLebesgueDecomposition c μ
| c
[PROOFSTEP]
rw [← c.toComplexMeasure_to_signedMeasure]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
c : ComplexMeasure α
inst✝ : HaveLebesgueDecomposition c μ
| c
[PROOFSTEP]
rw [← c.toComplexMeasure_to_signedMeasure]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
c : ComplexMeasure α
inst✝ : HaveLebesgueDecomposition c μ
| c
[PROOFSTEP]
rw [← c.toComplexMeasure_to_signedMeasure]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
c : ComplexMeasure α
inst✝ : HaveLebesgueDecomposition c μ
⊢ singularPart c μ + Measure.withDensityᵥ μ (rnDeriv c μ) = SignedMeasure.toComplexMeasure (↑re c) (↑im c)
[PROOFSTEP]
ext i hi : 1
[GOAL]
case h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
c : ComplexMeasure α
inst✝ : HaveLebesgueDecomposition c μ
i : Set α
hi : MeasurableSet i
⊢ ↑(singularPart c μ + Measure.withDensityᵥ μ (rnDeriv c μ)) i = ↑(SignedMeasure.toComplexMeasure (↑re c) (↑im c)) i
[PROOFSTEP]
rw [VectorMeasure.add_apply, SignedMeasure.toComplexMeasure_apply]
[GOAL]
case h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
c : ComplexMeasure α
inst✝ : HaveLebesgueDecomposition c μ
i : Set α
hi : MeasurableSet i
⊢ ↑(singularPart c μ) i + ↑(Measure.withDensityᵥ μ (rnDeriv c μ)) i = { re := ↑(↑re c) i, im := ↑(↑im c) i }
[PROOFSTEP]
ext
[GOAL]
case h.a
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
c : ComplexMeasure α
inst✝ : HaveLebesgueDecomposition c μ
i : Set α
hi : MeasurableSet i
⊢ (↑(singularPart c μ) i + ↑(Measure.withDensityᵥ μ (rnDeriv c μ)) i).re = { re := ↑(↑re c) i, im := ↑(↑im c) i }.re
[PROOFSTEP]
rw [Complex.add_re, withDensityᵥ_apply (c.integrable_rnDeriv μ) hi, ← IsROrC.re_eq_complex_re, ←
  integral_re (c.integrable_rnDeriv μ).integrableOn, IsROrC.re_eq_complex_re, ← withDensityᵥ_apply _ hi]
[GOAL]
case h.a
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
c : ComplexMeasure α
inst✝ : HaveLebesgueDecomposition c μ
i : Set α
hi : MeasurableSet i
⊢ (↑(singularPart c μ) i).re + ↑(Measure.withDensityᵥ μ fun a => (rnDeriv c μ a).re) i =
    { re := ↑(↑re c) i, im := ↑(↑im c) i }.re
[PROOFSTEP]
change (c.re.singularPart μ + μ.withDensityᵥ (c.re.rnDeriv μ)) i = _
[GOAL]
case h.a
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
c : ComplexMeasure α
inst✝ : HaveLebesgueDecomposition c μ
i : Set α
hi : MeasurableSet i
⊢ ↑(SignedMeasure.singularPart (↑re c) μ + Measure.withDensityᵥ μ (SignedMeasure.rnDeriv (↑re c) μ)) i =
    { re := ↑(↑re c) i, im := ↑(↑im c) i }.re
[PROOFSTEP]
rw [c.re.singularPart_add_withDensity_rnDeriv_eq μ]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
c : ComplexMeasure α
inst✝ : HaveLebesgueDecomposition c μ
i : Set α
hi : MeasurableSet i
⊢ Integrable fun a => (rnDeriv c μ a).re
[PROOFSTEP]
exact SignedMeasure.integrable_rnDeriv _ _
[GOAL]
case h.a
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
c : ComplexMeasure α
inst✝ : HaveLebesgueDecomposition c μ
i : Set α
hi : MeasurableSet i
⊢ (↑(singularPart c μ) i + ↑(Measure.withDensityᵥ μ (rnDeriv c μ)) i).im = { re := ↑(↑re c) i, im := ↑(↑im c) i }.im
[PROOFSTEP]
rw [Complex.add_im, withDensityᵥ_apply (c.integrable_rnDeriv μ) hi, ← IsROrC.im_eq_complex_im, ←
  integral_im (c.integrable_rnDeriv μ).integrableOn, IsROrC.im_eq_complex_im, ← withDensityᵥ_apply _ hi]
[GOAL]
case h.a
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
c : ComplexMeasure α
inst✝ : HaveLebesgueDecomposition c μ
i : Set α
hi : MeasurableSet i
⊢ (↑(singularPart c μ) i).im + ↑(Measure.withDensityᵥ μ fun a => (rnDeriv c μ a).im) i =
    { re := ↑(↑re c) i, im := ↑(↑im c) i }.im
[PROOFSTEP]
change (c.im.singularPart μ + μ.withDensityᵥ (c.im.rnDeriv μ)) i = _
[GOAL]
case h.a
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
c : ComplexMeasure α
inst✝ : HaveLebesgueDecomposition c μ
i : Set α
hi : MeasurableSet i
⊢ ↑(SignedMeasure.singularPart (↑im c) μ + Measure.withDensityᵥ μ (SignedMeasure.rnDeriv (↑im c) μ)) i =
    { re := ↑(↑re c) i, im := ↑(↑im c) i }.im
[PROOFSTEP]
rw [c.im.singularPart_add_withDensity_rnDeriv_eq μ]
[GOAL]
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
c : ComplexMeasure α
inst✝ : HaveLebesgueDecomposition c μ
i : Set α
hi : MeasurableSet i
⊢ Integrable fun a => (rnDeriv c μ a).im
[PROOFSTEP]
exact SignedMeasure.integrable_rnDeriv _ _
