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 statements #
trichotomy (p : ℝ≥0∞) : p = 0 ∨ p = ∞ ∨ 0 < p.toReal: often used forWithLpandlpdichotomy (p : ℝ≥0∞) [Fact (1 ≤ p)] : p = ∞ ∨ 1 ≤ p.toReal: often used forWithLpandlptoNNReal_iInfthroughtoReal_sSup: these declarations allow for easy conversions between indexed or set infima and suprema inℝ,ℝ≥0andℝ≥0∞. This is especially useful becauseℝ≥0∞is a complete lattice.
theorem
ENNReal.ofReal_add
{p q : ℝ}
(hp : 0 ≤ p)
(hq : 0 ≤ q)
:
ENNReal.ofReal (p + q) = ENNReal.ofReal p + ENNReal.ofReal q
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
theorem
ENNReal.ofReal_le_ofReal_iff
{p q : ℝ}
(h : 0 ≤ q)
:
ENNReal.ofReal p ≤ ENNReal.ofReal q ↔ p ≤ q
theorem
ENNReal.ofReal_le_ofReal_iff'
{p q : ℝ}
:
ENNReal.ofReal p ≤ ENNReal.ofReal q ↔ p ≤ q ∨ p ≤ 0
@[simp]
theorem
ENNReal.ofReal_lt_ofReal_iff'
{p q : ℝ}
:
ENNReal.ofReal p < ENNReal.ofReal q ↔ p < q ∧ 0 < q
@[simp]
theorem
ENNReal.ofReal_eq_ofReal_iff
{p q : ℝ}
(hp : 0 ≤ p)
(hq : 0 ≤ q)
:
ENNReal.ofReal p = ENNReal.ofReal q ↔ p = q
@[simp]
theorem
ENNReal.ofReal_lt_ofReal_iff
{p q : ℝ}
(h : 0 < q)
:
ENNReal.ofReal p < ENNReal.ofReal q ↔ p < q
theorem
ENNReal.ofReal_lt_ofReal_iff_of_nonneg
{p q : ℝ}
(hp : 0 ≤ p)
:
ENNReal.ofReal p < ENNReal.ofReal q ↔ p < q
@[simp]
theorem
ENNReal.ofReal_min
(x y : ℝ)
:
ENNReal.ofReal (min x y) = min (ENNReal.ofReal x) (ENNReal.ofReal y)
@[simp]
theorem
ENNReal.ofReal_max
(x y : ℝ)
:
ENNReal.ofReal (max x y) = max (ENNReal.ofReal x) (ENNReal.ofReal y)
Alias of the reverse direction of ENNReal.ofReal_eq_zero.
@[simp]
@[simp]
theorem
ENNReal.ofReal_lt_ofNat
{p : ℝ}
{n : ℕ}
[n.AtLeastTwo]
:
ENNReal.ofReal p < OfNat.ofNat n ↔ p < OfNat.ofNat n
@[simp]
@[simp]
theorem
ENNReal.ofNat_le_ofReal
{n : ℕ}
[n.AtLeastTwo]
{p : ℝ}
:
OfNat.ofNat n ≤ ENNReal.ofReal p ↔ OfNat.ofNat n ≤ p
@[simp]
@[simp]
theorem
ENNReal.ofReal_le_ofNat
{r : ℝ}
{n : ℕ}
[n.AtLeastTwo]
:
ENNReal.ofReal r ≤ OfNat.ofNat n ↔ r ≤ OfNat.ofNat n
@[simp]
@[simp]
theorem
ENNReal.ofNat_lt_ofReal
{n : ℕ}
[n.AtLeastTwo]
{r : ℝ}
:
OfNat.ofNat n < ENNReal.ofReal r ↔ OfNat.ofNat n < r
@[simp]
@[simp]
theorem
ENNReal.ofReal_eq_ofNat
{r : ℝ}
{n : ℕ}
[n.AtLeastTwo]
:
ENNReal.ofReal r = OfNat.ofNat n ↔ r = OfNat.ofNat n
theorem
ENNReal.ofReal_le_iff_le_toReal
{a : ℝ}
{b : ENNReal}
(hb : b ≠ ⊤)
:
ENNReal.ofReal a ≤ b ↔ a ≤ b.toReal
theorem
ENNReal.ofReal_lt_iff_lt_toReal
{a : ℝ}
{b : ENNReal}
(ha : 0 ≤ a)
(hb : b ≠ ⊤)
:
ENNReal.ofReal a < b ↔ a < b.toReal
@[simp]
theorem
ENNReal.le_ofReal_iff_toReal_le
{a : ENNReal}
{b : ℝ}
(ha : a ≠ ⊤)
(hb : 0 ≤ b)
:
a ≤ ENNReal.ofReal b ↔ a.toReal ≤ b
theorem
ENNReal.toReal_le_of_le_ofReal
{a : ENNReal}
{b : ℝ}
(hb : 0 ≤ b)
(h : a ≤ ENNReal.ofReal b)
:
theorem
ENNReal.lt_ofReal_iff_toReal_lt
{a : ENNReal}
{b : ℝ}
(ha : a ≠ ⊤)
:
a < ENNReal.ofReal b ↔ a.toReal < b
@[simp]
theorem
ENNReal.ofReal_mul
{p q : ℝ}
(hp : 0 ≤ p)
:
ENNReal.ofReal (p * q) = ENNReal.ofReal p * ENNReal.ofReal q
theorem
ENNReal.ofReal_mul'
{p q : ℝ}
(hq : 0 ≤ q)
:
ENNReal.ofReal (p * q) = ENNReal.ofReal p * ENNReal.ofReal q
@[simp]
theorem
ENNReal.ofReal_pow
{p : ℝ}
(hp : 0 ≤ p)
(n : ℕ)
:
ENNReal.ofReal (p ^ n) = ENNReal.ofReal p ^ n
@[simp]
ENNReal.toNNReal as a MonoidHom.
Instances For
@[simp]
ENNReal.toReal as a MonoidHom.
Instances For
@[simp]
@[simp]
theorem
ENNReal.toReal_ofReal_mul
(c : ℝ)
(a : ENNReal)
(h : 0 ≤ c)
:
(ENNReal.ofReal c * a).toReal = c * a.toReal
@[deprecated ENNReal.toReal_eq_toReal_iff' (since := "2025-11-07")]
Alias of ENNReal.toReal_eq_toReal_iff'.
@[deprecated ENNReal.max_eq_zero_iff (since := "2025-10-25")]
Extension for the positivity tactic: ENNReal.ofReal.