Linear ordered (semi)fields #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
A linear ordered (semi)field is a (semi)field equipped with a linear order such that
- addition respects the order:
a ≤ b → c + a ≤ c + b
; - multiplication of positives is positive:
0 < a → 0 < b → 0 < a * b
; 0 < 1
.
Main Definitions #
linear_ordered_semifield
: Typeclass for linear order semifields.linear_ordered_field
: Typeclass for linear ordered fields.
Implementation details #
For olean caching reasons, this file is separate to the main file, algebra.order.field.basic
.
The lemmata are instead located there.
@[class]
- 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_semifield.nsmul 0 x = 0) . "try_refl_tac"
- nsmul_succ' : (∀ (n : ℕ) (x : α), linear_ordered_semifield.nsmul n.succ x = x + linear_ordered_semifield.nsmul n x) . "try_refl_tac"
- add_comm : ∀ (a b : α), a + b = b + a
- mul : α → α → α
- left_distrib : ∀ (a b c : α), a * (b + c) = a * b + a * c
- right_distrib : ∀ (a b c : α), (a + b) * c = a * c + b * c
- zero_mul : ∀ (a : α), 0 * a = 0
- mul_zero : ∀ (a : α), a * 0 = 0
- mul_assoc : ∀ (a b c : α), a * b * c = a * (b * c)
- one : α
- one_mul : ∀ (a : α), 1 * a = a
- mul_one : ∀ (a : α), a * 1 = a
- nat_cast : ℕ → α
- nat_cast_zero : linear_ordered_semifield.nat_cast 0 = 0 . "control_laws_tac"
- nat_cast_succ : (∀ (n : ℕ), linear_ordered_semifield.nat_cast (n + 1) = linear_ordered_semifield.nat_cast n + 1) . "control_laws_tac"
- npow : ℕ → α → α
- npow_zero' : (∀ (x : α), linear_ordered_semifield.npow 0 x = 1) . "try_refl_tac"
- npow_succ' : (∀ (n : ℕ) (x : α), linear_ordered_semifield.npow n.succ x = x * linear_ordered_semifield.npow n x) . "try_refl_tac"
- 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_of_add_le_add_left : ∀ (a b c : α), a + b ≤ a + c → b ≤ c
- exists_pair_ne : ∃ (x y : α), x ≠ y
- zero_le_one : 0 ≤ 1
- mul_lt_mul_of_pos_left : ∀ (a b c : α), a < b → 0 < c → c * a < c * b
- mul_lt_mul_of_pos_right : ∀ (a b c : α), a < b → 0 < c → a * c < b * c
- mul_comm : ∀ (a b : α), a * b = b * a
- 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_semifield.max = max_default . "reflexivity"
- min : α → α → α
- min_def : linear_ordered_semifield.min = min_default . "reflexivity"
- inv : α → α
- div : α → α → α
- div_eq_mul_inv : (∀ (a b : α), a / b = a * b⁻¹) . "try_refl_tac"
- zpow : ℤ → α → α
- zpow_zero' : (∀ (a : α), linear_ordered_semifield.zpow 0 a = 1) . "try_refl_tac"
- zpow_succ' : (∀ (n : ℕ) (a : α), linear_ordered_semifield.zpow (int.of_nat n.succ) a = a * linear_ordered_semifield.zpow (int.of_nat n) a) . "try_refl_tac"
- zpow_neg' : (∀ (n : ℕ) (a : α), linear_ordered_semifield.zpow -[1+ n] a = (linear_ordered_semifield.zpow ↑(n.succ) a)⁻¹) . "try_refl_tac"
- inv_zero : 0⁻¹ = 0
- mul_inv_cancel : ∀ (a : α), a ≠ 0 → a * a⁻¹ = 1
A linear ordered semifield is a field with a linear order respecting the operations.
Instances of this typeclass
Instances of other typeclasses for linear_ordered_semifield
- linear_ordered_semifield.has_sizeof_inst
@[instance]
def
linear_ordered_semifield.to_linear_ordered_comm_semiring
(α : Type u_2)
[self : linear_ordered_semifield α] :
@[instance]
@[instance]
@[class]
- 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_field.nsmul 0 x = 0) . "try_refl_tac"
- nsmul_succ' : (∀ (n : ℕ) (x : α), linear_ordered_field.nsmul n.succ x = x + linear_ordered_field.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_field.zsmul 0 a = 0) . "try_refl_tac"
- zsmul_succ' : (∀ (n : ℕ) (a : α), linear_ordered_field.zsmul (int.of_nat n.succ) a = a + linear_ordered_field.zsmul (int.of_nat n) a) . "try_refl_tac"
- zsmul_neg' : (∀ (n : ℕ) (a : α), linear_ordered_field.zsmul -[1+ n] a = -linear_ordered_field.zsmul ↑(n.succ) a) . "try_refl_tac"
- add_left_neg : ∀ (a : α), -a + a = 0
- add_comm : ∀ (a b : α), a + b = b + a
- int_cast : ℤ → α
- nat_cast : ℕ → α
- one : α
- nat_cast_zero : linear_ordered_field.nat_cast 0 = 0 . "control_laws_tac"
- nat_cast_succ : (∀ (n : ℕ), linear_ordered_field.nat_cast (n + 1) = linear_ordered_field.nat_cast n + 1) . "control_laws_tac"
- int_cast_of_nat : (∀ (n : ℕ), linear_ordered_field.int_cast ↑n = ↑n) . "control_laws_tac"
- int_cast_neg_succ_of_nat : (∀ (n : ℕ), linear_ordered_field.int_cast (-↑(n + 1)) = -↑(n + 1)) . "control_laws_tac"
- mul : α → α → α
- mul_assoc : ∀ (a b c : α), a * b * c = a * (b * c)
- one_mul : ∀ (a : α), 1 * a = a
- mul_one : ∀ (a : α), a * 1 = a
- npow : ℕ → α → α
- npow_zero' : (∀ (x : α), linear_ordered_field.npow 0 x = 1) . "try_refl_tac"
- npow_succ' : (∀ (n : ℕ) (x : α), linear_ordered_field.npow n.succ x = x * linear_ordered_field.npow n x) . "try_refl_tac"
- left_distrib : ∀ (a b c : α), a * (b + c) = a * b + a * c
- right_distrib : ∀ (a b c : α), (a + b) * c = a * c + b * c
- 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
- exists_pair_ne : ∃ (x y : α), x ≠ y
- zero_le_one : 0 ≤ 1
- mul_pos : ∀ (a b : α), 0 < a → 0 < b → 0 < 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_field.max = max_default . "reflexivity"
- min : α → α → α
- min_def : linear_ordered_field.min = min_default . "reflexivity"
- mul_comm : ∀ (a b : α), a * b = b * a
- inv : α → α
- div : α → α → α
- div_eq_mul_inv : (∀ (a b : α), a / b = a * b⁻¹) . "try_refl_tac"
- zpow : ℤ → α → α
- zpow_zero' : (∀ (a : α), linear_ordered_field.zpow 0 a = 1) . "try_refl_tac"
- zpow_succ' : (∀ (n : ℕ) (a : α), linear_ordered_field.zpow (int.of_nat n.succ) a = a * linear_ordered_field.zpow (int.of_nat n) a) . "try_refl_tac"
- zpow_neg' : (∀ (n : ℕ) (a : α), linear_ordered_field.zpow -[1+ n] a = (linear_ordered_field.zpow ↑(n.succ) a)⁻¹) . "try_refl_tac"
- rat_cast : ℚ → α
- mul_inv_cancel : ∀ {a : α}, a ≠ 0 → a * a⁻¹ = 1
- inv_zero : 0⁻¹ = 0
- rat_cast_mk : (∀ (a : ℤ) (b : ℕ) (h1 : 0 < b) (h2 : a.nat_abs.coprime b), linear_ordered_field.rat_cast {num := a, denom := b, pos := h1, cop := h2} = ↑a * (↑b)⁻¹) . "try_refl_tac"
- qsmul : ℚ → α → α
- qsmul_eq_mul' : (∀ (a : ℚ) (x : α), linear_ordered_field.qsmul a x = linear_ordered_field.rat_cast a * x) . "try_refl_tac"
A linear ordered field is a field with a linear order respecting the operations.
Instances of this typeclass
Instances of other typeclasses for linear_ordered_field
- linear_ordered_field.has_sizeof_inst
@[instance]
def
linear_ordered_field.to_linear_ordered_comm_ring
(α : Type u_2)
[self : linear_ordered_field α] :
@[protected, instance]
Equations
- linear_ordered_field.to_linear_ordered_semifield = {add := linear_ordered_semiring.add linear_ordered_ring.to_linear_ordered_semiring, add_assoc := _, zero := linear_ordered_semiring.zero linear_ordered_ring.to_linear_ordered_semiring, zero_add := _, add_zero := _, nsmul := linear_ordered_semiring.nsmul linear_ordered_ring.to_linear_ordered_semiring, nsmul_zero' := _, nsmul_succ' := _, add_comm := _, mul := linear_ordered_semiring.mul linear_ordered_ring.to_linear_ordered_semiring, left_distrib := _, right_distrib := _, zero_mul := _, mul_zero := _, mul_assoc := _, one := linear_ordered_semiring.one linear_ordered_ring.to_linear_ordered_semiring, one_mul := _, mul_one := _, nat_cast := linear_ordered_semiring.nat_cast linear_ordered_ring.to_linear_ordered_semiring, nat_cast_zero := _, nat_cast_succ := _, npow := linear_ordered_semiring.npow linear_ordered_ring.to_linear_ordered_semiring, npow_zero' := _, npow_succ' := _, le := linear_ordered_semiring.le linear_ordered_ring.to_linear_ordered_semiring, lt := linear_ordered_semiring.lt linear_ordered_ring.to_linear_ordered_semiring, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, add_le_add_left := _, le_of_add_le_add_left := _, exists_pair_ne := _, zero_le_one := _, mul_lt_mul_of_pos_left := _, mul_lt_mul_of_pos_right := _, mul_comm := _, le_total := _, decidable_le := linear_ordered_semiring.decidable_le linear_ordered_ring.to_linear_ordered_semiring, decidable_eq := linear_ordered_semiring.decidable_eq linear_ordered_ring.to_linear_ordered_semiring, decidable_lt := linear_ordered_semiring.decidable_lt linear_ordered_ring.to_linear_ordered_semiring, max := linear_ordered_semiring.max linear_ordered_ring.to_linear_ordered_semiring, max_def := _, min := linear_ordered_semiring.min linear_ordered_ring.to_linear_ordered_semiring, min_def := _, inv := linear_ordered_field.inv _inst_1, div := linear_ordered_field.div _inst_1, div_eq_mul_inv := _, zpow := linear_ordered_field.zpow _inst_1, zpow_zero' := _, zpow_succ' := _, zpow_neg' := _, inv_zero := _, mul_inv_cancel := _}