File: Mathlib/Algebra/Order/Ring/Defs.lean

full_name: OrderedSemiring.zero_le_one
code: /-- An `OrderedSemiring` is a semiring with a partial order such that addition is monotone and
multiplication by a nonnegative number is monotone. -/
class OrderedSemiring (α : Type u) extends Semiring α, OrderedAddCommMonoid α where
  /-- `0 ≤ 1` in any ordered semiring. -/
  protected zero_le_one : (0 : α) ≤ 1
  /-- In an ordered semiring, we can multiply an inequality `a ≤ b` on the left
  by a non-negative element `0 ≤ c` to obtain `c * a ≤ c * b`. -/
  protected mul_le_mul_of_nonneg_left : ∀ a b c : α, a ≤ b → 0 ≤ c → c * a ≤ c * b
  /-- In an ordered semiring, we can multiply an inequality `a ≤ b` on the right
  by a non-negative element `0 ≤ c` to obtain `a * c ≤ b * c`. -/
  protected mul_le_mul_of_nonneg_right : ∀ a b c : α, a ≤ b → 0 ≤ c → a * c ≤ b * c
goal: 0 ≤ 1

full_name: OrderedSemiring
code: /-- An `OrderedSemiring` is a semiring with a partial order such that addition is monotone and
multiplication by a nonnegative number is monotone. -/
class OrderedSemiring (α : Type u) extends Semiring α, OrderedAddCommMonoid α where
  /-- `0 ≤ 1` in any ordered semiring. -/
  protected zero_le_one : (0 : α) ≤ 1
  /-- In an ordered semiring, we can multiply an inequality `a ≤ b` on the left
  by a non-negative element `0 ≤ c` to obtain `c * a ≤ c * b`. -/
  protected mul_le_mul_of_nonneg_left : ∀ a b c : α, a ≤ b → 0 ≤ c → c * a ≤ c * b
  /-- In an ordered semiring, we can multiply an inequality `a ≤ b` on the right
  by a non-negative element `0 ≤ c` to obtain `a * c ≤ b * c`. -/
  protected mul_le_mul_of_nonneg_right : ∀ a b c : α, a ≤ b → 0 ≤ c → a * c ≤ b * c
goal: Type u

full_name: OrderedSemiring.mul_le_mul_of_nonneg_left
code: /-- An `OrderedSemiring` is a semiring with a partial order such that addition is monotone and
multiplication by a nonnegative number is monotone. -/
class OrderedSemiring (α : Type u) extends Semiring α, OrderedAddCommMonoid α where
  /-- `0 ≤ 1` in any ordered semiring. -/
  protected zero_le_one : (0 : α) ≤ 1
  /-- In an ordered semiring, we can multiply an inequality `a ≤ b` on the left
  by a non-negative element `0 ≤ c` to obtain `c * a ≤ c * b`. -/
  protected mul_le_mul_of_nonneg_left : ∀ a b c : α, a ≤ b → 0 ≤ c → c * a ≤ c * b
  /-- In an ordered semiring, we can multiply an inequality `a ≤ b` on the right
  by a non-negative element `0 ≤ c` to obtain `a * c ≤ b * c`. -/
  protected mul_le_mul_of_nonneg_right : ∀ a b c : α, a ≤ b → 0 ≤ c → a * c ≤ b * c
goal: a ≤ b → 0 ≤ c → c * a ≤ c * b

full_name: OrderedSemiring.mul_le_mul_of_nonneg_right
code: /-- An `OrderedSemiring` is a semiring with a partial order such that addition is monotone and
multiplication by a nonnegative number is monotone. -/
class OrderedSemiring (α : Type u) extends Semiring α, OrderedAddCommMonoid α where
  /-- `0 ≤ 1` in any ordered semiring. -/
  protected zero_le_one : (0 : α) ≤ 1
  /-- In an ordered semiring, we can multiply an inequality `a ≤ b` on the left
  by a non-negative element `0 ≤ c` to obtain `c * a ≤ c * b`. -/
  protected mul_le_mul_of_nonneg_left : ∀ a b c : α, a ≤ b → 0 ≤ c → c * a ≤ c * b
  /-- In an ordered semiring, we can multiply an inequality `a ≤ b` on the right
  by a non-negative element `0 ≤ c` to obtain `a * c ≤ b * c`. -/
  protected mul_le_mul_of_nonneg_right : ∀ a b c : α, a ≤ b → 0 ≤ c → a * c ≤ b * c
goal: a ≤ b → 0 ≤ c → a * c ≤ b * c

full_name: OrderedCommSemiring
code: /-- An `OrderedCommSemiring` is a commutative semiring with a partial order such that addition is
monotone and multiplication by a nonnegative number is monotone. -/
class OrderedCommSemiring (α : Type u) extends OrderedSemiring α, CommSemiring α where
  mul_le_mul_of_nonneg_right a b c ha hc :=
    -- parentheses ensure this generates an `optParam` rather than an `autoParam`
    (by simpa only [mul_comm] using mul_le_mul_of_nonneg_left a b c ha hc)
goal: Type u

full_name: OrderedRing.zero_le_one
code: /-- An `OrderedRing` is a ring with a partial order such that addition is monotone and
multiplication by a nonnegative number is monotone. -/
class OrderedRing (α : Type u) extends Ring α, OrderedAddCommGroup α where
  /-- `0 ≤ 1` in any ordered ring. -/
  protected zero_le_one : 0 ≤ (1 : α)
  /-- The product of non-negative elements is non-negative. -/
  protected mul_nonneg : ∀ a b : α, 0 ≤ a → 0 ≤ b → 0 ≤ a * b
goal: 0 ≤ 1

full_name: OrderedRing.mul_nonneg
code: /-- An `OrderedRing` is a ring with a partial order such that addition is monotone and
multiplication by a nonnegative number is monotone. -/
class OrderedRing (α : Type u) extends Ring α, OrderedAddCommGroup α where
  /-- `0 ≤ 1` in any ordered ring. -/
  protected zero_le_one : 0 ≤ (1 : α)
  /-- The product of non-negative elements is non-negative. -/
  protected mul_nonneg : ∀ a b : α, 0 ≤ a → 0 ≤ b → 0 ≤ a * b
goal: 0 ≤ a → 0 ≤ b → 0 ≤ a * b

full_name: OrderedRing
code: /-- An `OrderedRing` is a ring with a partial order such that addition is monotone and
multiplication by a nonnegative number is monotone. -/
class OrderedRing (α : Type u) extends Ring α, OrderedAddCommGroup α where
  /-- `0 ≤ 1` in any ordered ring. -/
  protected zero_le_one : 0 ≤ (1 : α)
  /-- The product of non-negative elements is non-negative. -/
  protected mul_nonneg : ∀ a b : α, 0 ≤ a → 0 ≤ b → 0 ≤ a * b
goal: Type u

full_name: OrderedCommRing
code: /-- An `OrderedCommRing` is a commutative ring with a partial order such that addition is monotone
and multiplication by a nonnegative number is monotone. -/
class OrderedCommRing (α : Type u) extends OrderedRing α, CommRing α
goal: Type u

full_name: StrictOrderedSemiring.zero_le_one
code: /-- A `StrictOrderedSemiring` is a nontrivial semiring with a partial order such that addition is
strictly monotone and multiplication by a positive number is strictly monotone. -/
class StrictOrderedSemiring (α : Type u) extends Semiring α, OrderedCancelAddCommMonoid α,
    Nontrivial α where
  /-- In a strict ordered semiring, `0 ≤ 1`. -/
  protected zero_le_one : (0 : α) ≤ 1
  /-- Left multiplication by a positive element is strictly monotone. -/
  protected mul_lt_mul_of_pos_left : ∀ a b c : α, a < b → 0 < c → c * a < c * b
  /-- Right multiplication by a positive element is strictly monotone. -/
  protected mul_lt_mul_of_pos_right : ∀ a b c : α, a < b → 0 < c → a * c < b * c
goal: 0 ≤ 1

full_name: StrictOrderedSemiring.mul_lt_mul_of_pos_right
code: /-- A `StrictOrderedSemiring` is a nontrivial semiring with a partial order such that addition is
strictly monotone and multiplication by a positive number is strictly monotone. -/
class StrictOrderedSemiring (α : Type u) extends Semiring α, OrderedCancelAddCommMonoid α,
    Nontrivial α where
  /-- In a strict ordered semiring, `0 ≤ 1`. -/
  protected zero_le_one : (0 : α) ≤ 1
  /-- Left multiplication by a positive element is strictly monotone. -/
  protected mul_lt_mul_of_pos_left : ∀ a b c : α, a < b → 0 < c → c * a < c * b
  /-- Right multiplication by a positive element is strictly monotone. -/
  protected mul_lt_mul_of_pos_right : ∀ a b c : α, a < b → 0 < c → a * c < b * c
goal: a < b → 0 < c → a * c < b * c

full_name: StrictOrderedSemiring.mul_lt_mul_of_pos_left
code: /-- A `StrictOrderedSemiring` is a nontrivial semiring with a partial order such that addition is
strictly monotone and multiplication by a positive number is strictly monotone. -/
class StrictOrderedSemiring (α : Type u) extends Semiring α, OrderedCancelAddCommMonoid α,
    Nontrivial α where
  /-- In a strict ordered semiring, `0 ≤ 1`. -/
  protected zero_le_one : (0 : α) ≤ 1
  /-- Left multiplication by a positive element is strictly monotone. -/
  protected mul_lt_mul_of_pos_left : ∀ a b c : α, a < b → 0 < c → c * a < c * b
  /-- Right multiplication by a positive element is strictly monotone. -/
  protected mul_lt_mul_of_pos_right : ∀ a b c : α, a < b → 0 < c → a * c < b * c
goal: a < b → 0 < c → c * a < c * b

full_name: StrictOrderedSemiring
code: /-- A `StrictOrderedSemiring` is a nontrivial semiring with a partial order such that addition is
strictly monotone and multiplication by a positive number is strictly monotone. -/
class StrictOrderedSemiring (α : Type u) extends Semiring α, OrderedCancelAddCommMonoid α,
    Nontrivial α where
  /-- In a strict ordered semiring, `0 ≤ 1`. -/
  protected zero_le_one : (0 : α) ≤ 1
  /-- Left multiplication by a positive element is strictly monotone. -/
  protected mul_lt_mul_of_pos_left : ∀ a b c : α, a < b → 0 < c → c * a < c * b
  /-- Right multiplication by a positive element is strictly monotone. -/
  protected mul_lt_mul_of_pos_right : ∀ a b c : α, a < b → 0 < c → a * c < b * c
goal: Type u

full_name: StrictOrderedCommSemiring
code: /-- A `StrictOrderedCommSemiring` is a commutative semiring with a partial order such that
addition is strictly monotone and multiplication by a positive number is strictly monotone. -/
class StrictOrderedCommSemiring (α : Type u) extends StrictOrderedSemiring α, CommSemiring α
goal: Type u

full_name: StrictOrderedRing.mul_pos
code: /-- A `StrictOrderedRing` is a ring with a partial order such that addition is strictly monotone
and multiplication by a positive number is strictly monotone. -/
class StrictOrderedRing (α : Type u) extends Ring α, OrderedAddCommGroup α, Nontrivial α where
  /-- In a strict ordered ring, `0 ≤ 1`. -/
  protected zero_le_one : 0 ≤ (1 : α)
  /-- The product of two positive elements is positive. -/
  protected mul_pos : ∀ a b : α, 0 < a → 0 < b → 0 < a * b
goal: 0 < a → 0 < b → 0 < a * b

full_name: StrictOrderedRing
code: /-- A `StrictOrderedRing` is a ring with a partial order such that addition is strictly monotone
and multiplication by a positive number is strictly monotone. -/
class StrictOrderedRing (α : Type u) extends Ring α, OrderedAddCommGroup α, Nontrivial α where
  /-- In a strict ordered ring, `0 ≤ 1`. -/
  protected zero_le_one : 0 ≤ (1 : α)
  /-- The product of two positive elements is positive. -/
  protected mul_pos : ∀ a b : α, 0 < a → 0 < b → 0 < a * b
goal: Type u

full_name: StrictOrderedRing.zero_le_one
code: /-- A `StrictOrderedRing` is a ring with a partial order such that addition is strictly monotone
and multiplication by a positive number is strictly monotone. -/
class StrictOrderedRing (α : Type u) extends Ring α, OrderedAddCommGroup α, Nontrivial α where
  /-- In a strict ordered ring, `0 ≤ 1`. -/
  protected zero_le_one : 0 ≤ (1 : α)
  /-- The product of two positive elements is positive. -/
  protected mul_pos : ∀ a b : α, 0 < a → 0 < b → 0 < a * b
goal: 0 ≤ 1

full_name: StrictOrderedCommRing
code: /-- A `StrictOrderedCommRing` is a commutative ring with a partial order such that addition is
strictly monotone and multiplication by a positive number is strictly monotone. -/
class StrictOrderedCommRing (α : Type*) extends StrictOrderedRing α, CommRing α
goal: Type u_2

full_name: LinearOrderedSemiring
code: /-- A `LinearOrderedSemiring` is a nontrivial semiring with a linear order such that
addition is monotone and multiplication by a positive number is strictly monotone. -/
class LinearOrderedSemiring (α : Type u) extends StrictOrderedSemiring α,
  LinearOrderedAddCommMonoid α
goal: Type u

full_name: LinearOrderedCommSemiring
code: /-- A `LinearOrderedCommSemiring` is a nontrivial commutative semiring with a linear order such
that addition is monotone and multiplication by a positive number is strictly monotone. -/
class LinearOrderedCommSemiring (α : Type*) extends StrictOrderedCommSemiring α,
  LinearOrderedSemiring α
goal: Type u_2

full_name: LinearOrderedRing
code: /-- A `LinearOrderedRing` is a ring with a linear order such that addition is monotone and
multiplication by a positive number is strictly monotone. -/
class LinearOrderedRing (α : Type u) extends StrictOrderedRing α, LinearOrder α
goal: Type u

full_name: LinearOrderedCommRing
code: /-- A `LinearOrderedCommRing` is a commutative ring with a linear order such that addition is
monotone and multiplication by a positive number is strictly monotone. -/
class LinearOrderedCommRing (α : Type u) extends LinearOrderedRing α, CommMonoid α
goal: Type u

full_name: OrderedSemiring.zeroLEOneClass
code: instance (priority := 100) OrderedSemiring.zeroLEOneClass : ZeroLEOneClass α 
goal: ZeroLEOneClass α

full_name: OrderedSemiring.toPosMulMono
code: instance (priority := 200) OrderedSemiring.toPosMulMono : PosMulMono α 
goal: PosMulMono α

full_name: OrderedSemiring.toMulPosMono
code: instance (priority := 200) OrderedSemiring.toMulPosMono : MulPosMono α 
goal: MulPosMono α

full_name: OrderedRing.toOrderedSemiring
code: instance (priority := 100) OrderedRing.toOrderedSemiring : OrderedSemiring α 
goal: OrderedSemiring α

full_name: OrderedCommRing.toOrderedCommSemiring
code: instance (priority := 100) OrderedCommRing.toOrderedCommSemiring : OrderedCommSemiring α 
goal: OrderedCommSemiring α

full_name: StrictOrderedSemiring.toPosMulStrictMono
code: instance (priority := 200) StrictOrderedSemiring.toPosMulStrictMono : PosMulStrictMono α 
goal: PosMulStrictMono α

full_name: StrictOrderedSemiring.toMulPosStrictMono
code: instance (priority := 200) StrictOrderedSemiring.toMulPosStrictMono : MulPosStrictMono α 
goal: MulPosStrictMono α

full_name: StrictOrderedSemiring.toOrderedSemiring'
code: /-- A choice-free version of `StrictOrderedSemiring.toOrderedSemiring` to avoid using choice in
basic `Nat` lemmas. -/
abbrev StrictOrderedSemiring.toOrderedSemiring' [@DecidableRel α (· ≤ ·)] : OrderedSemiring α 
goal: OrderedSemiring α

full_name: StrictOrderedSemiring.toOrderedSemiring
code: instance (priority := 100) StrictOrderedSemiring.toOrderedSemiring : OrderedSemiring α 
goal: OrderedSemiring α

full_name: StrictOrderedSemiring.toCharZero
code: instance (priority := 100) StrictOrderedSemiring.toCharZero [StrictOrderedSemiring α] :
    CharZero α 
goal: CharZero α

full_name: StrictOrderedSemiring.toNoMaxOrder
code: instance (priority := 100) StrictOrderedSemiring.toNoMaxOrder : NoMaxOrder α 
goal: NoMaxOrder α

full_name: StrictOrderedCommSemiring.toOrderedCommSemiring'
code: /-- A choice-free version of `StrictOrderedCommSemiring.toOrderedCommSemiring'` to avoid using
choice in basic `Nat` lemmas. -/
abbrev StrictOrderedCommSemiring.toOrderedCommSemiring' [@DecidableRel α (· ≤ ·)] :
    OrderedCommSemiring α 
goal: OrderedCommSemiring α

full_name: StrictOrderedCommSemiring.toOrderedCommSemiring
code: instance (priority := 100) StrictOrderedCommSemiring.toOrderedCommSemiring :
    OrderedCommSemiring α 
goal: OrderedCommSemiring α

full_name: StrictOrderedRing.toStrictOrderedSemiring
code: instance (priority := 100) StrictOrderedRing.toStrictOrderedSemiring : StrictOrderedSemiring α 
goal: StrictOrderedSemiring α

full_name: StrictOrderedRing.toOrderedRing'
code: /-- A choice-free version of `StrictOrderedRing.toOrderedRing` to avoid using choice in basic
`Int` lemmas. -/
abbrev StrictOrderedRing.toOrderedRing' [@DecidableRel α (· ≤ ·)] : OrderedRing α 
goal: OrderedRing α

full_name: StrictOrderedRing.toOrderedRing
code: instance (priority := 100) StrictOrderedRing.toOrderedRing : OrderedRing α 
goal: OrderedRing α

full_name: StrictOrderedCommRing.toOrderedCommRing'
code: /-- A choice-free version of `StrictOrderedCommRing.toOrderedCommRing` to avoid using
choice in basic `Int` lemmas. -/
abbrev StrictOrderedCommRing.toOrderedCommRing' [@DecidableRel α (· ≤ ·)] : OrderedCommRing α 
goal: OrderedCommRing α

full_name: StrictOrderedCommRing.toStrictOrderedCommSemiring
code: instance (priority := 100) StrictOrderedCommRing.toStrictOrderedCommSemiring :
    StrictOrderedCommSemiring α 
goal: StrictOrderedCommSemiring α

full_name: StrictOrderedCommRing.toOrderedCommRing
code: instance (priority := 100) StrictOrderedCommRing.toOrderedCommRing : OrderedCommRing α 
goal: OrderedCommRing α

full_name: LinearOrderedSemiring.toPosMulReflectLT
code: instance (priority := 200) LinearOrderedSemiring.toPosMulReflectLT : PosMulReflectLT α 
goal: PosMulReflectLT α

full_name: LinearOrderedSemiring.toMulPosReflectLT
code: instance (priority := 200) LinearOrderedSemiring.toMulPosReflectLT : MulPosReflectLT α 
goal: MulPosReflectLT α

full_name: LinearOrderedSemiring.noZeroDivisors
code: instance (priority := 100) LinearOrderedSemiring.noZeroDivisors : NoZeroDivisors α 
goal: NoZeroDivisors α

full_name: LinearOrderedRing.isDomain
code: instance (priority := 100) LinearOrderedRing.isDomain : IsDomain α 
goal: IsDomain α

full_name: LinearOrderedCommSemiring.toLinearOrderedCancelAddCommMonoid
code: instance (priority := 100) LinearOrderedCommSemiring.toLinearOrderedCancelAddCommMonoid :
    LinearOrderedCancelAddCommMonoid α 
goal: LinearOrderedCancelAddCommMonoid α

full_name: LinearOrderedRing.toLinearOrderedSemiring
code: instance (priority := 100) LinearOrderedRing.toLinearOrderedSemiring : LinearOrderedSemiring α 
goal: LinearOrderedSemiring α

full_name: LinearOrderedRing.toLinearOrderedAddCommGroup
code: instance (priority := 100) LinearOrderedRing.toLinearOrderedAddCommGroup :
    LinearOrderedAddCommGroup α 
goal: LinearOrderedAddCommGroup α

full_name: LinearOrderedCommRing.toStrictOrderedCommRing
code: instance (priority := 100) LinearOrderedCommRing.toStrictOrderedCommRing
    [d : LinearOrderedCommRing α] : StrictOrderedCommRing α 
goal: StrictOrderedCommRing α

full_name: LinearOrderedCommRing.toLinearOrderedCommSemiring
code: instance (priority := 100) LinearOrderedCommRing.toLinearOrderedCommSemiring
    [d : LinearOrderedCommRing α] : LinearOrderedCommSemiring α 
goal: LinearOrderedCommSemiring α