Ordered groups #
This file develops the basics of ordered 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.
- add : α → α → α
- add_assoc : ∀ (a b c : α), a + b + c = a + (b + c)
- zero : α
- zero_add : ∀ (a : α), 0 + a = a
- add_zero : ∀ (a : α), a + 0 = a
- nsmul : ℕ → α → α
- nsmul_zero' : (∀ (x : α), ordered_add_comm_group.nsmul 0 x = 0) . "try_refl_tac"
- nsmul_succ' : (∀ (n : ℕ) (x : α), ordered_add_comm_group.nsmul n.succ x = x + ordered_add_comm_group.nsmul n x) . "try_refl_tac"
- neg : α → α
- sub : α → α → α
- sub_eq_add_neg : (∀ (a b : α), a - b = a + -b) . "try_refl_tac"
- zsmul : ℤ → α → α
- zsmul_zero' : (∀ (a : α), ordered_add_comm_group.zsmul 0 a = 0) . "try_refl_tac"
- zsmul_succ' : (∀ (n : ℕ) (a : α), ordered_add_comm_group.zsmul (int.of_nat n.succ) a = a + ordered_add_comm_group.zsmul (int.of_nat n) a) . "try_refl_tac"
- zsmul_neg' : (∀ (n : ℕ) (a : α), ordered_add_comm_group.zsmul -[1+ n] a = -ordered_add_comm_group.zsmul ↑(n.succ) a) . "try_refl_tac"
- 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 : α), a ≤ b → b ≤ c → a ≤ c
- 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 : α), c + a ≤ c + b
An ordered additive commutative group is an additive commutative group with a partial order in which addition is strictly monotone.
Instances
- add_subgroup_class.to_ordered_add_comm_group
- linear_ordered_add_comm_group.to_ordered_add_comm_group
- ordered_ring.to_ordered_add_comm_group
- star_ordered_ring.ordered_add_comm_group
- add_units.ordered_add_comm_group
- order_dual.ordered_add_comm_group
- prod.ordered_add_comm_group
- additive.ordered_add_comm_group
- rat.ordered_add_comm_group
- add_subgroup.to_ordered_add_comm_group
- submodule.to_ordered_add_comm_group
- pilex.ordered_add_comm_group
- real.ordered_add_comm_group
- mul : α → α → α
- mul_assoc : ∀ (a b c : α), (a * b) * c = a * b * c
- one : α
- one_mul : ∀ (a : α), 1 * a = a
- mul_one : ∀ (a : α), a * 1 = a
- npow : ℕ → α → α
- npow_zero' : (∀ (x : α), ordered_comm_group.npow 0 x = 1) . "try_refl_tac"
- npow_succ' : (∀ (n : ℕ) (x : α), ordered_comm_group.npow n.succ x = x * ordered_comm_group.npow n x) . "try_refl_tac"
- inv : α → α
- div : α → α → α
- div_eq_mul_inv : (∀ (a b : α), a / b = a * b⁻¹) . "try_refl_tac"
- zpow : ℤ → α → α
- zpow_zero' : (∀ (a : α), ordered_comm_group.zpow 0 a = 1) . "try_refl_tac"
- zpow_succ' : (∀ (n : ℕ) (a : α), ordered_comm_group.zpow (int.of_nat n.succ) a = a * ordered_comm_group.zpow (int.of_nat n) a) . "try_refl_tac"
- zpow_neg' : (∀ (n : ℕ) (a : α), ordered_comm_group.zpow -[1+ n] a = (ordered_comm_group.zpow ↑(n.succ) a)⁻¹) . "try_refl_tac"
- 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 : α), a ≤ b → b ≤ c → a ≤ c
- 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 : α), c * a ≤ c * 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 additive monoid form an ordered commutative additive group.
Equations
- add_units.ordered_add_comm_group = {add := add_comm_group.add add_units.add_comm_group, add_assoc := _, zero := add_comm_group.zero add_units.add_comm_group, zero_add := _, add_zero := _, nsmul := add_comm_group.nsmul add_units.add_comm_group, nsmul_zero' := _, nsmul_succ' := _, neg := add_comm_group.neg add_units.add_comm_group, sub := add_comm_group.sub add_units.add_comm_group, sub_eq_add_neg := _, zsmul := add_comm_group.zsmul add_units.add_comm_group, zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, add_left_neg := _, add_comm := _, le := partial_order.le add_units.partial_order, lt := partial_order.lt add_units.partial_order, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, add_le_add_left := _}
The units of an ordered commutative monoid form an ordered commutative group.
Equations
- units.ordered_comm_group = {mul := comm_group.mul units.comm_group, mul_assoc := _, one := comm_group.one units.comm_group, one_mul := _, mul_one := _, npow := comm_group.npow units.comm_group, npow_zero' := _, npow_succ' := _, inv := comm_group.inv units.comm_group, div := comm_group.div units.comm_group, div_eq_mul_inv := _, zpow := comm_group.zpow units.comm_group, zpow_zero' := _, zpow_succ' := _, zpow_neg' := _, 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_add_comm_group.to_ordered_cancel_add_comm_monoid α = {add := ordered_add_comm_group.add s, add_assoc := _, add_left_cancel := _, zero := ordered_add_comm_group.zero s, zero_add := _, add_zero := _, nsmul := ordered_add_comm_group.nsmul s, nsmul_zero' := _, nsmul_succ' := _, add_comm := _, le := ordered_add_comm_group.le s, lt := ordered_add_comm_group.lt s, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, add_le_add_left := _, le_of_add_le_add_left := _}
Equations
- ordered_comm_group.to_ordered_cancel_comm_monoid α = {mul := ordered_comm_group.mul s, mul_assoc := _, mul_left_cancel := _, one := ordered_comm_group.one s, one_mul := _, mul_one := _, npow := ordered_comm_group.npow s, npow_zero' := _, npow_succ' := _, mul_comm := _, 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 := _}
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
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 := _, nsmul := ordered_add_comm_monoid.nsmul order_dual.ordered_add_comm_monoid, nsmul_zero' := _, nsmul_succ' := _, neg := add_group.neg order_dual.add_group, sub := add_group.sub order_dual.add_group, sub_eq_add_neg := _, zsmul := add_group.zsmul order_dual.add_group, zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, 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.ordered_comm_group = {mul := ordered_comm_monoid.mul order_dual.ordered_comm_monoid, mul_assoc := _, one := ordered_comm_monoid.one order_dual.ordered_comm_monoid, one_mul := _, mul_one := _, npow := ordered_comm_monoid.npow order_dual.ordered_comm_monoid, npow_zero' := _, npow_succ' := _, inv := group.inv order_dual.group, div := group.div order_dual.group, div_eq_mul_inv := _, zpow := group.zpow order_dual.group, zpow_zero' := _, zpow_succ' := _, zpow_neg' := _, mul_left_inv := _, mul_comm := _, le := ordered_comm_monoid.le order_dual.ordered_comm_monoid, lt := ordered_comm_monoid.lt order_dual.ordered_comm_monoid, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, mul_le_mul_left := _}
Uses left
co(ntra)variant.
Uses left
co(ntra)variant.
Uses left
co(ntra)variant.
Uses left
co(ntra)variant.
Uses right
co(ntra)variant.
Uses right
co(ntra)variant.
Uses right
co(ntra)variant.
Uses right
co(ntra)variant.
Uses right
co(ntra)variant.
Uses right
co(ntra)variant.
Alias of neg_le_neg_iff
.
x ↦ x⁻¹
as an order-reversing equivalence.
Equations
- order_iso.inv α = {to_equiv := equiv.trans (equiv.inv α) order_dual.to_dual, map_rel_iff' := _}
x ↦ -x
as an order-reversing equivalence.
Equations
- order_iso.neg α = {to_equiv := equiv.trans (equiv.neg α) order_dual.to_dual, map_rel_iff' := _}
Alias of inv_le'
.
Alias of sub_le_self_iff
.
Alias of lt_inv'
.
Alias of inv_lt'
.
Alias of sub_lt_self_iff
.
Alias of left.neg_le_self
.
Alias of left.neg_lt_self
.
Alias of le_inv'
.
Alias of left.inv_le_one_iff
.
Alias of left.one_le_inv_iff
.
Alias of inv_lt_inv_iff
.
Alias of left.inv_lt_one_iff
.
Alias of left.inv_lt_one_iff
.
Alias of left.neg_neg_iff
.
Alias of left.inv_lt_one_iff
.
Alias of left.neg_neg_iff
.
Alias of left.one_lt_inv_iff
.
Alias of left.one_lt_inv_iff
.
Alias of le_inv_mul_iff_mul_le
.
Alias of le_inv_mul_iff_mul_le
.
Alias of inv_mul_le_iff_le_mul
.
Alias of lt_inv_mul_iff_mul_lt
.
Alias of lt_inv_mul_iff_mul_lt
.
Alias of inv_mul_lt_iff_lt_mul
.
Alias of inv_mul_lt_iff_lt_mul
.
Alias of lt_mul_of_inv_mul_lt
.
Alias of lt_add_of_neg_add_lt
.
Alias of left.inv_le_one_iff
.
Alias of left.neg_nonpos_iff
.
Alias of left.one_le_inv_iff
.
Alias of left.nonneg_neg_iff
.
Alias of left.one_lt_inv_iff
.
Alias of left.neg_pos_iff
.
Alias of mul_lt_mul_left'
.
Alias of add_lt_add_left
.
Alias of le_of_mul_le_mul_left'
.
Alias of le_of_add_le_add_left
.
Alias of lt_of_mul_lt_mul_left'
.
Alias of lt_of_add_lt_add_left
.
Pullback an ordered_add_comm_group
under an injective map.
Equations
- function.injective.ordered_add_comm_group f hf one mul inv div npow zpow = {add := ordered_add_comm_monoid.add (function.injective.ordered_add_comm_monoid f hf one mul npow), add_assoc := _, zero := ordered_add_comm_monoid.zero (function.injective.ordered_add_comm_monoid f hf one mul npow), zero_add := _, add_zero := _, nsmul := ordered_add_comm_monoid.nsmul (function.injective.ordered_add_comm_monoid f hf one mul npow), nsmul_zero' := _, nsmul_succ' := _, neg := add_comm_group.neg (function.injective.add_comm_group f hf one mul inv div npow zpow), sub := add_comm_group.sub (function.injective.add_comm_group f hf one mul inv div npow zpow), sub_eq_add_neg := _, zsmul := add_comm_group.zsmul (function.injective.add_comm_group f hf one mul inv div npow zpow), zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, add_left_neg := _, add_comm := _, le := partial_order.le (partial_order.lift f hf), lt := partial_order.lt (partial_order.lift f hf), le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, add_le_add_left := _}
Pullback an ordered_comm_group
under an injective map.
See note [reducible non-instances].
Equations
- function.injective.ordered_comm_group f hf one mul inv div npow zpow = {mul := ordered_comm_monoid.mul (function.injective.ordered_comm_monoid f hf one mul npow), mul_assoc := _, one := ordered_comm_monoid.one (function.injective.ordered_comm_monoid f hf one mul npow), one_mul := _, mul_one := _, npow := ordered_comm_monoid.npow (function.injective.ordered_comm_monoid f hf one mul npow), npow_zero' := _, npow_succ' := _, inv := comm_group.inv (function.injective.comm_group f hf one mul inv div npow zpow), div := comm_group.div (function.injective.comm_group f hf one mul inv div npow zpow), div_eq_mul_inv := _, zpow := comm_group.zpow (function.injective.comm_group f hf one mul inv div npow zpow), zpow_zero' := _, zpow_succ' := _, zpow_neg' := _, mul_left_inv := _, mul_comm := _, le := partial_order.le (partial_order.lift f hf), lt := partial_order.lt (partial_order.lift f hf), le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, mul_le_mul_left := _}
Alias of sub_nonneg
.
Alias of sub_nonneg
.
Alias of sub_nonpos
.
Alias of sub_nonpos
.
Alias of le_sub_iff_add_le
.
Alias of le_sub_iff_add_le
.
Equations
equiv.add_right
as an order_iso
. See also order_embedding.add_right
.
Equations
- order_iso.add_right a = {to_equiv := equiv.add_right a, map_rel_iff' := _}
equiv.mul_right
as an order_iso
. See also order_embedding.mul_right
.
Equations
- order_iso.mul_right a = {to_equiv := equiv.mul_right a, map_rel_iff' := _}
equiv.add_left
as an order_iso
. See also order_embedding.add_left
.
Equations
- order_iso.add_left a = {to_equiv := equiv.add_left a, map_rel_iff' := _}
equiv.mul_left
as an order_iso
. See also order_embedding.mul_left
.
Equations
- order_iso.mul_left a = {to_equiv := equiv.mul_left a, map_rel_iff' := _}
Alias of le_sub_iff_add_le'
.
Alias of le_sub_iff_add_le'
.
Alias of sub_le_iff_le_add'
.
Alias of sub_le_iff_le_add'
.
Alias of sub_pos
.
Alias of sub_pos
.
Alias of sub_neg
.
Alias of sub_neg
.
Alias of sub_neg
.
Alias of lt_sub_iff_add_lt
.
Alias of lt_sub_iff_add_lt
.
Alias of sub_lt_iff_lt_add
.
Alias of sub_lt_iff_lt_add
.
Alias of lt_sub_iff_add_lt'
.
Alias of lt_sub_iff_add_lt'
.
Alias of sub_lt_iff_lt_add'
.
Alias of sub_lt_iff_lt_add'
.
Alias of max_zero_sub_max_neg_zero_eq_self
.
Linearly ordered commutative groups #
- add : α → α → α
- add_assoc : ∀ (a b c : α), a + b + c = a + (b + c)
- zero : α
- zero_add : ∀ (a : α), 0 + a = a
- add_zero : ∀ (a : α), a + 0 = a
- nsmul : ℕ → α → α
- nsmul_zero' : (∀ (x : α), linear_ordered_add_comm_group.nsmul 0 x = 0) . "try_refl_tac"
- nsmul_succ' : (∀ (n : ℕ) (x : α), linear_ordered_add_comm_group.nsmul n.succ x = x + linear_ordered_add_comm_group.nsmul n x) . "try_refl_tac"
- neg : α → α
- sub : α → α → α
- sub_eq_add_neg : (∀ (a b : α), a - b = a + -b) . "try_refl_tac"
- zsmul : ℤ → α → α
- zsmul_zero' : (∀ (a : α), linear_ordered_add_comm_group.zsmul 0 a = 0) . "try_refl_tac"
- zsmul_succ' : (∀ (n : ℕ) (a : α), linear_ordered_add_comm_group.zsmul (int.of_nat n.succ) a = a + linear_ordered_add_comm_group.zsmul (int.of_nat n) a) . "try_refl_tac"
- zsmul_neg' : (∀ (n : ℕ) (a : α), linear_ordered_add_comm_group.zsmul -[1+ n] a = -linear_ordered_add_comm_group.zsmul ↑(n.succ) a) . "try_refl_tac"
- 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 : α), a ≤ b → b ≤ c → a ≤ c
- 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 : α), c + a ≤ c + 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
- max : α → α → α
- max_def : linear_ordered_add_comm_group.max = max_default . "reflexivity"
- min : α → α → α
- min_def : linear_ordered_add_comm_group.min = min_default . "reflexivity"
A linearly ordered additive commutative group is an additive commutative group with a linear order in which addition is monotone.
Instances
- add_subgroup_class.to_linear_ordered_add_comm_group
- linear_ordered_ring.to_linear_ordered_add_comm_group
- order_dual.linear_ordered_add_comm_group
- additive.linear_ordered_add_comm_group
- int.linear_ordered_add_comm_group
- rat.linear_ordered_add_comm_group
- add_subgroup.to_linear_ordered_add_comm_group
- submodule.to_linear_ordered_add_comm_group
- real.linear_ordered_add_comm_group
- le : α → α → Prop
- lt : α → α → Prop
- le_refl : ∀ (a : α), a ≤ a
- le_trans : ∀ (a b c : α), a ≤ b → b ≤ c → a ≤ c
- 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
- max : α → α → α
- max_def : linear_ordered_add_comm_group_with_top.max = max_default . "reflexivity"
- min : α → α → α
- min_def : linear_ordered_add_comm_group_with_top.min = min_default . "reflexivity"
- add : α → α → α
- add_assoc : ∀ (a b c : α), a + b + c = a + (b + c)
- zero : α
- zero_add : ∀ (a : α), 0 + a = a
- add_zero : ∀ (a : α), a + 0 = a
- nsmul : ℕ → α → α
- nsmul_zero' : (∀ (x : α), linear_ordered_add_comm_group_with_top.nsmul 0 x = 0) . "try_refl_tac"
- nsmul_succ' : (∀ (n : ℕ) (x : α), linear_ordered_add_comm_group_with_top.nsmul n.succ x = x + linear_ordered_add_comm_group_with_top.nsmul n x) . "try_refl_tac"
- add_comm : ∀ (a b : α), a + b = b + a
- add_le_add_left : ∀ (a b : α), a ≤ b → ∀ (c : α), c + a ≤ c + b
- top : α
- le_top : ∀ (x : α), x ≤ ⊤
- top_add' : ∀ (x : α), ⊤ + x = ⊤
- neg : α → α
- sub : α → α → α
- sub_eq_add_neg : (∀ (a b : α), a - b = a + -b) . "try_refl_tac"
- zsmul : ℤ → α → α
- zsmul_zero' : (∀ (a : α), linear_ordered_add_comm_group_with_top.zsmul 0 a = 0) . "try_refl_tac"
- zsmul_succ' : (∀ (n : ℕ) (a : α), linear_ordered_add_comm_group_with_top.zsmul (int.of_nat n.succ) a = a + linear_ordered_add_comm_group_with_top.zsmul (int.of_nat n) a) . "try_refl_tac"
- zsmul_neg' : (∀ (n : ℕ) (a : α), linear_ordered_add_comm_group_with_top.zsmul -[1+ n] a = -linear_ordered_add_comm_group_with_top.zsmul ↑(n.succ) a) . "try_refl_tac"
- exists_pair_ne : ∃ (x y : α), x ≠ y
- neg_top : -⊤ = ⊤
- add_neg_cancel : ∀ (a : α), a ≠ ⊤ → a + -a = 0
A linearly ordered commutative monoid with an additively absorbing ⊤
element.
Instances should include number systems with an infinite element adjoined.`
- mul : α → α → α
- mul_assoc : ∀ (a b c : α), (a * b) * c = a * b * c
- one : α
- one_mul : ∀ (a : α), 1 * a = a
- mul_one : ∀ (a : α), a * 1 = a
- npow : ℕ → α → α
- npow_zero' : (∀ (x : α), linear_ordered_comm_group.npow 0 x = 1) . "try_refl_tac"
- npow_succ' : (∀ (n : ℕ) (x : α), linear_ordered_comm_group.npow n.succ x = x * linear_ordered_comm_group.npow n x) . "try_refl_tac"
- inv : α → α
- div : α → α → α
- div_eq_mul_inv : (∀ (a b : α), a / b = a * b⁻¹) . "try_refl_tac"
- zpow : ℤ → α → α
- zpow_zero' : (∀ (a : α), linear_ordered_comm_group.zpow 0 a = 1) . "try_refl_tac"
- zpow_succ' : (∀ (n : ℕ) (a : α), linear_ordered_comm_group.zpow (int.of_nat n.succ) a = a * linear_ordered_comm_group.zpow (int.of_nat n) a) . "try_refl_tac"
- zpow_neg' : (∀ (n : ℕ) (a : α), linear_ordered_comm_group.zpow -[1+ n] a = (linear_ordered_comm_group.zpow ↑(n.succ) a)⁻¹) . "try_refl_tac"
- 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 : α), a ≤ b → b ≤ c → a ≤ c
- 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 : α), c * a ≤ c * 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
- max : α → α → α
- max_def : linear_ordered_comm_group.max = max_default . "reflexivity"
- min : α → α → α
- min_def : linear_ordered_comm_group.min = min_default . "reflexivity"
A linearly ordered commutative group is a commutative group with a linear order in which multiplication is monotone.
Equations
- order_dual.linear_ordered_comm_group = {mul := ordered_comm_group.mul order_dual.ordered_comm_group, mul_assoc := _, one := ordered_comm_group.one order_dual.ordered_comm_group, one_mul := _, mul_one := _, npow := ordered_comm_group.npow order_dual.ordered_comm_group, npow_zero' := _, npow_succ' := _, inv := ordered_comm_group.inv order_dual.ordered_comm_group, div := ordered_comm_group.div order_dual.ordered_comm_group, div_eq_mul_inv := _, zpow := ordered_comm_group.zpow order_dual.ordered_comm_group, zpow_zero' := _, zpow_succ' := _, zpow_neg' := _, mul_left_inv := _, mul_comm := _, le := ordered_comm_group.le order_dual.ordered_comm_group, lt := ordered_comm_group.lt order_dual.ordered_comm_group, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, mul_le_mul_left := _, le_total := _, decidable_le := linear_order.decidable_le (order_dual.linear_order α), decidable_eq := linear_order.decidable_eq (order_dual.linear_order α), decidable_lt := linear_order.decidable_lt (order_dual.linear_order α), max := max (order_dual.linear_order α), max_def := _, min := min (order_dual.linear_order α), min_def := _}
Equations
- order_dual.linear_ordered_add_comm_group = {add := ordered_add_comm_group.add order_dual.ordered_add_comm_group, add_assoc := _, zero := ordered_add_comm_group.zero order_dual.ordered_add_comm_group, zero_add := _, add_zero := _, nsmul := ordered_add_comm_group.nsmul order_dual.ordered_add_comm_group, nsmul_zero' := _, nsmul_succ' := _, neg := ordered_add_comm_group.neg order_dual.ordered_add_comm_group, sub := ordered_add_comm_group.sub order_dual.ordered_add_comm_group, sub_eq_add_neg := _, zsmul := ordered_add_comm_group.zsmul order_dual.ordered_add_comm_group, zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, add_left_neg := _, add_comm := _, le := ordered_add_comm_group.le order_dual.ordered_add_comm_group, lt := ordered_add_comm_group.lt order_dual.ordered_add_comm_group, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, add_le_add_left := _, le_total := _, decidable_le := linear_order.decidable_le (order_dual.linear_order α), decidable_eq := linear_order.decidable_eq (order_dual.linear_order α), decidable_lt := linear_order.decidable_lt (order_dual.linear_order α), max := max (order_dual.linear_order α), max_def := _, min := min (order_dual.linear_order α), min_def := _}
Equations
- linear_ordered_add_comm_group.to_linear_ordered_cancel_add_comm_monoid = {add := linear_ordered_add_comm_group.add _inst_1, add_assoc := _, add_left_cancel := _, zero := linear_ordered_add_comm_group.zero _inst_1, zero_add := _, add_zero := _, nsmul := linear_ordered_add_comm_group.nsmul _inst_1, nsmul_zero' := _, nsmul_succ' := _, add_comm := _, le := linear_ordered_add_comm_group.le _inst_1, lt := 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 := linear_ordered_add_comm_group.decidable_le _inst_1, decidable_eq := linear_ordered_add_comm_group.decidable_eq _inst_1, decidable_lt := linear_ordered_add_comm_group.decidable_lt _inst_1, max := linear_ordered_add_comm_group.max _inst_1, max_def := _, min := linear_ordered_add_comm_group.min _inst_1, min_def := _}
Equations
- linear_ordered_comm_group.to_linear_ordered_cancel_comm_monoid = {mul := linear_ordered_comm_group.mul _inst_1, mul_assoc := _, mul_left_cancel := _, one := linear_ordered_comm_group.one _inst_1, one_mul := _, mul_one := _, npow := linear_ordered_comm_group.npow _inst_1, npow_zero' := _, npow_succ' := _, mul_comm := _, le := linear_ordered_comm_group.le _inst_1, lt := linear_ordered_comm_group.lt _inst_1, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, mul_le_mul_left := _, le_of_mul_le_mul_left := _, le_total := _, decidable_le := linear_ordered_comm_group.decidable_le _inst_1, decidable_eq := linear_ordered_comm_group.decidable_eq _inst_1, decidable_lt := linear_ordered_comm_group.decidable_lt _inst_1, max := linear_ordered_comm_group.max _inst_1, max_def := _, min := linear_ordered_comm_group.min _inst_1, min_def := _}
Pullback a linear_ordered_comm_group
under an injective map.
See note [reducible non-instances].
Equations
- function.injective.linear_ordered_comm_group f hf one mul inv div npow zpow = {mul := ordered_comm_group.mul (function.injective.ordered_comm_group f hf one mul inv div npow zpow), mul_assoc := _, one := ordered_comm_group.one (function.injective.ordered_comm_group f hf one mul inv div npow zpow), one_mul := _, mul_one := _, npow := ordered_comm_group.npow (function.injective.ordered_comm_group f hf one mul inv div npow zpow), npow_zero' := _, npow_succ' := _, inv := ordered_comm_group.inv (function.injective.ordered_comm_group f hf one mul inv div npow zpow), div := ordered_comm_group.div (function.injective.ordered_comm_group f hf one mul inv div npow zpow), div_eq_mul_inv := _, zpow := ordered_comm_group.zpow (function.injective.ordered_comm_group f hf one mul inv div npow zpow), zpow_zero' := _, zpow_succ' := _, zpow_neg' := _, mul_left_inv := _, mul_comm := _, le := linear_order.le (linear_order.lift f hf), lt := linear_order.lt (linear_order.lift f hf), le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, mul_le_mul_left := _, le_total := _, decidable_le := linear_order.decidable_le (linear_order.lift f hf), decidable_eq := linear_order.decidable_eq (linear_order.lift f hf), decidable_lt := linear_order.decidable_lt (linear_order.lift f hf), max := max (linear_order.lift f hf), max_def := _, min := min (linear_order.lift f hf), min_def := _}
Pullback a linear_ordered_add_comm_group
under an injective map.
Equations
- function.injective.linear_ordered_add_comm_group f hf one mul inv div npow zpow = {add := ordered_add_comm_group.add (function.injective.ordered_add_comm_group f hf one mul inv div npow zpow), add_assoc := _, zero := ordered_add_comm_group.zero (function.injective.ordered_add_comm_group f hf one mul inv div npow zpow), zero_add := _, add_zero := _, nsmul := ordered_add_comm_group.nsmul (function.injective.ordered_add_comm_group f hf one mul inv div npow zpow), nsmul_zero' := _, nsmul_succ' := _, neg := ordered_add_comm_group.neg (function.injective.ordered_add_comm_group f hf one mul inv div npow zpow), sub := ordered_add_comm_group.sub (function.injective.ordered_add_comm_group f hf one mul inv div npow zpow), sub_eq_add_neg := _, zsmul := ordered_add_comm_group.zsmul (function.injective.ordered_add_comm_group f hf one mul inv div npow zpow), zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, add_left_neg := _, add_comm := _, le := linear_order.le (linear_order.lift f hf), lt := linear_order.lt (linear_order.lift f hf), le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, add_le_add_left := _, le_total := _, decidable_le := linear_order.decidable_le (linear_order.lift f hf), decidable_eq := linear_order.decidable_eq (linear_order.lift f hf), decidable_lt := linear_order.decidable_lt (linear_order.lift f hf), max := max (linear_order.lift f hf), max_def := _, min := min (linear_order.lift f hf), min_def := _}
Equations
- with_top.linear_ordered_add_comm_group_with_top = {le := linear_ordered_add_comm_monoid_with_top.le with_top.linear_ordered_add_comm_monoid_with_top, lt := linear_ordered_add_comm_monoid_with_top.lt with_top.linear_ordered_add_comm_monoid_with_top, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, le_total := _, decidable_le := linear_ordered_add_comm_monoid_with_top.decidable_le with_top.linear_ordered_add_comm_monoid_with_top, decidable_eq := linear_ordered_add_comm_monoid_with_top.decidable_eq with_top.linear_ordered_add_comm_monoid_with_top, decidable_lt := linear_ordered_add_comm_monoid_with_top.decidable_lt with_top.linear_ordered_add_comm_monoid_with_top, max := linear_ordered_add_comm_monoid_with_top.max with_top.linear_ordered_add_comm_monoid_with_top, max_def := _, min := linear_ordered_add_comm_monoid_with_top.min with_top.linear_ordered_add_comm_monoid_with_top, min_def := _, add := linear_ordered_add_comm_monoid_with_top.add with_top.linear_ordered_add_comm_monoid_with_top, add_assoc := _, zero := linear_ordered_add_comm_monoid_with_top.zero with_top.linear_ordered_add_comm_monoid_with_top, zero_add := _, add_zero := _, nsmul := linear_ordered_add_comm_monoid_with_top.nsmul with_top.linear_ordered_add_comm_monoid_with_top, nsmul_zero' := _, nsmul_succ' := _, add_comm := _, add_le_add_left := _, top := linear_ordered_add_comm_monoid_with_top.top with_top.linear_ordered_add_comm_monoid_with_top, le_top := _, top_add' := _, neg := option.map (λ (a : α), -a), sub := sub_neg_monoid.sub._default linear_ordered_add_comm_monoid_with_top.add with_top.linear_ordered_add_comm_group_with_top._proof_17 linear_ordered_add_comm_monoid_with_top.zero with_top.linear_ordered_add_comm_group_with_top._proof_18 with_top.linear_ordered_add_comm_group_with_top._proof_19 linear_ordered_add_comm_monoid_with_top.nsmul with_top.linear_ordered_add_comm_group_with_top._proof_20 with_top.linear_ordered_add_comm_group_with_top._proof_21 (option.map (λ (a : α), -a)), sub_eq_add_neg := _, zsmul := sub_neg_monoid.zsmul._default linear_ordered_add_comm_monoid_with_top.add with_top.linear_ordered_add_comm_group_with_top._proof_23 linear_ordered_add_comm_monoid_with_top.zero with_top.linear_ordered_add_comm_group_with_top._proof_24 with_top.linear_ordered_add_comm_group_with_top._proof_25 linear_ordered_add_comm_monoid_with_top.nsmul with_top.linear_ordered_add_comm_group_with_top._proof_26 with_top.linear_ordered_add_comm_group_with_top._proof_27 (option.map (λ (a : α), -a)), zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, exists_pair_ne := _, neg_top := _, add_neg_cancel := _}
- nonneg : α → Prop
- pos : α → Prop
- pos_iff : (∀ (a : α), self.pos a ↔ self.nonneg a ∧ ¬self.nonneg (-a)) . "order_laws_tac"
- zero_nonneg : self.nonneg 0
- add_nonneg : ∀ {a b : α}, self.nonneg a → self.nonneg b → self.nonneg (a + b)
- nonneg_antisymm : ∀ {a : α}, self.nonneg a → self.nonneg (-a) → a = 0
A collection of elements in an add_comm_group
designated as "non-negative".
This is useful for constructing an ordered_add_commm_group
by choosing a positive cone in an exisiting add_comm_group
.
Forget that a total_positive_cone
is total.
- nonneg : α → Prop
- pos : α → Prop
- pos_iff : (∀ (a : α), self.pos a ↔ self.nonneg a ∧ ¬self.nonneg (-a)) . "order_laws_tac"
- zero_nonneg : self.nonneg 0
- add_nonneg : ∀ {a b : α}, self.nonneg a → self.nonneg b → self.nonneg (a + b)
- nonneg_antisymm : ∀ {a : α}, self.nonneg a → self.nonneg (-a) → a = 0
- nonneg_decidable : decidable_pred self.nonneg
- nonneg_total : ∀ (a : α), self.nonneg a ∨ self.nonneg (-a)
A positive cone in an add_comm_group
induces a linear order if
for every a
, either a
or -a
is non-negative.
Construct an ordered_add_comm_group
by
designating a positive cone in an existing add_comm_group
.
Equations
- ordered_add_comm_group.mk_of_positive_cone C = {add := add_comm_group.add _inst_1, add_assoc := _, zero := add_comm_group.zero _inst_1, zero_add := _, add_zero := _, nsmul := add_comm_group.nsmul _inst_1, nsmul_zero' := _, nsmul_succ' := _, neg := add_comm_group.neg _inst_1, sub := add_comm_group.sub _inst_1, sub_eq_add_neg := _, zsmul := add_comm_group.zsmul _inst_1, zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, add_left_neg := _, add_comm := _, le := λ (a b : α), C.nonneg (b - a), lt := λ (a b : α), C.pos (b - a), le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, add_le_add_left := _}
Construct a linear_ordered_add_comm_group
by
designating a positive cone in an existing add_comm_group
such that for every a
, either a
or -a
is non-negative.
Equations
- linear_ordered_add_comm_group.mk_of_positive_cone C = {add := ordered_add_comm_group.add (ordered_add_comm_group.mk_of_positive_cone C.to_positive_cone), add_assoc := _, zero := ordered_add_comm_group.zero (ordered_add_comm_group.mk_of_positive_cone C.to_positive_cone), zero_add := _, add_zero := _, nsmul := ordered_add_comm_group.nsmul (ordered_add_comm_group.mk_of_positive_cone C.to_positive_cone), nsmul_zero' := _, nsmul_succ' := _, neg := ordered_add_comm_group.neg (ordered_add_comm_group.mk_of_positive_cone C.to_positive_cone), sub := ordered_add_comm_group.sub (ordered_add_comm_group.mk_of_positive_cone C.to_positive_cone), sub_eq_add_neg := _, zsmul := ordered_add_comm_group.zsmul (ordered_add_comm_group.mk_of_positive_cone C.to_positive_cone), zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, add_left_neg := _, add_comm := _, le := ordered_add_comm_group.le (ordered_add_comm_group.mk_of_positive_cone C.to_positive_cone), lt := ordered_add_comm_group.lt (ordered_add_comm_group.mk_of_positive_cone C.to_positive_cone), le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, add_le_add_left := _, le_total := _, decidable_le := λ (a b : α), C.nonneg_decidable (b - a), decidable_eq := linear_order.decidable_eq._default ordered_add_comm_group.le ordered_add_comm_group.lt _ _ _ _ (λ (a b : α), C.nonneg_decidable (b - a)), decidable_lt := linear_order.decidable_lt._default ordered_add_comm_group.le ordered_add_comm_group.lt _ _ _ _ (λ (a b : α), C.nonneg_decidable (b - a)), max := linear_order.max._default ordered_add_comm_group.le ordered_add_comm_group.lt _ _ _ _ (λ (a b : α), C.nonneg_decidable (b - a)), max_def := _, min := linear_order.min._default ordered_add_comm_group.le ordered_add_comm_group.lt _ _ _ _ (λ (a b : α), C.nonneg_decidable (b - a)), min_def := _}
Equations
- prod.ordered_comm_group = {mul := comm_group.mul prod.comm_group, mul_assoc := _, one := comm_group.one prod.comm_group, one_mul := _, mul_one := _, npow := comm_group.npow prod.comm_group, npow_zero' := _, npow_succ' := _, inv := comm_group.inv prod.comm_group, div := comm_group.div prod.comm_group, div_eq_mul_inv := _, zpow := comm_group.zpow prod.comm_group, zpow_zero' := _, zpow_succ' := _, zpow_neg' := _, mul_left_inv := _, mul_comm := _, le := partial_order.le (prod.partial_order G H), lt := partial_order.lt (prod.partial_order G H), le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, mul_le_mul_left := _}
Equations
- prod.ordered_add_comm_group = {add := add_comm_group.add prod.add_comm_group, add_assoc := _, zero := add_comm_group.zero prod.add_comm_group, zero_add := _, add_zero := _, nsmul := add_comm_group.nsmul prod.add_comm_group, nsmul_zero' := _, nsmul_succ' := _, neg := add_comm_group.neg prod.add_comm_group, sub := add_comm_group.sub prod.add_comm_group, sub_eq_add_neg := _, zsmul := add_comm_group.zsmul prod.add_comm_group, zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, add_left_neg := _, add_comm := _, le := partial_order.le (prod.partial_order G H), lt := partial_order.lt (prod.partial_order G H), le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, 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 := _, npow := comm_group.npow multiplicative.comm_group, npow_zero' := _, npow_succ' := _, inv := comm_group.inv multiplicative.comm_group, div := comm_group.div multiplicative.comm_group, div_eq_mul_inv := _, zpow := comm_group.zpow multiplicative.comm_group, zpow_zero' := _, zpow_succ' := _, zpow_neg' := _, 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 := _, nsmul := add_comm_group.nsmul additive.add_comm_group, nsmul_zero' := _, nsmul_succ' := _, neg := add_comm_group.neg additive.add_comm_group, sub := add_comm_group.sub additive.add_comm_group, sub_eq_add_neg := _, zsmul := add_comm_group.zsmul additive.add_comm_group, zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, 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 := _}
Equations
- multiplicative.linear_ordered_comm_group = {mul := ordered_comm_group.mul multiplicative.ordered_comm_group, mul_assoc := _, one := ordered_comm_group.one multiplicative.ordered_comm_group, one_mul := _, mul_one := _, npow := ordered_comm_group.npow multiplicative.ordered_comm_group, npow_zero' := _, npow_succ' := _, inv := ordered_comm_group.inv multiplicative.ordered_comm_group, div := ordered_comm_group.div multiplicative.ordered_comm_group, div_eq_mul_inv := _, zpow := ordered_comm_group.zpow multiplicative.ordered_comm_group, zpow_zero' := _, zpow_succ' := _, zpow_neg' := _, mul_left_inv := _, mul_comm := _, le := linear_order.le multiplicative.linear_order, lt := linear_order.lt multiplicative.linear_order, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, mul_le_mul_left := _, le_total := _, decidable_le := linear_order.decidable_le multiplicative.linear_order, decidable_eq := linear_order.decidable_eq multiplicative.linear_order, decidable_lt := linear_order.decidable_lt multiplicative.linear_order, max := max multiplicative.linear_order, max_def := _, min := min multiplicative.linear_order, min_def := _}
Equations
- additive.linear_ordered_add_comm_group = {add := ordered_add_comm_group.add additive.ordered_add_comm_group, add_assoc := _, zero := ordered_add_comm_group.zero additive.ordered_add_comm_group, zero_add := _, add_zero := _, nsmul := ordered_add_comm_group.nsmul additive.ordered_add_comm_group, nsmul_zero' := _, nsmul_succ' := _, neg := ordered_add_comm_group.neg additive.ordered_add_comm_group, sub := ordered_add_comm_group.sub additive.ordered_add_comm_group, sub_eq_add_neg := _, zsmul := ordered_add_comm_group.zsmul additive.ordered_add_comm_group, zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, add_left_neg := _, add_comm := _, le := linear_order.le additive.linear_order, lt := linear_order.lt additive.linear_order, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, add_le_add_left := _, le_total := _, decidable_le := linear_order.decidable_le additive.linear_order, decidable_eq := linear_order.decidable_eq additive.linear_order, decidable_lt := linear_order.decidable_lt additive.linear_order, max := max additive.linear_order, max_def := _, min := min additive.linear_order, min_def := _}