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

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
s : ℕ → Set α
hs : ∑' (i : ℕ), μ (s i) ≠ ⊤
⊢ μ (limsup s atTop) = 0
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
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: set t : ℕ → Set α := fun n => toMeasurable μ (s n)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
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
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
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: have ht : (∑' i, μ (t i)) ≠ ∞ := by simpa only [t, measure_toMeasurable] using hs
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
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
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
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: suffices μ (limsup t atTop) = 0 by
    have A : s ≤ t := fun n => subset_toMeasurable μ (s n)
    -- TODO default args fail
    exact measure_mono_null (limsup_le_limsup (eventually_of_forall (Pi.le_def.mp A))) this
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
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
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
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, t (i + n)) ≤ 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_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
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, t (i + n)) ≤ 0
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
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, t (i + n)
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_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
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, t (i + n)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
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, t (i + n)) m → x ∈ (fun n => ⋃ i, t (i + n)) n
tactic: intro n m hnm x
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
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, t (i + n)) m → x ∈ (fun n => ⋃ i, t (i + n)) n
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
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 ∈ t (i + m)) → ∃ i, x ∈ t (i + n)
tactic: simp only [Set.mem_iUnion]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
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 ∈ t (i + m)) → ∃ i, x ∈ t (i + n)
state_after: no goals
tactic: exact fun ⟨i, hi⟩ => ⟨i + (m - n), by simpa only [add_assoc, tsub_add_cancel_of_le hnm] using hi⟩