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
- linear_ordered_add_comm_group.to_ordered_add_comm_group
- ordered_ring.to_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
- real.ordered_add_comm_group
- add_subgroup.to_ordered_add_comm_group
- submodule.to_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.
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
- 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.
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.inv_lt_one_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 left.inv_le_one_iff
.
Alias of left.one_le_inv_iff
.
Alias of left.one_lt_inv_iff
.
Alias of mul_lt_mul_left'
.
Alias of le_of_mul_le_mul_left'
.
Alias of lt_of_mul_lt_mul_left'
.
Pullback an ordered_add_comm_group
under an injective map.
Equations
- function.injective.ordered_add_comm_group f hf one mul inv div = {add := ordered_add_comm_monoid.add (function.injective.ordered_add_comm_monoid f hf one mul), add_assoc := _, zero := ordered_add_comm_monoid.zero (function.injective.ordered_add_comm_monoid f hf one mul), zero_add := _, add_zero := _, nsmul := ordered_add_comm_monoid.nsmul (function.injective.ordered_add_comm_monoid f hf one mul), nsmul_zero' := _, nsmul_succ' := _, neg := add_comm_group.neg (function.injective.add_comm_group f hf one mul inv div), sub := add_comm_group.sub (function.injective.add_comm_group f hf one mul inv div), sub_eq_add_neg := _, zsmul := add_comm_group.zsmul (function.injective.add_comm_group f hf one mul inv div), 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 = {mul := ordered_comm_monoid.mul (function.injective.ordered_comm_monoid f hf one mul), mul_assoc := _, one := ordered_comm_monoid.one (function.injective.ordered_comm_monoid f hf one mul), one_mul := _, mul_one := _, npow := ordered_comm_monoid.npow (function.injective.ordered_comm_monoid f hf one mul), npow_zero' := _, npow_succ' := _, inv := comm_group.inv (function.injective.comm_group f hf one mul inv div), div := comm_group.div (function.injective.comm_group f hf one mul inv div), div_eq_mul_inv := _, zpow := comm_group.zpow (function.injective.comm_group f hf one mul inv div), 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
- 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
- real.linear_ordered_add_comm_group
- add_subgroup.to_linear_ordered_add_comm_group
- submodule.to_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 = {mul := ordered_comm_group.mul (function.injective.ordered_comm_group f hf one mul inv div), mul_assoc := _, one := ordered_comm_group.one (function.injective.ordered_comm_group f hf one mul inv div), one_mul := _, mul_one := _, npow := ordered_comm_group.npow (function.injective.ordered_comm_group f hf one mul inv div), npow_zero' := _, npow_succ' := _, inv := ordered_comm_group.inv (function.injective.ordered_comm_group f hf one mul inv div), div := ordered_comm_group.div (function.injective.ordered_comm_group f hf one mul inv div), div_eq_mul_inv := _, zpow := ordered_comm_group.zpow (function.injective.ordered_comm_group f hf one mul inv div), 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 = {add := ordered_add_comm_group.add (function.injective.ordered_add_comm_group f hf one mul inv div), add_assoc := _, zero := ordered_add_comm_group.zero (function.injective.ordered_add_comm_group f hf one mul inv div), zero_add := _, add_zero := _, nsmul := ordered_add_comm_group.nsmul (function.injective.ordered_add_comm_group f hf one mul inv div), nsmul_zero' := _, nsmul_succ' := _, neg := ordered_add_comm_group.neg (function.injective.ordered_add_comm_group f hf one mul inv div), sub := ordered_add_comm_group.sub (function.injective.ordered_add_comm_group f hf one mul inv div), sub_eq_add_neg := _, zsmul := ordered_add_comm_group.zsmul (function.injective.ordered_add_comm_group f hf one mul inv div), 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 := _}