Documentation

Mathlib.Algebra.Order.AddGroupWithTop

Linearly ordered commutative additive groups and monoids with a top element adjoined #

This file sets up a special class of linearly ordered commutative additive monoids that show up as the target of so-called “valuations” in algebraic number theory.

Usually, in the informal literature, these objects are constructed by taking a linearly ordered commutative additive group Γ and formally adjoining a top element: Γ ∪ {⊤}.

The disadvantage is that a type such as ENNReal is not of that form, whereas it is a very common target for valuations. The solutions is to use a typeclass, and that is exactly what we do in this file.

A linearly ordered commutative monoid with an additively absorbing element. Instances should include number systems with an infinite element adjoined.

Instances

    A linearly ordered commutative group with an additively absorbing element. Instances should include number systems with an infinite element adjoined.

    Instances
      @[simp]
      theorem top_add {α : Type u_2} [LinearOrderedAddCommMonoidWithTop α] (a : α) :
      @[simp]
      theorem add_top {α : Type u_2} [LinearOrderedAddCommMonoidWithTop α] (a : α) :
      @[simp]
      theorem add_left_inj_of_ne_top {α : Type u_2} [LinearOrderedAddCommMonoidWithTop α] {a b c : α} (h : a ) :
      b + a = c + a b = c
      @[simp]
      theorem add_right_inj_of_ne_top {α : Type u_2} [LinearOrderedAddCommMonoidWithTop α] {a b c : α} (h : a ) :
      a + b = a + c b = c
      theorem add_left_strictMono_of_ne_top {α : Type u_2} [LinearOrderedAddCommMonoidWithTop α] {b : α} (h : b ) :
      StrictMono fun (x : α) => x + b
      theorem add_right_strictMono_of_ne_top {α : Type u_2} [LinearOrderedAddCommMonoidWithTop α] {b : α} (h : b ) :
      StrictMono fun (x : α) => b + x
      @[simp]
      theorem add_le_add_iff_left_of_ne_top {α : Type u_2} [LinearOrderedAddCommMonoidWithTop α] {a b c : α} (h : a ) :
      b + a c + a b c
      @[simp]
      theorem add_le_add_iff_right_of_ne_top {α : Type u_2} [LinearOrderedAddCommMonoidWithTop α] {a b c : α} (h : a ) :
      a + b a + c b c
      @[simp]
      theorem add_lt_add_iff_left_of_ne_top {α : Type u_2} [LinearOrderedAddCommMonoidWithTop α] {a b c : α} (h : a ) :
      b + a < c + a b < c
      @[simp]
      theorem add_lt_add_iff_right_of_ne_top {α : Type u_2} [LinearOrderedAddCommMonoidWithTop α] {a b c : α} (h : a ) :
      a + b < a + c b < c
      @[deprecated LinearOrderedAddCommGroupWithTop.add_neg_cancel_of_ne_top (since := "2025-12-14")]
      theorem LinearOrderedAddCommGroupWithTop.add_neg_cancel {α : Type u_3} [self : LinearOrderedAddCommGroupWithTop α] x : α :
      x x + -x = 0

      Alias of LinearOrderedAddCommGroupWithTop.add_neg_cancel_of_ne_top.

      Note: The following lemmas are special cases of the corresponding IsAddUnit lemmas.

      @[deprecated add_left_injective_of_ne_top (since := "2025-12-27")]

      Alias of add_left_injective_of_ne_top.

      @[deprecated add_right_injective_of_ne_top (since := "2025-12-27")]

      Alias of add_right_injective_of_ne_top.

      @[deprecated add_left_strictMono_of_ne_top (since := "2025-12-27")]

      Alias of add_left_strictMono_of_ne_top.

      @[deprecated add_right_strictMono_of_ne_top (since := "2025-12-27")]

      Alias of add_right_strictMono_of_ne_top.

      If G has subtraction, we can extend the subtraction to WithTop G, by setting x - ⊤ = ⊤ and ⊤ - x = ⊤. This definition is only registered as an instance on additive commutative groups, to avoid conflicting with the instance WithTop.instSub on types with a bottom element.

      Equations
        @[simp]
        theorem WithTop.LinearOrderedAddCommGroup.coe_neg {G : Type u_1} [AddCommGroup G] (a : G) :
        ↑(-a) = -a
        @[simp]
        theorem WithTop.LinearOrderedAddCommGroup.coe_sub {G : Type u_1} [AddCommGroup G] (a b : G) :
        ↑(a - b) = a - b