Documentation

Mathlib.Topology.Instances.ENNReal.Lemmas

Topology on extended non-negative reals #

theorem ENNReal.continuous_coe_iff {α : Type u_4} [TopologicalSpace α] {f : α → NNReal} :
(Continuous fun (a : α) => ↑(f a)) ↔ Continuous f
theorem ENNReal.tendsto_nhds_coe_iff {α : Type u_4} {l : Filter α} {x : NNReal} {f : ENNReal → α} :
theorem ENNReal.tendsto_ofReal {α : Type u_1} {f : Filter α} {m : α → ℝ} {a : ℝ} (h : Filter.Tendsto m f (nhds a)) :
Filter.Tendsto (fun (a : α) => ENNReal.ofReal (m a)) f (nhds (ENNReal.ofReal a))
theorem ENNReal.tendsto_toNNReal_iff {α : Type u_1} {a : ENNReal} {f : α → ENNReal} {u : Filter α} (ha : a ≠ ⊤) (hf : ∀ (x : α), f x ≠ ⊤) :
theorem ENNReal.tendsto_toNNReal_iff' {α : Type u_1} {f : α → ENNReal} {u : Filter α} {a : NNReal} (hf : ∀ (x : α), f x ≠ ⊤) :
theorem ENNReal.eventuallyEq_of_toReal_eventuallyEq {α : Type u_1} {l : Filter α} {f g : α → ENNReal} (hfi : ∀ᶠ (x : α) in l, f x ≠ ⊤) (hgi : ∀ᶠ (x : α) in l, g x ≠ ⊤) (hfg : (fun (x : α) => (f x).toReal) =ᶠ[l] fun (x : α) => (g x).toReal) :
f =ᶠ[l] g

The set of finite ℝ≥0∞ numbers is homeomorphic to ℝ≥0.

Equations
Instances For
    theorem ENNReal.nhds_top :
    nhds ⊤ = ⨅ (a : ENNReal), ⨅ (_ : a ≠ ⊤), Filter.principal (Set.Ioi a)
    theorem ENNReal.nhds_top_basis :
    (nhds ⊤).HasBasis (fun (a : ENNReal) => a < ⊤) fun (a : ENNReal) => Set.Ioi a
    theorem ENNReal.tendsto_nhds_top_iff_nnreal {α : Type u_1} {m : α → ENNReal} {f : Filter α} :
    Filter.Tendsto m f (nhds ⊤) ↔ ∀ (x : NNReal), ∀ᶠ (a : α) in f, ↑x < m a
    theorem ENNReal.tendsto_nhds_top_iff_nat {α : Type u_1} {m : α → ENNReal} {f : Filter α} :
    Filter.Tendsto m f (nhds ⊤) ↔ ∀ (n : ℕ), ∀ᶠ (a : α) in f, ↑n < m a
    theorem ENNReal.tendsto_nhds_top {α : Type u_1} {m : α → ENNReal} {f : Filter α} (h : ∀ (n : ℕ), ∀ᶠ (a : α) in f, ↑n < m a) :
    @[simp]
    theorem ENNReal.tendsto_coe_nhds_top {α : Type u_1} {f : α → NNReal} {l : Filter α} :
    Filter.Tendsto (fun (x : α) => ↑(f x)) l (nhds ⊤) ↔ Filter.Tendsto f l Filter.atTop
    @[simp]
    theorem ENNReal.tendsto_ofReal_nhds_top {α : Type u_1} {f : α → ℝ} {l : Filter α} :
    theorem ENNReal.nhds_zero :
    nhds 0 = ⨅ (a : ENNReal), ⨅ (_ : a ≠ 0), Filter.principal (Set.Iio a)
    theorem ENNReal.nhds_zero_basis :
    (nhds 0).HasBasis (fun (a : ENNReal) => 0 < a) fun (a : ENNReal) => Set.Iio a
    theorem ENNReal.hasBasis_nhds_of_ne_top' {x : ENNReal} (xt : x ≠ ⊤) :
    (nhds x).HasBasis (fun (x : ENNReal) => x ≠ 0) fun (ε : ENNReal) => Set.Icc (x - ε) (x + ε)

    Closed intervals Set.Icc (x - ε) (x + ε), ε ≠ 0, form a basis of neighborhoods of an extended nonnegative real number x ≠ ∞. We use Set.Icc instead of Set.Ioo because this way the statement works for x = 0.

    theorem ENNReal.hasBasis_nhds_of_ne_top {x : ENNReal} (xt : x ≠ ⊤) :
    (nhds x).HasBasis (fun (x : ENNReal) => 0 < x) fun (ε : ENNReal) => Set.Icc (x - ε) (x + ε)
    theorem ENNReal.Icc_mem_nhds {x ε : ENNReal} (xt : x ≠ ⊤) (ε0 : ε ≠ 0) :
    Set.Icc (x - ε) (x + ε) ∈ nhds x
    theorem ENNReal.nhds_of_ne_top {x : ENNReal} (xt : x ≠ ⊤) :
    nhds x = ⨅ (ε : ENNReal), ⨅ (_ : ε > 0), Filter.principal (Set.Icc (x - ε) (x + ε))
    theorem ENNReal.biInf_le_nhds (x : ENNReal) :
    ⨅ (ε : ENNReal), ⨅ (_ : ε > 0), Filter.principal (Set.Icc (x - ε) (x + ε)) ≤ nhds x
    theorem ENNReal.tendsto_nhds_of_Icc {α : Type u_1} {f : Filter α} {u : α → ENNReal} {a : ENNReal} (h : ∀ ε > 0, ∀ᶠ (x : α) in f, u x ∈ Set.Icc (a - ε) (a + ε)) :
    theorem ENNReal.tendsto_nhds {α : Type u_1} {f : Filter α} {u : α → ENNReal} {a : ENNReal} (ha : a ≠ ⊤) :
    Filter.Tendsto u f (nhds a) ↔ ∀ ε > 0, ∀ᶠ (x : α) in f, u x ∈ Set.Icc (a - ε) (a + ε)

    Characterization of neighborhoods for ℝ≥0∞ numbers. See also tendsto_order for a version with strict inequalities.

    theorem ENNReal.tendsto_nhds_zero {α : Type u_1} {f : Filter α} {u : α → ENNReal} :
    Filter.Tendsto u f (nhds 0) ↔ ∀ ε > 0, ∀ᶠ (x : α) in f, u x ≤ ε
    theorem ENNReal.tendsto_const_sub_nhds_zero_iff {α : Type u_1} {l : Filter α} {f : α → ENNReal} {a : ENNReal} (ha : a ≠ ⊤) (hfa : ∀ (n : α), f n ≤ a) :
    Filter.Tendsto (fun (n : α) => a - f n) l (nhds 0) ↔ Filter.Tendsto (fun (n : α) => f n) l (nhds a)
    theorem ENNReal.tendsto_atTop {β : Type u_2} [Nonempty β] [SemilatticeSup β] {f : β → ENNReal} {a : ENNReal} (ha : a ≠ ⊤) :
    Filter.Tendsto f Filter.atTop (nhds a) ↔ ∀ ε > 0, ∃ (N : β), ∀ n ≥ N, f n ∈ Set.Icc (a - ε) (a + ε)
    theorem ENNReal.tendsto_atTop_zero {β : Type u_2} [Nonempty β] [SemilatticeSup β] {f : β → ENNReal} :
    Filter.Tendsto f Filter.atTop (nhds 0) ↔ ∀ ε > 0, ∃ (N : β), ∀ n ≥ N, f n ≤ ε
    theorem ENNReal.tendsto_atTop_zero_iff_le_of_antitone {β : Type u_4} [Nonempty β] [SemilatticeSup β] {f : β → ENNReal} (hf : Antitone f) :
    Filter.Tendsto f Filter.atTop (nhds 0) ↔ ∀ (ε : ENNReal), 0 < ε → ∃ (n : β), f n ≤ ε
    theorem ENNReal.tendsto_atTop_zero_iff_lt_of_antitone {β : Type u_4} [Nonempty β] [SemilatticeSup β] {f : β → ENNReal} (hf : Antitone f) :
    Filter.Tendsto f Filter.atTop (nhds 0) ↔ ∀ (ε : ENNReal), 0 < ε → ∃ (n : β), f n < ε
    theorem ENNReal.tendsto_sub {a b : ENNReal} :
    a ≠ ⊤ ∨ b ≠ ⊤ → Filter.Tendsto (fun (p : ENNReal × ENNReal) => p.1 - p.2) (nhds (a, b)) (nhds (a - b))
    theorem ENNReal.Tendsto.sub {α : Type u_1} {f : Filter α} {ma mb : α → ENNReal} {a b : ENNReal} (hma : Filter.Tendsto ma f (nhds a)) (hmb : Filter.Tendsto mb f (nhds b)) (h : a ≠ ⊤ ∨ b ≠ ⊤) :
    Filter.Tendsto (fun (a : α) => ma a - mb a) f (nhds (a - b))
    theorem ENNReal.tendsto_mul {a b : ENNReal} (ha : a ≠ 0 ∨ b ≠ ⊤) (hb : b ≠ 0 ∨ a ≠ ⊤) :
    Filter.Tendsto (fun (p : ENNReal × ENNReal) => p.1 * p.2) (nhds (a, b)) (nhds (a * b))
    theorem ENNReal.Tendsto.mul {α : Type u_1} {f : Filter α} {ma mb : α → ENNReal} {a b : ENNReal} (hma : Filter.Tendsto ma f (nhds a)) (ha : a ≠ 0 ∨ b ≠ ⊤) (hmb : Filter.Tendsto mb f (nhds b)) (hb : b ≠ 0 ∨ a ≠ ⊤) :
    Filter.Tendsto (fun (a : α) => ma a * mb a) f (nhds (a * b))
    theorem ContinuousOn.ennreal_mul {α : Type u_1} [TopologicalSpace α] {f g : α → ENNReal} {s : Set α} (hf : ContinuousOn f s) (hg : ContinuousOn g s) (h₁ : ∀ x ∈ s, f x ≠ 0 ∨ g x ≠ ⊤) (h₂ : ∀ x ∈ s, g x ≠ 0 ∨ f x ≠ ⊤) :
    ContinuousOn (fun (x : α) => f x * g x) s
    theorem Continuous.ennreal_mul {α : Type u_1} [TopologicalSpace α] {f g : α → ENNReal} (hf : Continuous f) (hg : Continuous g) (h₁ : ∀ (x : α), f x ≠ 0 ∨ g x ≠ ⊤) (h₂ : ∀ (x : α), g x ≠ 0 ∨ f x ≠ ⊤) :
    Continuous fun (x : α) => f x * g x
    theorem ENNReal.Tendsto.const_mul {α : Type u_1} {f : Filter α} {m : α → ENNReal} {a b : ENNReal} (hm : Filter.Tendsto m f (nhds b)) (hb : b ≠ 0 ∨ a ≠ ⊤) :
    Filter.Tendsto (fun (b : α) => a * m b) f (nhds (a * b))
    theorem ENNReal.Tendsto.mul_const {α : Type u_1} {f : Filter α} {m : α → ENNReal} {a b : ENNReal} (hm : Filter.Tendsto m f (nhds a)) (ha : a ≠ 0 ∨ b ≠ ⊤) :
    Filter.Tendsto (fun (x : α) => m x * b) f (nhds (a * b))
    theorem ENNReal.tendsto_finset_prod_of_ne_top {α : Type u_1} {ι : Type u_4} {f : ι → α → ENNReal} {x : Filter α} {a : ι → ENNReal} (s : Finset ι) (h : ∀ i ∈ s, Filter.Tendsto (f i) x (nhds (a i))) (h' : ∀ i ∈ s, a i ≠ ⊤) :
    Filter.Tendsto (fun (b : α) => ∏ c ∈ s, f c b) x (nhds (∏ c ∈ s, a c))
    theorem ENNReal.continuousAt_const_mul {a b : ENNReal} (h : a ≠ ⊤ ∨ b ≠ 0) :
    ContinuousAt (fun (x : ENNReal) => a * x) b
    theorem ENNReal.continuousAt_mul_const {a b : ENNReal} (h : a ≠ ⊤ ∨ b ≠ 0) :
    ContinuousAt (fun (x : ENNReal) => x * a) b
    theorem ENNReal.continuous_const_mul {a : ENNReal} (ha : a ≠ ⊤) :
    Continuous fun (x : ENNReal) => a * x
    theorem ENNReal.continuous_mul_const {a : ENNReal} (ha : a ≠ ⊤) :
    Continuous fun (x : ENNReal) => x * a
    theorem ENNReal.continuous_div_const (c : ENNReal) (c_ne_zero : c ≠ 0) :
    Continuous fun (x : ENNReal) => x / c
    theorem ENNReal.continuous_pow (n : ℕ) :
    Continuous fun (a : ENNReal) => a ^ n
    theorem ENNReal.continuous_sub_left {a : ENNReal} (a_ne_top : a ≠ ⊤) :
    Continuous fun (x : ENNReal) => a - x
    theorem ENNReal.Tendsto.pow {α : Type u_1} {f : Filter α} {m : α → ENNReal} {a : ENNReal} {n : ℕ} (hm : Filter.Tendsto m f (nhds a)) :
    Filter.Tendsto (fun (x : α) => m x ^ n) f (nhds (a ^ n))
    theorem ENNReal.le_of_forall_lt_one_mul_le {x y : ENNReal} (h : ∀ a < 1, a * x ≤ y) :
    x ≤ y
    theorem ENNReal.inv_limsup {ι : Type u_4} {x : ι → ENNReal} {l : Filter ι} :
    (Filter.limsup x l)⁻¹ = Filter.liminf (fun (i : ι) => (x i)⁻¹) l
    theorem ENNReal.inv_liminf {ι : Type u_4} {x : ι → ENNReal} {l : Filter ι} :
    (Filter.liminf x l)⁻¹ = Filter.limsup (fun (i : ι) => (x i)⁻¹) l
    theorem ENNReal.continuous_zpow (n : ℤ) :
    Continuous fun (x : ENNReal) => x ^ n
    @[simp]
    theorem ENNReal.tendsto_inv_iff {α : Type u_1} {f : Filter α} {m : α → ENNReal} {a : ENNReal} :
    Filter.Tendsto (fun (x : α) => (m x)⁻¹) f (nhds a⁻¹) ↔ Filter.Tendsto m f (nhds a)
    theorem ENNReal.Tendsto.div {α : Type u_1} {f : Filter α} {ma mb : α → ENNReal} {a b : ENNReal} (hma : Filter.Tendsto ma f (nhds a)) (ha : a ≠ 0 ∨ b ≠ 0) (hmb : Filter.Tendsto mb f (nhds b)) (hb : b ≠ ⊤ ∨ a ≠ ⊤) :
    Filter.Tendsto (fun (a : α) => ma a / mb a) f (nhds (a / b))
    theorem ENNReal.Tendsto.const_div {α : Type u_1} {f : Filter α} {m : α → ENNReal} {a b : ENNReal} (hm : Filter.Tendsto m f (nhds b)) (hb : b ≠ ⊤ ∨ a ≠ ⊤) :
    Filter.Tendsto (fun (b : α) => a / m b) f (nhds (a / b))
    theorem ENNReal.Tendsto.div_const {α : Type u_1} {f : Filter α} {m : α → ENNReal} {a b : ENNReal} (hm : Filter.Tendsto m f (nhds a)) (ha : a ≠ 0 ∨ b ≠ 0) :
    Filter.Tendsto (fun (x : α) => m x / b) f (nhds (a / b))
    theorem ENNReal.tendsto_coe_sub {r : NNReal} {b : ENNReal} :
    Filter.Tendsto (fun (b : ENNReal) => ↑r - b) (nhds b) (nhds (↑r - b))
    theorem ENNReal.exists_frequently_lt_of_liminf_ne_top {ι : Type u_4} {l : Filter ι} {x : ι → ℝ} (hx : Filter.liminf (fun (n : ι) => ↑(Real.nnabs (x n))) l ≠ ⊤) :
    ∃ (R : ℝ), ∃ᶠ (n : ι) in l, x n < R
    theorem ENNReal.exists_frequently_lt_of_liminf_ne_top' {ι : Type u_4} {l : Filter ι} {x : ι → ℝ} (hx : Filter.liminf (fun (n : ι) => ↑(Real.nnabs (x n))) l ≠ ⊤) :
    ∃ (R : ℝ), ∃ᶠ (n : ι) in l, R < x n
    theorem ENNReal.exists_upcrossings_of_not_bounded_under {ι : Type u_4} {l : Filter ι} {x : ι → ℝ} (hf : Filter.liminf (fun (i : ι) => ↑(Real.nnabs (x i))) l ≠ ⊤) (hbdd : ¬Filter.IsBoundedUnder (fun (x1 x2 : ℝ) => x1 ≤ x2) l fun (i : ι) => |x i|) :
    ∃ (a : ℚ) (b : ℚ), a < b ∧ (∃ᶠ (i : ι) in l, x i < ↑a) ∧ ∃ᶠ (i : ι) in l, ↑b < x i
    theorem ENNReal.hasSum_coe {α : Type u_1} {f : α → NNReal} {r : NNReal} :
    HasSum (fun (a : α) => ↑(f a)) ↑r ↔ HasSum f r
    theorem ENNReal.tsum_coe_eq {α : Type u_1} {r : NNReal} {f : α → NNReal} (h : HasSum f r) :
    ∑' (a : α), ↑(f a) = ↑r
    theorem ENNReal.coe_tsum {α : Type u_1} {f : α → NNReal} :
    Summable f → ↑(tsum f) = ∑' (a : α), ↑(f a)
    theorem ENNReal.hasSum {α : Type u_1} {f : α → ENNReal} :
    HasSum f (⨆ (s : Finset α), ∑ a ∈ s, f a)
    @[simp]
    theorem ENNReal.summable {α : Type u_1} {f : α → ENNReal} :
    theorem ENNReal.tsum_coe_ne_top_iff_summable {β : Type u_2} {f : β → NNReal} :
    ∑' (b : β), ↑(f b) ≠ ⊤ ↔ Summable f
    theorem ENNReal.tsum_eq_iSup_sum {α : Type u_1} {f : α → ENNReal} :
    ∑' (a : α), f a = ⨆ (s : Finset α), ∑ a ∈ s, f a
    theorem ENNReal.tsum_eq_iSup_sum' {α : Type u_1} {f : α → ENNReal} {ι : Type u_4} (s : ι → Finset α) (hs : ∀ (t : Finset α), ∃ (i : ι), t ⊆ s i) :
    ∑' (a : α), f a = ⨆ (i : ι), ∑ a ∈ s i, f a
    theorem ENNReal.tsum_sigma {α : Type u_1} {β : α → Type u_4} (f : (a : α) → β a → ENNReal) :
    ∑' (p : (a : α) × β a), f p.fst p.snd = ∑' (a : α) (b : β a), f a b
    theorem ENNReal.tsum_sigma' {α : Type u_1} {β : α → Type u_4} (f : (a : α) × β a → ENNReal) :
    ∑' (p : (a : α) × β a), f p = ∑' (a : α) (b : β a), f ⟨a, b⟩
    theorem ENNReal.tsum_biUnion' {α : Type u_1} {ι : Type u_4} {S : Set ι} {f : α → ENNReal} {t : ι → Set α} (h : S.PairwiseDisjoint t) :
    ∑' (x : ↑(⋃ i ∈ S, t i)), f ↑x = ∑' (i : ↑S) (x : ↑(t ↑i)), f ↑x
    theorem ENNReal.tsum_biUnion {α : Type u_1} {ι : Type u_4} {f : α → ENNReal} {t : ι → Set α} (h : Set.univ.PairwiseDisjoint t) :
    ∑' (x : ↑(⋃ (i : ι), t i)), f ↑x = ∑' (i : ι) (x : ↑(t i)), f ↑x
    theorem ENNReal.tsum_prod {α : Type u_1} {β : Type u_2} {f : α → β → ENNReal} :
    ∑' (p : α × β), f p.1 p.2 = ∑' (a : α) (b : β), f a b
    theorem ENNReal.tsum_prod' {α : Type u_1} {β : Type u_2} {f : α × β → ENNReal} :
    ∑' (p : α × β), f p = ∑' (a : α) (b : β), f (a, b)
    theorem ENNReal.tsum_comm {α : Type u_1} {β : Type u_2} {f : α → β → ENNReal} :
    ∑' (a : α) (b : β), f a b = ∑' (b : β) (a : α), f a b
    theorem ENNReal.tsum_add {α : Type u_1} {f g : α → ENNReal} :
    ∑' (a : α), (f a + g a) = ∑' (a : α), f a + ∑' (a : α), g a
    theorem ENNReal.sum_add_tsum_compl {ι : Type u_4} (s : Finset ι) (f : ι → ENNReal) :
    ∑ i ∈ s, f i + ∑' (i : ↑(↑s)ᶜ), f ↑i = ∑' (i : ι), f i
    theorem ENNReal.tsum_le_tsum {α : Type u_1} {f g : α → ENNReal} (h : ∀ (a : α), f a ≤ g a) :
    ∑' (a : α), f a ≤ ∑' (a : α), g a
    theorem ENNReal.sum_le_tsum {α : Type u_1} {f : α → ENNReal} (s : Finset α) :
    ∑ x ∈ s, f x ≤ ∑' (x : α), f x
    theorem ENNReal.tsum_eq_iSup_nat' {f : ℕ → ENNReal} {N : ℕ → ℕ} (hN : Filter.Tendsto N Filter.atTop Filter.atTop) :
    ∑' (i : ℕ), f i = ⨆ (i : ℕ), ∑ a ∈ Finset.range (N i), f a
    theorem ENNReal.tsum_eq_iSup_nat {f : ℕ → ENNReal} :
    ∑' (i : ℕ), f i = ⨆ (i : ℕ), ∑ a ∈ Finset.range i, f a
    theorem ENNReal.tsum_eq_liminf_sum_nat {f : ℕ → ENNReal} :
    ∑' (i : ℕ), f i = Filter.liminf (fun (n : ℕ) => ∑ i ∈ Finset.range n, f i) Filter.atTop
    theorem ENNReal.tsum_eq_limsup_sum_nat {f : ℕ → ENNReal} :
    ∑' (i : ℕ), f i = Filter.limsup (fun (n : ℕ) => ∑ i ∈ Finset.range n, f i) Filter.atTop
    theorem ENNReal.le_tsum {α : Type u_1} {f : α → ENNReal} (a : α) :
    f a ≤ ∑' (a : α), f a
    @[simp]
    theorem ENNReal.tsum_eq_zero {α : Type u_1} {f : α → ENNReal} :
    ∑' (i : α), f i = 0 ↔ ∀ (i : α), f i = 0
    theorem ENNReal.tsum_eq_top_of_eq_top {α : Type u_1} {f : α → ENNReal} :
    (∃ (a : α), f a = ⊤) → ∑' (a : α), f a = ⊤
    theorem ENNReal.lt_top_of_tsum_ne_top {α : Type u_1} {a : α → ENNReal} (tsum_ne_top : ∑' (i : α), a i ≠ ⊤) (j : α) :
    a j < ⊤
    @[simp]
    theorem ENNReal.tsum_top {α : Type u_1} [Nonempty α] :
    ∑' (x : α), ⊤ = ⊤
    theorem ENNReal.tsum_const_eq_top_of_ne_zero {α : Type u_4} [Infinite α] {c : ENNReal} (hc : c ≠ 0) :
    ∑' (x : α), c = ⊤
    theorem ENNReal.ne_top_of_tsum_ne_top {α : Type u_1} {f : α → ENNReal} (h : ∑' (a : α), f a ≠ ⊤) (a : α) :
    f a ≠ ⊤
    theorem ENNReal.tsum_mul_left {α : Type u_1} {a : ENNReal} {f : α → ENNReal} :
    ∑' (i : α), a * f i = a * ∑' (i : α), f i
    theorem ENNReal.tsum_mul_right {α : Type u_1} {a : ENNReal} {f : α → ENNReal} :
    ∑' (i : α), f i * a = (∑' (i : α), f i) * a
    theorem ENNReal.tsum_const_smul {α : Type u_1} {f : α → ENNReal} {R : Type u_4} [SMul R ENNReal] [IsScalarTower R ENNReal ENNReal] (a : R) :
    ∑' (i : α), a • f i = a • ∑' (i : α), f i
    @[simp]
    theorem ENNReal.tsum_iSup_eq {α : Type u_4} (a : α) {f : α → ENNReal} :
    ∑' (b : α), ⨆ (_ : a = b), f b = f a
    theorem ENNReal.hasSum_iff_tendsto_nat {f : ℕ → ENNReal} (r : ENNReal) :
    HasSum f r ↔ Filter.Tendsto (fun (n : ℕ) => ∑ i ∈ Finset.range n, f i) Filter.atTop (nhds r)
    theorem ENNReal.tendsto_nat_tsum (f : ℕ → ENNReal) :
    Filter.Tendsto (fun (n : ℕ) => ∑ i ∈ Finset.range n, f i) Filter.atTop (nhds (∑' (n : ℕ), f n))
    theorem ENNReal.toNNReal_apply_of_tsum_ne_top {α : Type u_4} {f : α → ENNReal} (hf : ∑' (i : α), f i ≠ ⊤) (x : α) :
    ↑((ENNReal.toNNReal ∘ f) x) = f x
    theorem ENNReal.summable_toNNReal_of_tsum_ne_top {α : Type u_4} {f : α → ENNReal} (hf : ∑' (i : α), f i ≠ ⊤) :
    theorem ENNReal.tendsto_tsum_compl_atTop_zero {α : Type u_4} {f : α → ENNReal} (hf : ∑' (x : α), f x ≠ ⊤) :
    Filter.Tendsto (fun (s : Finset α) => ∑' (b : { x : α // x ∉ s }), f ↑b) Filter.atTop (nhds 0)

    The sum over the complement of a finset tends to 0 when the finset grows to cover the whole space. This does not need a summability assumption, as otherwise all sums are zero.

    theorem ENNReal.tsum_apply {ι : Type u_4} {α : Type u_5} {f : ι → α → ENNReal} {x : α} :
    (∑' (i : ι), f i) x = ∑' (i : ι), f i x
    theorem ENNReal.tsum_sub {f g : ℕ → ENNReal} (h₁ : ∑' (i : ℕ), g i ≠ ⊤) (h₂ : g ≤ f) :
    ∑' (i : ℕ), (f i - g i) = ∑' (i : ℕ), f i - ∑' (i : ℕ), g i
    theorem ENNReal.tsum_comp_le_tsum_of_injective {α : Type u_1} {β : Type u_2} {f : α → β} (hf : Function.Injective f) (g : β → ENNReal) :
    ∑' (x : α), g (f x) ≤ ∑' (y : β), g y
    theorem ENNReal.tsum_le_tsum_comp_of_surjective {α : Type u_1} {β : Type u_2} {f : α → β} (hf : Function.Surjective f) (g : β → ENNReal) :
    ∑' (y : β), g y ≤ ∑' (x : α), g (f x)
    theorem ENNReal.tsum_mono_subtype {α : Type u_1} (f : α → ENNReal) {s t : Set α} (h : s ⊆ t) :
    ∑' (x : ↑s), f ↑x ≤ ∑' (x : ↑t), f ↑x
    theorem ENNReal.tsum_iUnion_le_tsum {α : Type u_1} {ι : Type u_4} (f : α → ENNReal) (t : ι → Set α) :
    ∑' (x : ↑(⋃ (i : ι), t i)), f ↑x ≤ ∑' (i : ι) (x : ↑(t i)), f ↑x
    theorem ENNReal.tsum_biUnion_le_tsum {α : Type u_1} {ι : Type u_4} (f : α → ENNReal) (s : Set ι) (t : ι → Set α) :
    ∑' (x : ↑(⋃ i ∈ s, t i)), f ↑x ≤ ∑' (i : ↑s) (x : ↑(t ↑i)), f ↑x
    theorem ENNReal.tsum_biUnion_le {α : Type u_1} {ι : Type u_4} (f : α → ENNReal) (s : Finset ι) (t : ι → Set α) :
    ∑' (x : ↑(⋃ i ∈ s, t i)), f ↑x ≤ ∑ i ∈ s, ∑' (x : ↑(t i)), f ↑x
    theorem ENNReal.tsum_iUnion_le {α : Type u_1} {ι : Type u_4} [Fintype ι] (f : α → ENNReal) (t : ι → Set α) :
    ∑' (x : ↑(⋃ (i : ι), t i)), f ↑x ≤ ∑ i : ι, ∑' (x : ↑(t i)), f ↑x
    theorem ENNReal.tsum_union_le {α : Type u_1} (f : α → ENNReal) (s t : Set α) :
    ∑' (x : ↑(s ∪ t)), f ↑x ≤ ∑' (x : ↑s), f ↑x + ∑' (x : ↑t), f ↑x
    theorem ENNReal.tsum_eq_add_tsum_ite {β : Type u_2} {f : β → ENNReal} (b : β) :
    ∑' (x : β), f x = f b + ∑' (x : β), if x = b then 0 else f x
    theorem ENNReal.tsum_add_one_eq_top {f : ℕ → ENNReal} (hf : ∑' (n : ℕ), f n = ⊤) (hf0 : f 0 ≠ ⊤) :
    ∑' (n : ℕ), f (n + 1) = ⊤
    theorem ENNReal.finite_const_le_of_tsum_ne_top {ι : Type u_4} {a : ι → ENNReal} (tsum_ne_top : ∑' (i : ι), a i ≠ ⊤) {ε : ENNReal} (ε_ne_zero : ε ≠ 0) :
    {i : ι | ε ≤ a i}.Finite

    A sum of extended nonnegative reals which is finite can have only finitely many terms above any positive threshold.

    theorem ENNReal.finset_card_const_le_le_of_tsum_le {ι : Type u_4} {a : ι → ENNReal} {c : ENNReal} (c_ne_top : c ≠ ⊤) (tsum_le_c : ∑' (i : ι), a i ≤ c) {ε : ENNReal} (ε_ne_zero : ε ≠ 0) :
    ∃ (hf : {i : ι | ε ≤ a i}.Finite), ↑hf.toFinset.card ≤ c / ε

    Markov's inequality for Finset.card and tsum in ℝ≥0∞.

    theorem ENNReal.tsum_fiberwise {β : Type u_2} {γ : Type u_3} (f : β → ENNReal) (g : β → γ) :
    ∑' (x : γ) (b : ↑(g ⁻¹' {x})), f ↑b = ∑' (i : β), f i
    theorem ENNReal.tendsto_toReal_iff {ι : Type u_4} {fi : Filter ι} {f : ι → ENNReal} (hf : ∀ (i : ι), f i ≠ ⊤) {x : ENNReal} (hx : x ≠ ⊤) :
    Filter.Tendsto (fun (n : ι) => (f n).toReal) fi (nhds x.toReal) ↔ Filter.Tendsto f fi (nhds x)
    theorem ENNReal.tendsto_toReal_zero_iff {ι : Type u_4} {fi : Filter ι} {f : ι → ENNReal} (hf : ∀ (i : ι), f i ≠ ⊤ := by finiteness) :
    Filter.Tendsto (fun (n : ι) => (f n).toReal) fi (nhds 0) ↔ Filter.Tendsto f fi (nhds 0)
    theorem ENNReal.tsum_coe_ne_top_iff_summable_coe {α : Type u_1} {f : α → NNReal} :
    ∑' (a : α), ↑(f a) ≠ ⊤ ↔ Summable fun (a : α) => ↑(f a)
    theorem ENNReal.tsum_coe_eq_top_iff_not_summable_coe {α : Type u_1} {f : α → NNReal} :
    ∑' (a : α), ↑(f a) = ⊤ ↔ ¬Summable fun (a : α) => ↑(f a)
    theorem ENNReal.hasSum_toReal {α : Type u_1} {f : α → ENNReal} (hsum : ∑' (x : α), f x ≠ ⊤) :
    HasSum (fun (x : α) => (f x).toReal) (∑' (x : α), (f x).toReal)
    theorem ENNReal.summable_toReal {α : Type u_1} {f : α → ENNReal} (hsum : ∑' (x : α), f x ≠ ⊤) :
    Summable fun (x : α) => (f x).toReal
    theorem NNReal.tsum_eq_toNNReal_tsum {β : Type u_2} {f : β → NNReal} :
    ∑' (b : β), f b = (∑' (b : β), ↑(f b)).toNNReal
    theorem NNReal.exists_le_hasSum_of_le {β : Type u_2} {f g : β → NNReal} {r : NNReal} (hgf : ∀ (b : β), g b ≤ f b) (hfr : HasSum f r) :
    ∃ p ≤ r, HasSum g p

    Comparison test of convergence of ℝ≥0-valued series.

    theorem NNReal.summable_of_le {β : Type u_2} {f g : β → NNReal} (hgf : ∀ (b : β), g b ≤ f b) :

    Comparison test of convergence of ℝ≥0-valued series.

    Summable non-negative functions have countable support

    theorem NNReal.hasSum_iff_tendsto_nat {f : ℕ → NNReal} {r : NNReal} :
    HasSum f r ↔ Filter.Tendsto (fun (n : ℕ) => ∑ i ∈ Finset.range n, f i) Filter.atTop (nhds r)

    A series of non-negative real numbers converges to r in the sense of HasSum if and only if the sequence of partial sum converges to r.

    theorem NNReal.summable_of_sum_range_le {f : ℕ → NNReal} {c : NNReal} (h : ∀ (n : ℕ), ∑ i ∈ Finset.range n, f i ≤ c) :
    theorem NNReal.tsum_le_of_sum_range_le {f : ℕ → NNReal} {c : NNReal} (h : ∀ (n : ℕ), ∑ i ∈ Finset.range n, f i ≤ c) :
    ∑' (n : ℕ), f n ≤ c
    theorem NNReal.tsum_comp_le_tsum_of_inj {α : Type u_1} {β : Type u_4} {f : α → NNReal} (hf : Summable f) {i : β → α} (hi : Function.Injective i) :
    ∑' (x : β), f (i x) ≤ ∑' (x : α), f x
    theorem NNReal.summable_sigma {α : Type u_1} {β : α → Type u_4} {f : (x : α) × β x → NNReal} :
    Summable f ↔ (∀ (x : α), Summable fun (y : β x) => f ⟨x, y⟩) ∧ Summable fun (x : α) => ∑' (y : β x), f ⟨x, y⟩
    theorem NNReal.indicator_summable {α : Type u_1} {f : α → NNReal} (hf : Summable f) (s : Set α) :
    theorem NNReal.tsum_indicator_ne_zero {α : Type u_1} {f : α → NNReal} (hf : Summable f) {s : Set α} (h : ∃ a ∈ s, f a ≠ 0) :
    ∑' (x : α), s.indicator f x ≠ 0
    theorem NNReal.tendsto_sum_nat_add (f : ℕ → NNReal) :
    Filter.Tendsto (fun (i : ℕ) => ∑' (k : ℕ), f (k + i)) Filter.atTop (nhds 0)

    For f : ℕ → ℝ≥0, then ∑' k, f (k + i) tends to zero. This does not require a summability assumption on f, as otherwise all sums are zero.

    theorem NNReal.hasSum_lt {α : Type u_1} {f g : α → NNReal} {sf sg : NNReal} {i : α} (h : ∀ (a : α), f a ≤ g a) (hi : f i < g i) (hf : HasSum f sf) (hg : HasSum g sg) :
    sf < sg
    theorem NNReal.hasSum_strict_mono {α : Type u_1} {f g : α → NNReal} {sf sg : NNReal} (hf : HasSum f sf) (hg : HasSum g sg) (h : f < g) :
    sf < sg
    theorem NNReal.tsum_lt_tsum {α : Type u_1} {f g : α → NNReal} {i : α} (h : ∀ (a : α), f a ≤ g a) (hi : f i < g i) (hg : Summable g) :
    ∑' (n : α), f n < ∑' (n : α), g n
    theorem NNReal.tsum_strict_mono {α : Type u_1} {f g : α → NNReal} (hg : Summable g) (h : f < g) :
    ∑' (n : α), f n < ∑' (n : α), g n
    theorem NNReal.tsum_pos {α : Type u_1} {g : α → NNReal} (hg : Summable g) (i : α) (hi : 0 < g i) :
    0 < ∑' (b : α), g b
    theorem NNReal.tsum_eq_add_tsum_ite {α : Type u_1} {f : α → NNReal} (hf : Summable f) (i : α) :
    ∑' (x : α), f x = f i + ∑' (x : α), if x = i then 0 else f x
    theorem ENNReal.tsum_toNNReal_eq {α : Type u_1} {f : α → ENNReal} (hf : ∀ (a : α), f a ≠ ⊤) :
    (∑' (a : α), f a).toNNReal = ∑' (a : α), (f a).toNNReal
    theorem ENNReal.tsum_toReal_eq {α : Type u_1} {f : α → ENNReal} (hf : ∀ (a : α), f a ≠ ⊤) :
    (∑' (a : α), f a).toReal = ∑' (a : α), (f a).toReal
    theorem ENNReal.tendsto_sum_nat_add (f : ℕ → ENNReal) (hf : ∑' (i : ℕ), f i ≠ ⊤) :
    Filter.Tendsto (fun (i : ℕ) => ∑' (k : ℕ), f (k + i)) Filter.atTop (nhds 0)
    theorem ENNReal.tsum_le_of_sum_range_le {f : ℕ → ENNReal} {c : ENNReal} (h : ∀ (n : ℕ), ∑ i ∈ Finset.range n, f i ≤ c) :
    ∑' (n : ℕ), f n ≤ c
    theorem ENNReal.hasSum_lt {α : Type u_1} {f g : α → ENNReal} {sf sg : ENNReal} {i : α} (h : ∀ (a : α), f a ≤ g a) (hi : f i < g i) (hsf : sf ≠ ⊤) (hf : HasSum f sf) (hg : HasSum g sg) :
    sf < sg
    theorem ENNReal.tsum_lt_tsum {α : Type u_1} {f g : α → ENNReal} {i : α} (hfi : tsum f ≠ ⊤) (h : ∀ (a : α), f a ≤ g a) (hi : f i < g i) :
    ∑' (x : α), f x < ∑' (x : α), g x
    theorem tsum_comp_le_tsum_of_inj {α : Type u_1} {β : Type u_4} {f : α → ℝ} (hf : Summable f) (hn : ∀ (a : α), 0 ≤ f a) {i : β → α} (hi : Function.Injective i) :
    tsum (f ∘ i) ≤ tsum f
    theorem Summable.of_nonneg_of_le {β : Type u_2} {f g : β → ℝ} (hg : ∀ (b : β), 0 ≤ g b) (hgf : ∀ (b : β), g b ≤ f b) (hf : Summable f) :

    Comparison test of convergence of series of non-negative real numbers.

    theorem Summable.toNNReal {α : Type u_1} {f : α → ℝ} (hf : Summable f) :
    Summable fun (n : α) => (f n).toNNReal
    theorem Summable.tsum_ofReal_lt_top {α : Type u_1} {f : α → ℝ} (hf : Summable f) :
    ∑' (i : α), ENNReal.ofReal (f i) < ⊤
    theorem Summable.tsum_ofReal_ne_top {α : Type u_1} {f : α → ℝ} (hf : Summable f) :
    ∑' (i : α), ENNReal.ofReal (f i) ≠ ⊤
    theorem Summable.countable_support_ennreal {α : Type u_1} {f : α → ENNReal} (h : ∑' (i : α), f i ≠ ⊤) :

    Finitely summable non-negative functions have countable support

    theorem hasSum_iff_tendsto_nat_of_nonneg {f : ℕ → ℝ} (hf : ∀ (i : ℕ), 0 ≤ f i) (r : ℝ) :
    HasSum f r ↔ Filter.Tendsto (fun (n : ℕ) => ∑ i ∈ Finset.range n, f i) Filter.atTop (nhds r)

    A series of non-negative real numbers converges to r in the sense of HasSum if and only if the sequence of partial sum converges to r.

    theorem ENNReal.ofReal_tsum_of_nonneg {α : Type u_1} {f : α → ℝ} (hf_nonneg : ∀ (n : α), 0 ≤ f n) (hf : Summable f) :
    ENNReal.ofReal (∑' (n : α), f n) = ∑' (n : α), ENNReal.ofReal (f n)
    theorem ENNReal.multipliable_of_le_one {α : Type u_1} {f : α → ENNReal} (h₀ : ∀ (i : α), f i ≤ 1) :
    theorem ENNReal.hasProd_iInf_prod {α : Type u_1} {f : α → ENNReal} (h₀ : ∀ (i : α), f i ≤ 1) :
    HasProd f (⨅ (s : Finset α), ∏ i ∈ s, f i)
    theorem ENNReal.tprod_eq_iInf_prod {α : Type u_1} {f : α → ENNReal} (h₀ : ∀ (i : α), f i ≤ 1) :
    ∏' (i : α), f i = ⨅ (s : Finset α), ∏ i ∈ s, f i
    theorem edist_ne_top_of_mem_ball {β : Type u_2} [EMetricSpace β] {a : β} {r : ENNReal} (x y : ↑(EMetric.ball a r)) :
    edist ↑x ↑y ≠ ⊤

    In an emetric ball, the distance between points is everywhere finite

    def metricSpaceEMetricBall {β : Type u_2} [EMetricSpace β] (a : β) (r : ENNReal) :

    Each ball in an extended metric space gives us a metric space, as the edist is everywhere finite.

    Equations
    Instances For
      theorem nhds_eq_nhds_emetric_ball {β : Type u_2} [EMetricSpace β] (a x : β) (r : ENNReal) (h : x ∈ EMetric.ball a r) :
      theorem tendsto_iff_edist_tendsto_0 {α : Type u_1} {β : Type u_2} [PseudoEMetricSpace α] {l : Filter β} {f : β → α} {y : α} :
      Filter.Tendsto f l (nhds y) ↔ Filter.Tendsto (fun (x : β) => edist (f x) y) l (nhds 0)
      theorem EMetric.cauchySeq_iff_le_tendsto_0 {α : Type u_1} {β : Type u_2} [PseudoEMetricSpace α] [Nonempty β] [SemilatticeSup β] {s : β → α} :
      CauchySeq s ↔ ∃ (b : β → ENNReal), (∀ (n m N : β), N ≤ n → N ≤ m → edist (s n) (s m) ≤ b N) ∧ Filter.Tendsto b Filter.atTop (nhds 0)

      Yet another metric characterization of Cauchy sequences on integers. This one is often the most efficient.

      theorem continuous_of_le_add_edist {α : Type u_1} [PseudoEMetricSpace α] {f : α → ENNReal} (C : ENNReal) (hC : C ≠ ⊤) (h : ∀ (x y : α), f x ≤ f y + C * edist x y) :
      theorem continuous_edist {α : Type u_1} [PseudoEMetricSpace α] :
      Continuous fun (p : α × α) => edist p.1 p.2
      theorem Continuous.edist {α : Type u_1} {β : Type u_2} [PseudoEMetricSpace α] [TopologicalSpace β] {f g : β → α} (hf : Continuous f) (hg : Continuous g) :
      Continuous fun (b : β) => EDist.edist (f b) (g b)
      theorem Filter.Tendsto.edist {α : Type u_1} {β : Type u_2} [PseudoEMetricSpace α] {f g : β → α} {x : Filter β} {a b : α} (hf : Tendsto f x (nhds a)) (hg : Tendsto g x (nhds b)) :
      Tendsto (fun (x : β) => EDist.edist (f x) (g x)) x (nhds (EDist.edist a b))
      theorem cauchySeq_of_edist_le_of_summable {α : Type u_1} [PseudoEMetricSpace α] {f : ℕ → α} (d : ℕ → NNReal) (hf : ∀ (n : ℕ), edist (f n) (f n.succ) ≤ ↑(d n)) (hd : Summable d) :

      If the extended distance between consecutive points of a sequence is estimated by a summable series of NNReals, then the original sequence is a Cauchy sequence.

      theorem cauchySeq_of_edist_le_of_tsum_ne_top {α : Type u_1} [PseudoEMetricSpace α] {f : ℕ → α} (d : ℕ → ENNReal) (hf : ∀ (n : ℕ), edist (f n) (f n.succ) ≤ d n) (hd : tsum d ≠ ⊤) :
      @[simp]
      theorem EMetric.diam_closure {α : Type u_1} [PseudoEMetricSpace α] (s : Set α) :
      @[simp]
      theorem Metric.diam_closure {α : Type u_4} [PseudoMetricSpace α] (s : Set α) :
      theorem isClosed_setOf_lipschitzOnWith {α : Type u_4} {β : Type u_5} [PseudoEMetricSpace α] [PseudoEMetricSpace β] (K : NNReal) (s : Set α) :
      IsClosed {f : α → β | LipschitzOnWith K f s}

      For a bounded set s : Set ℝ, its EMetric.diam is equal to sSup s - sInf s reinterpreted as ℝ≥0∞.

      For a bounded set s : Set ℝ, its Metric.diam is equal to sSup s - sInf s.

      @[simp]
      theorem Real.ediam_Ioo (a b : ℝ) :
      @[simp]
      theorem Real.ediam_Icc (a b : ℝ) :
      @[simp]
      theorem Real.ediam_Ico (a b : ℝ) :
      @[simp]
      theorem Real.ediam_Ioc (a b : ℝ) :
      theorem Real.diam_Icc {a b : ℝ} (h : a ≤ b) :
      theorem Real.diam_Ico {a b : ℝ} (h : a ≤ b) :
      theorem Real.diam_Ioc {a b : ℝ} (h : a ≤ b) :
      theorem Real.diam_Ioo {a b : ℝ} (h : a ≤ b) :
      theorem edist_le_tsum_of_edist_le_of_tendsto {α : Type u_1} [PseudoEMetricSpace α] {f : ℕ → α} (d : ℕ → ENNReal) (hf : ∀ (n : ℕ), edist (f n) (f n.succ) ≤ d n) {a : α} (ha : Filter.Tendsto f Filter.atTop (nhds a)) (n : ℕ) :
      edist (f n) a ≤ ∑' (m : ℕ), d (n + m)

      If edist (f n) (f (n+1)) is bounded above by a function d : ℕ → ℝ≥0∞, then the distance from f n to the limit is bounded by ∑'_{k=n}^∞ d k.

      theorem edist_le_tsum_of_edist_le_of_tendsto₀ {α : Type u_1} [PseudoEMetricSpace α] {f : ℕ → α} (d : ℕ → ENNReal) (hf : ∀ (n : ℕ), edist (f n) (f n.succ) ≤ d n) {a : α} (ha : Filter.Tendsto f Filter.atTop (nhds a)) :
      edist (f 0) a ≤ ∑' (m : ℕ), d m

      If edist (f n) (f (n+1)) is bounded above by a function d : ℕ → ℝ≥0∞, then the distance from f 0 to the limit is bounded by ∑'_{k=0}^∞ d k.

      noncomputable def ENNReal.truncateToReal (t x : ENNReal) :

      With truncation level t, the truncated cast ℝ≥0∞ → ℝ is given by x ↦ (min t x).toReal. Unlike ENNReal.toReal, this cast is continuous and monotone when t ≠ ∞.

      Equations
      Instances For
        theorem ENNReal.truncateToReal_eq_toReal {t x : ENNReal} (t_ne_top : t ≠ ⊤) (x_le : x ≤ t) :

        The truncated cast ENNReal.truncateToReal t : ℝ≥0∞ → ℝ is monotone when t ≠ ∞.

        The truncated cast ENNReal.truncateToReal t : ℝ≥0∞ → ℝ is continuous when t ≠ ∞.

        theorem ENNReal.limsup_sub_const {ι : Type u_4} (F : Filter ι) (f : ι → ENNReal) (c : ENNReal) :
        Filter.limsup (fun (i : ι) => f i - c) F = Filter.limsup f F - c
        theorem ENNReal.liminf_sub_const {ι : Type u_4} (F : Filter ι) [F.NeBot] (f : ι → ENNReal) (c : ENNReal) :
        Filter.liminf (fun (i : ι) => f i - c) F = Filter.liminf f F - c
        theorem ENNReal.limsup_const_sub {ι : Type u_4} (F : Filter ι) (f : ι → ENNReal) {c : ENNReal} (c_ne_top : c ≠ ⊤) :
        Filter.limsup (fun (i : ι) => c - f i) F = c - Filter.liminf f F
        theorem ENNReal.liminf_const_sub {ι : Type u_4} (F : Filter ι) [F.NeBot] (f : ι → ENNReal) {c : ENNReal} (c_ne_top : c ≠ ⊤) :
        Filter.liminf (fun (i : ι) => c - f i) F = c - Filter.limsup f F
        theorem ENNReal.le_limsup_mul {ι : Type u_4} {f : Filter ι} {u v : ι → ENNReal} :
        theorem ENNReal.limsup_mul_le' {ι : Type u_4} {f : Filter ι} {u v : ι → ENNReal} (h : Filter.limsup u f ≠ 0 ∨ Filter.limsup v f ≠ ⊤) (h' : Filter.limsup u f ≠ ⊤ ∨ Filter.limsup v f ≠ 0) :

        See also ENNReal.limsup_mul_le.

        theorem ENNReal.le_liminf_mul {ι : Type u_4} {f : Filter ι} {u v : ι → ENNReal} :
        theorem ENNReal.liminf_mul_le {ι : Type u_4} {f : Filter ι} {u v : ι → ENNReal} (h : Filter.limsup u f ≠ 0 ∨ Filter.liminf v f ≠ ⊤) (h' : Filter.limsup u f ≠ ⊤ ∨ Filter.liminf v f ≠ 0) :
        theorem ENNReal.liminf_toReal_eq {ι : Type u_4} {f : Filter ι} {u : ι → ENNReal} [f.NeBot] {b : ENNReal} (b_ne_top : b ≠ ⊤) (le_b : ∀ᶠ (i : ι) in f, u i ≤ b) :
        Filter.liminf (fun (i : ι) => (u i).toReal) f = (Filter.liminf u f).toReal

        If u : ι → ℝ≥0∞ is bounded, then we have liminf (toReal ∘ u) = toReal (liminf u).

        theorem ENNReal.limsup_toReal_eq {ι : Type u_4} {f : Filter ι} {u : ι → ENNReal} [f.NeBot] {b : ENNReal} (b_ne_top : b ≠ ⊤) (le_b : ∀ᶠ (i : ι) in f, u i ≤ b) :
        Filter.limsup (fun (i : ι) => (u i).toReal) f = (Filter.limsup u f).toReal

        If u : ι → ℝ≥0∞ is bounded, then we have liminf (toReal ∘ u) = toReal (liminf u).

        @[simp]
        theorem ENNReal.ofNNReal_limsup {ι : Type u_4} {f : Filter ι} {u : ι → NNReal} (hf : Filter.IsBoundedUnder (fun (x1 x2 : NNReal) => x1 ≤ x2) f u) :
        ↑(Filter.limsup u f) = Filter.limsup (fun (i : ι) => ↑(u i)) f
        @[simp]
        theorem ENNReal.ofNNReal_liminf {ι : Type u_4} {f : Filter ι} {u : ι → NNReal} (hf : Filter.IsCoboundedUnder (fun (x1 x2 : NNReal) => x1 ≥ x2) f u) :
        ↑(Filter.liminf u f) = Filter.liminf (fun (i : ι) => ↑(u i)) f
        theorem ENNReal.liminf_add_of_right_tendsto_zero {ι : Type u_4} {u : Filter ι} {g : ι → ENNReal} (hg : Filter.Tendsto g u (nhds 0)) (f : ι → ENNReal) :
        theorem ENNReal.liminf_add_of_left_tendsto_zero {ι : Type u_4} {u : Filter ι} {f : ι → ENNReal} (hf : Filter.Tendsto f u (nhds 0)) (g : ι → ENNReal) :
        theorem ENNReal.limsup_add_of_right_tendsto_zero {ι : Type u_4} {u : Filter ι} {g : ι → ENNReal} (hg : Filter.Tendsto g u (nhds 0)) (f : ι → ENNReal) :
        theorem ENNReal.limsup_add_of_left_tendsto_zero {ι : Type u_4} {u : Filter ι} {f : ι → ENNReal} (hf : Filter.Tendsto f u (nhds 0)) (g : ι → ENNReal) :