Documentation

Mathlib.Data.ENNReal.Real

Maps between real and extended non-negative real numbers #

This file focuses on the functions ENNReal.toReal : ℝ≥0∞ → ℝ and ENNReal.ofReal : ℝ → ℝ≥0∞ which were defined in Data.ENNReal.Basic. It collects all the basic results of the interactions between these functions and the algebraic and lattice operations, although a few may appear in earlier files.

This file provides a positivity extension for ENNReal.ofReal.

Main theorems #

theorem ENNReal.ofReal_add {p : ℝ} {q : ℝ} (hp : 0 ≤ p) (hq : 0 ≤ q) :
@[simp]
theorem ENNReal.toReal_le_toReal {a : ENNReal} {b : ENNReal} (ha : a ≠ ⊤) (hb : b ≠ ⊤) :
theorem ENNReal.toReal_mono' {a : ENNReal} {b : ENNReal} (h : a ≤ b) (ht : b = ⊤ → a = ⊤) :
@[simp]
theorem ENNReal.toReal_lt_toReal {a : ENNReal} {b : ENNReal} (ha : a ≠ ⊤) (hb : b ≠ ⊤) :
theorem ENNReal.toReal_le_add' {a : ENNReal} {b : ENNReal} {c : ENNReal} (hle : a ≤ b + c) (hb : b = ⊤ → a = ⊤) (hc : c = ⊤ → a = ⊤) :

If a ≤ b + c and a = ∞ whenever b = ∞ or c = ∞, then ENNReal.toReal a ≤ ENNReal.toReal b + ENNReal.toReal c. This lemma is useful to transfer triangle-like inequalities from ENNReals to Reals.

theorem ENNReal.toReal_le_add {a : ENNReal} {b : ENNReal} {c : ENNReal} (hle : a ≤ b + c) (hb : b ≠ ⊤) (hc : c ≠ ⊤) :

If a ≤ b + c, b ≠ ∞, and c ≠ ∞, then ENNReal.toReal a ≤ ENNReal.toReal b + ENNReal.toReal c. This lemma is useful to transfer triangle-like inequalities from ENNReals to Reals.

@[simp]
theorem ENNReal.toNNReal_pos {a : ENNReal} (ha₀ : a ≠ 0) (ha_top : a ≠ ⊤) :
theorem ENNReal.toReal_pos {a : ENNReal} (ha₀ : a ≠ 0) (ha_top : a ≠ ⊤) :
@[simp]
@[simp]
theorem ENNReal.ofReal_eq_ofReal_iff {p : ℝ} {q : ℝ} (hp : 0 ≤ p) (hq : 0 ≤ q) :
@[simp]
theorem ENNReal.ofReal_lt_ofReal_iff {p : ℝ} {q : ℝ} (h : 0 < q) :
@[simp]
theorem ENNReal.ofReal_pos {p : ℝ} :
@[simp]
@[simp]
theorem ENNReal.ofReal_of_nonpos {p : ℝ} :
p ≤ 0 → ENNReal.ofReal p = 0

Alias of the reverse direction of ENNReal.ofReal_eq_zero.

@[simp]
theorem ENNReal.ofReal_lt_nat_cast {p : ℝ} {n : ℕ} (hn : n ≠ 0) :
ENNReal.ofReal p < ↑n ↔ p < ↑n
@[simp]
@[simp]
theorem ENNReal.nat_cast_le_ofReal {n : ℕ} {p : ℝ} (hn : n ≠ 0) :
↑n ≤ ENNReal.ofReal p ↔ ↑n ≤ p
@[simp]
@[simp]
theorem ENNReal.ofReal_le_nat_cast {r : ℝ} {n : ℕ} :
ENNReal.ofReal r ≤ ↑n ↔ r ≤ ↑n
@[simp]
@[simp]
theorem ENNReal.nat_cast_lt_ofReal {n : ℕ} {r : ℝ} :
↑n < ENNReal.ofReal r ↔ ↑n < r
@[simp]
@[simp]
theorem ENNReal.ofReal_eq_nat_cast {r : ℝ} {n : ℕ} (h : n ≠ 0) :
ENNReal.ofReal r = ↑n ↔ r = ↑n
@[simp]
theorem ENNReal.ofReal_lt_coe_iff {a : ℝ} {b : NNReal} (ha : 0 ≤ a) :
ENNReal.ofReal a < ↑b ↔ a < ↑b
theorem ENNReal.ofReal_pow {p : ℝ} (hp : 0 ≤ p) (n : ℕ) :

ENNReal.toNNReal as a MonoidHom.

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    @[simp]
    theorem ENNReal.toNNReal_prod {ι : Type u_1} {s : Finset ι} {f : ι → ENNReal} :
    ENNReal.toNNReal (Finset.prod s fun (i : ι) => f i) = Finset.prod s fun (i : ι) => ENNReal.toNNReal (f i)
    @[simp]
    @[simp]
    theorem ENNReal.toReal_prod {ι : Type u_1} {s : Finset ι} {f : ι → ENNReal} :
    ENNReal.toReal (Finset.prod s fun (i : ι) => f i) = Finset.prod s fun (i : ι) => ENNReal.toReal (f i)
    theorem ENNReal.ofReal_prod_of_nonneg {α : Type u_1} {s : Finset α} {f : α → ℝ} (hf : ∀ i ∈ s, 0 ≤ f i) :
    ENNReal.ofReal (Finset.prod s fun (i : α) => f i) = Finset.prod s fun (i : α) => ENNReal.ofReal (f i)
    theorem ENNReal.toNNReal_iInf {ι : Sort u_1} {f : ι → ENNReal} (hf : ∀ (i : ι), f i ≠ ⊤) :
    ENNReal.toNNReal (iInf f) = ⨅ (i : ι), ENNReal.toNNReal (f i)
    theorem ENNReal.toNNReal_iSup {ι : Sort u_1} {f : ι → ENNReal} (hf : ∀ (i : ι), f i ≠ ⊤) :
    ENNReal.toNNReal (iSup f) = ⨆ (i : ι), ENNReal.toNNReal (f i)
    theorem ENNReal.toReal_iInf {ι : Sort u_1} {f : ι → ENNReal} (hf : ∀ (i : ι), f i ≠ ⊤) :
    ENNReal.toReal (iInf f) = ⨅ (i : ι), ENNReal.toReal (f i)
    theorem ENNReal.toReal_sInf (s : Set ENNReal) (hf : ∀ r ∈ s, r ≠ ⊤) :
    theorem ENNReal.toReal_iSup {ι : Sort u_1} {f : ι → ENNReal} (hf : ∀ (i : ι), f i ≠ ⊤) :
    ENNReal.toReal (iSup f) = ⨆ (i : ι), ENNReal.toReal (f i)
    theorem ENNReal.toReal_sSup (s : Set ENNReal) (hf : ∀ r ∈ s, r ≠ ⊤) :
    theorem ENNReal.iInf_add {ι : Sort u_1} {f : ι → ENNReal} {a : ENNReal} :
    iInf f + a = ⨅ (i : ι), f i + a
    theorem ENNReal.iSup_sub {ι : Sort u_1} {f : ι → ENNReal} {a : ENNReal} :
    (⨆ (i : ι), f i) - a = ⨆ (i : ι), f i - a
    theorem ENNReal.sub_iInf {ι : Sort u_1} {f : ι → ENNReal} {a : ENNReal} :
    a - ⨅ (i : ι), f i = ⨆ (i : ι), a - f i
    theorem ENNReal.sInf_add {a : ENNReal} {s : Set ENNReal} :
    sInf s + a = ⨅ b ∈ s, b + a
    theorem ENNReal.add_iInf {ι : Sort u_1} {f : ι → ENNReal} {a : ENNReal} :
    a + iInf f = ⨅ (b : ι), a + f b
    theorem ENNReal.iInf_add_iInf {ι : Sort u_1} {f : ι → ENNReal} {g : ι → ENNReal} (h : ∀ (i j : ι), ∃ (k : ι), f k + g k ≤ f i + g j) :
    iInf f + iInf g = ⨅ (a : ι), f a + g a
    theorem ENNReal.iInf_sum {ι : Sort u_1} {α : Type u_2} {f : ι → α → ENNReal} {s : Finset α} [Nonempty ι] (h : ∀ (t : Finset α) (i j : ι), ∃ (k : ι), ∀ a ∈ t, f k a ≤ f i a ∧ f k a ≤ f j a) :
    (⨅ (i : ι), Finset.sum s fun (a : α) => f i a) = Finset.sum s fun (a : α) => ⨅ (i : ι), f i a
    theorem ENNReal.iInf_mul_of_ne {ι : Sort u_2} {f : ι → ENNReal} {x : ENNReal} (h0 : x ≠ 0) (h : x ≠ ⊤) :
    iInf f * x = ⨅ (i : ι), f i * x

    If x ≠ 0 and x ≠ ∞, then right multiplication by x maps infimum to infimum. See also ENNReal.iInf_mul that assumes [Nonempty ι] but does not require x ≠ 0.

    theorem ENNReal.iInf_mul {ι : Sort u_2} [Nonempty ι] {f : ι → ENNReal} {x : ENNReal} (h : x ≠ ⊤) :
    iInf f * x = ⨅ (i : ι), f i * x

    If x ≠ ∞, then right multiplication by x maps infimum over a nonempty type to infimum. See also ENNReal.iInf_mul_of_ne that assumes x ≠ 0 but does not require [Nonempty ι].

    theorem ENNReal.mul_iInf {ι : Sort u_2} [Nonempty ι] {f : ι → ENNReal} {x : ENNReal} (h : x ≠ ⊤) :
    x * iInf f = ⨅ (i : ι), x * f i

    If x ≠ ∞, then left multiplication by x maps infimum over a nonempty type to infimum. See also ENNReal.mul_iInf_of_ne that assumes x ≠ 0 but does not require [Nonempty ι].

    theorem ENNReal.mul_iInf_of_ne {ι : Sort u_2} {f : ι → ENNReal} {x : ENNReal} (h0 : x ≠ 0) (h : x ≠ ⊤) :
    x * iInf f = ⨅ (i : ι), x * f i

    If x ≠ 0 and x ≠ ∞, then left multiplication by x maps infimum to infimum. See also ENNReal.mul_iInf that assumes [Nonempty ι] but does not require x ≠ 0.

    supr_mul, mul_supr and variants are in Topology.Instances.ENNReal.

    @[simp]
    theorem ENNReal.iSup_eq_zero {ι : Sort u_1} {f : ι → ENNReal} :
    ⨆ (i : ι), f i = 0 ↔ ∀ (i : ι), f i = 0
    @[simp]
    theorem ENNReal.iSup_zero_eq_zero {ι : Sort u_1} :
    ⨆ (x : ι), 0 = 0
    theorem ENNReal.sup_eq_zero {a : ENNReal} {b : ENNReal} :
    a ⊔ b = 0 ↔ a = 0 ∧ b = 0
    theorem ENNReal.iSup_coe_nat :
    ⨆ (n : ℕ), ↑n = ⊤

    Extension for the positivity tactic: ENNReal.ofReal.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For