Documentation

Mathlib.Data.EReal.Inv

Absolute value, sign, inversion and division on extended real numbers #

This file defines an absolute value and sign function on EReal and uses them to provide a CommMonoidWithZero instance, based on the absolute value and sign characterising all EReals. Then it defines the inverse of an EReal as ⊤⁻¹ = ⊥⁻¹ = 0, which leads to a DivInvMonoid instance and division.

Absolute value #

The absolute value from EReal to ℝ≥0∞, mapping ⊥ and ⊤ to ⊤ and a real x to |x|.

Equations
Instances For
    @[simp]
    @[simp]
    theorem EReal.abs_def (x : ℝ) :
    theorem EReal.abs_coe_lt_top (x : ℝ) :
    (↑x).abs < ⊤
    @[simp]
    theorem EReal.abs_eq_zero_iff {x : EReal} :
    x.abs = 0 ↔ x = 0
    @[simp]
    @[simp]
    theorem EReal.coe_abs (x : ℝ) :
    ↑(↑x).abs = ↑|x|
    @[simp]
    theorem EReal.abs_neg (x : EReal) :
    (-x).abs = x.abs
    @[simp]
    theorem EReal.abs_mul (x y : EReal) :
    (x * y).abs = x.abs * y.abs

    Sign #

    @[simp]
    @[simp]
    theorem EReal.coe_coe_sign (x : SignType) :
    ↑↑x = ↑x
    @[simp]
    theorem EReal.sign_mul_abs (x : EReal) :
    ↑(SignType.sign x) * ↑x.abs = x
    @[simp]
    theorem EReal.abs_mul_sign (x : EReal) :
    ↑x.abs * ↑(SignType.sign x) = x
    Equations
    • One or more equations did not get rendered due to their size.
    theorem EReal.mul_le_mul_of_nonpos_right {a b c : EReal} (h : b ≤ a) (hc : c ≤ 0) :
    a * c ≤ b * c
    @[simp]
    theorem EReal.coe_pow (x : ℝ) (n : ℕ) :
    ↑(x ^ n) = ↑x ^ n
    @[simp]
    theorem EReal.coe_ennreal_pow (x : ENNReal) (n : ℕ) :
    ↑(x ^ n) = ↑x ^ n
    theorem EReal.exists_nat_ge_mul {a : EReal} (ha : a ≠ ⊤) (n : ℕ) :
    ∃ (m : ℕ), a * ↑n ≤ ↑m

    Min and Max #

    theorem EReal.min_neg_neg (x y : EReal) :
    min (-x) (-y) = -max x y
    theorem EReal.max_neg_neg (x y : EReal) :
    max (-x) (-y) = -min x y

    Inverse #

    Multiplicative inverse of an EReal. We choose 0⁻¹ = 0 to guarantee several good properties, for instance (a * b)⁻¹ = a⁻¹ * b⁻¹.

    Equations
    Instances For
      noncomputable instance EReal.instDivInvMonoid :
      Equations
      • One or more equations did not get rendered due to their size.
      @[simp]
      @[simp]
      theorem EReal.coe_inv (x : ℝ) :
      ↑x⁻¹ = (↑x)⁻¹
      @[simp]
      theorem EReal.inv_zero :
      0⁻¹ = 0
      theorem EReal.inv_inv {a : EReal} (h : a ≠ ⊥) (h' : a ≠ ⊤) :
      theorem EReal.mul_inv (a b : EReal) :
      (a * b)⁻¹ = a⁻¹ * b⁻¹

      Inversion and Absolute Value #

      Inversion and Positivity #

      theorem EReal.inv_nonneg_of_nonneg {a : EReal} (h : 0 ≤ a) :
      theorem EReal.inv_nonpos_of_nonpos {a : EReal} (h : a ≤ 0) :
      theorem EReal.inv_pos_of_pos_ne_top {a : EReal} (h : 0 < a) (h' : a ≠ ⊤) :
      0 < a⁻¹
      theorem EReal.inv_neg_of_neg_ne_bot {a : EReal} (h : a < 0) (h' : a ≠ ⊥) :
      a⁻¹ < 0

      Division #

      theorem EReal.div_eq_inv_mul (a b : EReal) :
      a / b = b⁻¹ * a
      theorem EReal.coe_div (a b : ℝ) :
      ↑(a / b) = ↑a / ↑b
      theorem EReal.natCast_div_le (m n : ℕ) :
      ↑(m / n) ≤ ↑m / ↑n
      @[simp]
      theorem EReal.div_bot {a : EReal} :
      a / ⊥ = 0
      @[simp]
      theorem EReal.div_top {a : EReal} :
      a / ⊤ = 0
      @[simp]
      theorem EReal.div_zero {a : EReal} :
      a / 0 = 0
      @[simp]
      theorem EReal.zero_div {a : EReal} :
      0 / a = 0
      theorem EReal.top_div_of_pos_ne_top {a : EReal} (h : 0 < a) (h' : a ≠ ⊤) :
      theorem EReal.top_div_of_neg_ne_bot {a : EReal} (h : a < 0) (h' : a ≠ ⊥) :
      theorem EReal.bot_div_of_pos_ne_top {a : EReal} (h : 0 < a) (h' : a ≠ ⊤) :
      theorem EReal.bot_div_of_neg_ne_bot {a : EReal} (h : a < 0) (h' : a ≠ ⊥) :

      Division and Multiplication #

      theorem EReal.div_self {a : EReal} (h₁ : a ≠ ⊥) (h₂ : a ≠ ⊤) (h₃ : a ≠ 0) :
      a / a = 1
      theorem EReal.mul_div (a b c : EReal) :
      a * (b / c) = a * b / c
      theorem EReal.mul_div_right (a b c : EReal) :
      a / b * c = a * c / b
      theorem EReal.mul_div_left_comm (a b c : EReal) :
      a * (b / c) = b * (a / c)
      theorem EReal.div_div (a b c : EReal) :
      a / b / c = a / (b * c)
      theorem EReal.div_mul_div_comm (a b c d : EReal) :
      a / b * (c / d) = a * c / (b * d)
      theorem EReal.div_mul_cancel {a b : EReal} (h₁ : b ≠ ⊥) (h₂ : b ≠ ⊤) (h₃ : b ≠ 0) :
      a / b * b = a
      theorem EReal.mul_div_cancel {a b : EReal} (h₁ : b ≠ ⊥) (h₂ : b ≠ ⊤) (h₃ : b ≠ 0) :
      b * (a / b) = a
      theorem EReal.mul_div_mul_cancel {a b c : EReal} (h₁ : c ≠ ⊥) (h₂ : c ≠ ⊤) (h₃ : c ≠ 0) :
      a * c / (b * c) = a / b
      theorem EReal.div_eq_iff {a b c : EReal} (hbot : b ≠ ⊥) (htop : b ≠ ⊤) (hzero : b ≠ 0) :
      c / b = a ↔ c = a * b

      Division and Order #

      theorem EReal.monotone_div_right_of_nonneg {b : EReal} (h : 0 ≤ b) :
      Monotone fun (a : EReal) => a / b
      theorem EReal.div_le_div_right_of_nonneg {a b c : EReal} (h : 0 ≤ c) (h' : a ≤ b) :
      a / c ≤ b / c
      theorem EReal.strictMono_div_right_of_pos {b : EReal} (h : 0 < b) (h' : b ≠ ⊤) :
      StrictMono fun (a : EReal) => a / b
      theorem EReal.div_lt_div_right_of_pos {a b c : EReal} (h₁ : 0 < c) (h₂ : c ≠ ⊤) (h₃ : a < b) :
      a / c < b / c
      theorem EReal.antitone_div_right_of_nonpos {b : EReal} (h : b ≤ 0) :
      Antitone fun (a : EReal) => a / b
      theorem EReal.div_le_div_right_of_nonpos {a b c : EReal} (h : c ≤ 0) (h' : a ≤ b) :
      b / c ≤ a / c
      theorem EReal.strictAnti_div_right_of_neg {b : EReal} (h : b < 0) (h' : b ≠ ⊥) :
      StrictAnti fun (a : EReal) => a / b
      theorem EReal.div_lt_div_right_of_neg {a b c : EReal} (h₁ : c < 0) (h₂ : c ≠ ⊥) (h₃ : a < b) :
      b / c < a / c
      theorem EReal.le_div_iff_mul_le {a b c : EReal} (h : b > 0) (h' : b ≠ ⊤) :
      a ≤ c / b ↔ a * b ≤ c
      theorem EReal.div_le_iff_le_mul {a b c : EReal} (h : 0 < b) (h' : b ≠ ⊤) :
      a / b ≤ c ↔ a ≤ b * c
      theorem EReal.lt_div_iff {a b c : EReal} (h : 0 < b) (h' : b ≠ ⊤) :
      a < c / b ↔ a * b < c
      theorem EReal.div_lt_iff {a b c : EReal} (h : 0 < c) (h' : c ≠ ⊤) :
      b / c < a ↔ b < a * c
      theorem EReal.div_nonneg {a b : EReal} (h : 0 ≤ a) (h' : 0 ≤ b) :
      0 ≤ a / b
      theorem EReal.div_pos {a b : EReal} (ha : 0 < a) (hb : 0 < b) (hb' : b ≠ ⊤) :
      0 < a / b
      theorem EReal.div_nonpos_of_nonpos_of_nonneg {a b : EReal} (h : a ≤ 0) (h' : 0 ≤ b) :
      a / b ≤ 0
      theorem EReal.div_nonpos_of_nonneg_of_nonpos {a b : EReal} (h : 0 ≤ a) (h' : b ≤ 0) :
      a / b ≤ 0
      theorem EReal.div_nonneg_of_nonpos_of_nonpos {a b : EReal} (h : a ≤ 0) (h' : b ≤ 0) :
      0 ≤ a / b
      theorem EReal.le_mul_of_forall_lt {a b c : EReal} (h₁ : 0 < a ∨ b ≠ ⊤) (h₂ : a ≠ ⊤ ∨ 0 < b) (h : ∀ a' > a, ∀ b' > b, c ≤ a' * b') :
      c ≤ a * b
      theorem EReal.mul_le_of_forall_lt_of_nonneg {a b c : EReal} (ha : 0 ≤ a) (hc : 0 ≤ c) (h : ∀ a' ∈ Set.Ioo 0 a, ∀ b' ∈ Set.Ioo 0 b, a' * b' ≤ c) :
      a * b ≤ c

      Division Distributivity #

      theorem EReal.div_right_distrib_of_nonneg {a b c : EReal} (h : 0 ≤ a) (h' : 0 ≤ b) :
      (a + b) / c = a / c + b / c
      theorem EReal.add_div_of_nonneg_right {a b c : EReal} (h : 0 ≤ c) :
      (a + b) / c = a / c + b / c

      Extension for the positivity tactic: inverse of an EReal.

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

        Extension for the positivity tactic: ratio of two EReals.

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