Ordered monoids and groups
This file develops the basics of ordered monoids and groups.
Implementation details
Unfortunately, the number of '
appended to lemmas in this file
may differ between the multiplicative and the additive version of a lemma.
The reason is that we did not want to change existing names in the library.
- 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
- mul_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
- mul_le_mul_left : ∀ (a b : α), a ≤ b → ∀ (c_1 : α), c_1 * a ≤ c_1 * b
- lt_of_mul_lt_mul_left : ∀ (a b c_1 : α), a * b < a * c_1 → b < c_1
An ordered commutative monoid is a commutative monoid with a partial order such that
a ≤ b → c * a ≤ c * b
(multiplication is monotone)a * b < a * c → b < c
.
- 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
An ordered (additive) commutative monoid is a commutative monoid with a partial order such that
a ≤ b → c + a ≤ c + b
(addition is monotone)a + b < a + c → b < c
.
Instances
- with_top.ordered_add_comm_monoid
- with_bot.ordered_add_comm_monoid
- canonically_ordered_add_monoid.to_ordered_add_comm_monoid
- ordered_cancel_add_comm_monoid.to_ordered_add_comm_monoid
- order_dual.ordered_add_comm_monoid
- additive.ordered_add_comm_monoid
- rat.ordered_add_comm_monoid
- enat.ordered_add_comm_monoid
- real.ordered_add_comm_monoid
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
If 0
is the least element in α
, then with_zero α
is an ordered_add_comm_monoid
.
Equations
- with_zero.ordered_add_comm_monoid zero_le = {add := add_comm_monoid.add with_zero.add_comm_monoid, add_assoc := _, zero := add_comm_monoid.zero with_zero.add_comm_monoid, zero_add := _, add_zero := _, add_comm := _, le := partial_order.le with_zero.partial_order, lt := partial_order.lt with_zero.partial_order, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, add_le_add_left := _, lt_of_add_lt_add_left := _}
Equations
- with_top.has_one = {one := ↑1}
Equations
- with_top.has_add = {add := λ (o₁ o₂ : with_top α), option.bind o₁ (λ (a : α), option.map (λ (b : α), a + b) o₂)}
Equations
Equations
- with_top.add_monoid = {add := has_add.add with_top.has_add, add_assoc := _, zero := option.some 0, zero_add := _, add_zero := _}
Equations
- with_top.add_comm_monoid = {add := has_add.add with_top.has_add, add_assoc := _, zero := 0, zero_add := _, add_zero := _, add_comm := _}
Equations
- with_top.ordered_add_comm_monoid = {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 := partial_order.le with_top.partial_order, lt := partial_order.lt with_top.partial_order, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, add_le_add_left := _, lt_of_add_lt_add_left := _}
Equations
Equations
Equations
Equations
Equations
- with_bot.ordered_add_comm_monoid = {add := add_comm_monoid.add with_bot.add_comm_monoid, add_assoc := _, zero := add_comm_monoid.zero with_bot.add_comm_monoid, zero_add := _, add_zero := _, add_comm := _, le := partial_order.le with_bot.partial_order, lt := partial_order.lt with_bot.partial_order, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, add_le_add_left := _, lt_of_add_lt_add_left := _}
- 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
A canonically ordered additive monoid is an ordered commutative additive monoid
in which the ordering coincides with the divisibility relation,
which is to say, 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.
Instances
- with_zero.canonically_ordered_add_monoid
- with_top.canonically_ordered_add_monoid
- canonically_linear_ordered_add_monoid.to_canonically_ordered_add_monoid
- canonically_ordered_comm_semiring.to_canonically_ordered_add_monoid
- multiset.canonically_ordered_add_monoid
- punit.canonically_ordered_add_monoid
- cardinal.canonically_ordered_add_monoid
- enat.canonically_ordered_add_monoid
- nnreal.canonically_ordered_add_monoid
- prime_multiset.canonically_ordered_add_monoid
Equations
- with_zero.canonically_ordered_add_monoid = {add := ordered_add_comm_monoid.add (with_zero.ordered_add_comm_monoid zero_le), add_assoc := _, zero := ordered_add_comm_monoid.zero (with_zero.ordered_add_comm_monoid zero_le), zero_add := _, add_zero := _, add_comm := _, le := ordered_add_comm_monoid.le (with_zero.ordered_add_comm_monoid zero_le), lt := ordered_add_comm_monoid.lt (with_zero.ordered_add_comm_monoid zero_le), le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, add_le_add_left := _, lt_of_add_lt_add_left := _, bot := 0, bot_le := _, le_iff_exists_add := _}
Equations
- with_top.canonically_ordered_add_monoid = {add := ordered_add_comm_monoid.add with_top.ordered_add_comm_monoid, add_assoc := _, zero := ordered_add_comm_monoid.zero with_top.ordered_add_comm_monoid, zero_add := _, add_zero := _, add_comm := _, le := order_bot.le with_top.order_bot, lt := order_bot.lt with_top.order_bot, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, add_le_add_left := _, lt_of_add_lt_add_left := _, bot := order_bot.bot with_top.order_bot, bot_le := _, le_iff_exists_add := _}
- 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
- le_total : ∀ (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 canonically linear-ordered additive monoid is a canonically ordered additive monoid whose ordering is a decidable linear order.
Equations
- canonically_linear_ordered_add_monoid.semilattice_sup_bot = {bot := order_bot.bot (canonically_ordered_add_monoid.to_order_bot α), le := lattice.le lattice_of_decidable_linear_order, lt := lattice.lt lattice_of_decidable_linear_order, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, bot_le := _, sup := lattice.sup lattice_of_decidable_linear_order, le_sup_left := _, le_sup_right := _, sup_le := _}
- 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
- 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
An ordered cancellative additive commutative monoid is an additive commutative monoid with a partial order, in which addition is cancellative and strictly monotone.
Instances
- ordered_add_comm_group.to_ordered_cancel_add_comm_monoid
- decidable_linear_ordered_cancel_add_comm_monoid.to_ordered_cancel_add_comm_monoid
- order_dual.ordered_cancel_add_comm_monoid
- additive.ordered_cancel_add_comm_monoid
- ordered_semiring.to_ordered_cancel_add_comm_monoid
- pi.ordered_cancel_add_comm_monoid
- multiset.ordered_cancel_add_comm_monoid
- rat.ordered_cancel_add_comm_monoid
- finsupp.ordered_cancel_add_comm_monoid
- real.ordered_cancel_add_comm_monoid
- num.ordered_cancel_add_comm_monoid
- filter.germ.ordered_cancel_add_comm_monoid
- 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
- mul_comm : ∀ (a b : α), a * b = b * a
- mul_left_cancel : ∀ (a b c_1 : α), a * b = a * c_1 → b = c_1
- mul_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
- mul_le_mul_left : ∀ (a b : α), a ≤ b → ∀ (c_1 : α), c_1 * a ≤ c_1 * b
- le_of_mul_le_mul_left : ∀ (a b c_1 : α), a * b ≤ a * c_1 → b ≤ c_1
An ordered cancellative commutative monoid is a commutative monoid with a partial order, in which multiplication is cancellative and strictly monotone.
Equations
- ordered_cancel_comm_monoid.to_left_cancel_monoid = {mul := ordered_cancel_comm_monoid.mul _inst_1, mul_assoc := _, mul_left_cancel := _, one := ordered_cancel_comm_monoid.one _inst_1, one_mul := _, mul_one := _}
Equations
- ordered_cancel_comm_monoid.to_ordered_comm_monoid = {mul := ordered_cancel_comm_monoid.mul _inst_1, mul_assoc := _, one := ordered_cancel_comm_monoid.one _inst_1, one_mul := _, mul_one := _, mul_comm := _, le := ordered_cancel_comm_monoid.le _inst_1, lt := ordered_cancel_comm_monoid.lt _inst_1, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, mul_le_mul_left := _, lt_of_mul_lt_mul_left := _}
- 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
- 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
An ordered additive commutative group is an additive commutative group with a partial order in which addition is strictly monotone.
Instances
- add_units.ordered_add_comm_group
- decidable_linear_ordered_comm_group.to_ordered_add_comm_group
- nonneg_add_comm_group.to_ordered_add_comm_group
- order_dual.ordered_add_comm_group
- additive.ordered_add_comm_group
- ordered_ring.to_ordered_add_comm_group
- pi.ordered_add_comm_group
- rat.ordered_add_comm_group
- real.ordered_add_comm_group
- filter.germ.ordered_add_comm_group
- pilex.ordered_add_comm_group
- 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
- inv : α → α
- mul_left_inv : ∀ (a : α), a⁻¹ * a = 1
- mul_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
- mul_le_mul_left : ∀ (a b : α), a ≤ b → ∀ (c_1 : α), c_1 * a ≤ c_1 * b
An ordered commutative group is an commutative group with a partial order in which multiplication is strictly monotone.
The units of an ordered commutative monoid form an ordered commutative group.
Equations
- units.ordered_comm_group = {mul := comm_group.mul infer_instance, mul_assoc := _, one := comm_group.one infer_instance, one_mul := _, mul_one := _, inv := comm_group.inv infer_instance, mul_left_inv := _, mul_comm := _, le := partial_order.le units.partial_order, lt := partial_order.lt units.partial_order, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, mul_le_mul_left := _}
Equations
- ordered_comm_group.to_ordered_cancel_comm_monoid α = {mul := ordered_comm_group.mul s, mul_assoc := _, one := ordered_comm_group.one s, one_mul := _, mul_one := _, mul_comm := _, mul_left_cancel := _, mul_right_cancel := _, le := ordered_comm_group.le s, lt := ordered_comm_group.lt s, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, mul_le_mul_left := _, le_of_mul_le_mul_left := _}
Alternative constructor for ordered commutative groups,
that avoids the field mul_lt_mul_left
.
Equations
- ordered_comm_group.mk' mul_le_mul_left = {mul := comm_group.mul _inst_1, mul_assoc := _, one := comm_group.one _inst_1, one_mul := _, mul_one := _, inv := comm_group.inv _inst_1, mul_left_inv := _, mul_comm := _, le := partial_order.le _inst_2, lt := partial_order.lt _inst_2, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, mul_le_mul_left := mul_le_mul_left}
Alternative constructor for ordered commutative groups,
that avoids the field mul_lt_mul_left
.
- 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
- 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
- le_total : ∀ (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 linearly ordered cancellative additive commutative monoid is an additive commutative monoid with a decidable linear order in which addition is cancellative and strictly 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
- 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
- le_total : ∀ (a b : α), a ≤ b ∨ b ≤ a
- decidable_le : decidable_rel has_le.le
- decidable_eq : decidable_eq α
- decidable_lt : decidable_rel has_lt.lt
- add_le_add_left : ∀ (a b : α), a ≤ b → ∀ (c_1 : α), c_1 + a ≤ c_1 + b
A decidable linearly ordered additive commutative group is an additive commutative group with a decidable linear order in which addition is strictly monotone.
Equations
- decidable_linear_ordered_comm_group.to_ordered_add_comm_group α = {add := decidable_linear_ordered_add_comm_group.add s, add_assoc := _, zero := decidable_linear_ordered_add_comm_group.zero s, zero_add := _, add_zero := _, neg := decidable_linear_ordered_add_comm_group.neg s, add_left_neg := _, add_comm := _, le := decidable_linear_ordered_add_comm_group.le s, lt := decidable_linear_ordered_add_comm_group.lt s, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, add_le_add_left := _}
Equations
- decidable_linear_ordered_add_comm_group.to_decidable_linear_ordered_cancel_add_comm_monoid = {add := decidable_linear_ordered_add_comm_group.add _inst_1, add_assoc := _, zero := decidable_linear_ordered_add_comm_group.zero _inst_1, zero_add := _, add_zero := _, add_comm := _, add_left_cancel := _, add_right_cancel := _, le := decidable_linear_ordered_add_comm_group.le _inst_1, lt := decidable_linear_ordered_add_comm_group.lt _inst_1, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, add_le_add_left := _, le_of_add_le_add_left := _, le_total := _, decidable_le := decidable_linear_ordered_add_comm_group.decidable_le _inst_1, decidable_eq := decidable_linear_ordered_add_comm_group.decidable_eq _inst_1, decidable_lt := decidable_linear_ordered_add_comm_group.decidable_lt _inst_1}
- 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
- nonneg : α → Prop
- pos : α → Prop
- pos_iff : (∀ (a : α), nonneg_add_comm_group.pos a ↔ nonneg_add_comm_group.nonneg a ∧ ¬nonneg_add_comm_group.nonneg (-a)) . "order_laws_tac"
- zero_nonneg : nonneg_add_comm_group.nonneg 0
- add_nonneg : ∀ {a b : α}, nonneg_add_comm_group.nonneg a → nonneg_add_comm_group.nonneg b → nonneg_add_comm_group.nonneg (a + b)
- nonneg_antisymm : ∀ {a : α}, nonneg_add_comm_group.nonneg a → nonneg_add_comm_group.nonneg (-a) → a = 0
This is not so much a new structure as a construction mechanism for ordered groups, by specifying only the "positive cone" of the group.
Equations
- nonneg_add_comm_group.to_ordered_add_comm_group = {add := nonneg_add_comm_group.add s, add_assoc := _, zero := nonneg_add_comm_group.zero s, zero_add := _, add_zero := _, neg := nonneg_add_comm_group.neg s, add_left_neg := _, add_comm := _, le := λ (a b : α), nonneg_add_comm_group.nonneg (b - a), lt := λ (a b : α), nonneg_add_comm_group.pos (b - a), le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, add_le_add_left := _}
A nonneg_add_comm_group
is a decidable_linear_ordered_add_comm_group
if nonneg
is total and decidable.
Equations
- nonneg_add_comm_group.to_decidable_linear_ordered_add_comm_group nonneg_total = {add := ordered_add_comm_group.add nonneg_add_comm_group.to_ordered_add_comm_group, add_assoc := _, zero := ordered_add_comm_group.zero nonneg_add_comm_group.to_ordered_add_comm_group, zero_add := _, add_zero := _, neg := ordered_add_comm_group.neg nonneg_add_comm_group.to_ordered_add_comm_group, add_left_neg := _, add_comm := _, le := has_le.le (preorder.to_has_le α), lt := has_lt.lt (preorder.to_has_lt α), le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, le_total := _, decidable_le := λ (a b : α), _inst_1 (b - a), decidable_eq := decidable_linear_order.decidable_eq._default has_le.le has_lt.lt nonneg_add_comm_group.to_decidable_linear_ordered_add_comm_group._proof_11 nonneg_add_comm_group.to_decidable_linear_ordered_add_comm_group._proof_12 nonneg_add_comm_group.to_decidable_linear_ordered_add_comm_group._proof_13 nonneg_add_comm_group.to_decidable_linear_ordered_add_comm_group._proof_14 _ (λ (a b : α), _inst_1 (b - a)), decidable_lt := λ (a b : α), decidable_lt_of_decidable_le a b, add_le_add_left := _}
Equations
- order_dual.ordered_add_comm_monoid = {add := add_comm_monoid.add (show add_comm_monoid α, from ordered_add_comm_monoid.to_add_comm_monoid α), add_assoc := _, zero := add_comm_monoid.zero (show add_comm_monoid α, from ordered_add_comm_monoid.to_add_comm_monoid α), zero_add := _, add_zero := _, add_comm := _, le := partial_order.le (order_dual.partial_order α), lt := partial_order.lt (order_dual.partial_order α), le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, add_le_add_left := _, lt_of_add_lt_add_left := _}
Equations
- order_dual.ordered_cancel_add_comm_monoid = {add := ordered_add_comm_monoid.add order_dual.ordered_add_comm_monoid, add_assoc := _, zero := ordered_add_comm_monoid.zero order_dual.ordered_add_comm_monoid, zero_add := _, add_zero := _, add_comm := _, add_left_cancel := _, add_right_cancel := _, le := ordered_add_comm_monoid.le order_dual.ordered_add_comm_monoid, lt := ordered_add_comm_monoid.lt order_dual.ordered_add_comm_monoid, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, add_le_add_left := _, le_of_add_le_add_left := _}
Equations
- order_dual.ordered_add_comm_group = {add := ordered_add_comm_monoid.add order_dual.ordered_add_comm_monoid, add_assoc := _, zero := ordered_add_comm_monoid.zero order_dual.ordered_add_comm_monoid, zero_add := _, add_zero := _, neg := add_comm_group.neg (show add_comm_group α, from ordered_add_comm_group.to_add_comm_group α), add_left_neg := _, add_comm := _, le := ordered_add_comm_monoid.le order_dual.ordered_add_comm_monoid, lt := ordered_add_comm_monoid.lt order_dual.ordered_add_comm_monoid, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, add_le_add_left := _}
Equations
- order_dual.decidable_linear_ordered_add_comm_group = {add := add_comm_group.add (show add_comm_group α, from decidable_linear_ordered_add_comm_group.to_add_comm_group α), add_assoc := _, zero := add_comm_group.zero (show add_comm_group α, from decidable_linear_ordered_add_comm_group.to_add_comm_group α), zero_add := _, add_zero := _, neg := add_comm_group.neg (show add_comm_group α, from decidable_linear_ordered_add_comm_group.to_add_comm_group α), add_left_neg := _, add_comm := _, le := decidable_linear_order.le (order_dual.decidable_linear_order α), lt := decidable_linear_order.lt (order_dual.decidable_linear_order α), le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, le_total := _, decidable_le := decidable_linear_order.decidable_le (order_dual.decidable_linear_order α), decidable_eq := decidable_linear_order.decidable_eq (order_dual.decidable_linear_order α), decidable_lt := decidable_linear_order.decidable_lt (order_dual.decidable_linear_order α), add_le_add_left := _}
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
- multiplicative.ordered_comm_monoid = {mul := comm_monoid.mul multiplicative.comm_monoid, mul_assoc := _, one := comm_monoid.one multiplicative.comm_monoid, one_mul := _, mul_one := _, mul_comm := _, le := partial_order.le multiplicative.partial_order, lt := partial_order.lt multiplicative.partial_order, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, mul_le_mul_left := _, lt_of_mul_lt_mul_left := _}
Equations
- additive.ordered_add_comm_monoid = {add := add_comm_monoid.add additive.add_comm_monoid, add_assoc := _, zero := add_comm_monoid.zero additive.add_comm_monoid, zero_add := _, add_zero := _, add_comm := _, le := partial_order.le additive.partial_order, lt := partial_order.lt additive.partial_order, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, add_le_add_left := _, lt_of_add_lt_add_left := _}
Equations
- multiplicative.ordered_cancel_comm_monoid = {mul := right_cancel_semigroup.mul multiplicative.right_cancel_semigroup, mul_assoc := _, one := ordered_comm_monoid.one multiplicative.ordered_comm_monoid, one_mul := _, mul_one := _, mul_comm := _, mul_left_cancel := _, mul_right_cancel := _, le := ordered_comm_monoid.le multiplicative.ordered_comm_monoid, lt := ordered_comm_monoid.lt multiplicative.ordered_comm_monoid, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, mul_le_mul_left := _, le_of_mul_le_mul_left := _}
Equations
- additive.ordered_cancel_add_comm_monoid = {add := add_right_cancel_semigroup.add additive.add_right_cancel_semigroup, add_assoc := _, zero := ordered_add_comm_monoid.zero additive.ordered_add_comm_monoid, zero_add := _, add_zero := _, add_comm := _, add_left_cancel := _, add_right_cancel := _, le := ordered_add_comm_monoid.le additive.ordered_add_comm_monoid, lt := ordered_add_comm_monoid.lt additive.ordered_add_comm_monoid, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, add_le_add_left := _, le_of_add_le_add_left := _}
Equations
- multiplicative.ordered_comm_group = {mul := comm_group.mul multiplicative.comm_group, mul_assoc := _, one := comm_group.one multiplicative.comm_group, one_mul := _, mul_one := _, inv := comm_group.inv multiplicative.comm_group, mul_left_inv := _, mul_comm := _, le := ordered_comm_monoid.le multiplicative.ordered_comm_monoid, lt := ordered_comm_monoid.lt multiplicative.ordered_comm_monoid, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, mul_le_mul_left := _}
Equations
- additive.ordered_add_comm_group = {add := add_comm_group.add additive.add_comm_group, add_assoc := _, zero := add_comm_group.zero additive.add_comm_group, zero_add := _, add_zero := _, neg := add_comm_group.neg additive.add_comm_group, add_left_neg := _, add_comm := _, le := ordered_add_comm_monoid.le additive.ordered_add_comm_monoid, lt := ordered_add_comm_monoid.lt additive.ordered_add_comm_monoid, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, add_le_add_left := _}