Documentation

LeanPool.Duality.ExtendedFields

This entire file is inspired by: https://github.com/leanprover-community/mathlib4/blob/333e2d79fdaee86489af73dee919bc4b66957a52/Mathlib/Data/Real/EReal.lean

def Extend (F : Type u_1) :
Type u_1

Extend F is the type of values in F ∪ {⊥, ⊤} where, informally speaking, ⊥ (negative infinity) is stronger than ⊤ (positive infinity).

Equations
Instances For
    @[instance_reducible]
    Equations
    • One or more equations did not get rendered due to their size.
    @[instance_reducible]
    Equations
    • One or more equations did not get rendered due to their size.
    @[instance_reducible]
    Equations
    • One or more equations did not get rendered due to their size.
    @[instance_reducible]
    Equations
    @[instance_reducible]
    instance instDecidableRelExtendLt {F : Type u_1} [LinearOrder F] :
    DecidableRel fun (x1 x2 : Extend F) => x1 < x2
    Equations
    def toE {F : Type u_1} :
    F → Extend F

    The canonical inclusion from F to Extend F is registered as a coercion.

    Equations
    Instances For
      @[instance_reducible]
      instance instCoeExtend {F : Type u_1} :
      Coe F (Extend F)
      Equations

      Coercion #

      @[simp]
      theorem EF.coe_le_coe_iff {F : Type u_1} [LinearOrder F] {x y : F} :
      ↑x ≤ ↑y ↔ x ≤ y
      theorem EF.coe_le_coe_iff_F (F : Type) [LinearOrder F] {x y : F} :
      ↑x ≤ ↑y ↔ x ≤ y
      @[simp]
      theorem EF.coe_lt_coe_iff {F : Type u_1} [LinearOrder F] {x y : F} :
      ↑x < ↑y ↔ x < y
      @[simp]
      theorem EF.coe_eq_coe_iff {F : Type u_1} [LinearOrder F] {x y : F} :
      ↑x = ↑y ↔ x = y
      theorem EF.coe_neq_coe_iff {F : Type u_1} [LinearOrder F] {x y : F} :
      ↑x ≠ ↑y ↔ x ≠ y
      @[simp]
      theorem EF.coe_zero {F : Type u_1} [Field F] :
      ↑0 = 0
      @[simp]
      theorem EF.coe_one {F : Type u_1} [Field F] :
      ↑1 = 1
      @[simp]
      theorem EF.bot_lt_coe {F : Type u_1} [LinearOrder F] (x : F) :
      ⊥ < ↑x
      @[simp]
      theorem EF.coe_neq_bot {F : Type u_1} [LinearOrder F] (x : F) :
      ↑x ≠ ⊥
      @[simp]
      theorem EF.bot_neq_coe {F : Type u_1} [LinearOrder F] (x : F) :
      ⊥ ≠ ↑x
      @[simp]
      theorem EF.coe_lt_top {F : Type u_1} [LinearOrder F] (x : F) :
      ↑x < ⊤
      @[simp]
      theorem EF.coe_neq_top {F : Type u_1} [LinearOrder F] (x : F) :
      ↑x ≠ ⊤
      @[simp]
      theorem EF.top_neq_coe {F : Type u_1} [LinearOrder F] (x : F) :
      ⊤ ≠ ↑x
      @[simp]
      theorem EF.bot_lt_zero {F : Type u_1} [Field F] [LinearOrder F] :
      ⊥ < 0
      @[simp]
      theorem EF.bot_neq_zero {F : Type u_1} [Field F] [LinearOrder F] :
      @[simp]
      theorem EF.zero_neq_bot {F : Type u_1} [Field F] [LinearOrder F] :
      @[simp]
      theorem EF.zero_lt_top {F : Type u_1} [Field F] [LinearOrder F] :
      0 < ⊤
      @[simp]
      theorem EF.zero_neq_top {F : Type u_1} [Field F] [LinearOrder F] :
      @[simp]
      theorem EF.top_neq_zero {F : Type u_1} [Field F] [LinearOrder F] :
      @[simp]
      theorem EF.coe_add {F : Type u_1} [Field F] (x y : F) :
      ↑(x + y) = ↑x + ↑y
      @[simp]
      theorem EF.coe_eq_zero {F : Type u_1} [Field F] [LinearOrder F] {x : F} :
      ↑x = 0 ↔ x = 0
      @[simp]
      theorem EF.coe_eq_one {F : Type u_1} [Field F] [LinearOrder F] {x : F} :
      ↑x = 1 ↔ x = 1
      theorem EF.coe_neq_zero {F : Type u_1} [Field F] [LinearOrder F] {x : F} :
      ↑x ≠ 0 ↔ x ≠ 0
      theorem EF.coe_neq_one {F : Type u_1} [Field F] [LinearOrder F] {x : F} :
      ↑x ≠ 1 ↔ x ≠ 1
      @[simp]
      theorem EF.coe_nonneg {F : Type u_1} [Field F] [LinearOrder F] {x : F} :
      0 ≤ ↑x ↔ 0 ≤ x
      @[simp]
      theorem EF.coe_nonpos {F : Type u_1} [Field F] [LinearOrder F] {x : F} :
      ↑x ≤ 0 ↔ x ≤ 0
      @[simp]
      theorem EF.coe_pos {F : Type u_1} [Field F] [LinearOrder F] {x : F} :
      0 < ↑x ↔ 0 < x
      @[simp]
      theorem EF.coe_neg' {F : Type u_1} [Field F] [LinearOrder F] {x : F} :
      ↑x < 0 ↔ x < 0

      Addition #

      @[simp]
      theorem EF.add_bot {F : Type u_1} [Field F] [LinearOrder F] (x : Extend F) :
      @[simp]
      theorem EF.bot_add {F : Type u_1} [Field F] [LinearOrder F] (x : Extend F) :
      @[simp]
      theorem EF.add_eq_bot_iff {F : Type u_1} [Field F] [LinearOrder F] {x y : Extend F} :
      x + y = ⊥ ↔ x = ⊥ ∨ y = ⊥
      @[simp]
      theorem EF.top_add_top {F : Type u_1} [Field F] [LinearOrder F] :
      @[simp]
      theorem EF.top_add_coe {F : Type u_1} [Field F] [LinearOrder F] (x : F) :
      ⊤ + ↑x = ⊤
      @[simp]
      theorem EF.coe_add_top {F : Type u_1} [Field F] [LinearOrder F] (x : F) :
      ↑x + ⊤ = ⊤

      Negation #

      def EF.neg {F : Type u_1} [Field F] [LinearOrder F] :
      Extend F → Extend F

      Negation on Extend F.

      Equations
      Instances For
        @[instance_reducible]
        instance EF.instNegExtend {F : Type u_1} [Field F] [LinearOrder F] :
        Equations
        @[instance_reducible]
        Equations
        • One or more equations did not get rendered due to their size.
        @[simp]
        theorem EF.neg_top {F : Type u_1} [Field F] [LinearOrder F] :
        @[simp]
        theorem EF.neg_bot {F : Type u_1} [Field F] [LinearOrder F] :
        @[simp]
        theorem EF.coe_neg {F : Type u_1} [Field F] [LinearOrder F] (x : F) :
        ↑(-x) = -↑x
        @[instance_reducible]
        Equations
        @[simp]
        theorem EF.neg_eq_top_iff {F : Type u_1} [Field F] [LinearOrder F] {x : Extend F} :
        -x = ⊤ ↔ x = ⊥
        @[simp]
        theorem EF.neg_eq_bot_iff {F : Type u_1} [Field F] [LinearOrder F] {x : Extend F} :
        -x = ⊥ ↔ x = ⊤
        @[simp]
        theorem EF.neg_eq_zero_iff {F : Type u_1} [Field F] [LinearOrder F] {x : Extend F} :
        -x = 0 ↔ x = 0