Theorem: VitaliFamily.ae_eventually_measure_pos
File: Mathlib/MeasureTheory/Covering/Differentiation.lean

tactic: set s := {x | ¬∀ᶠ a in v.filterAt x, 0 < μ a} with hs
state_before: α : Type u_1
inst✝² : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : SecondCountableTopology α
⊢ ∀ᵐ (x : α) ∂μ, ∀ᶠ (a : Set α) in v.filterAt x, 0 < μ a
state_after: α : Type u_1
inst✝² : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : SecondCountableTopology α
s : Set α := {x | ¬∀ᶠ (a : Set α) in v.filterAt x, 0 < μ a}
hs : s = {x | ¬∀ᶠ (a : Set α) in v.filterAt x, 0 < μ a}
⊢ ∀ᵐ (x : α) ∂μ, ∀ᶠ (a : Set α) in v.filterAt x, 0 < μ a

tactic: simp (config := { zeta := false }) only [not_lt, not_eventually, nonpos_iff_eq_zero] at hs
state_before: α : Type u_1
inst✝² : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : SecondCountableTopology α
s : Set α := {x | ¬∀ᶠ (a : Set α) in v.filterAt x, 0 < μ a}
hs : s = {x | ¬∀ᶠ (a : Set α) in v.filterAt x, 0 < μ a}
⊢ ∀ᵐ (x : α) ∂μ, ∀ᶠ (a : Set α) in v.filterAt x, 0 < μ a
state_after: α : Type u_1
inst✝² : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : SecondCountableTopology α
s : Set α := {x | ¬∀ᶠ (a : Set α) in v.filterAt x, 0 < μ a}
hs : s = {x | ∃ᶠ (x : Set α) in v.filterAt x, μ x = 0}
⊢ ∀ᵐ (x : α) ∂μ, ∀ᶠ (a : Set α) in v.filterAt x, 0 < μ a

tactic: change μ s = 0
state_before: α : Type u_1
inst✝² : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : SecondCountableTopology α
s : Set α := {x | ¬∀ᶠ (a : Set α) in v.filterAt x, 0 < μ a}
hs : s = {x | ∃ᶠ (x : Set α) in v.filterAt x, μ x = 0}
⊢ ∀ᵐ (x : α) ∂μ, ∀ᶠ (a : Set α) in v.filterAt x, 0 < μ a
state_after: α : Type u_1
inst✝² : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : SecondCountableTopology α
s : Set α := {x | ¬∀ᶠ (a : Set α) in v.filterAt x, 0 < μ a}
hs : s = {x | ∃ᶠ (x : Set α) in v.filterAt x, μ x = 0}
⊢ μ s = 0

tactic: let f : α → Set (Set α) := fun _ => {a | μ a = 0}
state_before: α : Type u_1
inst✝² : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : SecondCountableTopology α
s : Set α := {x | ¬∀ᶠ (a : Set α) in v.filterAt x, 0 < μ a}
hs : s = {x | ∃ᶠ (x : Set α) in v.filterAt x, μ x = 0}
⊢ μ s = 0
state_after: α : Type u_1
inst✝² : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : SecondCountableTopology α
s : Set α := {x | ¬∀ᶠ (a : Set α) in v.filterAt x, 0 < μ a}
hs : s = {x | ∃ᶠ (x : Set α) in v.filterAt x, μ x = 0}
f : α → Set (Set α) := fun x => {a | μ a = 0}
⊢ μ s = 0

tactic: have h : v.FineSubfamilyOn f s := by
  intro x hx ε εpos
  rw [hs] at hx
  simp only [frequently_filterAt_iff, exists_prop, gt_iff_lt, mem_setOf_eq] at hx
  rcases hx ε εpos with ⟨a, a_sets, ax, μa⟩
  exact ⟨a, ⟨a_sets, μa⟩, ax⟩
state_before: α : Type u_1
inst✝² : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : SecondCountableTopology α
s : Set α := {x | ¬∀ᶠ (a : Set α) in v.filterAt x, 0 < μ a}
hs : s = {x | ∃ᶠ (x : Set α) in v.filterAt x, μ x = 0}
f : α → Set (Set α) := fun x => {a | μ a = 0}
⊢ μ s = 0
state_after: α : Type u_1
inst✝² : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : SecondCountableTopology α
s : Set α := {x | ¬∀ᶠ (a : Set α) in v.filterAt x, 0 < μ a}
hs : s = {x | ∃ᶠ (x : Set α) in v.filterAt x, μ x = 0}
f : α → Set (Set α) := fun x => {a | μ a = 0}
h : v.FineSubfamilyOn f s
⊢ μ s = 0

tactic: refine le_antisymm ?_ bot_le
state_before: α : Type u_1
inst✝² : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : SecondCountableTopology α
s : Set α := {x | ¬∀ᶠ (a : Set α) in v.filterAt x, 0 < μ a}
hs : s = {x | ∃ᶠ (x : Set α) in v.filterAt x, μ x = 0}
f : α → Set (Set α) := fun x => {a | μ a = 0}
h : v.FineSubfamilyOn f s
⊢ μ s = 0
state_after: α : Type u_1
inst✝² : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : SecondCountableTopology α
s : Set α := {x | ¬∀ᶠ (a : Set α) in v.filterAt x, 0 < μ a}
hs : s = {x | ∃ᶠ (x : Set α) in v.filterAt x, μ x = 0}
f : α → Set (Set α) := fun x => {a | μ a = 0}
h : v.FineSubfamilyOn f s
⊢ μ s ≤ 0

tactic: calc
  μ s ≤ ∑' x : h.index, μ (h.covering x) := h.measure_le_tsum
  _ = ∑' x : h.index, 0 := by congr; ext1 x; exact h.covering_mem x.2
  _ = 0 := by simp only [tsum_zero, add_zero]
state_before: α : Type u_1
inst✝² : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : SecondCountableTopology α
s : Set α := {x | ¬∀ᶠ (a : Set α) in v.filterAt x, 0 < μ a}
hs : s = {x | ∃ᶠ (x : Set α) in v.filterAt x, μ x = 0}
f : α → Set (Set α) := fun x => {a | μ a = 0}
h : v.FineSubfamilyOn f s
⊢ μ s ≤ 0
state_after: no goals

tactic: intro x hx ε εpos
state_before: α : Type u_1
inst✝² : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : SecondCountableTopology α
s : Set α := {x | ¬∀ᶠ (a : Set α) in v.filterAt x, 0 < μ a}
hs : s = {x | ∃ᶠ (x : Set α) in v.filterAt x, μ x = 0}
f : α → Set (Set α) := fun x => {a | μ a = 0}
⊢ v.FineSubfamilyOn f s
state_after: α : Type u_1
inst✝² : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : SecondCountableTopology α
s : Set α := {x | ¬∀ᶠ (a : Set α) in v.filterAt x, 0 < μ a}
hs : s = {x | ∃ᶠ (x : Set α) in v.filterAt x, μ x = 0}
f : α → Set (Set α) := fun x => {a | μ a = 0}
x : α
hx : x ∈ s
ε : ℝ
εpos : ε > 0
⊢ ∃ a ∈ v.setsAt x ∩ f x, a ⊆ closedBall x ε

tactic: rw [hs] at hx
state_before: α : Type u_1
inst✝² : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : SecondCountableTopology α
s : Set α := {x | ¬∀ᶠ (a : Set α) in v.filterAt x, 0 < μ a}
hs : s = {x | ∃ᶠ (x : Set α) in v.filterAt x, μ x = 0}
f : α → Set (Set α) := fun x => {a | μ a = 0}
x : α
hx : x ∈ s
ε : ℝ
εpos : ε > 0
⊢ ∃ a ∈ v.setsAt x ∩ f x, a ⊆ closedBall x ε
state_after: α : Type u_1
inst✝² : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : SecondCountableTopology α
s : Set α := {x | ¬∀ᶠ (a : Set α) in v.filterAt x, 0 < μ a}
hs : s = {x | ∃ᶠ (x : Set α) in v.filterAt x, μ x = 0}
f : α → Set (Set α) := fun x => {a | μ a = 0}
x : α
hx : x ∈ {x | ∃ᶠ (x : Set α) in v.filterAt x, μ x = 0}
ε : ℝ
εpos : ε > 0
⊢ ∃ a ∈ v.setsAt x ∩ f x, a ⊆ closedBall x ε

tactic: simp only [frequently_filterAt_iff, exists_prop, gt_iff_lt, mem_setOf_eq] at hx
state_before: α : Type u_1
inst✝² : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : SecondCountableTopology α
s : Set α := {x | ¬∀ᶠ (a : Set α) in v.filterAt x, 0 < μ a}
hs : s = {x | ∃ᶠ (x : Set α) in v.filterAt x, μ x = 0}
f : α → Set (Set α) := fun x => {a | μ a = 0}
x : α
hx : x ∈ {x | ∃ᶠ (x : Set α) in v.filterAt x, μ x = 0}
ε : ℝ
εpos : ε > 0
⊢ ∃ a ∈ v.setsAt x ∩ f x, a ⊆ closedBall x ε
state_after: α : Type u_1
inst✝² : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : SecondCountableTopology α
s : Set α := {x | ¬∀ᶠ (a : Set α) in v.filterAt x, 0 < μ a}
hs : s = {x | ∃ᶠ (x : Set α) in v.filterAt x, μ x = 0}
f : α → Set (Set α) := fun x => {a | μ a = 0}
x : α
ε : ℝ
εpos : ε > 0
hx : ∀ (ε : ℝ), 0 < ε → ∃ a ∈ v.setsAt x, a ⊆ closedBall x ε ∧ μ a = 0
⊢ ∃ a ∈ v.setsAt x ∩ f x, a ⊆ closedBall x ε

tactic: rcases hx ε εpos with ⟨a, a_sets, ax, μa⟩
state_before: α : Type u_1
inst✝² : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : SecondCountableTopology α
s : Set α := {x | ¬∀ᶠ (a : Set α) in v.filterAt x, 0 < μ a}
hs : s = {x | ∃ᶠ (x : Set α) in v.filterAt x, μ x = 0}
f : α → Set (Set α) := fun x => {a | μ a = 0}
x : α
ε : ℝ
εpos : ε > 0
hx : ∀ (ε : ℝ), 0 < ε → ∃ a ∈ v.setsAt x, a ⊆ closedBall x ε ∧ μ a = 0
⊢ ∃ a ∈ v.setsAt x ∩ f x, a ⊆ closedBall x ε
state_after: case intro.intro.intro
α : Type u_1
inst✝² : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : SecondCountableTopology α
s : Set α := {x | ¬∀ᶠ (a : Set α) in v.filterAt x, 0 < μ a}
hs : s = {x | ∃ᶠ (x : Set α) in v.filterAt x, μ x = 0}
f : α → Set (Set α) := fun x => {a | μ a = 0}
x : α
ε : ℝ
εpos : ε > 0
hx : ∀ (ε : ℝ), 0 < ε → ∃ a ∈ v.setsAt x, a ⊆ closedBall x ε ∧ μ a = 0
a : Set α
a_sets : a ∈ v.setsAt x
ax : a ⊆ closedBall x ε
μa : μ a = 0
⊢ ∃ a ∈ v.setsAt x ∩ f x, a ⊆ closedBall x ε

tactic: exact ⟨a, ⟨a_sets, μa⟩, ax⟩
state_before: case intro.intro.intro
α : Type u_1
inst✝² : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : SecondCountableTopology α
s : Set α := {x | ¬∀ᶠ (a : Set α) in v.filterAt x, 0 < μ a}
hs : s = {x | ∃ᶠ (x : Set α) in v.filterAt x, μ x = 0}
f : α → Set (Set α) := fun x => {a | μ a = 0}
x : α
ε : ℝ
εpos : ε > 0
hx : ∀ (ε : ℝ), 0 < ε → ∃ a ∈ v.setsAt x, a ⊆ closedBall x ε ∧ μ a = 0
a : Set α
a_sets : a ∈ v.setsAt x
ax : a ⊆ closedBall x ε
μa : μ a = 0
⊢ ∃ a ∈ v.setsAt x ∩ f x, a ⊆ closedBall x ε
state_after: no goals

tactic: congr
state_before: α : Type u_1
inst✝² : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : SecondCountableTopology α
s : Set α := {x | ¬∀ᶠ (a : Set α) in v.filterAt x, 0 < μ a}
hs : s = {x | ∃ᶠ (x : Set α) in v.filterAt x, μ x = 0}
f : α → Set (Set α) := fun x => {a | μ a = 0}
h : v.FineSubfamilyOn f s
⊢ ∑' (x : ↑h.index), μ (h.covering ↑x) = ∑' (x : ↑h.index), 0
state_after: case e_f
α : Type u_1
inst✝² : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : SecondCountableTopology α
s : Set α := {x | ¬∀ᶠ (a : Set α) in v.filterAt x, 0 < μ a}
hs : s = {x | ∃ᶠ (x : Set α) in v.filterAt x, μ x = 0}
f : α → Set (Set α) := fun x => {a | μ a = 0}
h : v.FineSubfamilyOn f s
⊢ (fun x => μ (h.covering ↑x)) = fun x => 0

tactic: ext1 x
state_before: case e_f
α : Type u_1
inst✝² : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : SecondCountableTopology α
s : Set α := {x | ¬∀ᶠ (a : Set α) in v.filterAt x, 0 < μ a}
hs : s = {x | ∃ᶠ (x : Set α) in v.filterAt x, μ x = 0}
f : α → Set (Set α) := fun x => {a | μ a = 0}
h : v.FineSubfamilyOn f s
⊢ (fun x => μ (h.covering ↑x)) = fun x => 0
state_after: case e_f.h
α : Type u_1
inst✝² : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : SecondCountableTopology α
s : Set α := {x | ¬∀ᶠ (a : Set α) in v.filterAt x, 0 < μ a}
hs : s = {x | ∃ᶠ (x : Set α) in v.filterAt x, μ x = 0}
f : α → Set (Set α) := fun x => {a | μ a = 0}
h : v.FineSubfamilyOn f s
x : ↑h.index
⊢ μ (h.covering ↑x) = 0

tactic: exact h.covering_mem x.2
state_before: case e_f.h
α : Type u_1
inst✝² : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : SecondCountableTopology α
s : Set α := {x | ¬∀ᶠ (a : Set α) in v.filterAt x, 0 < μ a}
hs : s = {x | ∃ᶠ (x : Set α) in v.filterAt x, μ x = 0}
f : α → Set (Set α) := fun x => {a | μ a = 0}
h : v.FineSubfamilyOn f s
x : ↑h.index
⊢ μ (h.covering ↑x) = 0
state_after: no goals

tactic: simp only [tsum_zero, add_zero]
state_before: α : Type u_1
inst✝² : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : SecondCountableTopology α
s : Set α := {x | ¬∀ᶠ (a : Set α) in v.filterAt x, 0 < μ a}
hs : s = {x | ∃ᶠ (x : Set α) in v.filterAt x, μ x = 0}
f : α → Set (Set α) := fun x => {a | μ a = 0}
h : v.FineSubfamilyOn f s
⊢ ∑' (x : ↑h.index), 0 = 0
state_after: no goals