Theorem: MeasureTheory.OuterMeasure.iUnion_nat_of_monotone_of_tsum_ne_top
File: Mathlib/MeasureTheory/OuterMeasure/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), m (s (k + 1) \ s k) ≠ ⊤
⊢ m (⋃ n, s n) = ⨆ n, m (s n)
state_after: α : Type u_1
β : Type u_2
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), m (s (k + 1) \ s k) ≠ ⊤
⊢ Tendsto (fun k => m ((⋃ n, s n) \ s k)) atTop (𝓝 0)
tactic: refine measure_iUnion_of_tendsto_zero m atTop ?_
state_before: α : Type u_1
β : Type u_2
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), m (s (k + 1) \ s k) ≠ ⊤
⊢ Tendsto (fun k => m ((⋃ n, s n) \ s k)) atTop (𝓝 0)
state_after: α : Type u_1
β : Type u_2
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), m (s (k + 1) \ s k) ≠ ⊤
n : ℕ
⊢ m ((⋃ n, s n) \ s n) ≤ ∑' (k : ℕ), m (s (k + n + 1) \ s (k + n))
tactic: refine tendsto_nhds_bot_mono' (ENNReal.tendsto_sum_nat_add _ h0) fun n => ?_
state_before: α : Type u_1
β : Type u_2
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), m (s (k + 1) \ s k) ≠ ⊤
n : ℕ
⊢ m ((⋃ n, s n) \ s n) ≤ ∑' (k : ℕ), m (s (k + n + 1) \ s (k + n))
state_after: α : Type u_1
β : Type u_2
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), m (s (k + 1) \ s k) ≠ ⊤
n : ℕ
⊢ (⋃ n, s n) \ s n ⊆ ⋃ i, s (i + n + 1) \ s (i + n)
tactic: refine (m.mono ?_).trans (measure_iUnion_le _)
state_before: α : Type u_1
β : Type u_2
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), m (s (k + 1) \ s k) ≠ ⊤
n : ℕ
⊢ (⋃ n, s n) \ s n ⊆ ⋃ i, s (i + n + 1) \ s (i + n)
state_after: α : Type u_1
β : Type u_2
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), m (s (k + 1) \ s k) ≠ ⊤
n : ℕ
h' : Monotone s
⊢ (⋃ n, s n) \ s n ⊆ ⋃ i, s (i + n + 1) \ s (i + n)
tactic: have h' : Monotone s := @monotone_nat_of_le_succ (Set α) _ _ h_mono
state_before: α : Type u_1
β : Type u_2
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), m (s (k + 1) \ s k) ≠ ⊤
n : ℕ
h' : Monotone s
⊢ (⋃ n, s n) \ s n ⊆ ⋃ i, s (i + n + 1) \ s (i + n)
state_after: α : Type u_1
β : Type u_2
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), m (s (k + 1) \ s k) ≠ ⊤
n : ℕ
h' : Monotone s
⊢ ∀ (i : ℕ), s i ⊆ s n ∪ ⋃ i, s (i + n + 1) \ s (i + n)
tactic: simp only [diff_subset_iff, iUnion_subset_iff]
state_before: α : Type u_1
β : Type u_2
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), m (s (k + 1) \ s k) ≠ ⊤
n : ℕ
h' : Monotone s
⊢ ∀ (i : ℕ), s i ⊆ s n ∪ ⋃ i, s (i + n + 1) \ s (i + n)
state_after: α : Type u_1
β : Type u_2
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), m (s (k + 1) \ s k) ≠ ⊤
n : ℕ
h' : Monotone s
i : ℕ
x : α
hx : x ∈ s i
⊢ x ∈ s n ∪ ⋃ i, s (i + n + 1) \ s (i + n)
tactic: intro i x hx
state_before: α : Type u_1
β : Type u_2
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), m (s (k + 1) \ s k) ≠ ⊤
n : ℕ
h' : Monotone s
i : ℕ
x : α
hx : x ∈ s i
⊢ x ∈ s n ∪ ⋃ i, s (i + n + 1) \ s (i + n)
state_after: α : Type u_1
β : Type u_2
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), m (s (k + 1) \ s k) ≠ ⊤
n : ℕ
h' : Monotone s
i : ℕ
x : α
hx : x ∈ s i
this : ∃ i, x ∈ s i
⊢ x ∈ s n ∪ ⋃ i, s (i + n + 1) \ s (i + n)
tactic: have : ∃i, x ∈ s i := by exists i
state_before: α : Type u_1
β : Type u_2
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), m (s (k + 1) \ s k) ≠ ⊤
n : ℕ
h' : Monotone s
i : ℕ
x : α
hx : x ∈ s i
this : ∃ i, x ∈ s i
⊢ x ∈ s n ∪ ⋃ i, s (i + n + 1) \ s (i + n)
state_after: case mk.intro
α : Type u_1
β : Type u_2
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), m (s (k + 1) \ s k) ≠ ⊤
n : ℕ
h' : Monotone s
i : ℕ
x : α
hx : x ∈ s i
this : ∃ i, x ∈ s i
j : ℕ
hj : x ∈ s j
hlt : ∀ m < j, x ∉ s m
⊢ x ∈ s n ∪ ⋃ i, s (i + n + 1) \ s (i + n)
tactic: rcases Nat.findX this with ⟨j, hj, hlt⟩
state_before: case mk.intro
α : Type u_1
β : Type u_2
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), m (s (k + 1) \ s k) ≠ ⊤
n : ℕ
h' : Monotone s
i : ℕ
x : α
hx : x ∈ s i
this : ∃ i, x ∈ s i
j : ℕ
hj : x ∈ s j
hlt : ∀ m < j, x ∉ s m
⊢ x ∈ s n ∪ ⋃ i, s (i + n + 1) \ s (i + n)
state_after: case mk.intro
α : Type u_1
β : Type u_2
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), m (s (k + 1) \ s k) ≠ ⊤
n : ℕ
h' : Monotone s
x : α
this : ∃ i, x ∈ s i
j : ℕ
hj : x ∈ s j
hlt : ∀ m < j, x ∉ s m
⊢ x ∈ s n ∪ ⋃ i, s (i + n + 1) \ s (i + n)
tactic: clear hx i
state_before: case mk.intro
α : Type u_1
β : Type u_2
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), m (s (k + 1) \ s k) ≠ ⊤
n : ℕ
h' : Monotone s
x : α
this : ∃ i, x ∈ s i
j : ℕ
hj : x ∈ s j
hlt : ∀ m < j, x ∉ s m
⊢ x ∈ s n ∪ ⋃ i, s (i + n + 1) \ s (i + n)
state_after: case mk.intro.inl
α : Type u_1
β : Type u_2
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), m (s (k + 1) \ s k) ≠ ⊤
n : ℕ
h' : Monotone s
x : α
this : ∃ i, x ∈ s i
j : ℕ
hj : x ∈ s j
hlt : ∀ m < j, x ∉ s m
hjn : j ≤ n
⊢ x ∈ s n ∪ ⋃ i, s (i + n + 1) \ s (i + n)

case mk.intro.inr
α : Type u_1
β : Type u_2
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), m (s (k + 1) \ s k) ≠ ⊤
n : ℕ
h' : Monotone s
x : α
this : ∃ i, x ∈ s i
j : ℕ
hj : x ∈ s j
hlt : ∀ m < j, x ∉ s m
hnj : n < j
⊢ x ∈ s n ∪ ⋃ i, s (i + n + 1) \ s (i + n)
tactic: rcases le_or_lt j n with hjn | hnj
state_before: case mk.intro.inr
α : Type u_1
β : Type u_2
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), m (s (k + 1) \ s k) ≠ ⊤
n : ℕ
h' : Monotone s
x : α
this : ∃ i, x ∈ s i
j : ℕ
hj : x ∈ s j
hlt : ∀ m < j, x ∉ s m
hnj : n < j
⊢ x ∈ s n ∪ ⋃ i, s (i + n + 1) \ s (i + n)
state_after: case mk.intro.inr
α : Type u_1
β : Type u_2
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), m (s (k + 1) \ s k) ≠ ⊤
n : ℕ
h' : Monotone s
x : α
this✝ : ∃ i, x ∈ s i
j : ℕ
hj : x ∈ s j
hlt : ∀ m < j, x ∉ s m
hnj : n < j
this : j - (n + 1) + n + 1 = j
⊢ x ∈ s n ∪ ⋃ i, s (i + n + 1) \ s (i + n)
tactic: have : j - (n + 1) + n + 1 = j := by omega
state_before: case mk.intro.inr
α : Type u_1
β : Type u_2
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), m (s (k + 1) \ s k) ≠ ⊤
n : ℕ
h' : Monotone s
x : α
this✝ : ∃ i, x ∈ s i
j : ℕ
hj : x ∈ s j
hlt : ∀ m < j, x ∉ s m
hnj : n < j
this : j - (n + 1) + n + 1 = j
⊢ x ∈ s n ∪ ⋃ i, s (i + n + 1) \ s (i + n)
state_after: case mk.intro.inr.refine_1
α : Type u_1
β : Type u_2
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), m (s (k + 1) \ s k) ≠ ⊤
n : ℕ
h' : Monotone s
x : α
this✝ : ∃ i, x ∈ s i
j : ℕ
hj : x ∈ s j
hlt : ∀ m < j, x ∉ s m
hnj : n < j
this : j - (n + 1) + n + 1 = j
⊢ x ∈ s (j - (n + 1) + n + 1)

case mk.intro.inr.refine_2
α : Type u_1
β : Type u_2
m✝ m : OuterMeasure α
s : ℕ → Set α
h_mono : ∀ (n : ℕ), s n ⊆ s (n + 1)
h0 : ∑' (k : ℕ), m (s (k + 1) \ s k) ≠ ⊤
n : ℕ
h' : Monotone s
x : α
this✝ : ∃ i, x ∈ s i
j : ℕ
hj : x ∈ s j
hlt : ∀ m < j, x ∉ s m
hnj : n < j
this : j - (n + 1) + n + 1 = j
⊢ j - (n + 1) + n < j
tactic: refine Or.inr (mem_iUnion.2 ⟨j - (n + 1), ?_, hlt _ ?_⟩)