Theorem: MeasureTheory.measure_limsup_eq_zero
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: set t : ℕ → Set α := fun n => toMeasurable μ (s n)
state_before: α : Type u_1
β : Type ?u.68947
γ : Type ?u.68950
δ : Type ?u.68953
ι : Type ?u.68956
R : Type ?u.68959
R' : Type ?u.68962
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
s : ℕ → Set α
hs : (∑' (i : ℕ), ↑↑μ (s i)) ≠ ⊤
⊢ ↑↑μ (limsup s atTop) = 0

tactic: have ht : (∑' i, μ (t i)) ≠ ∞ := by simpa only [measure_toMeasurable] using hs
state_before: α : Type u_1
β : Type ?u.68947
γ : Type ?u.68950
δ : Type ?u.68953
ι : Type ?u.68956
R : Type ?u.68959
R' : Type ?u.68962
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t✝ : Set α
s : ℕ → Set α
hs : (∑' (i : ℕ), ↑↑μ (s i)) ≠ ⊤
t : ℕ → Set α := fun n => toMeasurable μ (s n)
⊢ ↑↑μ (limsup s atTop) = 0

tactic: suffices μ (limsup t atTop) = 0 by
  have A : s ≤ t := fun n => subset_toMeasurable μ (s n)
  exact
    measure_mono_null
      (limsup_le_limsup (eventually_of_forall (Pi.le_def.mp A)) isCobounded_le_of_bot
        isBounded_le_of_top)
      this
state_before: α : Type u_1
β : Type ?u.68947
γ : Type ?u.68950
δ : Type ?u.68953
ι : Type ?u.68956
R : Type ?u.68959
R' : Type ?u.68962
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t✝ : Set α
s : ℕ → Set α
hs : (∑' (i : ℕ), ↑↑μ (s i)) ≠ ⊤
t : ℕ → Set α := fun n => toMeasurable μ (s n)
ht : (∑' (i : ℕ), ↑↑μ (t i)) ≠ ⊤
⊢ ↑↑μ (limsup s atTop) = 0

tactic: simp only [limsup_eq_iInf_iSup_of_nat', Set.iInf_eq_iInter, Set.iSup_eq_iUnion, ←
  nonpos_iff_eq_zero]
state_before: α : Type u_1
β : Type ?u.68947
γ : Type ?u.68950
δ : Type ?u.68953
ι : Type ?u.68956
R : Type ?u.68959
R' : Type ?u.68962
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t✝ : Set α
s : ℕ → Set α
hs : (∑' (i : ℕ), ↑↑μ (s i)) ≠ ⊤
t : ℕ → Set α := fun n => toMeasurable μ (s n)
ht : (∑' (i : ℕ), ↑↑μ (t i)) ≠ ⊤
⊢ ↑↑μ (limsup t atTop) = 0

tactic: refine'
  le_of_tendsto_of_tendsto'
    (tendsto_measure_iInter
      (fun i => MeasurableSet.iUnion fun b => measurableSet_toMeasurable _ _) _
      ⟨0, ne_top_of_le_ne_top ht (measure_iUnion_le t)⟩)
    (ENNReal.tendsto_sum_nat_add (μ ∘ t) ht) fun n => measure_iUnion_le _
state_before: α : Type u_1
β : Type ?u.68947
γ : Type ?u.68950
δ : Type ?u.68953
ι : Type ?u.68956
R : Type ?u.68959
R' : Type ?u.68962
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t✝ : Set α
s : ℕ → Set α
hs : (∑' (i : ℕ), ↑↑μ (s i)) ≠ ⊤
t : ℕ → Set α := fun n => toMeasurable μ (s n)
ht : (∑' (i : ℕ), ↑↑μ (t i)) ≠ ⊤
⊢ ↑↑μ (⋂ (n : ℕ), ⋃ (i : ℕ), toMeasurable μ (s (i + n))) ≤ 0

tactic: intro n m hnm x
state_before: α : Type u_1
β : Type ?u.68947
γ : Type ?u.68950
δ : Type ?u.68953
ι : Type ?u.68956
R : Type ?u.68959
R' : Type ?u.68962
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t✝ : Set α
s : ℕ → Set α
hs : (∑' (i : ℕ), ↑↑μ (s i)) ≠ ⊤
t : ℕ → Set α := fun n => toMeasurable μ (s n)
ht : (∑' (i : ℕ), ↑↑μ (t i)) ≠ ⊤
⊢ Antitone fun n => ⋃ (i : ℕ), toMeasurable μ (s (i + n))

tactic: simp only [Set.mem_iUnion]
state_before: α : Type u_1
β : Type ?u.68947
γ : Type ?u.68950
δ : Type ?u.68953
ι : Type ?u.68956
R : Type ?u.68959
R' : Type ?u.68962
m✝ : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t✝ : Set α
s : ℕ → Set α
hs : (∑' (i : ℕ), ↑↑μ (s i)) ≠ ⊤
t : ℕ → Set α := fun n => toMeasurable μ (s n)
ht : (∑' (i : ℕ), ↑↑μ (t i)) ≠ ⊤
n m : ℕ
hnm : n ≤ m
x : α
⊢ x ∈ (fun n => ⋃ (i : ℕ), toMeasurable μ (s (i + n))) m → x ∈ (fun n => ⋃ (i : ℕ), toMeasurable μ (s (i + n))) n

tactic: exact fun ⟨i, hi⟩ => ⟨i + (m - n), by simpa only [add_assoc, tsub_add_cancel_of_le hnm] using hi⟩
state_before: α : Type u_1
β : Type ?u.68947
γ : Type ?u.68950
δ : Type ?u.68953
ι : Type ?u.68956
R : Type ?u.68959
R' : Type ?u.68962
m✝ : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t✝ : Set α
s : ℕ → Set α
hs : (∑' (i : ℕ), ↑↑μ (s i)) ≠ ⊤
t : ℕ → Set α := fun n => toMeasurable μ (s n)
ht : (∑' (i : ℕ), ↑↑μ (t i)) ≠ ⊤
n m : ℕ
hnm : n ≤ m
x : α
⊢ (∃ i, x ∈ toMeasurable μ (s (i + m))) → ∃ i, x ∈ toMeasurable μ (s (i + n))

tactic: simpa only [measure_toMeasurable] using hs
state_before: α : Type u_1
β : Type ?u.68947
γ : Type ?u.68950
δ : Type ?u.68953
ι : Type ?u.68956
R : Type ?u.68959
R' : Type ?u.68962
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t✝ : Set α
s : ℕ → Set α
hs : (∑' (i : ℕ), ↑↑μ (s i)) ≠ ⊤
t : ℕ → Set α := fun n => toMeasurable μ (s n)
⊢ (∑' (i : ℕ), ↑↑μ (t i)) ≠ ⊤

tactic: have A : s ≤ t := fun n => subset_toMeasurable μ (s n)
state_before: α : Type u_1
β : Type ?u.68947
γ : Type ?u.68950
δ : Type ?u.68953
ι : Type ?u.68956
R : Type ?u.68959
R' : Type ?u.68962
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t✝ : Set α
s : ℕ → Set α
hs : (∑' (i : ℕ), ↑↑μ (s i)) ≠ ⊤
t : ℕ → Set α := fun n => toMeasurable μ (s n)
ht : (∑' (i : ℕ), ↑↑μ (t i)) ≠ ⊤
this : ↑↑μ (limsup t atTop) = 0
⊢ ↑↑μ (limsup s atTop) = 0

tactic: exact
  measure_mono_null
    (limsup_le_limsup (eventually_of_forall (Pi.le_def.mp A)) isCobounded_le_of_bot
      isBounded_le_of_top)
    this
state_before: α : Type u_1
β : Type ?u.68947
γ : Type ?u.68950
δ : Type ?u.68953
ι : Type ?u.68956
R : Type ?u.68959
R' : Type ?u.68962
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t✝ : Set α
s : ℕ → Set α
hs : (∑' (i : ℕ), ↑↑μ (s i)) ≠ ⊤
t : ℕ → Set α := fun n => toMeasurable μ (s n)
ht : (∑' (i : ℕ), ↑↑μ (t i)) ≠ ⊤
this : ↑↑μ (limsup t atTop) = 0
A : s ≤ t
⊢ ↑↑μ (limsup s atTop) = 0

tactic: simpa only [add_assoc, tsub_add_cancel_of_le hnm] using hi
state_before: α : Type u_1
β : Type ?u.68947
γ : Type ?u.68950
δ : Type ?u.68953
ι : Type ?u.68956
R : Type ?u.68959
R' : Type ?u.68962
m✝ : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t✝ : Set α
s : ℕ → Set α
hs : (∑' (i : ℕ), ↑↑μ (s i)) ≠ ⊤
t : ℕ → Set α := fun n => toMeasurable μ (s n)
ht : (∑' (i : ℕ), ↑↑μ (t i)) ≠ ⊤
n m : ℕ
hnm : n ≤ m
x : α
x✝ : ∃ i, x ∈ toMeasurable μ (s (i + m))
i : ℕ
hi : x ∈ toMeasurable μ (s (i + m))
⊢ x ∈ toMeasurable μ (s (i + (m - n) + n))