- add : α → α → α
- add_assoc : ∀ (a b c_1 : α), a + b + c_1 = a + (b + c_1)
- zero : α
- zero_add : ∀ (a : α), 0 + a = a
- add_zero : ∀ (a : α), a + 0 = a
- add_comm : ∀ (a b : α), a + b = b + a
- mul : α → α → α
- mul_assoc : ∀ (a b c_1 : α), a * b * c_1 = a * (b * c_1)
- one : α
- one_mul : ∀ (a : α), 1 * a = a
- mul_one : ∀ (a : α), a * 1 = a
- zero_mul : ∀ (a : α), 0 * a = 0
- mul_zero : ∀ (a : α), a * 0 = 0
- left_distrib : ∀ (a b c_1 : α), a * (b + c_1) = a * b + a * c_1
- right_distrib : ∀ (a b c_1 : α), (a + b) * c_1 = a * c_1 + b * c_1
- add_left_cancel : ∀ (a b c_1 : α), a + b = a + c_1 → b = c_1
- add_right_cancel : ∀ (a b c_1 : α), a + b = c_1 + b → a = c_1
- le : α → α → Prop
- lt : α → α → Prop
- le_refl : ∀ (a : α), a ≤ a
- le_trans : ∀ (a b c_1 : α), a ≤ b → b ≤ c_1 → a ≤ c_1
- lt_iff_le_not_le : (∀ (a b : α), a < b ↔ a ≤ b ∧ ¬b ≤ a) . "order_laws_tac"
- le_antisymm : ∀ (a b : α), a ≤ b → b ≤ a → a = b
- add_le_add_left : ∀ (a b : α), a ≤ b → ∀ (c_1 : α), c_1 + a ≤ c_1 + b
- le_of_add_le_add_left : ∀ (a b c_1 : α), a + b ≤ a + c_1 → b ≤ c_1
- mul_lt_mul_of_pos_left : ∀ (a b c_1 : α), a < b → 0 < c_1 → c_1 * a < c_1 * b
- mul_lt_mul_of_pos_right : ∀ (a b c_1 : α), a < b → 0 < c_1 → a * c_1 < b * c_1
An ordered_semiring α
is a semiring α
with a partial order such that
multiplication with a positive number and addition are monotone.
- add : α → α → α
- add_assoc : ∀ (a b c_1 : α), a + b + c_1 = a + (b + c_1)
- zero : α
- zero_add : ∀ (a : α), 0 + a = a
- add_zero : ∀ (a : α), a + 0 = a
- add_comm : ∀ (a b : α), a + b = b + a
- mul : α → α → α
- mul_assoc : ∀ (a b c_1 : α), a * b * c_1 = a * (b * c_1)
- one : α
- one_mul : ∀ (a : α), 1 * a = a
- mul_one : ∀ (a : α), a * 1 = a
- zero_mul : ∀ (a : α), 0 * a = 0
- mul_zero : ∀ (a : α), a * 0 = 0
- left_distrib : ∀ (a b c_1 : α), a * (b + c_1) = a * b + a * c_1
- right_distrib : ∀ (a b c_1 : α), (a + b) * c_1 = a * c_1 + b * c_1
- add_left_cancel : ∀ (a b c_1 : α), a + b = a + c_1 → b = c_1
- add_right_cancel : ∀ (a b c_1 : α), a + b = c_1 + b → a = c_1
- le : α → α → Prop
- lt : α → α → Prop
- le_refl : ∀ (a : α), a ≤ a
- le_trans : ∀ (a b c_1 : α), a ≤ b → b ≤ c_1 → a ≤ c_1
- lt_iff_le_not_le : (∀ (a b : α), a < b ↔ a ≤ b ∧ ¬b ≤ a) . "order_laws_tac"
- le_antisymm : ∀ (a b : α), a ≤ b → b ≤ a → a = b
- add_le_add_left : ∀ (a b : α), a ≤ b → ∀ (c_1 : α), c_1 + a ≤ c_1 + b
- le_of_add_le_add_left : ∀ (a b c_1 : α), a + b ≤ a + c_1 → b ≤ c_1
- mul_lt_mul_of_pos_left : ∀ (a b c_1 : α), a < b → 0 < c_1 → c_1 * a < c_1 * b
- mul_lt_mul_of_pos_right : ∀ (a b c_1 : α), a < b → 0 < c_1 → a * c_1 < b * c_1
- le_total : ∀ (a b : α), a ≤ b ∨ b ≤ a
- zero_lt_one : linear_ordered_semiring.zero < linear_ordered_semiring.one
A linear_ordered_semiring α
is a semiring α
with a linear order
such that multiplication with a positive number and addition are monotone.
0 < 2
: an alternative version of two_pos
that only assumes linear_ordered_semiring
.
Equations
Equations
- add : α → α → α
- add_assoc : ∀ (a b c_1 : α), a + b + c_1 = a + (b + c_1)
- zero : α
- zero_add : ∀ (a : α), 0 + a = a
- add_zero : ∀ (a : α), a + 0 = a
- add_comm : ∀ (a b : α), a + b = b + a
- mul : α → α → α
- mul_assoc : ∀ (a b c_1 : α), a * b * c_1 = a * (b * c_1)
- one : α
- one_mul : ∀ (a : α), 1 * a = a
- mul_one : ∀ (a : α), a * 1 = a
- zero_mul : ∀ (a : α), 0 * a = 0
- mul_zero : ∀ (a : α), a * 0 = 0
- left_distrib : ∀ (a b c_1 : α), a * (b + c_1) = a * b + a * c_1
- right_distrib : ∀ (a b c_1 : α), (a + b) * c_1 = a * c_1 + b * c_1
- add_left_cancel : ∀ (a b c_1 : α), a + b = a + c_1 → b = c_1
- add_right_cancel : ∀ (a b c_1 : α), a + b = c_1 + b → a = c_1
- le : α → α → Prop
- lt : α → α → Prop
- le_refl : ∀ (a : α), a ≤ a
- le_trans : ∀ (a b c_1 : α), a ≤ b → b ≤ c_1 → a ≤ c_1
- lt_iff_le_not_le : (∀ (a b : α), a < b ↔ a ≤ b ∧ ¬b ≤ a) . "order_laws_tac"
- le_antisymm : ∀ (a b : α), a ≤ b → b ≤ a → a = b
- add_le_add_left : ∀ (a b : α), a ≤ b → ∀ (c_1 : α), c_1 + a ≤ c_1 + b
- le_of_add_le_add_left : ∀ (a b c_1 : α), a + b ≤ a + c_1 → b ≤ c_1
- mul_lt_mul_of_pos_left : ∀ (a b c_1 : α), a < b → 0 < c_1 → c_1 * a < c_1 * b
- mul_lt_mul_of_pos_right : ∀ (a b c_1 : α), a < b → 0 < c_1 → a * c_1 < b * c_1
- le_total : ∀ (a b : α), a ≤ b ∨ b ≤ a
- zero_lt_one : decidable_linear_ordered_semiring.zero < decidable_linear_ordered_semiring.one
- decidable_le : decidable_rel has_le.le
- decidable_eq : decidable_eq α
- decidable_lt : decidable_rel has_lt.lt
A decidable_linear_ordered_semiring α
is a semiring α
with a decidable linear order
such that multiplication with a positive number and addition are monotone.
- add : α → α → α
- add_assoc : ∀ (a b c_1 : α), a + b + c_1 = a + (b + c_1)
- zero : α
- zero_add : ∀ (a : α), 0 + a = a
- add_zero : ∀ (a : α), a + 0 = a
- neg : α → α
- add_left_neg : ∀ (a : α), -a + a = 0
- add_comm : ∀ (a b : α), a + b = b + a
- mul : α → α → α
- mul_assoc : ∀ (a b c_1 : α), a * b * c_1 = a * (b * c_1)
- one : α
- one_mul : ∀ (a : α), 1 * a = a
- mul_one : ∀ (a : α), a * 1 = a
- left_distrib : ∀ (a b c_1 : α), a * (b + c_1) = a * b + a * c_1
- right_distrib : ∀ (a b c_1 : α), (a + b) * c_1 = a * c_1 + b * c_1
- le : α → α → Prop
- lt : α → α → Prop
- le_refl : ∀ (a : α), a ≤ a
- le_trans : ∀ (a b c_1 : α), a ≤ b → b ≤ c_1 → a ≤ c_1
- lt_iff_le_not_le : (∀ (a b : α), a < b ↔ a ≤ b ∧ ¬b ≤ a) . "order_laws_tac"
- le_antisymm : ∀ (a b : α), a ≤ b → b ≤ a → a = b
- add_le_add_left : ∀ (a b : α), a ≤ b → ∀ (c_1 : α), c_1 + a ≤ c_1 + b
- exists_pair_ne : ∃ (x y : α), x ≠ y
- mul_pos : ∀ (a b : α), 0 < a → 0 < b → 0 < a * b
An ordered_ring α
is a ring α
with a partial order such that
multiplication with a positive number and addition are monotone.
Equations
- ordered_ring.to_ordered_semiring = {add := ordered_ring.add _inst_1, add_assoc := _, zero := ordered_ring.zero _inst_1, zero_add := _, add_zero := _, add_comm := _, mul := ordered_ring.mul _inst_1, mul_assoc := _, one := ordered_ring.one _inst_1, one_mul := _, mul_one := _, zero_mul := _, mul_zero := _, left_distrib := _, right_distrib := _, add_left_cancel := _, add_right_cancel := _, le := ordered_ring.le _inst_1, lt := ordered_ring.lt _inst_1, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, add_le_add_left := _, le_of_add_le_add_left := _, mul_lt_mul_of_pos_left := _, mul_lt_mul_of_pos_right := _}
- add : α → α → α
- add_assoc : ∀ (a b c_1 : α), a + b + c_1 = a + (b + c_1)
- zero : α
- zero_add : ∀ (a : α), 0 + a = a
- add_zero : ∀ (a : α), a + 0 = a
- neg : α → α
- add_left_neg : ∀ (a : α), -a + a = 0
- add_comm : ∀ (a b : α), a + b = b + a
- mul : α → α → α
- mul_assoc : ∀ (a b c_1 : α), a * b * c_1 = a * (b * c_1)
- one : α
- one_mul : ∀ (a : α), 1 * a = a
- mul_one : ∀ (a : α), a * 1 = a
- left_distrib : ∀ (a b c_1 : α), a * (b + c_1) = a * b + a * c_1
- right_distrib : ∀ (a b c_1 : α), (a + b) * c_1 = a * c_1 + b * c_1
- le : α → α → Prop
- lt : α → α → Prop
- le_refl : ∀ (a : α), a ≤ a
- le_trans : ∀ (a b c_1 : α), a ≤ b → b ≤ c_1 → a ≤ c_1
- lt_iff_le_not_le : (∀ (a b : α), a < b ↔ a ≤ b ∧ ¬b ≤ a) . "order_laws_tac"
- le_antisymm : ∀ (a b : α), a ≤ b → b ≤ a → a = b
- add_le_add_left : ∀ (a b : α), a ≤ b → ∀ (c_1 : α), c_1 + a ≤ c_1 + b
- exists_pair_ne : ∃ (x y : α), x ≠ y
- mul_pos : ∀ (a b : α), 0 < a → 0 < b → 0 < a * b
- le_total : ∀ (a b : α), a ≤ b ∨ b ≤ a
- zero_lt_one : linear_ordered_ring.zero < linear_ordered_ring.one
A linear_ordered_ring α
is a ring α
with a linear order such that
multiplication with a positive number and addition are monotone.
Equations
- linear_ordered_ring.to_linear_ordered_semiring = {add := linear_ordered_ring.add _inst_1, add_assoc := _, zero := linear_ordered_ring.zero _inst_1, zero_add := _, add_zero := _, add_comm := _, mul := linear_ordered_ring.mul _inst_1, mul_assoc := _, one := linear_ordered_ring.one _inst_1, one_mul := _, mul_one := _, zero_mul := _, mul_zero := _, left_distrib := _, right_distrib := _, add_left_cancel := _, add_right_cancel := _, le := linear_ordered_ring.le _inst_1, lt := linear_ordered_ring.lt _inst_1, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, add_le_add_left := _, le_of_add_le_add_left := _, mul_lt_mul_of_pos_left := _, mul_lt_mul_of_pos_right := _, le_total := _, zero_lt_one := _}
Equations
Equations
- linear_ordered_ring.to_domain = {add := linear_ordered_ring.add _inst_1, add_assoc := _, zero := linear_ordered_ring.zero _inst_1, zero_add := _, add_zero := _, neg := linear_ordered_ring.neg _inst_1, add_left_neg := _, add_comm := _, mul := linear_ordered_ring.mul _inst_1, mul_assoc := _, one := linear_ordered_ring.one _inst_1, one_mul := _, mul_one := _, left_distrib := _, right_distrib := _, exists_pair_ne := _, eq_zero_or_eq_zero_of_mul_eq_zero := _}
- add : α → α → α
- add_assoc : ∀ (a b c_1 : α), a + b + c_1 = a + (b + c_1)
- zero : α
- zero_add : ∀ (a : α), 0 + a = a
- add_zero : ∀ (a : α), a + 0 = a
- neg : α → α
- add_left_neg : ∀ (a : α), -a + a = 0
- add_comm : ∀ (a b : α), a + b = b + a
- mul : α → α → α
- mul_assoc : ∀ (a b c_1 : α), a * b * c_1 = a * (b * c_1)
- one : α
- one_mul : ∀ (a : α), 1 * a = a
- mul_one : ∀ (a : α), a * 1 = a
- left_distrib : ∀ (a b c_1 : α), a * (b + c_1) = a * b + a * c_1
- right_distrib : ∀ (a b c_1 : α), (a + b) * c_1 = a * c_1 + b * c_1
- le : α → α → Prop
- lt : α → α → Prop
- le_refl : ∀ (a : α), a ≤ a
- le_trans : ∀ (a b c_1 : α), a ≤ b → b ≤ c_1 → a ≤ c_1
- lt_iff_le_not_le : (∀ (a b : α), a < b ↔ a ≤ b ∧ ¬b ≤ a) . "order_laws_tac"
- le_antisymm : ∀ (a b : α), a ≤ b → b ≤ a → a = b
- add_le_add_left : ∀ (a b : α), a ≤ b → ∀ (c_1 : α), c_1 + a ≤ c_1 + b
- exists_pair_ne : ∃ (x y : α), x ≠ y
- mul_pos : ∀ (a b : α), 0 < a → 0 < b → 0 < a * b
- le_total : ∀ (a b : α), a ≤ b ∨ b ≤ a
- zero_lt_one : linear_ordered_comm_ring.zero < linear_ordered_comm_ring.one
- mul_comm : ∀ (a b : α), a * b = b * a
A linear_ordered_comm_ring α
is a commutative ring α
with a linear order
such that multiplication with a positive number and addition are monotone.
Equations
- linear_ordered_comm_ring.to_integral_domain = {add := linear_ordered_comm_ring.add s, add_assoc := _, zero := linear_ordered_comm_ring.zero s, zero_add := _, add_zero := _, neg := linear_ordered_comm_ring.neg s, add_left_neg := _, add_comm := _, mul := linear_ordered_comm_ring.mul s, mul_assoc := _, one := linear_ordered_comm_ring.one s, one_mul := _, mul_one := _, left_distrib := _, right_distrib := _, mul_comm := _, exists_pair_ne := _, eq_zero_or_eq_zero_of_mul_eq_zero := _}
- add : α → α → α
- add_assoc : ∀ (a b c_1 : α), a + b + c_1 = a + (b + c_1)
- zero : α
- zero_add : ∀ (a : α), 0 + a = a
- add_zero : ∀ (a : α), a + 0 = a
- neg : α → α
- add_left_neg : ∀ (a : α), -a + a = 0
- add_comm : ∀ (a b : α), a + b = b + a
- mul : α → α → α
- mul_assoc : ∀ (a b c_1 : α), a * b * c_1 = a * (b * c_1)
- one : α
- one_mul : ∀ (a : α), 1 * a = a
- mul_one : ∀ (a : α), a * 1 = a
- left_distrib : ∀ (a b c_1 : α), a * (b + c_1) = a * b + a * c_1
- right_distrib : ∀ (a b c_1 : α), (a + b) * c_1 = a * c_1 + b * c_1
- le : α → α → Prop
- lt : α → α → Prop
- le_refl : ∀ (a : α), a ≤ a
- le_trans : ∀ (a b c_1 : α), a ≤ b → b ≤ c_1 → a ≤ c_1
- lt_iff_le_not_le : (∀ (a b : α), a < b ↔ a ≤ b ∧ ¬b ≤ a) . "order_laws_tac"
- le_antisymm : ∀ (a b : α), a ≤ b → b ≤ a → a = b
- add_le_add_left : ∀ (a b : α), a ≤ b → ∀ (c_1 : α), c_1 + a ≤ c_1 + b
- exists_pair_ne : ∃ (x y : α), x ≠ y
- mul_pos : ∀ (a b : α), 0 < a → 0 < b → 0 < a * b
- le_total : ∀ (a b : α), a ≤ b ∨ b ≤ a
- zero_lt_one : decidable_linear_ordered_comm_ring.zero < decidable_linear_ordered_comm_ring.one
- mul_comm : ∀ (a b : α), a * b = b * a
- decidable_le : decidable_rel has_le.le
- decidable_eq : decidable_eq α
- decidable_lt : decidable_rel has_lt.lt
A decidable_linear_ordered_comm_ring α
is a commutative ring α
with a
decidable linear order such that multiplication with a positive number and
addition are monotone.
Equations
- decidable_linear_ordered_comm_ring.to_decidable_linear_ordered_semiring = let s : linear_ordered_semiring α := linear_ordered_ring.to_linear_ordered_semiring in {add := decidable_linear_ordered_comm_ring.add d, add_assoc := _, zero := decidable_linear_ordered_comm_ring.zero d, zero_add := _, add_zero := _, add_comm := _, mul := decidable_linear_ordered_comm_ring.mul d, mul_assoc := _, one := decidable_linear_ordered_comm_ring.one d, one_mul := _, mul_one := _, zero_mul := _, mul_zero := _, left_distrib := _, right_distrib := _, add_left_cancel := _, add_right_cancel := _, le := decidable_linear_ordered_comm_ring.le d, lt := decidable_linear_ordered_comm_ring.lt d, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, add_le_add_left := _, le_of_add_le_add_left := _, mul_lt_mul_of_pos_left := _, mul_lt_mul_of_pos_right := _, le_total := _, zero_lt_one := _, decidable_le := decidable_linear_ordered_comm_ring.decidable_le d, decidable_eq := decidable_linear_ordered_comm_ring.decidable_eq d, decidable_lt := decidable_linear_ordered_comm_ring.decidable_lt d}
- add : α → α → α
- add_assoc : ∀ (a b c_1 : α), a + b + c_1 = a + (b + c_1)
- zero : α
- zero_add : ∀ (a : α), 0 + a = a
- add_zero : ∀ (a : α), a + 0 = a
- neg : α → α
- add_left_neg : ∀ (a : α), -a + a = 0
- add_comm : ∀ (a b : α), a + b = b + a
- mul : α → α → α
- mul_assoc : ∀ (a b c_1 : α), a * b * c_1 = a * (b * c_1)
- one : α
- one_mul : ∀ (a : α), 1 * a = a
- mul_one : ∀ (a : α), a * 1 = a
- left_distrib : ∀ (a b c_1 : α), a * (b + c_1) = a * b + a * c_1
- right_distrib : ∀ (a b c_1 : α), (a + b) * c_1 = a * c_1 + b * c_1
- nonneg : α → Prop
- pos : α → Prop
- pos_iff : (∀ (a : α), nonneg_ring.pos a ↔ nonneg_ring.nonneg a ∧ ¬nonneg_ring.nonneg (-a)) . "order_laws_tac"
- zero_nonneg : nonneg_ring.nonneg 0
- add_nonneg : ∀ {a b : α}, nonneg_ring.nonneg a → nonneg_ring.nonneg b → nonneg_ring.nonneg (a + b)
- nonneg_antisymm : ∀ {a : α}, nonneg_ring.nonneg a → nonneg_ring.nonneg (-a) → a = 0
- exists_pair_ne : ∃ (x y : α), x ≠ y
- mul_nonneg : ∀ {a b : α}, nonneg_ring.nonneg a → nonneg_ring.nonneg b → nonneg_ring.nonneg (a * b)
- mul_pos : ∀ {a b : α}, nonneg_ring.pos a → nonneg_ring.pos b → nonneg_ring.pos (a * b)
Extend nonneg_add_comm_group
to support ordered rings
specified by their nonnegative elements
Instances
- add : α → α → α
- add_assoc : ∀ (a b c_1 : α), a + b + c_1 = a + (b + c_1)
- zero : α
- zero_add : ∀ (a : α), 0 + a = a
- add_zero : ∀ (a : α), a + 0 = a
- neg : α → α
- add_left_neg : ∀ (a : α), -a + a = 0
- add_comm : ∀ (a b : α), a + b = b + a
- mul : α → α → α
- mul_assoc : ∀ (a b c_1 : α), a * b * c_1 = a * (b * c_1)
- one : α
- one_mul : ∀ (a : α), 1 * a = a
- mul_one : ∀ (a : α), a * 1 = a
- left_distrib : ∀ (a b c_1 : α), a * (b + c_1) = a * b + a * c_1
- right_distrib : ∀ (a b c_1 : α), (a + b) * c_1 = a * c_1 + b * c_1
- exists_pair_ne : ∃ (x y : α), x ≠ y
- eq_zero_or_eq_zero_of_mul_eq_zero : ∀ (a b : α), a * b = 0 → a = 0 ∨ b = 0
- nonneg : α → Prop
- pos : α → Prop
- pos_iff : (∀ (a : α), linear_nonneg_ring.pos a ↔ linear_nonneg_ring.nonneg a ∧ ¬linear_nonneg_ring.nonneg (-a)) . "order_laws_tac"
- zero_nonneg : linear_nonneg_ring.nonneg 0
- add_nonneg : ∀ {a b : α}, linear_nonneg_ring.nonneg a → linear_nonneg_ring.nonneg b → linear_nonneg_ring.nonneg (a + b)
- nonneg_antisymm : ∀ {a : α}, linear_nonneg_ring.nonneg a → linear_nonneg_ring.nonneg (-a) → a = 0
- mul_nonneg : ∀ {a b : α}, linear_nonneg_ring.nonneg a → linear_nonneg_ring.nonneg b → linear_nonneg_ring.nonneg (a * b)
- nonneg_total : ∀ (a : α), linear_nonneg_ring.nonneg a ∨ linear_nonneg_ring.nonneg (-a)
Extend nonneg_add_comm_group
to support linearly ordered rings
specified by their nonnegative elements
Equations
- nonneg_ring.to_ordered_ring = {add := nonneg_ring.add _inst_1, add_assoc := _, zero := nonneg_ring.zero _inst_1, zero_add := _, add_zero := _, neg := nonneg_ring.neg _inst_1, add_left_neg := _, add_comm := _, mul := nonneg_ring.mul _inst_1, mul_assoc := _, one := nonneg_ring.one _inst_1, one_mul := _, mul_one := _, left_distrib := _, right_distrib := _, le := ordered_add_comm_group.le infer_instance, lt := ordered_add_comm_group.lt infer_instance, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, add_le_add_left := _, exists_pair_ne := _, mul_pos := _}
to_linear_nonneg_ring
shows that a nonneg_ring
with a total order is a domain
,
hence a linear_nonneg_ring
.
Equations
- nonneg_ring.to_linear_nonneg_ring nonneg_total = {add := nonneg_ring.add _inst_1, add_assoc := _, zero := nonneg_ring.zero _inst_1, zero_add := _, add_zero := _, neg := nonneg_ring.neg _inst_1, add_left_neg := _, add_comm := _, mul := nonneg_ring.mul _inst_1, mul_assoc := _, one := nonneg_ring.one _inst_1, one_mul := _, mul_one := _, left_distrib := _, right_distrib := _, exists_pair_ne := _, eq_zero_or_eq_zero_of_mul_eq_zero := _, nonneg := nonneg_ring.nonneg _inst_1, pos := nonneg_ring.pos _inst_1, pos_iff := _, zero_nonneg := _, add_nonneg := _, nonneg_antisymm := _, mul_nonneg := _, nonneg_total := nonneg_total}
Equations
- linear_nonneg_ring.to_nonneg_ring = {add := linear_nonneg_ring.add _inst_1, add_assoc := _, zero := linear_nonneg_ring.zero _inst_1, zero_add := _, add_zero := _, neg := linear_nonneg_ring.neg _inst_1, add_left_neg := _, add_comm := _, mul := linear_nonneg_ring.mul _inst_1, mul_assoc := _, one := linear_nonneg_ring.one _inst_1, one_mul := _, mul_one := _, left_distrib := _, right_distrib := _, nonneg := linear_nonneg_ring.nonneg _inst_1, pos := linear_nonneg_ring.pos _inst_1, pos_iff := _, zero_nonneg := _, add_nonneg := _, nonneg_antisymm := _, exists_pair_ne := _, mul_nonneg := _, mul_pos := _}
Equations
- linear_nonneg_ring.to_linear_order = {le := ordered_add_comm_group.le infer_instance, lt := ordered_add_comm_group.lt infer_instance, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, le_total := _}
Equations
- linear_nonneg_ring.to_linear_ordered_ring = {add := linear_nonneg_ring.add _inst_1, add_assoc := _, zero := linear_nonneg_ring.zero _inst_1, zero_add := _, add_zero := _, neg := linear_nonneg_ring.neg _inst_1, add_left_neg := _, add_comm := _, mul := linear_nonneg_ring.mul _inst_1, mul_assoc := _, one := linear_nonneg_ring.one _inst_1, one_mul := _, mul_one := _, left_distrib := _, right_distrib := _, le := ordered_add_comm_group.le infer_instance, lt := ordered_add_comm_group.lt infer_instance, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, add_le_add_left := _, exists_pair_ne := _, mul_pos := _, le_total := _, zero_lt_one := _}
Convert a linear_nonneg_ring
with a commutative multiplication and
decidable non-negativity into a decidable_linear_ordered_comm_ring
Equations
- linear_nonneg_ring.to_decidable_linear_ordered_comm_ring = {add := linear_ordered_ring.add linear_nonneg_ring.to_linear_ordered_ring, add_assoc := _, zero := linear_ordered_ring.zero linear_nonneg_ring.to_linear_ordered_ring, zero_add := _, add_zero := _, neg := linear_ordered_ring.neg linear_nonneg_ring.to_linear_ordered_ring, add_left_neg := _, add_comm := _, mul := linear_ordered_ring.mul linear_nonneg_ring.to_linear_ordered_ring, mul_assoc := _, one := linear_ordered_ring.one linear_nonneg_ring.to_linear_ordered_ring, one_mul := _, mul_one := _, left_distrib := _, right_distrib := _, le := linear_ordered_ring.le linear_nonneg_ring.to_linear_ordered_ring, lt := linear_ordered_ring.lt linear_nonneg_ring.to_linear_ordered_ring, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, add_le_add_left := _, exists_pair_ne := _, mul_pos := _, le_total := _, zero_lt_one := _, mul_comm := _, decidable_le := λ (a b : α), _inst_2 (b - a), decidable_eq := decidable_linear_ordered_add_comm_group.decidable_eq._default linear_ordered_ring.le linear_ordered_ring.lt linear_nonneg_ring.to_decidable_linear_ordered_comm_ring._proof_21 linear_nonneg_ring.to_decidable_linear_ordered_comm_ring._proof_22 linear_nonneg_ring.to_decidable_linear_ordered_comm_ring._proof_23 linear_nonneg_ring.to_decidable_linear_ordered_comm_ring._proof_24 linear_nonneg_ring.to_decidable_linear_ordered_comm_ring._proof_25 (λ (a b : α), _inst_2 (b - a)), decidable_lt := λ (a b : α), decidable_lt_of_decidable_le a b}
- add : α → α → α
- add_assoc : ∀ (a b c_1 : α), a + b + c_1 = a + (b + c_1)
- zero : α
- zero_add : ∀ (a : α), 0 + a = a
- add_zero : ∀ (a : α), a + 0 = a
- add_comm : ∀ (a b : α), a + b = b + a
- le : α → α → Prop
- lt : α → α → Prop
- le_refl : ∀ (a : α), a ≤ a
- le_trans : ∀ (a b c_1 : α), a ≤ b → b ≤ c_1 → a ≤ c_1
- lt_iff_le_not_le : (∀ (a b : α), a < b ↔ a ≤ b ∧ ¬b ≤ a) . "order_laws_tac"
- le_antisymm : ∀ (a b : α), a ≤ b → b ≤ a → a = b
- add_le_add_left : ∀ (a b : α), a ≤ b → ∀ (c_1 : α), c_1 + a ≤ c_1 + b
- lt_of_add_lt_add_left : ∀ (a b c_1 : α), a + b < a + c_1 → b < c_1
- bot : α
- bot_le : ∀ (a : α), ⊥ ≤ a
- le_iff_exists_add : ∀ (a b : α), a ≤ b ↔ ∃ (c_1 : α), b = a + c_1
- mul : α → α → α
- mul_assoc : ∀ (a b c_1 : α), a * b * c_1 = a * (b * c_1)
- one : α
- one_mul : ∀ (a : α), 1 * a = a
- mul_one : ∀ (a : α), a * 1 = a
- zero_mul : ∀ (a : α), 0 * a = 0
- mul_zero : ∀ (a : α), a * 0 = 0
- left_distrib : ∀ (a b c_1 : α), a * (b + c_1) = a * b + a * c_1
- right_distrib : ∀ (a b c_1 : α), (a + b) * c_1 = a * c_1 + b * c_1
- mul_comm : ∀ (a b : α), a * b = b * a
- exists_pair_ne : ∃ (x y : α), x ≠ y
- eq_zero_or_eq_zero_of_mul_eq_zero : ∀ (a b : α), a * b = 0 → a = 0 ∨ b = 0
A canonically ordered commutative semiring is an ordered, commutative semiring
in which a ≤ b
iff there exists c
with b = a + c
. This is satisfied by the
natural numbers, for example, but not the integers or other ordered groups.
A version of zero_lt_one : 0 < 1
for a canonically_ordered_comm_semiring
.
Equations
Equations
Equations
- with_top.canonically_ordered_comm_semiring = {add := add_comm_monoid.add with_top.add_comm_monoid, add_assoc := _, zero := add_comm_monoid.zero with_top.add_comm_monoid, zero_add := _, add_zero := _, add_comm := _, le := canonically_ordered_add_monoid.le with_top.canonically_ordered_add_monoid, lt := canonically_ordered_add_monoid.lt with_top.canonically_ordered_add_monoid, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, add_le_add_left := _, lt_of_add_lt_add_left := _, bot := canonically_ordered_add_monoid.bot with_top.canonically_ordered_add_monoid, bot_le := _, le_iff_exists_add := _, mul := mul_zero_class.mul with_top.mul_zero_class, mul_assoc := _, one := ↑1, one_mul := _, mul_one := _, zero_mul := _, mul_zero := _, left_distrib := _, right_distrib := _, mul_comm := _, exists_pair_ne := _, eq_zero_or_eq_zero_of_mul_eq_zero := _}