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

tactic: obtain ⟨g, gpos, gmeas, hg⟩ :
  ∃ g : α → ℝ≥0, (∀ x : α, 0 < g x) ∧ Measurable g ∧ (∫⁻ x : α, ↑(g x) ∂μ) < 1 :=
  exists_pos_lintegral_lt_of_sigmaFinite μ one_ne_zero
state_before: α : Type u_1
β : Type ?u.1850713
γ : Type ?u.1850716
δ : Type ?u.1850719
m✝ m0 : MeasurableSpace α
E : Type ?u.1850728
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
⊢ ∃ ν, IsFiniteMeasure ν ∧ μ ≪ ν

tactic: refine' ⟨μ.withDensity fun x => g x, isFiniteMeasure_withDensity hg.ne_top, _⟩
state_before: case intro.intro.intro
α : Type u_1
β : Type ?u.1850713
γ : Type ?u.1850716
δ : Type ?u.1850719
m✝ m0 : MeasurableSpace α
E : Type ?u.1850728
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
g : α → ℝ≥0
gpos : ∀ (x : α), 0 < g x
gmeas : Measurable g
hg : (∫⁻ (x : α), ↑(g x) ∂μ) < 1
⊢ ∃ ν, IsFiniteMeasure ν ∧ μ ≪ ν

tactic: have : μ = (μ.withDensity fun x => g x).withDensity fun x => (g x)⁻¹ := by
  have A : ((fun x : α => (g x : ℝ≥0∞)) * fun x : α => (g x : ℝ≥0∞)⁻¹) = 1 := by
    ext1 x
    exact ENNReal.mul_inv_cancel (ENNReal.coe_ne_zero.2 (gpos x).ne') ENNReal.coe_ne_top
  rw [← withDensity_mul _ gmeas.coe_nnreal_ennreal gmeas.coe_nnreal_ennreal.inv, A,
    withDensity_one]
state_before: case intro.intro.intro
α : Type u_1
β : Type ?u.1850713
γ : Type ?u.1850716
δ : Type ?u.1850719
m✝ m0 : MeasurableSpace α
E : Type ?u.1850728
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
g : α → ℝ≥0
gpos : ∀ (x : α), 0 < g x
gmeas : Measurable g
hg : (∫⁻ (x : α), ↑(g x) ∂μ) < 1
⊢ μ ≪ Measure.withDensity μ fun x => ↑(g x)

tactic: nth_rw 1 [this]
state_before: case intro.intro.intro
α : Type u_1
β : Type ?u.1850713
γ : Type ?u.1850716
δ : Type ?u.1850719
m✝ m0 : MeasurableSpace α
E : Type ?u.1850728
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
g : α → ℝ≥0
gpos : ∀ (x : α), 0 < g x
gmeas : Measurable g
hg : (∫⁻ (x : α), ↑(g x) ∂μ) < 1
this : μ = Measure.withDensity (Measure.withDensity μ fun x => ↑(g x)) fun x => (↑(g x))⁻¹
⊢ μ ≪ Measure.withDensity μ fun x => ↑(g x)

tactic: exact withDensity_absolutelyContinuous _ _
state_before: case intro.intro.intro
α : Type u_1
β : Type ?u.1850713
γ : Type ?u.1850716
δ : Type ?u.1850719
m✝ m0 : MeasurableSpace α
E : Type ?u.1850728
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
g : α → ℝ≥0
gpos : ∀ (x : α), 0 < g x
gmeas : Measurable g
hg : (∫⁻ (x : α), ↑(g x) ∂μ) < 1
this : μ = Measure.withDensity (Measure.withDensity μ fun x => ↑(g x)) fun x => (↑(g x))⁻¹
⊢ (Measure.withDensity (Measure.withDensity μ fun x => ↑(g x)) fun x => (↑(g x))⁻¹) ≪
    Measure.withDensity μ fun x => ↑(g x)

tactic: have A : ((fun x : α => (g x : ℝ≥0∞)) * fun x : α => (g x : ℝ≥0∞)⁻¹) = 1 := by
  ext1 x
  exact ENNReal.mul_inv_cancel (ENNReal.coe_ne_zero.2 (gpos x).ne') ENNReal.coe_ne_top
state_before: α : Type u_1
β : Type ?u.1850713
γ : Type ?u.1850716
δ : Type ?u.1850719
m✝ m0 : MeasurableSpace α
E : Type ?u.1850728
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
g : α → ℝ≥0
gpos : ∀ (x : α), 0 < g x
gmeas : Measurable g
hg : (∫⁻ (x : α), ↑(g x) ∂μ) < 1
⊢ μ = Measure.withDensity (Measure.withDensity μ fun x => ↑(g x)) fun x => (↑(g x))⁻¹

tactic: rw [← withDensity_mul _ gmeas.coe_nnreal_ennreal gmeas.coe_nnreal_ennreal.inv, A,
  withDensity_one]
state_before: α : Type u_1
β : Type ?u.1850713
γ : Type ?u.1850716
δ : Type ?u.1850719
m✝ m0 : MeasurableSpace α
E : Type ?u.1850728
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
g : α → ℝ≥0
gpos : ∀ (x : α), 0 < g x
gmeas : Measurable g
hg : (∫⁻ (x : α), ↑(g x) ∂μ) < 1
A : ((fun x => ↑(g x)) * fun x => (↑(g x))⁻¹) = 1
⊢ μ = Measure.withDensity (Measure.withDensity μ fun x => ↑(g x)) fun x => (↑(g x))⁻¹

tactic: ext1 x
state_before: α : Type u_1
β : Type ?u.1850713
γ : Type ?u.1850716
δ : Type ?u.1850719
m✝ m0 : MeasurableSpace α
E : Type ?u.1850728
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
g : α → ℝ≥0
gpos : ∀ (x : α), 0 < g x
gmeas : Measurable g
hg : (∫⁻ (x : α), ↑(g x) ∂μ) < 1
⊢ ((fun x => ↑(g x)) * fun x => (↑(g x))⁻¹) = 1

tactic: exact ENNReal.mul_inv_cancel (ENNReal.coe_ne_zero.2 (gpos x).ne') ENNReal.coe_ne_top
state_before: case h
α : Type u_1
β : Type ?u.1850713
γ : Type ?u.1850716
δ : Type ?u.1850719
m✝ m0 : MeasurableSpace α
E : Type ?u.1850728
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
g : α → ℝ≥0
gpos : ∀ (x : α), 0 < g x
gmeas : Measurable g
hg : (∫⁻ (x : α), ↑(g x) ∂μ) < 1
x : α
⊢ ((fun x => ↑(g x)) * fun x => (↑(g x))⁻¹) x = OfNat.ofNat 1 x