Theorem: MeasureTheory.Egorov.measure_inter_notConvergentSeq_eq_zero
File: Mathlib/MeasureTheory/Function/Egorov.lean

tactic: simp_rw [Metric.tendsto_atTop, ae_iff] at hfg
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
inst✝² : MetricSpace β
μ : Measure α
n✝ : ℕ
i j : ι
s : Set α
ε : ℝ
f : ι → α → β
g : α → β
inst✝¹ : SemilatticeSup ι
inst✝ : Nonempty ι
hfg : ∀ᵐ (x : α) ∂μ, x ∈ s → Tendsto (fun n => f n x) atTop (𝓝 (g x))
n : ℕ
⊢ μ (s ∩ ⋂ j, notConvergentSeq f g n j) = 0
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
inst✝² : MetricSpace β
μ : Measure α
n✝ : ℕ
i j : ι
s : Set α
ε : ℝ
f : ι → α → β
g : α → β
inst✝¹ : SemilatticeSup ι
inst✝ : Nonempty ι
n : ℕ
hfg : μ {a | ¬(a ∈ s → ∀ ε > 0, ∃ N, ∀ n ≥ N, dist (f n a) (g a) < ε)} = 0
⊢ μ (s ∩ ⋂ j, notConvergentSeq f g n j) = 0

tactic: rw [← nonpos_iff_eq_zero, ← hfg]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
inst✝² : MetricSpace β
μ : Measure α
n✝ : ℕ
i j : ι
s : Set α
ε : ℝ
f : ι → α → β
g : α → β
inst✝¹ : SemilatticeSup ι
inst✝ : Nonempty ι
n : ℕ
hfg : μ {a | ¬(a ∈ s → ∀ ε > 0, ∃ N, ∀ n ≥ N, dist (f n a) (g a) < ε)} = 0
⊢ μ (s ∩ ⋂ j, notConvergentSeq f g n j) = 0
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
inst✝² : MetricSpace β
μ : Measure α
n✝ : ℕ
i j : ι
s : Set α
ε : ℝ
f : ι → α → β
g : α → β
inst✝¹ : SemilatticeSup ι
inst✝ : Nonempty ι
n : ℕ
hfg : μ {a | ¬(a ∈ s → ∀ ε > 0, ∃ N, ∀ n ≥ N, dist (f n a) (g a) < ε)} = 0
⊢ μ (s ∩ ⋂ j, notConvergentSeq f g n j) ≤ μ {a | ¬(a ∈ s → ∀ ε > 0, ∃ N, ∀ n ≥ N, dist (f n a) (g a) < ε)}

tactic: refine measure_mono fun x => ?_
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
inst✝² : MetricSpace β
μ : Measure α
n✝ : ℕ
i j : ι
s : Set α
ε : ℝ
f : ι → α → β
g : α → β
inst✝¹ : SemilatticeSup ι
inst✝ : Nonempty ι
n : ℕ
hfg : μ {a | ¬(a ∈ s → ∀ ε > 0, ∃ N, ∀ n ≥ N, dist (f n a) (g a) < ε)} = 0
⊢ μ (s ∩ ⋂ j, notConvergentSeq f g n j) ≤ μ {a | ¬(a ∈ s → ∀ ε > 0, ∃ N, ∀ n ≥ N, dist (f n a) (g a) < ε)}
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
inst✝² : MetricSpace β
μ : Measure α
n✝ : ℕ
i j : ι
s : Set α
ε : ℝ
f : ι → α → β
g : α → β
inst✝¹ : SemilatticeSup ι
inst✝ : Nonempty ι
n : ℕ
hfg : μ {a | ¬(a ∈ s → ∀ ε > 0, ∃ N, ∀ n ≥ N, dist (f n a) (g a) < ε)} = 0
x : α
⊢ x ∈ s ∩ ⋂ j, notConvergentSeq f g n j → x ∈ {a | ¬(a ∈ s → ∀ ε > 0, ∃ N, ∀ n ≥ N, dist (f n a) (g a) < ε)}

tactic: simp only [Set.mem_inter_iff, Set.mem_iInter, ge_iff_le, mem_notConvergentSeq_iff]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
inst✝² : MetricSpace β
μ : Measure α
n✝ : ℕ
i j : ι
s : Set α
ε : ℝ
f : ι → α → β
g : α → β
inst✝¹ : SemilatticeSup ι
inst✝ : Nonempty ι
n : ℕ
hfg : μ {a | ¬(a ∈ s → ∀ ε > 0, ∃ N, ∀ n ≥ N, dist (f n a) (g a) < ε)} = 0
x : α
⊢ x ∈ s ∩ ⋂ j, notConvergentSeq f g n j → x ∈ {a | ¬(a ∈ s → ∀ ε > 0, ∃ N, ∀ n ≥ N, dist (f n a) (g a) < ε)}
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
inst✝² : MetricSpace β
μ : Measure α
n✝ : ℕ
i j : ι
s : Set α
ε : ℝ
f : ι → α → β
g : α → β
inst✝¹ : SemilatticeSup ι
inst✝ : Nonempty ι
n : ℕ
hfg : μ {a | ¬(a ∈ s → ∀ ε > 0, ∃ N, ∀ n ≥ N, dist (f n a) (g a) < ε)} = 0
x : α
⊢ (x ∈ s ∧ ∀ (i : ι), ∃ k, i ≤ k ∧ 1 / (↑n + 1) < dist (f k x) (g x)) →
    x ∈ {a | ¬(a ∈ s → ∀ ε > 0, ∃ N, ∀ (n : ι), N ≤ n → dist (f n a) (g a) < ε)}

tactic: push_neg
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
inst✝² : MetricSpace β
μ : Measure α
n✝ : ℕ
i j : ι
s : Set α
ε : ℝ
f : ι → α → β
g : α → β
inst✝¹ : SemilatticeSup ι
inst✝ : Nonempty ι
n : ℕ
hfg : μ {a | ¬(a ∈ s → ∀ ε > 0, ∃ N, ∀ n ≥ N, dist (f n a) (g a) < ε)} = 0
x : α
⊢ (x ∈ s ∧ ∀ (i : ι), ∃ k, i ≤ k ∧ 1 / (↑n + 1) < dist (f k x) (g x)) →
    x ∈ {a | ¬(a ∈ s → ∀ ε > 0, ∃ N, ∀ (n : ι), N ≤ n → dist (f n a) (g a) < ε)}
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
inst✝² : MetricSpace β
μ : Measure α
n✝ : ℕ
i j : ι
s : Set α
ε : ℝ
f : ι → α → β
g : α → β
inst✝¹ : SemilatticeSup ι
inst✝ : Nonempty ι
n : ℕ
hfg : μ {a | ¬(a ∈ s → ∀ ε > 0, ∃ N, ∀ n ≥ N, dist (f n a) (g a) < ε)} = 0
x : α
⊢ (x ∈ s ∧ ∀ (i : ι), ∃ k, i ≤ k ∧ 1 / (↑n + 1) < dist (f k x) (g x)) →
    x ∈ {a | a ∈ s ∧ ∃ ε > 0, ∀ (N : ι), ∃ n, N ≤ n ∧ ε ≤ dist (f n a) (g a)}

tactic: rintro ⟨hmem, hx⟩
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
inst✝² : MetricSpace β
μ : Measure α
n✝ : ℕ
i j : ι
s : Set α
ε : ℝ
f : ι → α → β
g : α → β
inst✝¹ : SemilatticeSup ι
inst✝ : Nonempty ι
n : ℕ
hfg : μ {a | ¬(a ∈ s → ∀ ε > 0, ∃ N, ∀ n ≥ N, dist (f n a) (g a) < ε)} = 0
x : α
⊢ (x ∈ s ∧ ∀ (i : ι), ∃ k, i ≤ k ∧ 1 / (↑n + 1) < dist (f k x) (g x)) →
    x ∈ {a | a ∈ s ∧ ∃ ε > 0, ∀ (N : ι), ∃ n, N ≤ n ∧ ε ≤ dist (f n a) (g a)}
state_after: case intro
α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
inst✝² : MetricSpace β
μ : Measure α
n✝ : ℕ
i j : ι
s : Set α
ε : ℝ
f : ι → α → β
g : α → β
inst✝¹ : SemilatticeSup ι
inst✝ : Nonempty ι
n : ℕ
hfg : μ {a | ¬(a ∈ s → ∀ ε > 0, ∃ N, ∀ n ≥ N, dist (f n a) (g a) < ε)} = 0
x : α
hmem : x ∈ s
hx : ∀ (i : ι), ∃ k, i ≤ k ∧ 1 / (↑n + 1) < dist (f k x) (g x)
⊢ x ∈ {a | a ∈ s ∧ ∃ ε > 0, ∀ (N : ι), ∃ n, N ≤ n ∧ ε ≤ dist (f n a) (g a)}

tactic: refine ⟨hmem, 1 / (n + 1 : ℝ), Nat.one_div_pos_of_nat, fun N => ?_⟩
state_before: case intro
α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
inst✝² : MetricSpace β
μ : Measure α
n✝ : ℕ
i j : ι
s : Set α
ε : ℝ
f : ι → α → β
g : α → β
inst✝¹ : SemilatticeSup ι
inst✝ : Nonempty ι
n : ℕ
hfg : μ {a | ¬(a ∈ s → ∀ ε > 0, ∃ N, ∀ n ≥ N, dist (f n a) (g a) < ε)} = 0
x : α
hmem : x ∈ s
hx : ∀ (i : ι), ∃ k, i ≤ k ∧ 1 / (↑n + 1) < dist (f k x) (g x)
⊢ x ∈ {a | a ∈ s ∧ ∃ ε > 0, ∀ (N : ι), ∃ n, N ≤ n ∧ ε ≤ dist (f n a) (g a)}
state_after: case intro
α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
inst✝² : MetricSpace β
μ : Measure α
n✝ : ℕ
i j : ι
s : Set α
ε : ℝ
f : ι → α → β
g : α → β
inst✝¹ : SemilatticeSup ι
inst✝ : Nonempty ι
n : ℕ
hfg : μ {a | ¬(a ∈ s → ∀ ε > 0, ∃ N, ∀ n ≥ N, dist (f n a) (g a) < ε)} = 0
x : α
hmem : x ∈ s
hx : ∀ (i : ι), ∃ k, i ≤ k ∧ 1 / (↑n + 1) < dist (f k x) (g x)
N : ι
⊢ ∃ n_1, N ≤ n_1 ∧ 1 / (↑n + 1) ≤ dist (f n_1 x) (g x)

tactic: obtain ⟨n, hn₁, hn₂⟩ := hx N
state_before: case intro
α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
inst✝² : MetricSpace β
μ : Measure α
n✝ : ℕ
i j : ι
s : Set α
ε : ℝ
f : ι → α → β
g : α → β
inst✝¹ : SemilatticeSup ι
inst✝ : Nonempty ι
n : ℕ
hfg : μ {a | ¬(a ∈ s → ∀ ε > 0, ∃ N, ∀ n ≥ N, dist (f n a) (g a) < ε)} = 0
x : α
hmem : x ∈ s
hx : ∀ (i : ι), ∃ k, i ≤ k ∧ 1 / (↑n + 1) < dist (f k x) (g x)
N : ι
⊢ ∃ n_1, N ≤ n_1 ∧ 1 / (↑n + 1) ≤ dist (f n_1 x) (g x)
state_after: case intro.intro.intro
α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
inst✝² : MetricSpace β
μ : Measure α
n✝¹ : ℕ
i j : ι
s : Set α
ε : ℝ
f : ι → α → β
g : α → β
inst✝¹ : SemilatticeSup ι
inst✝ : Nonempty ι
n✝ : ℕ
hfg : μ {a | ¬(a ∈ s → ∀ ε > 0, ∃ N, ∀ n ≥ N, dist (f n a) (g a) < ε)} = 0
x : α
hmem : x ∈ s
hx : ∀ (i : ι), ∃ k, i ≤ k ∧ 1 / (↑n✝ + 1) < dist (f k x) (g x)
N n : ι
hn₁ : N ≤ n
hn₂ : 1 / (↑n✝ + 1) < dist (f n x) (g x)
⊢ ∃ n, N ≤ n ∧ 1 / (↑n✝ + 1) ≤ dist (f n x) (g x)

tactic: exact ⟨n, hn₁, hn₂.le⟩
state_before: case intro.intro.intro
α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
inst✝² : MetricSpace β
μ : Measure α
n✝¹ : ℕ
i j : ι
s : Set α
ε : ℝ
f : ι → α → β
g : α → β
inst✝¹ : SemilatticeSup ι
inst✝ : Nonempty ι
n✝ : ℕ
hfg : μ {a | ¬(a ∈ s → ∀ ε > 0, ∃ N, ∀ n ≥ N, dist (f n a) (g a) < ε)} = 0
x : α
hmem : x ∈ s
hx : ∀ (i : ι), ∃ k, i ≤ k ∧ 1 / (↑n✝ + 1) < dist (f k x) (g x)
N n : ι
hn₁ : N ≤ n
hn₂ : 1 / (↑n✝ + 1) < dist (f n x) (g x)
⊢ ∃ n, N ≤ n ∧ 1 / (↑n✝ + 1) ≤ dist (f n x) (g x)
state_after: no goals