mathlib documentation

data.real.ennreal

def ennreal  :
Type

The extended nonnegative real numbers. This is usually denoted [0, ∞], and is relevant as the codomain of a measure.

Equations
@[instance]

Equations
@[instance]

Equations
@[simp]

@[simp]
theorem ennreal.some_eq_coe (a : ℝ≥0) :

to_nnreal x returns x if it is real, otherwise 0.

Equations
def ennreal.to_real (a : ennreal) :

to_real x returns x if it is real, 0 otherwise.

Equations
def ennreal.of_real (r : ℝ) :

of_real x returns x if it is nonnegative, 0 otherwise.

Equations
@[simp]

@[simp]
theorem ennreal.coe_to_nnreal {a : ennreal} (a_1 : a ≠ ⊤) :

@[simp]

@[simp]
theorem ennreal.to_real_of_real {r : ℝ} (h : 0 ≤ r) :

theorem ennreal.of_real_eq_coe_nnreal {x : ℝ} (h : 0 ≤ x) :

@[simp]
theorem ennreal.coe_zero  :
↑0 = 0

@[simp]
theorem ennreal.coe_one  :
↑1 = 1

@[simp]
theorem ennreal.to_real_nonneg {a : ennreal} :

@[simp]

@[simp]

@[simp]
theorem ennreal.one_to_real  :

@[simp]

@[simp]

@[simp]

@[simp]
theorem ennreal.zero_to_real  :

@[simp]

@[simp]

theorem ennreal.forall_ennreal {p : ennreal → Prop} :
(∀ (a : ennreal), p a) ↔ (∀ (r : ℝ≥0), p ↑r) ∧ p ⊤

@[simp]
theorem ennreal.coe_ne_top {r : ℝ≥0} :

@[simp]
theorem ennreal.top_ne_coe {r : ℝ≥0} :

@[simp]

@[simp]
theorem ennreal.zero_ne_top  :

@[simp]
theorem ennreal.top_ne_zero  :

@[simp]
theorem ennreal.one_ne_top  :

@[simp]
theorem ennreal.top_ne_one  :

@[simp]
theorem ennreal.coe_eq_coe {r q : ℝ≥0} :
↑r = ↑q ↔ r = q

@[simp]
theorem ennreal.coe_le_coe {r q : ℝ≥0} :
↑r ≤ ↑q ↔ r ≤ q

@[simp]
theorem ennreal.coe_lt_coe {r q : ℝ≥0} :
↑r < ↑q ↔ r < q

@[simp]
theorem ennreal.coe_eq_zero {r : ℝ≥0} :
↑r = 0 ↔ r = 0

@[simp]
theorem ennreal.zero_eq_coe {r : ℝ≥0} :
0 = ↑r ↔ 0 = r

@[simp]
theorem ennreal.coe_eq_one {r : ℝ≥0} :
↑r = 1 ↔ r = 1

@[simp]
theorem ennreal.one_eq_coe {r : ℝ≥0} :
1 = ↑r ↔ 1 = r

@[simp]
theorem ennreal.coe_nonneg {r : ℝ≥0} :
0 ≤ ↑r ↔ 0 ≤ r

@[simp]
theorem ennreal.coe_pos {r : ℝ≥0} :
0 < ↑r ↔ 0 < r

@[simp]
theorem ennreal.coe_add {r p : ℝ≥0} :
↑(r + p) = ↑r + ↑p

@[simp]
theorem ennreal.coe_mul {r p : ℝ≥0} :
↑r * p = (↑r) * ↑p

@[simp]
theorem ennreal.coe_bit0 {r : ℝ≥0} :

@[simp]
theorem ennreal.coe_bit1 {r : ℝ≥0} :

theorem ennreal.coe_two  :
↑2 = 2

theorem ennreal.zero_lt_one  :
0 < 1

@[simp]
theorem ennreal.one_lt_two  :
1 < 2

@[simp]
theorem ennreal.zero_lt_two  :
0 < 2

theorem ennreal.two_ne_zero  :
2 ≠ 0

@[simp]
theorem ennreal.add_top {a : ennreal} :

@[simp]
theorem ennreal.top_add {a : ennreal} :

Coercion ℝ≥0 → ennreal as a ring_hom.

Equations
@[simp]
theorem ennreal.coe_indicator {α : Type u_1} (s : set α) (f : α → ℝ≥0) (a : α) :
↑(s.indicator f a) = s.indicator (λ (x : α), ↑(f x)) a

@[simp]
theorem ennreal.coe_pow {r : ℝ≥0} (n : ℕ) :
↑(r ^ n) = ↑r ^ n

theorem ennreal.add_eq_top {a b : ennreal} :
a + b = ⊤ ↔ a = ⊤ ∨ b = ⊤

theorem ennreal.add_lt_top {a b : ennreal} :
a + b < ⊤ ↔ a < ⊤ ∧ b < ⊤

theorem ennreal.to_nnreal_add {r₁ r₂ : ennreal} (h₁ : r₁ < ⊤) (h₂ : r₂ < ⊤) :
(r₁ + r₂).to_nnreal = r₁.to_nnreal + r₂.to_nnreal

theorem ennreal.bot_lt_iff_ne_bot {a : ennreal} :
0 < a ↔ a ≠ 0

theorem ennreal.not_lt_top {x : ennreal} :

theorem ennreal.add_ne_top {a b : ennreal} :

theorem ennreal.mul_top {a : ennreal} :
a * ⊤ = ite (a = 0) 0 ⊤

theorem ennreal.top_mul {a : ennreal} :
⊤ * a = ite (a = 0) 0 ⊤

@[simp]

theorem ennreal.top_pow {n : ℕ} (h : 0 < n) :

theorem ennreal.mul_eq_top {a b : ennreal} :
a * b = ⊤ ↔ a ≠ 0 ∧ b = ⊤ ∨ a = ⊤ ∧ b ≠ 0

theorem ennreal.mul_ne_top {a b : ennreal} (a_1 : a ≠ ⊤) (a_2 : b ≠ ⊤) :
a * b ≠ ⊤

theorem ennreal.mul_lt_top {a b : ennreal} (a_1 : a < ⊤) (a_2 : b < ⊤) :
a * b < ⊤

theorem ennreal.ne_top_of_mul_ne_top_left {a b : ennreal} (h : a * b ≠ ⊤) (hb : b ≠ 0) :

theorem ennreal.ne_top_of_mul_ne_top_right {a b : ennreal} (h : a * b ≠ ⊤) (ha : a ≠ 0) :

theorem ennreal.lt_top_of_mul_lt_top_left {a b : ennreal} (h : a * b < ⊤) (hb : b ≠ 0) :
a < ⊤

theorem ennreal.lt_top_of_mul_lt_top_right {a b : ennreal} (h : a * b < ⊤) (ha : a ≠ 0) :
b < ⊤

theorem ennreal.mul_lt_top_iff {a b : ennreal} :
a * b < ⊤ ↔ a < ⊤ ∧ b < ⊤ ∨ a = 0 ∨ b = 0

@[simp]
theorem ennreal.mul_pos {a b : ennreal} :
0 < a * b ↔ 0 < a ∧ 0 < b

theorem ennreal.pow_eq_top {a : ennreal} (n : ℕ) (a_1 : a ^ n = ⊤) :
a = ⊤

theorem ennreal.pow_ne_top {a : ennreal} (h : a ≠ ⊤) {n : ℕ} :
a ^ n ≠ ⊤

theorem ennreal.pow_lt_top {a : ennreal} (a_1 : a < ⊤) (n : ℕ) :
a ^ n < ⊤

@[simp]
theorem ennreal.coe_finset_sum {α : Type u_1} {s : finset α} {f : α → ℝ≥0} :
↑∑ (a : α) in s, f a = ∑ (a : α) in s, ↑(f a)

@[simp]
theorem ennreal.coe_finset_prod {α : Type u_1} {s : finset α} {f : α → ℝ≥0} :
↑∏ (a : α) in s, f a = ∏ (a : α) in s, ↑(f a)

@[simp]
theorem ennreal.bot_eq_zero  :
⊥ = 0

@[simp]
theorem ennreal.coe_lt_top {r : ℝ≥0} :

@[simp]

theorem ennreal.zero_lt_coe_iff {p : ℝ≥0} :
0 < ↑p ↔ 0 < p

@[simp]
theorem ennreal.one_le_coe_iff {r : ℝ≥0} :
1 ≤ ↑r ↔ 1 ≤ r

@[simp]
theorem ennreal.coe_le_one_iff {r : ℝ≥0} :
↑r ≤ 1 ↔ r ≤ 1

@[simp]
theorem ennreal.coe_lt_one_iff {p : ℝ≥0} :
↑p < 1 ↔ p < 1

@[simp]
theorem ennreal.one_lt_coe_iff {p : ℝ≥0} :
1 < ↑p ↔ 1 < p

@[simp]
theorem ennreal.coe_nat (n : ℕ) :

@[simp]
theorem ennreal.nat_ne_top (n : ℕ) :

@[simp]
theorem ennreal.top_ne_nat (n : ℕ) :

@[simp]
theorem ennreal.one_lt_top  :
1 < ⊤

theorem ennreal.le_coe_iff {a : ennreal} {r : ℝ≥0} :
a ≤ ↑r ↔ ∃ (p : ℝ≥0), a = ↑p ∧ p ≤ r

theorem ennreal.coe_le_iff {a : ennreal} {r : ℝ≥0} :
↑r ≤ a ↔ ∀ (p : ℝ≥0), a = ↑p → r ≤ p

theorem ennreal.lt_iff_exists_coe {a b : ennreal} :
a < b ↔ ∃ (p : ℝ≥0), a = ↑p ∧ ↑p < b

theorem ennreal.pow_le_pow {a : ennreal} {n m : ℕ} (ha : 1 ≤ a) (h : n ≤ m) :
a ^ n ≤ a ^ m

@[simp]
theorem ennreal.max_eq_zero_iff {a b : ennreal} :
max a b = 0 ↔ a = 0 ∧ b = 0

@[simp]
theorem ennreal.max_zero_left {a : ennreal} :
max 0 a = a

@[simp]
theorem ennreal.max_zero_right {a : ennreal} :
max a 0 = a

@[simp]
theorem ennreal.sup_eq_max {a b : ennreal} :
a ⊔ b = max a b

theorem ennreal.pow_pos {a : ennreal} (a_1 : 0 < a) (n : ℕ) :
0 < a ^ n

theorem ennreal.pow_ne_zero {a : ennreal} (a_1 : a ≠ 0) (n : ℕ) :
a ^ n ≠ 0

@[simp]
theorem ennreal.not_lt_zero {a : ennreal} :
¬a < 0

theorem ennreal.add_lt_add_iff_left {a b c : ennreal} (a_1 : a < ⊤) :
a + c < a + b ↔ c < b

theorem ennreal.add_lt_add_iff_right {a b c : ennreal} (a_1 : a < ⊤) :
c + a < b + a ↔ c < b

theorem ennreal.lt_add_right {a b : ennreal} (ha : a < ⊤) (hb : 0 < b) :
a < a + b

theorem ennreal.le_of_forall_epsilon_le {a b : ennreal} (a_1 : ∀ (ε : ℝ≥0), 0 < ε → b < ⊤ → a ≤ b + ↑ε) :
a ≤ b

theorem ennreal.lt_iff_exists_nnreal_btwn {a b : ennreal} :
a < b ↔ ∃ (r : ℝ≥0), a < ↑r ∧ ↑r < b

theorem ennreal.lt_iff_exists_add_pos_lt {a b : ennreal} :
a < b ↔ ∃ (r : ℝ≥0), 0 < r ∧ a + ↑r < b

theorem ennreal.coe_nat_lt_coe {r : ℝ≥0} {n : ℕ} :
↑n < ↑r ↔ ↑n < r

theorem ennreal.coe_lt_coe_nat {r : ℝ≥0} {n : ℕ} :
↑r < ↑n ↔ r < ↑n

theorem ennreal.coe_nat_lt_coe_nat {m n : ℕ} :
↑m < ↑n ↔ m < n

theorem ennreal.coe_nat_le_coe_nat {m n : ℕ} :
↑m ≤ ↑n ↔ m ≤ n

theorem ennreal.exists_nat_gt {r : ennreal} (h : r ≠ ⊤) :
∃ (n : ℕ), r < ↑n

theorem ennreal.add_lt_add {a b c d : ennreal} (ac : a < c) (bd : b < d) :
a + b < c + d

theorem ennreal.coe_min {r p : ℝ≥0} :
↑(min r p) = min ↑r ↑p

theorem ennreal.coe_max {r p : ℝ≥0} :
↑(max r p) = max ↑r ↑p

theorem ennreal.coe_Sup {s : set ℝ≥0} (a : bdd_above s) :
↑(Sup s) = ⨆ (a : ℝ≥0) (H : a ∈ s), ↑a

theorem ennreal.coe_Inf {s : set ℝ≥0} (a : s.nonempty) :
↑(Inf s) = ⨅ (a : ℝ≥0) (H : a ∈ s), ↑a

theorem ennreal.infi_ennreal {α : Type u_1} [complete_lattice α] {f : ennreal → α} :
(⨅ (n : ennreal), f n) = (⨅ (n : ℝ≥0), f ↑n) ⊓ f ⊤

theorem ennreal.mul_le_mul {a b c d : ennreal} (a_1 : a ≤ b) (a_2 : c ≤ d) :
a * c ≤ b * d

theorem ennreal.mul_right_mono {a : ennreal} :
monotone (λ (x : ennreal), x * a)

theorem ennreal.max_mul {a b c : ennreal} :
(max a b) * c = max (a * c) (b * c)

theorem ennreal.mul_max {a b c : ennreal} :
a * max b c = max (a * b) (a * c)

theorem ennreal.mul_eq_mul_left {a b c : ennreal} (a_1 : a ≠ 0) (a_2 : a ≠ ⊤) :
a * b = a * c ↔ b = c

theorem ennreal.mul_eq_mul_right {a b c : ennreal} (a_1 : c ≠ 0) (a_2 : c ≠ ⊤) :
a * c = b * c ↔ a = b

theorem ennreal.mul_le_mul_left {a b c : ennreal} (a_1 : a ≠ 0) (a_2 : a ≠ ⊤) :
a * b ≤ a * c ↔ b ≤ c

theorem ennreal.mul_le_mul_right {a b c : ennreal} (a_1 : c ≠ 0) (a_2 : c ≠ ⊤) :
a * c ≤ b * c ↔ a ≤ b

theorem ennreal.mul_lt_mul_left {a b c : ennreal} (a_1 : a ≠ 0) (a_2 : a ≠ ⊤) :
a * b < a * c ↔ b < c

theorem ennreal.mul_lt_mul_right {a b c : ennreal} (a_1 : c ≠ 0) (a_2 : c ≠ ⊤) :
a * c < b * c ↔ a < b

@[instance]

Equations
theorem ennreal.coe_sub {r p : ℝ≥0} :
↑(p - r) = ↑p - ↑r

@[simp]
theorem ennreal.top_sub_coe {r : ℝ≥0} :

@[simp]
theorem ennreal.sub_eq_zero_of_le {a b : ennreal} (h : a ≤ b) :
a - b = 0

@[simp]
theorem ennreal.sub_self {a : ennreal} :
a - a = 0

@[simp]
theorem ennreal.zero_sub {a : ennreal} :
0 - a = 0

@[simp]
theorem ennreal.sub_infty {a : ennreal} :
a - ⊤ = 0

theorem ennreal.sub_le_sub {a b c d : ennreal} (h₁ : a ≤ b) (h₂ : d ≤ c) :
a - c ≤ b - d

@[simp]
theorem ennreal.add_sub_self {a b : ennreal} (a_1 : b < ⊤) :
a + b - b = a

@[simp]
theorem ennreal.add_sub_self' {a b : ennreal} (h : a < ⊤) :
a + b - a = b

theorem ennreal.add_right_inj {a b c : ennreal} (h : a < ⊤) :
a + b = a + c ↔ b = c

theorem ennreal.add_left_inj {a b c : ennreal} (h : a < ⊤) :
b + a = c + a ↔ b = c

@[simp]
theorem ennreal.sub_add_cancel_of_le {a b : ennreal} (a_1 : b ≤ a) :
a - b + b = a

@[simp]
theorem ennreal.add_sub_cancel_of_le {a b : ennreal} (h : b ≤ a) :
b + (a - b) = a

theorem ennreal.sub_add_self_eq_max {a b : ennreal} :
a - b + b = max a b

theorem ennreal.le_sub_add_self {a b : ennreal} :
a ≤ a - b + b

@[simp]
theorem ennreal.sub_le_iff_le_add {a b c : ennreal} :
a - b ≤ c ↔ a ≤ c + b

theorem ennreal.sub_le_iff_le_add' {a b c : ennreal} :
a - b ≤ c ↔ a ≤ b + c

theorem ennreal.sub_eq_of_add_eq {a b c : ennreal} (a_1 : b ≠ ⊤) (a_2 : a + b = c) :
c - b = a

theorem ennreal.sub_le_of_sub_le {a b c : ennreal} (h : a - b ≤ c) :
a - c ≤ b

theorem ennreal.sub_lt_sub_self {a b : ennreal} (a_1 : a ≠ ⊤) (a_2 : a ≠ 0) (a_3 : 0 < b) :
a - b < a

@[simp]
theorem ennreal.sub_eq_zero_iff_le {a b : ennreal} :
a - b = 0 ↔ a ≤ b

@[simp]
theorem ennreal.zero_lt_sub_iff_lt {a b : ennreal} :
0 < a - b ↔ b < a

theorem ennreal.lt_sub_iff_add_lt {a b c : ennreal} :
a < b - c ↔ a + c < b

theorem ennreal.sub_le_self (a b : ennreal) :
a - b ≤ a

@[simp]
theorem ennreal.sub_zero {a : ennreal} :
a - 0 = a

theorem ennreal.sub_le_sub_add_sub {a b c : ennreal} :
a - c ≤ a - b + (b - c)

A version of triangle inequality for difference as a "distance".

theorem ennreal.sub_sub_cancel {a b : ennreal} (h : a < ⊤) (h2 : b ≤ a) :
a - (a - b) = b

theorem ennreal.sub_right_inj {a b c : ennreal} (ha : a < ⊤) (hb : b ≤ a) (hc : c ≤ a) :
a - b = a - c ↔ b = c

theorem ennreal.sub_mul {a b c : ennreal} (h : 0 < b → b < a → c ≠ ⊤) :
(a - b) * c = a * c - b * c

theorem ennreal.mul_sub {a b c : ennreal} (h : 0 < c → c < b → a ≠ ⊤) :
a * (b - c) = a * b - a * c

theorem ennreal.sub_mul_ge {a b c : ennreal} :
a * c - b * c ≤ (a - b) * c

theorem ennreal.sum_lt_top {α : Type u_1} {s : finset α} {f : α → ennreal} (a : ∀ (a : α), a ∈ s → f a < ⊤) :
∑ (a : α) in s, f a < ⊤

A sum of finite numbers is still finite

theorem ennreal.sum_lt_top_iff {α : Type u_1} {s : finset α} {f : α → ennreal} :
∑ (a : α) in s, f a < ⊤ ↔ ∀ (a : α), a ∈ s → f a < ⊤

A sum of finite numbers is still finite

theorem ennreal.sum_eq_top_iff {α : Type u_1} {s : finset α} {f : α → ennreal} :
∑ (x : α) in s, f x = ⊤ ↔ ∃ (a : α) (H : a ∈ s), f a = ⊤

A sum of numbers is infinite iff one of them is infinite

theorem ennreal.to_nnreal_sum {α : Type u_1} {s : finset α} {f : α → ennreal} (hf : ∀ (a : α), a ∈ s → f a < ⊤) :
(∑ (a : α) in s, f a).to_nnreal = ∑ (a : α) in s, (f a).to_nnreal

seeing ennreal as nnreal does not change their sum, unless one of the ennreal is infinity

theorem ennreal.to_real_sum {α : Type u_1} {s : finset α} {f : α → ennreal} (hf : ∀ (a : α), a ∈ s → f a < ⊤) :
(∑ (a : α) in s, f a).to_real = ∑ (a : α) in s, (f a).to_real

seeing ennreal as real does not change their sum, unless one of the ennreal is infinity

theorem ennreal.mem_Iio_self_add {x ε : ennreal} (a : x ≠ ⊤) (a_1 : 0 < ε) :
x ∈ set.Iio (x + ε)

theorem ennreal.not_mem_Ioo_self_sub {x y ε : ennreal} (a : x = 0) :
x ∉ set.Ioo (x - ε) y

theorem ennreal.mem_Ioo_self_sub_add {x ε₁ ε₂ : ennreal} (a : x ≠ ⊤) (a_1 : x ≠ 0) (a_2 : 0 < ε₁) (a_3 : 0 < ε₂) :
x ∈ set.Ioo (x - ε₁) (x + ε₂)

@[simp]
theorem ennreal.bit0_inj {a b : ennreal} :
bit0 a = bit0 b ↔ a = b

@[simp]
theorem ennreal.bit0_eq_zero_iff {a : ennreal} :
bit0 a = 0 ↔ a = 0

@[simp]
theorem ennreal.bit0_eq_top_iff {a : ennreal} :

@[simp]
theorem ennreal.bit1_inj {a b : ennreal} :
bit1 a = bit1 b ↔ a = b

@[simp]
theorem ennreal.bit1_ne_zero {a : ennreal} :
bit1 a ≠ 0

@[simp]
theorem ennreal.bit1_eq_one_iff {a : ennreal} :
bit1 a = 1 ↔ a = 0

@[simp]
theorem ennreal.bit1_eq_top_iff {a : ennreal} :

@[instance]

Equations
@[instance]

Equations
theorem ennreal.div_def {a b : ennreal} :
a / b = a * b⁻¹

theorem ennreal.mul_div_assoc {a b c : ennreal} :
a * b / c = a * (b / c)

@[simp]
theorem ennreal.inv_zero  :

@[simp]
theorem ennreal.inv_top  :

@[simp]
theorem ennreal.coe_inv {r : ℝ≥0} (hr : r ≠ 0) :

@[simp]
theorem ennreal.coe_div {r p : ℝ≥0} (hr : r ≠ 0) :
↑(p / r) = ↑p / ↑r

@[simp]
theorem ennreal.inv_one  :
1⁻¹ = 1

@[simp]
theorem ennreal.div_one {a : ennreal} :
a / 1 = a

theorem ennreal.inv_pow {a : ennreal} {n : ℕ} :
(a ^ n)⁻¹ = a⁻¹ ^ n

@[simp]
theorem ennreal.inv_inv {a : ennreal} :

@[simp]
theorem ennreal.inv_eq_inv {a b : ennreal} :
a⁻¹ = b⁻¹ ↔ a = b

@[simp]
theorem ennreal.inv_eq_top {a : ennreal} :
a⁻¹ = ⊤ ↔ a = 0

@[simp]
theorem ennreal.inv_lt_top {x : ennreal} :
x⁻¹ < ⊤ ↔ 0 < x

theorem ennreal.div_lt_top {x y : ennreal} (h1 : x < ⊤) (h2 : 0 < y) :
x / y < ⊤

@[simp]
theorem ennreal.inv_eq_zero {a : ennreal} :
a⁻¹ = 0 ↔ a = ⊤

@[simp]
theorem ennreal.inv_pos {a : ennreal} :

@[simp]
theorem ennreal.inv_lt_inv {a b : ennreal} :
a⁻¹ < b⁻¹ ↔ b < a

@[simp]
theorem ennreal.inv_le_inv {a b : ennreal} :

@[simp]
theorem ennreal.inv_lt_one {a : ennreal} :
a⁻¹ < 1 ↔ 1 < a

@[simp]
theorem ennreal.div_top {a : ennreal} :
a / ⊤ = 0

@[simp]
theorem ennreal.top_div_coe {p : ℝ≥0} :

theorem ennreal.top_div_of_ne_top {a : ennreal} (h : a ≠ ⊤) :

theorem ennreal.top_div_of_lt_top {a : ennreal} (h : a < ⊤) :

theorem ennreal.top_div {a : ennreal} :
⊤ / a = ite (a = ⊤) 0 ⊤

@[simp]
theorem ennreal.zero_div {a : ennreal} :
0 / a = 0

theorem ennreal.div_eq_top {a b : ennreal} :
a / b = ⊤ ↔ a ≠ 0 ∧ b = 0 ∨ a = ⊤ ∧ b ≠ ⊤

theorem ennreal.le_div_iff_mul_le {a b c : ennreal} (h0 : b ≠ 0 ∨ c ≠ 0) (ht : b ≠ ⊤ ∨ c ≠ ⊤) :
a ≤ c / b ↔ a * b ≤ c

theorem ennreal.div_le_iff_le_mul {a b c : ennreal} (hb0 : b ≠ 0 ∨ c ≠ ⊤) (hbt : b ≠ ⊤ ∨ c ≠ 0) :
a / b ≤ c ↔ a ≤ c * b

theorem ennreal.div_le_of_le_mul {a b c : ennreal} (h : a ≤ b * c) :
a / c ≤ b

theorem ennreal.div_lt_iff {a b c : ennreal} (h0 : b ≠ 0 ∨ c ≠ 0) (ht : b ≠ ⊤ ∨ c ≠ ⊤) :
c / b < a ↔ c < a * b

theorem ennreal.mul_lt_of_lt_div {a b c : ennreal} (h : a < b / c) :
a * c < b

theorem ennreal.inv_le_iff_le_mul {a b : ennreal} (a_1 : b = ⊤ → a ≠ 0) (a_2 : a = ⊤ → b ≠ 0) :
a⁻¹ ≤ b ↔ 1 ≤ a * b

@[simp]
theorem ennreal.le_inv_iff_mul_le {a b : ennreal} :
a ≤ b⁻¹ ↔ a * b ≤ 1

theorem ennreal.mul_inv_cancel {a : ennreal} (h0 : a ≠ 0) (ht : a ≠ ⊤) :
a * a⁻¹ = 1

theorem ennreal.inv_mul_cancel {a : ennreal} (h0 : a ≠ 0) (ht : a ≠ ⊤) :
a⁻¹ * a = 1

theorem ennreal.mul_le_iff_le_inv {a b r : ennreal} (hr₀ : r ≠ 0) (hr₁ : r ≠ ⊤) :
r * a ≤ b ↔ a ≤ r⁻¹ * b

theorem ennreal.le_of_forall_lt_one_mul_lt {x y : ennreal} (a : ∀ (a : ennreal), a < 1 → a * x ≤ y) :
x ≤ y

theorem ennreal.div_add_div_same {a b c : ennreal} :
a / c + b / c = (a + b) / c

theorem ennreal.div_self {a : ennreal} (h0 : a ≠ 0) (hI : a ≠ ⊤) :
a / a = 1

theorem ennreal.mul_div_cancel {a b : ennreal} (h0 : a ≠ 0) (hI : a ≠ ⊤) :
(b / a) * a = b

theorem ennreal.mul_div_cancel' {a b : ennreal} (h0 : a ≠ 0) (hI : a ≠ ⊤) :
a * (b / a) = b

theorem ennreal.add_halves (a : ennreal) :
a / 2 + a / 2 = a

@[simp]
theorem ennreal.div_zero_iff {a b : ennreal} :
a / b = 0 ↔ a = 0 ∨ b = ⊤

@[simp]
theorem ennreal.div_pos_iff {a b : ennreal} :
0 < a / b ↔ a ≠ 0 ∧ b ≠ ⊤

theorem ennreal.half_pos {a : ennreal} (h : 0 < a) :
0 < a / 2

theorem ennreal.half_lt_self {a : ennreal} (hz : a ≠ 0) (ht : a ≠ ⊤) :
a / 2 < a

theorem ennreal.sub_half {a : ennreal} (h : a ≠ ⊤) :
a - a / 2 = a / 2

theorem ennreal.exists_inv_nat_lt {a : ennreal} (h : a ≠ 0) :
∃ (n : ℕ), (↑n)⁻¹ < a

theorem ennreal.exists_nat_mul_gt {a b : ennreal} (ha : a ≠ 0) (hb : b ≠ ⊤) :
∃ (n : ℕ), b < (↑n) * a

theorem ennreal.to_real_add {a b : ennreal} (ha : a ≠ ⊤) (hb : b ≠ ⊤) :

theorem ennreal.of_real_add {p q : ℝ} (hp : 0 ≤ p) (hq : 0 ≤ q) :

@[simp]
theorem ennreal.to_real_le_to_real {a b : ennreal} (ha : a ≠ ⊤) (hb : b ≠ ⊤) :

@[simp]
theorem ennreal.to_real_lt_to_real {a b : ennreal} (ha : a ≠ ⊤) (hb : b ≠ ⊤) :

theorem ennreal.to_real_max {a b : ennreal} (hr : a ≠ ⊤) (hp : b ≠ ⊤) :

theorem ennreal.to_real_pos_iff {a : ennreal} :
0 < a.to_real ↔ 0 < a ∧ a ≠ ⊤

@[simp]

@[simp]
theorem ennreal.of_real_lt_of_real_iff {p q : ℝ} (h : 0 < q) :

@[simp]
theorem ennreal.of_real_pos {p : ℝ} :

@[simp]
theorem ennreal.of_real_eq_zero {p : ℝ} :

theorem ennreal.of_real_lt_iff_lt_to_real {a : ℝ} {b : ennreal} (ha : 0 ≤ a) (hb : b ≠ ⊤) :

theorem ennreal.le_of_real_iff_to_real_le {a : ennreal} {b : ℝ} (ha : a ≠ ⊤) (hb : 0 ≤ b) :

theorem ennreal.to_real_le_of_le_of_real {a : ennreal} {b : ℝ} (hb : 0 ≤ b) (h : a ≤ ennreal.of_real b) :

theorem ennreal.of_real_mul {p q : ℝ} (hp : 0 ≤ p) :

theorem ennreal.to_real_of_real_mul (c : ℝ) (a : ennreal) (h : 0 ≤ c) :

@[simp]
theorem ennreal.to_real_mul_top (a : ennreal) :
(a * ⊤).to_real = 0

@[simp]
theorem ennreal.to_real_top_mul (a : ennreal) :
(⊤ * a).to_real = 0

theorem ennreal.to_real_eq_to_real {a b : ennreal} (ha : a < ⊤) (hb : b < ⊤) :

theorem ennreal.infi_add {a : ennreal} {ι : Sort u_3} {f : ι → ennreal} :
infi f + a = ⨅ (i : ι), f i + a

theorem ennreal.supr_sub {a : ennreal} {ι : Sort u_3} {f : ι → ennreal} :
(⨆ (i : ι), f i) - a = ⨆ (i : ι), f i - a

theorem ennreal.sub_infi {a : ennreal} {ι : Sort u_3} {f : ι → ennreal} :
(a - ⨅ (i : ι), f i) = ⨆ (i : ι), a - f i

theorem ennreal.Inf_add {a : ennreal} {s : set ennreal} :
Inf s + a = ⨅ (b : ennreal) (H : b ∈ s), b + a

theorem ennreal.add_infi {ι : Sort u_3} {f : ι → ennreal} {a : ennreal} :
a + infi f = ⨅ (b : ι), a + f b

theorem ennreal.infi_add_infi {ι : Sort u_3} {f g : ι → ennreal} (h : ∀ (i j : ι), ∃ (k : ι), f k + g k ≤ f i + g j) :
infi f + infi g = ⨅ (a : ι), f a + g a

theorem ennreal.infi_sum {α : Type u_1} {ι : Sort u_3} {f : ι → α → ennreal} {s : finset α} [nonempty ι] (h : ∀ (t : finset α) (i j : ι), ∃ (k : ι), ∀ (a : α), a ∈ t → f k a ≤ f i a ∧ f k a ≤ f j a) :
(⨅ (i : ι), ∑ (a : α) in s, f i a) = ∑ (a : α) in s, ⨅ (i : ι), f i a

theorem ennreal.infi_mul {ι : Sort u_1} [nonempty ι] {f : ι → ennreal} {x : ennreal} (h : x ≠ ⊤) :
(infi f) * x = ⨅ (i : ι), (f i) * x

theorem ennreal.mul_infi {ι : Sort u_1} [nonempty ι] {f : ι → ennreal} {x : ennreal} (h : x ≠ ⊤) :
x * infi f = ⨅ (i : ι), x * f i

supr_mul, mul_supr and variants are in topology.instances.ennreal.

theorem ennreal.supr_coe_nat  :
(⨆ (n : ℕ), ↑n) = ⊤