awhecmu/canonical-drafter-extract-mathlib huggingface dataset:
-- Lean 4 proof step from Mathlib.MeasureTheory.Covering.Besicovitch (goal)
Goal:
α : Type u_1
inst : MetricSpace α
inst_1 : SecondCountableTopology α
inst_2 : MeasurableSpace α
inst_3 : OpensMeasurableSpace α
inst_4 : HasBesicovitchCovering α
μ : Measure α
inst_5 : IsFiniteMeasure μ
f : α → Set ℝ
s : Set α
hf : ∀ x ∈ s, ∀ δ > 0, (f x ∩ Ioo 0 δ).Nonempty
⊢ ∃ (t : Set (α × ℝ)),
    t.Countable ∧
      (∀ p ∈ t, p.1 ∈ s) ∧
        (∀ p ∈ t, p.2 ∈ f p.1) ∧
          Eq (α := ℝ≥0∞) ((μ : (a : Set α) → ℝ≥0∞) (s \ ⋃ p ∈ t, closedBall p.1 p.2) : ℝ≥0∞) (0 : ℝ≥0∞) ∧
            t.PairwiseDisjoint (α := Set α) fun (p : α × ℝ) ↦ closedBall p.1 p.2
have rcases : ∀ (N : ℕ) (τ : ℝ) (hτ : 1 < τ) (hN : IsEmpty.{u_1 + 1} (SatelliteConfig α N τ)),
  ∃ (t : Set (α × ℝ)),
    t.Countable ∧
      (∀ p ∈ t, p.1 ∈ s) ∧
        (∀ p ∈ t, p.2 ∈ f p.1) ∧
          Eq (α := ℝ≥0∞) ((μ : (a : Set α) → ℝ≥0∞) (s \ ⋃ p ∈ t, closedBall p.1 p.2) : ℝ≥0∞) (0 : ℝ≥0∞) ∧
            t.PairwiseDisjoint (α := Set α) fun (p : α × ℝ) ↦ closedBall p.1 p.2
Tactic: rcases HasBesicovitchCovering.no_satelliteConfig (α := α) with ⟨N, τ, hτ, hN⟩
-- Lean 4 proof step from Mathlib.MeasureTheory.Covering.Besicovitch (goal)
Goal:
α : Type u_1
inst : MetricSpace α
inst_1 : SecondCountableTopology α
inst_2 : MeasurableSpace α
inst_3 : OpensMeasurableSpace α
inst_4 : HasBesicovitchCovering α
μ : Measure α
inst_5 : IsFiniteMeasure μ
f : α → Set ℝ
s : Set α
hf : ∀ x ∈ s, ∀ δ > 0, (f x ∩ Ioo 0 δ).Nonempty
N : ℕ
τ : ℝ
hτ : 1 < τ
hN : IsEmpty.{u_1 + 1} (SatelliteConfig α N τ)
P : Finset (α × ℝ) → Prop :=
  fun (t : Finset (α × ℝ)) ↦
    ((↑t : Set (α × ℝ)).PairwiseDisjoint (α := Set α) fun (p : α × ℝ) ↦ closedBall p.1 p.2) ∧
      (∀ p ∈ t, p.1 ∈ s) ∧ ∀ p ∈ t, p.2 ∈ f p.1
t : Finset (α × ℝ)
ht : P t
⊢ ∃ (u : Finset (α × ℝ)),
    t ⊆ u ∧
      P u ∧
        (μ : (a : Set α) → ℝ≥0∞) (s \ ⋃ p ∈ u, closedBall p.1 p.2) ≤
          HMul.hMul (β := ℝ≥0∞) ((↑N : ℝ≥0∞) / HAdd.hAdd (α := ℝ≥0∞) (↑N : ℝ≥0∞) 1)
            ((μ : (a : Set α) → ℝ≥0∞) (s \ ⋃ p ∈ t, closedBall p.1 p.2) : ℝ≥0∞)
have set : let B : Set α := ⋃ p ∈ t, closedBall p.1 p.2;
∀ (hB : B = ⋃ p ∈ t, closedBall p.1 p.2),
  ∃ (u : Finset (α × ℝ)),
    t ⊆ u ∧
      P u ∧
        (μ : (a : Set α) → ℝ≥0∞) (s \ ⋃ p ∈ u, closedBall p.1 p.2) ≤
          HMul.hMul (β := ℝ≥0∞) ((↑N : ℝ≥0∞) / HAdd.hAdd (α := ℝ≥0∞) (↑N : ℝ≥0∞) 1)
            ((μ : (a : Set α) → ℝ≥0∞) (s \ B) : ℝ≥0∞)
Tactic: set B := ⋃ (p : α × ℝ) (_ : p ∈ t), closedBall p.1 p.2 with hB
-- Lean 4 proof step from Mathlib.MeasureTheory.Covering.Besicovitch (hypothesis)
Goal:
α : Type u_1
inst : MetricSpace α
inst_1 : SecondCountableTopology α
inst_2 : MeasurableSpace α
inst_3 : OpensMeasurableSpace α
inst_4 : HasBesicovitchCovering α
μ : Measure α
inst_5 : IsFiniteMeasure μ
f : α → Set ℝ
s : Set α
hf : ∀ x ∈ s, ∀ δ > 0, (f x ∩ Ioo 0 δ).Nonempty
N : ℕ
τ : ℝ
hτ : 1 < τ
hN : IsEmpty.{u_1 + 1} (SatelliteConfig α N τ)
P : Finset (α × ℝ) → Prop :=
  fun (t : Finset (α × ℝ)) ↦
    ((↑t : Set (α × ℝ)).PairwiseDisjoint (α := Set α) fun (p : α × ℝ) ↦ closedBall p.1 p.2) ∧
      (∀ p ∈ t, p.1 ∈ s) ∧ ∀ p ∈ t, p.2 ∈ f p.1
t : Finset (α × ℝ)
ht : P t
B : Set α := ⋃ p ∈ t, closedBall p.1 p.2
hB : B = ⋃ p ∈ t, closedBall p.1 p.2
⊢ ∃ (u : Finset (α × ℝ)),
    t ⊆ u ∧
      P u ∧
        (μ : (a : Set α) → ℝ≥0∞) (s \ ⋃ p ∈ u, closedBall p.1 p.2) ≤
          HMul.hMul (β := ℝ≥0∞) ((↑N : ℝ≥0∞) / HAdd.hAdd (α := ℝ≥0∞) (↑N : ℝ≥0∞) 1)
            ((μ : (a : Set α) → ℝ≥0∞) (s \ B) : ℝ≥0∞)
have B_closed : IsClosed[PseudoMetricSpace.toUniformSpace.toTopologicalSpace] B
Tactic: have B_closed : IsClosed B := isClosed_biUnion_finset fun i _ => isClosed_closedBall
-- Lean 4 proof step from Mathlib.MeasureTheory.Covering.Besicovitch (hypothesis)
Goal:
α : Type u_1
inst : MetricSpace α
inst_1 : SecondCountableTopology α
inst_2 : MeasurableSpace α
inst_3 : OpensMeasurableSpace α
inst_4 : HasBesicovitchCovering α
μ : Measure α
inst_5 : IsFiniteMeasure μ
f : α → Set ℝ
s : Set α
hf : ∀ x ∈ s, ∀ δ > 0, (f x ∩ Ioo 0 δ).Nonempty
N : ℕ
τ : ℝ
hτ : 1 < τ
hN : IsEmpty.{u_1 + 1} (SatelliteConfig α N τ)
P : Finset (α × ℝ) → Prop :=
  fun (t : Finset (α × ℝ)) ↦
    ((↑t : Set (α × ℝ)).PairwiseDisjoint (α := Set α) fun (p : α × ℝ) ↦ closedBall p.1 p.2) ∧
      (∀ p ∈ t, p.1 ∈ s) ∧ ∀ p ∈ t, p.2 ∈ f p.1
t : Finset (α × ℝ)
ht : P t
B : Set α := ⋃ p ∈ t, closedBall p.1 p.2
hB : B = ⋃ p ∈ t, closedBall p.1 p.2
B_closed : IsClosed[PseudoMetricSpace.toUniformSpace.toTopologicalSpace] B
s' : Set α := s \ B
x : α
hx : x ∈ s'
⊢ ∃ r ∈ f x ∩ Ioo 0 1, Disjoint B (closedBall x r)
have xs : x ∈ s
Tactic: have xs : x ∈ s := ((mem_diff x).1 hx).1
-- Lean 4 proof step from Mathlib.MeasureTheory.Covering.Besicovitch (goal)
Goal:
α : Type u_1
inst : MetricSpace α
inst_1 : SecondCountableTopology α
inst_2 : MeasurableSpace α
inst_3 : OpensMeasurableSpace α
inst_4 : HasBesicovitchCovering α
μ : Measure α
inst_5 : IsFiniteMeasure μ
f : α → Set ℝ
s : Set α
hf : ∀ x ∈ s, ∀ δ > 0, (f x ∩ Ioo 0 δ).Nonempty
N : ℕ
τ : ℝ
hτ : 1 < τ
hN : IsEmpty.{u_1 + 1} (SatelliteConfig α N τ)
P : Finset (α × ℝ) → Prop :=
  fun (t : Finset (α × ℝ)) ↦
    ((↑t : Set (α × ℝ)).PairwiseDisjoint (α := Set α) fun (p : α × ℝ) ↦ closedBall p.1 p.2) ∧
      (∀ p ∈ t, p.1 ∈ s) ∧ ∀ p ∈ t, p.2 ∈ f p.1
t : Finset (α × ℝ)
ht : P t
B : Set α := ⋃ p ∈ t, closedBall p.1 p.2
hB : B = ⋃ p ∈ t, closedBall p.1 p.2
B_closed : IsClosed[PseudoMetricSpace.toUniformSpace.toTopologicalSpace] B
s' : Set α := s \ B
x : α
hx : x ∈ s'
xs : x ∈ s
⊢ ∃ r ∈ f x ∩ Ioo 0 1, Disjoint B (closedBall x r)
have inl : ∀ (hB : B = ∅), ∃ r ∈ f x ∩ Ioo 0 1, Disjoint B (closedBall x r)
Tactic: rcases eq_empty_or_nonempty B with (hB | hB)
-- Lean 4 proof step from Mathlib.MeasureTheory.Covering.Besicovitch (goal)
Goal:
α : Type u_1
inst : MetricSpace α
inst_1 : SecondCountableTopology α
inst_2 : MeasurableSpace α
inst_3 : OpensMeasurableSpace α
inst_4 : HasBesicovitchCovering α
μ : Measure α
inst_5 : IsFiniteMeasure μ
f : α → Set ℝ
s : Set α
hf : ∀ x ∈ s, ∀ δ > 0, (f x ∩ Ioo 0 δ).Nonempty
N : ℕ
τ : ℝ
hτ : 1 < τ
hN : IsEmpty.{u_1 + 1} (SatelliteConfig α N τ)
P : Finset (α × ℝ) → Prop :=
  fun (t : Finset (α × ℝ)) ↦
    ((↑t : Set (α × ℝ)).PairwiseDisjoint (α := Set α) fun (p : α × ℝ) ↦ closedBall p.1 p.2) ∧
      (∀ p ∈ t, p.1 ∈ s) ∧ ∀ p ∈ t, p.2 ∈ f p.1
t : Finset (α × ℝ)
ht : P t
B : Set α := ⋃ p ∈ t, closedBall p.1 p.2
hB : B = ⋃ p ∈ t, closedBall p.1 p.2
B_closed : IsClosed[PseudoMetricSpace.toUniformSpace.toTopologicalSpace] B
s' : Set α := s \ B
x : α
hx : x ∈ s'
xs : x ∈ s
inl : ∀ (hB : B = ∅), ∃ r ∈ f x ∩ Ioo 0 1, Disjoint B (closedBall x r)
⊢ ∃ r ∈ f x ∩ Ioo 0 1, Disjoint B (closedBall x r)
have inr : ∀ (hB : B.Nonempty), ∃ r ∈ f x ∩ Ioo 0 1, Disjoint B (closedBall x r)
Tactic: rcases eq_empty_or_nonempty B with (hB | hB)
-- Lean 4 proof step from Mathlib.MeasureTheory.Covering.Besicovitch (goal)
Goal:
α : Type u_1
inst : MetricSpace α
inst_1 : SecondCountableTopology α
inst_2 : MeasurableSpace α
inst_3 : OpensMeasurableSpace α
inst_4 : HasBesicovitchCovering α
μ : Measure α
inst_5 : IsFiniteMeasure μ
f : α → Set ℝ
s : Set α
hf : ∀ x ∈ s, ∀ δ > 0, (f x ∩ Ioo 0 δ).Nonempty
N : ℕ
τ : ℝ
hτ : 1 < τ
hN : IsEmpty.{u_1 + 1} (SatelliteConfig α N τ)
P : Finset (α × ℝ) → Prop :=
  fun (t : Finset (α × ℝ)) ↦
    ((↑t : Set (α × ℝ)).PairwiseDisjoint (α := Set α) fun (p : α × ℝ) ↦ closedBall p.1 p.2) ∧
      (∀ p ∈ t, p.1 ∈ s) ∧ ∀ p ∈ t, p.2 ∈ f p.1
t : Finset (α × ℝ)
ht : P t
B : Set α := ⋃ p ∈ t, closedBall p.1 p.2
hB_1 : B = ⋃ p ∈ t, closedBall p.1 p.2
B_closed : IsClosed[PseudoMetricSpace.toUniformSpace.toTopologicalSpace] B
s' : Set α := s \ B
x : α
hx : x ∈ s'
xs : x ∈ s
hB : B = ∅
⊢ ∃ r ∈ f x ∩ Ioo 0 1, Disjoint B (closedBall x r)
have inl : ∀ (r : ℝ) (hr : r ∈ f x) (h'r : Membership.mem (γ := Set ℝ) (Ioo 0 1) r),
  ∃ r ∈ f x ∩ Ioo 0 1, Disjoint B (closedBall x r)
Tactic: rcases hf x xs 1 zero_lt_one with ⟨r, hr, h'r⟩
-- Lean 4 proof step from Mathlib.MeasureTheory.Covering.Besicovitch (hypothesis)
Goal:
α : Type u_1
inst : MetricSpace α
inst_1 : SecondCountableTopology α
inst_2 : MeasurableSpace α
inst_3 : OpensMeasurableSpace α
inst_4 : HasBesicovitchCovering α
μ : Measure α
inst_5 : IsFiniteMeasure μ
f : α → Set ℝ
s : Set α
hf : ∀ x ∈ s, ∀ δ > 0, (f x ∩ Ioo 0 δ).Nonempty
N : ℕ
τ : ℝ
hτ : 1 < τ
hN : IsEmpty.{u_1 + 1} (SatelliteConfig α N τ)
P : Finset (α × ℝ) → Prop :=
  fun (t : Finset (α × ℝ)) ↦
    ((↑t : Set (α × ℝ)).PairwiseDisjoint (α := Set α) fun (p : α × ℝ) ↦ closedBall p.1 p.2) ∧
      (∀ p ∈ t, p.1 ∈ s) ∧ ∀ p ∈ t, p.2 ∈ f p.1
t : Finset (α × ℝ)
ht : P t
B : Set α := ⋃ p ∈ t, closedBall p.1 p.2
hB_1 : B = ⋃ p ∈ t, closedBall p.1 p.2
B_closed : IsClosed[PseudoMetricSpace.toUniformSpace.toTopologicalSpace] B
s' : Set α := s \ B
x : α
hx : x ∈ s'
xs : x ∈ s
hB : B.Nonempty
r : ℝ := infDist x B
⊢ ∃ r ∈ f x ∩ Ioo 0 1, Disjoint B (closedBall x r)
have this : 0 < min r 1
Tactic: have : 0 < min r 1 :=
          lt_min ((B_closed.notMem_iff_infDist_pos hB).1 ((mem_diff x).1 hx).2) zero_lt_one
-- Lean 4 proof step from Mathlib.MeasureTheory.Covering.Besicovitch (goal)
Goal:
α : Type u_1
inst : MetricSpace α
inst_1 : SecondCountableTopology α
inst_2 : MeasurableSpace α
inst_3 : OpensMeasurableSpace α
inst_4 : HasBesicovitchCovering α
μ : Measure α
inst_5 : IsFiniteMeasure μ
f : α → Set ℝ
s : Set α
hf : ∀ x ∈ s, ∀ δ > 0, (f x ∩ Ioo 0 δ).Nonempty
N : ℕ
τ : ℝ
hτ : 1 < τ
hN : IsEmpty.{u_1 + 1} (SatelliteConfig α N τ)
P : Finset (α × ℝ) → Prop :=
  fun (t : Finset (α × ℝ)) ↦
    ((↑t : Set (α × ℝ)).PairwiseDisjoint (α := Set α) fun (p : α × ℝ) ↦ closedBall p.1 p.2) ∧
      (∀ p ∈ t, p.1 ∈ s) ∧ ∀ p ∈ t, p.2 ∈ f p.1
t : Finset (α × ℝ)
ht : P t
B : Set α := ⋃ p ∈ t, closedBall p.1 p.2
hB_1 : B = ⋃ p ∈ t, closedBall p.1 p.2
B_closed : IsClosed[PseudoMetricSpace.toUniformSpace.toTopologicalSpace] B
s' : Set α := s \ B
x : α
hx : x ∈ s'
xs : x ∈ s
hB : B.Nonempty
r : ℝ := infDist x B
this : 0 < min r 1
⊢ ∃ r ∈ f x ∩ Ioo 0 1, Disjoint B (closedBall x r)
have inr : ∀ (r_1 : ℝ) (hr : r_1 ∈ f x) (h'r : r_1 ∈ Ioo 0 (min r 1)), ∃ r ∈ f x ∩ Ioo 0 1, Disjoint B (closedBall x r)
Tactic: rcases hf x xs _ this with ⟨r, hr, h'r⟩
-- Lean 4 proof step from Mathlib.MeasureTheory.Covering.Besicovitch (goal)
Goal:
α : Type u_1
inst : MetricSpace α
inst_1 : SecondCountableTopology α
inst_2 : MeasurableSpace α
inst_3 : OpensMeasurableSpace α
inst_4 : HasBesicovitchCovering α
μ : Measure α
inst_5 : IsFiniteMeasure μ
f : α → Set ℝ
s : Set α
hf : ∀ x ∈ s, ∀ δ > 0, (f x ∩ Ioo 0 δ).Nonempty
N : ℕ
τ : ℝ
hτ : 1 < τ
hN : IsEmpty.{u_1 + 1} (SatelliteConfig α N τ)
P : Finset (α × ℝ) → Prop :=
  fun (t : Finset (α × ℝ)) ↦
    ((↑t : Set (α × ℝ)).PairwiseDisjoint (α := Set α) fun (p : α × ℝ) ↦ closedBall p.1 p.2) ∧
      (∀ p ∈ t, p.1 ∈ s) ∧ ∀ p ∈ t, p.2 ∈ f p.1
t : Finset (α × ℝ)
ht : P t
B : Set α := ⋃ p ∈ t, closedBall p.1 p.2
hB_1 : B = ⋃ p ∈ t, closedBall p.1 p.2
B_closed : IsClosed[PseudoMetricSpace.toUniformSpace.toTopologicalSpace] B
s' : Set α := s \ B
x : α
hx : x ∈ s'
xs : x ∈ s
hB : B.Nonempty
r_1 : ℝ := infDist x B
this : 0 < min r_1 1
r : ℝ
hr : r ∈ f x
h'r : r ∈ Ioo 0 (min r_1 1)
⊢ ∃ r ∈ f x ∩ Ioo 0 1, Disjoint B (closedBall x r)
have inr : Disjoint B (closedBall x r)
Tactic: refine ⟨r, ⟨hr, ⟨h'r.1, h'r.2.trans_le (min_le_right _ _)⟩⟩, ?_⟩
-- Lean 4 proof step from Mathlib.MeasureTheory.Covering.Besicovitch (goal)
Goal:
α : Type u_1
inst : MetricSpace α
inst_1 : SecondCountableTopology α
inst_2 : MeasurableSpace α
inst_3 : OpensMeasurableSpace α
inst_4 : HasBesicovitchCovering α
μ : Measure α
inst_5 : IsFiniteMeasure μ
f : α → Set ℝ
s : Set α
hf : ∀ x ∈ s, ∀ δ > 0, (f x ∩ Ioo 0 δ).Nonempty
N : ℕ
τ : ℝ
hτ : 1 < τ
hN : IsEmpty.{u_1 + 1} (SatelliteConfig α N τ)
P : Finset (α × ℝ) → Prop :=
  fun (t : Finset (α × ℝ)) ↦
    ((↑t : Set (α × ℝ)).PairwiseDisjoint (α := Set α) fun (p : α × ℝ) ↦ closedBall p.1 p.2) ∧
      (∀ p ∈ t, p.1 ∈ s) ∧ ∀ p ∈ t, p.2 ∈ f p.1
t : Finset (α × ℝ)
ht : P t
B : Set α := ⋃ p ∈ t, closedBall p.1 p.2
hB_1 : B = ⋃ p ∈ t, closedBall p.1 p.2
B_closed : IsClosed[PseudoMetricSpace.toUniformSpace.toTopologicalSpace] B
s' : Set α := s \ B
x : α
hx : x ∈ s'
xs : x ∈ s
hB : B.Nonempty
r_1 : ℝ := infDist x B
this : 0 < min r_1 1
r : ℝ
hr : r ∈ f x
h'r : r ∈ Ioo 0 (min r_1 1)
⊢ Disjoint B (closedBall x r)
have inr : Disjoint (closedBall x r) B
Tactic: rw [disjoint_comm]
-- Lean 4 proof step from Mathlib.MeasureTheory.Covering.Besicovitch (hypothesis)
Goal:
α : Type u_1
inst : MetricSpace α
inst_1 : SecondCountableTopology α
inst_2 : MeasurableSpace α
inst_3 : OpensMeasurableSpace α
inst_4 : HasBesicovitchCovering α
μ : Measure α
inst_5 : IsFiniteMeasure μ
f : α → Set ℝ
s : Set α
hf : ∀ x ∈ s, ∀ δ > 0, (f x ∩ Ioo 0 δ).Nonempty
N : ℕ
τ : ℝ
hτ : 1 < τ
hN : IsEmpty.{u_1 + 1} (SatelliteConfig α N τ)
P : Finset (α × ℝ) → Prop :=
  fun (t : Finset (α × ℝ)) ↦
    ((↑t : Set (α × ℝ)).PairwiseDisjoint (α := Set α) fun (p : α × ℝ) ↦ closedBall p.1 p.2) ∧
      (∀ p ∈ t, p.1 ∈ s) ∧ ∀ p ∈ t, p.2 ∈ f p.1
t : Finset (α × ℝ)
ht : P t
B : Set α := ⋃ p ∈ t, closedBall p.1 p.2
hB : B = ⋃ p ∈ t, closedBall p.1 p.2
B_closed : IsClosed[PseudoMetricSpace.toUniformSpace.toTopologicalSpace] B
s' : Set α := s \ B
⊢ ∃ (u : Finset (α × ℝ)),
    t ⊆ u ∧
      P u ∧
        (μ : (a : Set α) → ℝ≥0∞) (s \ ⋃ p ∈ u, closedBall p.1 p.2) ≤
          HMul.hMul (β := ℝ≥0∞) ((↑N : ℝ≥0∞) / HAdd.hAdd (α := ℝ≥0∞) (↑N : ℝ≥0∞) 1) ((μ : (a : Set α) → ℝ≥0∞) s' : ℝ≥0∞)
have this : ∀ x ∈ s', ∃ r ∈ f x ∩ Ioo 0 1, Disjoint B (closedBall x r)
Tactic: have : ∀ x ∈ s', ∃ r ∈ f x ∩ Ioo 0 1, Disjoint B (closedBall x r) := by
      intro x hx
      have xs : x ∈ s := ((mem_diff x).1 hx).1
      rcases eq_empty_or_nonempty B with (hB | hB)
      · rcases hf x xs 1 zero_lt_one with ⟨r, hr, h'r⟩
        exact ⟨r, ⟨hr, h'r⟩, by simp only [hB, empty_disjoint]⟩
      · let r := infDist x B
        have : 0 < min r 1 :=
          lt_min ((B_closed.notMem_iff_infDist_pos hB).1 ((mem_diff x).1 hx).2) zero_lt_one
        rcases hf x xs _ this with ⟨r, hr, h'r⟩
        refine ⟨r, ⟨hr, ⟨h'r.1, h'r.2.trans_le (min_le_right _ _)⟩⟩, ?_⟩
        rw [disjoint_comm]
        exact disjoint_closedBall_of_lt_infDist (h'r.2.trans_le (min_le_left _ _))
-- Lean 4 proof step from Mathlib.MeasureTheory.Covering.Besicovitch (goal)
Goal:
α : Type u_1
inst : MetricSpace α
inst_1 : SecondCountableTopology α
inst_2 : MeasurableSpace α
inst_3 : OpensMeasurableSpace α
inst_4 : HasBesicovitchCovering α
μ : Measure α
inst_5 : IsFiniteMeasure μ
f : α → Set ℝ
s : Set α
hf : ∀ x ∈ s, ∀ δ > 0, (f x ∩ Ioo 0 δ).Nonempty
N : ℕ
τ : ℝ
hτ : 1 < τ
hN : IsEmpty.{u_1 + 1} (SatelliteConfig α N τ)
P : Finset (α × ℝ) → Prop :=
  fun (t : Finset (α × ℝ)) ↦
    ((↑t : Set (α × ℝ)).PairwiseDisjoint (α := Set α) fun (p : α × ℝ) ↦ closedBall p.1 p.2) ∧
      (∀ p ∈ t, p.1 ∈ s) ∧ ∀ p ∈ t, p.2 ∈ f p.1
t : Finset (α × ℝ)
ht : P t
B : Set α := ⋃ p ∈ t, closedBall p.1 p.2
hB : B = ⋃ p ∈ t, closedBall p.1 p.2
B_closed : IsClosed[PseudoMetricSpace.toUniformSpace.toTopologicalSpace] B
s' : Set α := s \ B
this : ∀ x ∈ s', ∃ r ∈ f x ∩ Ioo 0 1, Disjoint B (closedBall x r)
⊢ ∃ (u : Finset (α × ℝ)),
    t ⊆ u ∧
      P u ∧
        (μ : (a : Set α) → ℝ≥0∞) (s \ ⋃ p ∈ u, closedBall p.1 p.2) ≤
          HMul.hMul (β := ℝ≥0∞) ((↑N : ℝ≥0∞) / HAdd.hAdd (α := ℝ≥0∞) (↑N : ℝ≥0∞) 1) ((μ : (a : Set α) → ℝ≥0∞) s' : ℝ≥0∞)
have choose! : ∀ (r : (x : α) → ℝ) (hr : ∀ x ∈ s', r x ∈ f x ∩ Ioo 0 1 ∧ Disjoint B (closedBall x (r x))),
  ∃ (u : Finset (α × ℝ)),
    t ⊆ u ∧
      P u ∧
        (μ : (a : Set α) → ℝ≥0∞) (s \ ⋃ p ∈ u, closedBall p.1 p.2) ≤
          HMul.hMul (β := ℝ≥0∞) ((↑N : ℝ≥0∞) / HAdd.hAdd (α := ℝ≥0∞) (↑N : ℝ≥0∞) 1) ((μ : (a : Set α) → ℝ≥0∞) s' : ℝ≥0∞)
Tactic: choose! r hr using this
Cleared hypotheses: this
-- Lean 4 proof step from Mathlib.MeasureTheory.Covering.Besicovitch (goal)
Goal:
α : Type u_1
inst : MetricSpace α
inst_1 : SecondCountableTopology α
inst_2 : MeasurableSpace α
inst_3 : OpensMeasurableSpace α
inst_4 : HasBesicovitchCovering α
μ : Measure α
inst_5 : IsFiniteMeasure μ
f : α → Set ℝ
s : Set α
hf : ∀ x ∈ s, ∀ δ > 0, (f x ∩ Ioo 0 δ).Nonempty
N : ℕ
τ : ℝ
hτ : 1 < τ
hN : IsEmpty.{u_1 + 1} (SatelliteConfig α N τ)
P : Finset (α × ℝ) → Prop :=
  fun (t : Finset (α × ℝ)) ↦
    ((↑t : Set (α × ℝ)).PairwiseDisjoint (α := Set α) fun (p : α × ℝ) ↦ closedBall p.1 p.2) ∧
      (∀ p ∈ t, p.1 ∈ s) ∧ ∀ p ∈ t, p.2 ∈ f p.1
t : Finset (α × ℝ)
ht : P t
B : Set α := ⋃ p ∈ t, closedBall p.1 p.2
hB : B = ⋃ p ∈ t, closedBall p.1 p.2
B_closed : IsClosed[PseudoMetricSpace.toUniformSpace.toTopologicalSpace] B
s' : Set α := s \ B
r : (x : α) → ℝ
hr : ∀ x ∈ s', r x ∈ f x ∩ Ioo 0 1 ∧ Disjoint B (closedBall x (r x))
⊢ ∃ (u : Finset (α × ℝ)),
    t ⊆ u ∧
      P u ∧
        (μ : (a : Set α) → ℝ≥0∞) (s \ ⋃ p ∈ u, closedBall p.1 p.2) ≤
          HMul.hMul (β := ℝ≥0∞) ((↑N : ℝ≥0∞) / HAdd.hAdd (α := ℝ≥0∞) (↑N : ℝ≥0∞) 1) ((μ : (a : Set α) → ℝ≥0∞) s' : ℝ≥0∞)
have obtain : ∀ (v : Finset α) (vs' : (↑v : Set α) ⊆ s')
  (hμv :
    (μ : (a : Set α) → ℝ≥0∞) (s' \ ⋃ x ∈ v, closedBall x (r x)) ≤
      HMul.hMul (β := ℝ≥0∞) ((↑N : ℝ≥0∞) / HAdd.hAdd (α := ℝ≥0∞) (↑N : ℝ≥0∞) 1) ((μ : (a : Set α) → ℝ≥0∞) s' : ℝ≥0∞))
  (hv : (↑v : Set α).PairwiseDisjoint (α := Set α) fun (x : α) ↦ closedBall x (r x)),
  ∃ (u : Finset (α × ℝ)),
    t ⊆ u ∧
      P u ∧
        (μ : (a : Set α) → ℝ≥0∞) (s \ ⋃ p ∈ u, closedBall p.1 p.2) ≤
          HMul.hMul (β := ℝ≥0∞) ((↑N : ℝ≥0∞) / HAdd.hAdd (α := ℝ≥0∞) (↑N : ℝ≥0∞) 1) ((μ : (a : Set α) → ℝ≥0∞) s' : ℝ≥0∞)
Tactic: obtain ⟨v, vs', hμv, hv⟩ :
      ∃ v : Finset α,
        ↑v ⊆ s' ∧
          μ (s' \ ⋃ x ∈ v, closedBall x (r x)) ≤ N / (N + 1) * μ s' ∧
            (v : Set α).PairwiseDisjoint fun x : α => closedBall x (r x) :=
      haveI rI : ∀ x ∈ s', r x ∈ Ioo (0 : ℝ) 1 := fun x hx => (hr x hx).1.2
      exist_finset_disjoint_balls_large_measure μ hτ hN s' r (fun x hx => (rI x hx).1) fun x hx =>
        (rI x hx).2.le
-- Lean 4 proof step from Mathlib.MeasureTheory.Covering.Besicovitch (goal)
Goal:
α : Type u_1
inst : MetricSpace α
inst_1 : SecondCountableTopology α
inst_2 : MeasurableSpace α
inst_3 : OpensMeasurableSpace α
inst_4 : HasBesicovitchCovering α
μ : Measure α
inst_5 : IsFiniteMeasure μ
f : α → Set ℝ
s : Set α
hf : ∀ x ∈ s, ∀ δ > 0, (f x ∩ Ioo 0 δ).Nonempty
N : ℕ
τ : ℝ
hτ : 1 < τ
hN : IsEmpty.{u_1 + 1} (SatelliteConfig α N τ)
P : Finset (α × ℝ) → Prop :=
  fun (t : Finset (α × ℝ)) ↦
    ((↑t : Set (α × ℝ)).PairwiseDisjoint (α := Set α) fun (p : α × ℝ) ↦ closedBall p.1 p.2) ∧
      (∀ p ∈ t, p.1 ∈ s) ∧ ∀ p ∈ t, p.2 ∈ f p.1
t : Finset (α × ℝ)
ht : P t
B : Set α := ⋃ p ∈ t, closedBall p.1 p.2
hB : B = ⋃ p ∈ t, closedBall p.1 p.2
B_closed : IsClosed[PseudoMetricSpace.toUniformSpace.toTopologicalSpace] B
s' : Set α := s \ B
r : (x : α) → ℝ
hr : ∀ x ∈ s', r x ∈ f x ∩ Ioo 0 1 ∧ Disjoint B (closedBall x (r x))
v : Finset α
vs' : (↑v : Set α) ⊆ s'
hμv :
  (μ : (a : Set α) → ℝ≥0∞) (s' \ ⋃ x ∈ v, closedBall x (r x)) ≤
    HMul.hMul (β := ℝ≥0∞) ((↑N : ℝ≥0∞) / HAdd.hAdd (α := ℝ≥0∞) (↑N : ℝ≥0∞) 1) ((μ : (a : Set α) → ℝ≥0∞) s' : ℝ≥0∞)
hv : (↑v : Set α).PairwiseDisjoint (α := Set α) fun (x : α) ↦ closedBall x (r x)
⊢ ∃ (u : Finset (α × ℝ)),
    t ⊆ u ∧
      P u ∧
        (μ : (a : Set α) → ℝ≥0∞) (s \ ⋃ p ∈ u, closedBall p.1 p.2) ≤
          HMul.hMul (β := ℝ≥0∞) ((↑N : ℝ≥0∞) / HAdd.hAdd (α := ℝ≥0∞) (↑N : ℝ≥0∞) 1) ((μ : (a : Set α) → ℝ≥0∞) s' : ℝ≥0∞)
have refine_1 : (↑(t ∪ Finset.image (fun (x : α) ↦ (x, r x)) v) : Set (α × ℝ)).PairwiseDisjoint (α := Set α) fun (p : α × ℝ) ↦
  closedBall p.1 p.2
Tactic: refine ⟨t ∪ Finset.image (fun x => (x, r x)) v, Finset.subset_union_left, ⟨?_, ?_, ?_⟩, ?_⟩
-- Lean 4 proof step from Mathlib.MeasureTheory.Covering.Besicovitch (goal)
Goal:
α : Type u_1
inst : MetricSpace α
inst_1 : SecondCountableTopology α
inst_2 : MeasurableSpace α
inst_3 : OpensMeasurableSpace α
inst_4 : HasBesicovitchCovering α
μ : Measure α
inst_5 : IsFiniteMeasure μ
f : α → Set ℝ
s : Set α
hf : ∀ x ∈ s, ∀ δ > 0, (f x ∩ Ioo 0 δ).Nonempty
N : ℕ
τ : ℝ
hτ : 1 < τ
hN : IsEmpty.{u_1 + 1} (SatelliteConfig α N τ)
P : Finset (α × ℝ) → Prop :=
  fun (t : Finset (α × ℝ)) ↦
    ((↑t : Set (α × ℝ)).PairwiseDisjoint (α := Set α) fun (p : α × ℝ) ↦ closedBall p.1 p.2) ∧
      (∀ p ∈ t, p.1 ∈ s) ∧ ∀ p ∈ t, p.2 ∈ f p.1
t : Finset (α × ℝ)
ht : P t
B : Set α := ⋃ p ∈ t, closedBall p.1 p.2
hB : B = ⋃ p ∈ t, closedBall p.1 p.2
B_closed : IsClosed[PseudoMetricSpace.toUniformSpace.toTopologicalSpace] B
s' : Set α := s \ B
r : (x : α) → ℝ
hr : ∀ x ∈ s', r x ∈ f x ∩ Ioo 0 1 ∧ Disjoint B (closedBall x (r x))
v : Finset α
vs' : (↑v : Set α) ⊆ s'
hμv :
  (μ : (a : Set α) → ℝ≥0∞) (s' \ ⋃ x ∈ v, closedBall x (r x)) ≤
    HMul.hMul (β := ℝ≥0∞) ((↑N : ℝ≥0∞) / HAdd.hAdd (α := ℝ≥0∞) (↑N : ℝ≥0∞) 1) ((μ : (a : Set α) → ℝ≥0∞) s' : ℝ≥0∞)
hv : (↑v : Set α).PairwiseDisjoint (α := Set α) fun (x : α) ↦ closedBall x (r x)
refine_1 :
  (↑(t ∪ Finset.image (fun (x : α) ↦ (x, r x)) v) : Set (α × ℝ)).PairwiseDisjoint (α := Set α) fun (p : α × ℝ) ↦
    closedBall p.1 p.2
⊢ ∃ (u : Finset (α × ℝ)),
    t ⊆ u ∧
      P u ∧
        (μ : (a : Set α) → ℝ≥0∞) (s \ ⋃ p ∈ u, closedBall p.1 p.2) ≤
          HMul.hMul (β := ℝ≥0∞) ((↑N : ℝ≥0∞) / HAdd.hAdd (α := ℝ≥0∞) (↑N : ℝ≥0∞) 1) ((μ : (a : Set α) → ℝ≥0∞) s' : ℝ≥0∞)
have refine_2 : ∀ p ∈ t ∪ Finset.image (fun (x : α) ↦ (x, r x)) v, p.1 ∈ s
Tactic: refine ⟨t ∪ Finset.image (fun x => (x, r x)) v, Finset.subset_union_left, ⟨?_, ?_, ?_⟩, ?_⟩
-- Lean 4 proof step from Mathlib.MeasureTheory.Covering.Besicovitch (goal)
Goal:
α : Type u_1
inst : MetricSpace α
inst_1 : SecondCountableTopology α
inst_2 : MeasurableSpace α
inst_3 : OpensMeasurableSpace α
inst_4 : HasBesicovitchCovering α
μ : Measure α
inst_5 : IsFiniteMeasure μ
f : α → Set ℝ
s : Set α
hf : ∀ x ∈ s, ∀ δ > 0, (f x ∩ Ioo 0 δ).Nonempty
N : ℕ
τ : ℝ
hτ : 1 < τ
hN : IsEmpty.{u_1 + 1} (SatelliteConfig α N τ)
P : Finset (α × ℝ) → Prop :=
  fun (t : Finset (α × ℝ)) ↦
    ((↑t : Set (α × ℝ)).PairwiseDisjoint (α := Set α) fun (p : α × ℝ) ↦ closedBall p.1 p.2) ∧
      (∀ p ∈ t, p.1 ∈ s) ∧ ∀ p ∈ t, p.2 ∈ f p.1
t : Finset (α × ℝ)
ht : P t
B : Set α := ⋃ p ∈ t, closedBall p.1 p.2
hB : B = ⋃ p ∈ t, closedBall p.1 p.2
B_closed : IsClosed[PseudoMetricSpace.toUniformSpace.toTopologicalSpace] B
s' : Set α := s \ B
r : (x : α) → ℝ
hr : ∀ x ∈ s', r x ∈ f x ∩ Ioo 0 1 ∧ Disjoint B (closedBall x (r x))
v : Finset α
vs' : (↑v : Set α) ⊆ s'
hμv :
  (μ : (a : Set α) → ℝ≥0∞) (s' \ ⋃ x ∈ v, closedBall x (r x)) ≤
    HMul.hMul (β := ℝ≥0∞) ((↑N : ℝ≥0∞) / HAdd.hAdd (α := ℝ≥0∞) (↑N : ℝ≥0∞) 1) ((μ : (a : Set α) → ℝ≥0∞) s' : ℝ≥0∞)
hv : (↑v : Set α).PairwiseDisjoint (α := Set α) fun (x : α) ↦ closedBall x (r x)
refine_1 :
  (↑(t ∪ Finset.image (fun (x : α) ↦ (x, r x)) v) : Set (α × ℝ)).PairwiseDisjoint (α := Set α) fun (p : α × ℝ) ↦
    closedBall p.1 p.2
refine_2 : ∀ p ∈ t ∪ Finset.image (fun (x : α) ↦ (x, r x)) v, p.1 ∈ s
⊢ ∃ (u : Finset (α × ℝ)),
    t ⊆ u ∧
      P u ∧
        (μ : (a : Set α) → ℝ≥0∞) (s \ ⋃ p ∈ u, closedBall p.1 p.2) ≤
          HMul.hMul (β := ℝ≥0∞) ((↑N : ℝ≥0∞) / HAdd.hAdd (α := ℝ≥0∞) (↑N : ℝ≥0∞) 1) ((μ : (a : Set α) → ℝ≥0∞) s' : ℝ≥0∞)
have refine_3 : ∀ p ∈ t ∪ Finset.image (fun (x : α) ↦ (x, r x)) v, p.2 ∈ f p.1
Tactic: refine ⟨t ∪ Finset.image (fun x => (x, r x)) v, Finset.subset_union_left, ⟨?_, ?_, ?_⟩, ?_⟩