Theorem: Besicovitch.exists_disjoint_closedBall_covering_ae
File: Mathlib/MeasureTheory/Covering/Besicovitch.lean

tactic: let g x := f x ∩ Ioo 0 (R x)
state_before: α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
⊢ ∃ t r,
    Set.Countable t ∧
      t ⊆ s ∧
        (∀ (x : α), x ∈ t → r x ∈ f x ∩ Ioo 0 (R x)) ∧
          ↑↑μ (s \ ⋃ (x : α) (_ : x ∈ t), closedBall x (r x)) = 0 ∧ PairwiseDisjoint t fun x => closedBall x (r x)

tactic: have hg : ∀ x ∈ s, ∀ δ > 0, (g x ∩ Ioo 0 δ).Nonempty := by
  intro x hx δ δpos
  rcases hf x hx (min δ (R x)) (lt_min δpos (hR x hx)) with ⟨r, hr⟩
  exact
    ⟨r,
      ⟨⟨hr.1, hr.2.1, hr.2.2.trans_le (min_le_right _ _)⟩,
        ⟨hr.2.1, hr.2.2.trans_le (min_le_left _ _)⟩⟩⟩
state_before: α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
⊢ ∃ t r,
    Set.Countable t ∧
      t ⊆ s ∧
        (∀ (x : α), x ∈ t → r x ∈ f x ∩ Ioo 0 (R x)) ∧
          ↑↑μ (s \ ⋃ (x : α) (_ : x ∈ t), closedBall x (r x)) = 0 ∧ PairwiseDisjoint t fun x => closedBall x (r x)

tactic: rcases exists_disjoint_closedBall_covering_ae_aux μ g s hg with ⟨v, v_count, vs, vg, μv, v_disj⟩
state_before: α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
⊢ ∃ t r,
    Set.Countable t ∧
      t ⊆ s ∧
        (∀ (x : α), x ∈ t → r x ∈ f x ∩ Ioo 0 (R x)) ∧
          ↑↑μ (s \ ⋃ (x : α) (_ : x ∈ t), closedBall x (r x)) = 0 ∧ PairwiseDisjoint t fun x => closedBall x (r x)

tactic: let t := Prod.fst '' v
state_before: case intro.intro.intro.intro.intro
α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
⊢ ∃ t r,
    Set.Countable t ∧
      t ⊆ s ∧
        (∀ (x : α), x ∈ t → r x ∈ f x ∩ Ioo 0 (R x)) ∧
          ↑↑μ (s \ ⋃ (x : α) (_ : x ∈ t), closedBall x (r x)) = 0 ∧ PairwiseDisjoint t fun x => closedBall x (r x)

tactic: have : ∀ x ∈ t, ∃ r : ℝ, (x, r) ∈ v := by
  intro x hx
  rcases(mem_image _ _ _).1 hx with ⟨⟨p, q⟩, hp, rfl⟩
  exact ⟨q, hp⟩
state_before: case intro.intro.intro.intro.intro
α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
⊢ ∃ t r,
    Set.Countable t ∧
      t ⊆ s ∧
        (∀ (x : α), x ∈ t → r x ∈ f x ∩ Ioo 0 (R x)) ∧
          ↑↑μ (s \ ⋃ (x : α) (_ : x ∈ t), closedBall x (r x)) = 0 ∧ PairwiseDisjoint t fun x => closedBall x (r x)

tactic: choose! r hr using this
state_before: case intro.intro.intro.intro.intro
α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
this : ∀ (x : α), x ∈ t → ∃ r, (x, r) ∈ v
⊢ ∃ t r,
    Set.Countable t ∧
      t ⊆ s ∧
        (∀ (x : α), x ∈ t → r x ∈ f x ∩ Ioo 0 (R x)) ∧
          ↑↑μ (s \ ⋃ (x : α) (_ : x ∈ t), closedBall x (r x)) = 0 ∧ PairwiseDisjoint t fun x => closedBall x (r x)

tactic: refine' ⟨t, r, v_count.image _, _, _, _, _⟩
state_before: case intro.intro.intro.intro.intro
α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
r : α → ℝ
hr : ∀ (x : α), x ∈ t → (x, r x) ∈ v
im_t : (fun x => (x, r x)) '' t = v
⊢ ∃ t r,
    Set.Countable t ∧
      t ⊆ s ∧
        (∀ (x : α), x ∈ t → r x ∈ f x ∩ Ioo 0 (R x)) ∧
          ↑↑μ (s \ ⋃ (x : α) (_ : x ∈ t), closedBall x (r x)) = 0 ∧ PairwiseDisjoint t fun x => closedBall x (r x)

tactic: intro x hx δ δpos
state_before: α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
⊢ ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)

tactic: rcases hf x hx (min δ (R x)) (lt_min δpos (hR x hx)) with ⟨r, hr⟩
state_before: α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
x : α
hx : x ∈ s
δ : ℝ
δpos : δ > 0
⊢ Set.Nonempty (g x ∩ Ioo 0 δ)

tactic: exact
  ⟨r,
    ⟨⟨hr.1, hr.2.1, hr.2.2.trans_le (min_le_right _ _)⟩,
      ⟨hr.2.1, hr.2.2.trans_le (min_le_left _ _)⟩⟩⟩
state_before: case intro
α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
x : α
hx : x ∈ s
δ : ℝ
δpos : δ > 0
r : ℝ
hr : r ∈ f x ∩ Ioo 0 (min δ (R x))
⊢ Set.Nonempty (g x ∩ Ioo 0 δ)

tactic: intro x hx
state_before: α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
⊢ ∀ (x : α), x ∈ t → ∃ r, (x, r) ∈ v

tactic: rcases(mem_image _ _ _).1 hx with ⟨⟨p, q⟩, hp, rfl⟩
state_before: α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
x : α
hx : x ∈ t
⊢ ∃ r, (x, r) ∈ v

tactic: exact ⟨q, hp⟩
state_before: case intro.mk.intro
α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
p : α
q : ℝ
hp : (p, q) ∈ v
hx : (p, q).fst ∈ t
⊢ ∃ r, ((p, q).fst, r) ∈ v

tactic: have I : ∀ p : α × ℝ, p ∈ v → 0 ≤ p.2 := fun p hp => (vg p hp).2.1.le
state_before: α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
r : α → ℝ
hr : ∀ (x : α), x ∈ t → (x, r x) ∈ v
⊢ (fun x => (x, r x)) '' t = v

tactic: apply Subset.antisymm
state_before: α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
r : α → ℝ
hr : ∀ (x : α), x ∈ t → (x, r x) ∈ v
I : ∀ (p : α × ℝ), p ∈ v → 0 ≤ p.snd
⊢ (fun x => (x, r x)) '' t = v

tactic: simp only [image_subset_iff]
state_before: case h₁
α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
r : α → ℝ
hr : ∀ (x : α), x ∈ t → (x, r x) ∈ v
I : ∀ (p : α × ℝ), p ∈ v → 0 ≤ p.snd
⊢ (fun x => (x, r x)) '' t ⊆ v

tactic: rintro ⟨x, p⟩ hxp
state_before: case h₁
α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
r : α → ℝ
hr : ∀ (x : α), x ∈ t → (x, r x) ∈ v
I : ∀ (p : α × ℝ), p ∈ v → 0 ≤ p.snd
⊢ v ⊆ Prod.fst ⁻¹' ((fun x => (x, r x)) ⁻¹' v)

tactic: simp only [mem_preimage]
state_before: case h₁.mk
α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
r : α → ℝ
hr : ∀ (x : α), x ∈ t → (x, r x) ∈ v
I : ∀ (p : α × ℝ), p ∈ v → 0 ≤ p.snd
x : α
p : ℝ
hxp : (x, p) ∈ v
⊢ (x, p) ∈ Prod.fst ⁻¹' ((fun x => (x, r x)) ⁻¹' v)

tactic: exact hr _ (mem_image_of_mem _ hxp)
state_before: case h₁.mk
α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
r : α → ℝ
hr : ∀ (x : α), x ∈ t → (x, r x) ∈ v
I : ∀ (p : α × ℝ), p ∈ v → 0 ≤ p.snd
x : α
p : ℝ
hxp : (x, p) ∈ v
⊢ (x, r x) ∈ v

tactic: rintro ⟨x, p⟩ hxp
state_before: case h₂
α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
r : α → ℝ
hr : ∀ (x : α), x ∈ t → (x, r x) ∈ v
I : ∀ (p : α × ℝ), p ∈ v → 0 ≤ p.snd
⊢ v ⊆ (fun x => (x, r x)) '' t

tactic: have hxrx : (x, r x) ∈ v := hr _ (mem_image_of_mem _ hxp)
state_before: case h₂.mk
α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
r : α → ℝ
hr : ∀ (x : α), x ∈ t → (x, r x) ∈ v
I : ∀ (p : α × ℝ), p ∈ v → 0 ≤ p.snd
x : α
p : ℝ
hxp : (x, p) ∈ v
⊢ (x, p) ∈ (fun x => (x, r x)) '' t

tactic: have : p = r x := by
  by_contra h
  have A : (x, p) ≠ (x, r x) := by
    simpa only [true_and_iff, Prod.mk.inj_iff, eq_self_iff_true, Ne.def] using h
  have H := v_disj hxp hxrx A
  contrapose H
  rw [not_disjoint_iff_nonempty_inter]
  refine' ⟨x, by simp (config := { proj := false }) [I _ hxp, I _ hxrx]⟩
state_before: case h₂.mk
α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
r : α → ℝ
hr : ∀ (x : α), x ∈ t → (x, r x) ∈ v
I : ∀ (p : α × ℝ), p ∈ v → 0 ≤ p.snd
x : α
p : ℝ
hxp : (x, p) ∈ v
hxrx : (x, r x) ∈ v
⊢ (x, p) ∈ (fun x => (x, r x)) '' t

tactic: rw [this]
state_before: case h₂.mk
α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
r : α → ℝ
hr : ∀ (x : α), x ∈ t → (x, r x) ∈ v
I : ∀ (p : α × ℝ), p ∈ v → 0 ≤ p.snd
x : α
p : ℝ
hxp : (x, p) ∈ v
hxrx : (x, r x) ∈ v
this : p = r x
⊢ (x, p) ∈ (fun x => (x, r x)) '' t

tactic: apply mem_image_of_mem
state_before: case h₂.mk
α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
r : α → ℝ
hr : ∀ (x : α), x ∈ t → (x, r x) ∈ v
I : ∀ (p : α × ℝ), p ∈ v → 0 ≤ p.snd
x : α
p : ℝ
hxp : (x, p) ∈ v
hxrx : (x, r x) ∈ v
this : p = r x
⊢ (x, r x) ∈ (fun x => (x, r x)) '' t

tactic: exact mem_image_of_mem _ hxp
state_before: case h₂.mk.h
α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
r : α → ℝ
hr : ∀ (x : α), x ∈ t → (x, r x) ∈ v
I : ∀ (p : α × ℝ), p ∈ v → 0 ≤ p.snd
x : α
p : ℝ
hxp : (x, p) ∈ v
hxrx : (x, r x) ∈ v
this : p = r x
⊢ x ∈ t

tactic: by_contra h
state_before: α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
r : α → ℝ
hr : ∀ (x : α), x ∈ t → (x, r x) ∈ v
I : ∀ (p : α × ℝ), p ∈ v → 0 ≤ p.snd
x : α
p : ℝ
hxp : (x, p) ∈ v
hxrx : (x, r x) ∈ v
⊢ p = r x

tactic: have A : (x, p) ≠ (x, r x) := by
  simpa only [true_and_iff, Prod.mk.inj_iff, eq_self_iff_true, Ne.def] using h
state_before: α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
r : α → ℝ
hr : ∀ (x : α), x ∈ t → (x, r x) ∈ v
I : ∀ (p : α × ℝ), p ∈ v → 0 ≤ p.snd
x : α
p : ℝ
hxp : (x, p) ∈ v
hxrx : (x, r x) ∈ v
h : ¬p = r x
⊢ False

tactic: have H := v_disj hxp hxrx A
state_before: α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
r : α → ℝ
hr : ∀ (x : α), x ∈ t → (x, r x) ∈ v
I : ∀ (p : α × ℝ), p ∈ v → 0 ≤ p.snd
x : α
p : ℝ
hxp : (x, p) ∈ v
hxrx : (x, r x) ∈ v
h : ¬p = r x
A : (x, p) ≠ (x, r x)
⊢ False

tactic: contrapose H
state_before: α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
r : α → ℝ
hr : ∀ (x : α), x ∈ t → (x, r x) ∈ v
I : ∀ (p : α × ℝ), p ∈ v → 0 ≤ p.snd
x : α
p : ℝ
hxp : (x, p) ∈ v
hxrx : (x, r x) ∈ v
h : ¬p = r x
A : (x, p) ≠ (x, r x)
H : (Disjoint on fun p => closedBall p.fst p.snd) (x, p) (x, r x)
⊢ False

tactic: rw [not_disjoint_iff_nonempty_inter]
state_before: α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
r : α → ℝ
hr : ∀ (x : α), x ∈ t → (x, r x) ∈ v
I : ∀ (p : α × ℝ), p ∈ v → 0 ≤ p.snd
x : α
p : ℝ
hxp : (x, p) ∈ v
hxrx : (x, r x) ∈ v
h : ¬p = r x
A : (x, p) ≠ (x, r x)
H : ¬False
⊢ ¬(Disjoint on fun p => closedBall p.fst p.snd) (x, p) (x, r x)

tactic: refine' ⟨x, by simp (config := { proj := false }) [I _ hxp, I _ hxrx]⟩
state_before: α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
r : α → ℝ
hr : ∀ (x : α), x ∈ t → (x, r x) ∈ v
I : ∀ (p : α × ℝ), p ∈ v → 0 ≤ p.snd
x : α
p : ℝ
hxp : (x, p) ∈ v
hxrx : (x, r x) ∈ v
h : ¬p = r x
A : (x, p) ≠ (x, r x)
H : ¬False
⊢ Set.Nonempty ((fun p => closedBall p.fst p.snd) (x, p) ∩ (fun p => closedBall p.fst p.snd) (x, r x))

tactic: simpa only [true_and_iff, Prod.mk.inj_iff, eq_self_iff_true, Ne.def] using h
state_before: α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
r : α → ℝ
hr : ∀ (x : α), x ∈ t → (x, r x) ∈ v
I : ∀ (p : α × ℝ), p ∈ v → 0 ≤ p.snd
x : α
p : ℝ
hxp : (x, p) ∈ v
hxrx : (x, r x) ∈ v
h : ¬p = r x
⊢ (x, p) ≠ (x, r x)

tactic: simp (config := { proj := false }) [I _ hxp, I _ hxrx]
state_before: α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
r : α → ℝ
hr : ∀ (x : α), x ∈ t → (x, r x) ∈ v
I : ∀ (p : α × ℝ), p ∈ v → 0 ≤ p.snd
x : α
p : ℝ
hxp : (x, p) ∈ v
hxrx : (x, r x) ∈ v
h : ¬p = r x
A : (x, p) ≠ (x, r x)
H : ¬False
⊢ x ∈ (fun p => closedBall p.fst p.snd) (x, p) ∩ (fun p => closedBall p.fst p.snd) (x, r x)

tactic: intro x hx
state_before: case intro.intro.intro.intro.intro.refine'_1
α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
r : α → ℝ
hr : ∀ (x : α), x ∈ t → (x, r x) ∈ v
im_t : (fun x => (x, r x)) '' t = v
⊢ t ⊆ s

tactic: rcases (mem_image _ _ _).1 hx with ⟨⟨p, q⟩, hp, rfl⟩
state_before: case intro.intro.intro.intro.intro.refine'_1
α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
r : α → ℝ
hr : ∀ (x : α), x ∈ t → (x, r x) ∈ v
im_t : (fun x => (x, r x)) '' t = v
x : α
hx : x ∈ t
⊢ x ∈ s

tactic: exact vs _ hp
state_before: case intro.intro.intro.intro.intro.refine'_1.intro.mk.intro
α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
r : α → ℝ
hr : ∀ (x : α), x ∈ t → (x, r x) ∈ v
im_t : (fun x => (x, r x)) '' t = v
p : α
q : ℝ
hp : (p, q) ∈ v
hx : (p, q).fst ∈ t
⊢ (p, q).fst ∈ s

tactic: intro x hx
state_before: case intro.intro.intro.intro.intro.refine'_2
α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
r : α → ℝ
hr : ∀ (x : α), x ∈ t → (x, r x) ∈ v
im_t : (fun x => (x, r x)) '' t = v
⊢ ∀ (x : α), x ∈ t → r x ∈ f x ∩ Ioo 0 (R x)

tactic: rcases (mem_image _ _ _).1 hx with ⟨⟨p, q⟩, _, rfl⟩
state_before: case intro.intro.intro.intro.intro.refine'_2
α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
r : α → ℝ
hr : ∀ (x : α), x ∈ t → (x, r x) ∈ v
im_t : (fun x => (x, r x)) '' t = v
x : α
hx : x ∈ t
⊢ r x ∈ f x ∩ Ioo 0 (R x)

tactic: exact vg _ (hr _ hx)
state_before: case intro.intro.intro.intro.intro.refine'_2.intro.mk.intro
α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
r : α → ℝ
hr : ∀ (x : α), x ∈ t → (x, r x) ∈ v
im_t : (fun x => (x, r x)) '' t = v
p : α
q : ℝ
left✝ : (p, q) ∈ v
hx : (p, q).fst ∈ t
⊢ r (p, q).fst ∈ f (p, q).fst ∩ Ioo 0 (R (p, q).fst)

tactic: have :
  (⋃ (x : α) (_ : x ∈ t), closedBall x (r x)) =
    ⋃ (p : α × ℝ) (_ : p ∈ (fun x => (x, r x)) '' t), closedBall p.1 p.2 :=
  by conv_rhs => rw [biUnion_image]
state_before: case intro.intro.intro.intro.intro.refine'_3
α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
r : α → ℝ
hr : ∀ (x : α), x ∈ t → (x, r x) ∈ v
im_t : (fun x => (x, r x)) '' t = v
⊢ ↑↑μ (s \ ⋃ (x : α) (_ : x ∈ t), closedBall x (r x)) = 0

tactic: rw [this, im_t]
state_before: case intro.intro.intro.intro.intro.refine'_3
α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
r : α → ℝ
hr : ∀ (x : α), x ∈ t → (x, r x) ∈ v
im_t : (fun x => (x, r x)) '' t = v
this :
  (⋃ (x : α) (_ : x ∈ t), closedBall x (r x)) = ⋃ (p : α × ℝ) (_ : p ∈ (fun x => (x, r x)) '' t), closedBall p.fst p.snd
⊢ ↑↑μ (s \ ⋃ (x : α) (_ : x ∈ t), closedBall x (r x)) = 0

tactic: exact μv
state_before: case intro.intro.intro.intro.intro.refine'_3
α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
r : α → ℝ
hr : ∀ (x : α), x ∈ t → (x, r x) ∈ v
im_t : (fun x => (x, r x)) '' t = v
this :
  (⋃ (x : α) (_ : x ∈ t), closedBall x (r x)) = ⋃ (p : α × ℝ) (_ : p ∈ (fun x => (x, r x)) '' t), closedBall p.fst p.snd
⊢ ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0

tactic: conv_rhs => rw [biUnion_image]
state_before: α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
r : α → ℝ
hr : ∀ (x : α), x ∈ t → (x, r x) ∈ v
im_t : (fun x => (x, r x)) '' t = v
⊢ (⋃ (x : α) (_ : x ∈ t), closedBall x (r x)) = ⋃ (p : α × ℝ) (_ : p ∈ (fun x => (x, r x)) '' t), closedBall p.fst p.snd

tactic: have A : InjOn (fun x : α => (x, r x)) t := by
  simp (config := { contextual := true }) only [InjOn, Prod.mk.inj_iff, imp_true_iff,
    eq_self_iff_true]
state_before: case intro.intro.intro.intro.intro.refine'_4
α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
r : α → ℝ
hr : ∀ (x : α), x ∈ t → (x, r x) ∈ v
im_t : (fun x => (x, r x)) '' t = v
⊢ PairwiseDisjoint t fun x => closedBall x (r x)

tactic: rwa [← im_t, A.pairwiseDisjoint_image] at v_disj
state_before: case intro.intro.intro.intro.intro.refine'_4
α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
r : α → ℝ
hr : ∀ (x : α), x ∈ t → (x, r x) ∈ v
im_t : (fun x => (x, r x)) '' t = v
A : InjOn (fun x => (x, r x)) t
⊢ PairwiseDisjoint t fun x => closedBall x (r x)

tactic: simp (config := { contextual := true }) only [InjOn, Prod.mk.inj_iff, imp_true_iff,
  eq_self_iff_true]
state_before: α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
f : α → Set ℝ
s : Set α
hf : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (f x ∩ Ioo 0 δ)
R : α → ℝ
hR : ∀ (x : α), x ∈ s → 0 < R x
g : α → Set ℝ := fun x => f x ∩ Ioo 0 (R x)
hg : ∀ (x : α), x ∈ s → ∀ (δ : ℝ), δ > 0 → Set.Nonempty (g x ∩ Ioo 0 δ)
v : Set (α × ℝ)
v_count : Set.Countable v
vs : ∀ (p : α × ℝ), p ∈ v → p.fst ∈ s
vg : ∀ (p : α × ℝ), p ∈ v → p.snd ∈ g p.fst
μv : ↑↑μ (s \ ⋃ (p : α × ℝ) (_ : p ∈ v), closedBall p.fst p.snd) = 0
v_disj : PairwiseDisjoint v fun p => closedBall p.fst p.snd
t : Set α := Prod.fst '' v
r : α → ℝ
hr : ∀ (x : α), x ∈ t → (x, r x) ∈ v
im_t : (fun x => (x, r x)) '' t = v
⊢ InjOn (fun x => (x, r x)) t