Theorem: MeasureTheory.Measure.withDensity_rnDeriv_eq
File: Mathlib/MeasureTheory/Decomposition/RadonNikodym.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝ : μ.HaveLebesgueDecomposition ν
h : μ ≪ ν
⊢ ν.withDensity (μ.rnDeriv ν) = μ
state_after: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝ : μ.HaveLebesgueDecomposition ν
h : μ ≪ ν
⊢ μ.singularPart ν = 0
tactic: suffices μ.singularPart ν = 0 by
    conv_rhs => rw [haveLebesgueDecomposition_add μ ν, this, zero_add]
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝ : μ.HaveLebesgueDecomposition ν
h : μ ≪ ν
⊢ μ.singularPart ν = 0
state_after: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝ : μ.HaveLebesgueDecomposition ν
h : μ ≪ ν
⊢ (μ.singularPart ν) Set.univ = 0
tactic: suffices μ.singularPart ν Set.univ = 0 by simpa using this
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝ : μ.HaveLebesgueDecomposition ν
h : μ ≪ ν
⊢ (μ.singularPart ν) Set.univ = 0
state_after: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝ : μ.HaveLebesgueDecomposition ν
h : μ ≪ ν
h_sing : μ.singularPart ν ⟂ₘ ν
⊢ (μ.singularPart ν) Set.univ = 0
tactic: have h_sing := mutuallySingular_singularPart μ ν
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝ : μ.HaveLebesgueDecomposition ν
h : μ ≪ ν
h_sing : μ.singularPart ν ⟂ₘ ν
⊢ (μ.singularPart ν) Set.univ = 0
state_after: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝ : μ.HaveLebesgueDecomposition ν
h : μ ≪ ν
h_sing : μ.singularPart ν ⟂ₘ ν
⊢ (μ.singularPart ν) h_sing.nullSet + (μ.singularPart ν) h_sing.nullSetᶜ = 0
tactic: rw [← measure_add_measure_compl h_sing.measurableSet_nullSet]
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝ : μ.HaveLebesgueDecomposition ν
h : μ ≪ ν
h_sing : μ.singularPart ν ⟂ₘ ν
⊢ (μ.singularPart ν) h_sing.nullSet + (μ.singularPart ν) h_sing.nullSetᶜ = 0
state_after: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝ : μ.HaveLebesgueDecomposition ν
h : μ ≪ ν
h_sing : μ.singularPart ν ⟂ₘ ν
⊢ (μ.singularPart ν) h_sing.nullSetᶜ = 0
tactic: simp only [MutuallySingular.measure_nullSet, zero_add]
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝ : μ.HaveLebesgueDecomposition ν
h : μ ≪ ν
h_sing : μ.singularPart ν ⟂ₘ ν
⊢ (μ.singularPart ν) h_sing.nullSetᶜ = 0
state_after: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝ : μ.HaveLebesgueDecomposition ν
h : μ ≪ ν
h_sing : μ.singularPart ν ⟂ₘ ν
⊢ (μ.singularPart ν) h_sing.nullSetᶜ ≤ 0
tactic: refine le_antisymm ?_ (zero_le _)
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝ : μ.HaveLebesgueDecomposition ν
h : μ ≪ ν
h_sing : μ.singularPart ν ⟂ₘ ν
⊢ (μ.singularPart ν) h_sing.nullSetᶜ ≤ 0
state_after: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝ : μ.HaveLebesgueDecomposition ν
h : μ ≪ ν
h_sing : μ.singularPart ν ⟂ₘ ν
⊢ μ h_sing.nullSetᶜ = 0
tactic: refine (singularPart_le μ ν ?_ ).trans_eq ?_
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝ : μ.HaveLebesgueDecomposition ν
h : μ ≪ ν
h_sing : μ.singularPart ν ⟂ₘ ν
⊢ μ h_sing.nullSetᶜ = 0
state_after: no goals
tactic: exact h h_sing.measure_compl_nullSet