Linearly ordered commutative groups and monoids with a zero element adjoined #
This file sets up a special class of linearly ordered commutative monoids that show up as the target of so-called “valuations” in algebraic number theory.
Usually, in the informal literature, these objects are constructed by taking a linearly ordered commutative group Γ and formally adjoining a zero element: Γ ∪ {0}.
The disadvantage is that a type such as NNReal is not of that form,
whereas it is a very common target for valuations.
The solutions is to use a typeclass, and that is exactly what we do in this file.
Note that to avoid issues with import cycles, LinearOrderedCommMonoidWithZero is defined
in another file. However, the lemmas about it are stated here.
A linearly ordered commutative group with a zero element.
- mul : α → α → α
- one : α
- npow : ℕ → α → α
- npow_zero : ∀ (x : α), Monoid.npow 0 x = 1
- npow_succ : ∀ (n : ℕ) (x : α), Monoid.npow (n + 1) x = x * Monoid.npow n x
- le : α → α → Prop
- lt : α → α → Prop
- le_refl : ∀ (a : α), a ≤ a
- min : α → α → α
- max : α → α → α
- compare : α → α → Ordering
- decidableLE : DecidableRel fun (x x_1 : α) => x ≤ x_1
- decidableEq : DecidableEq α
- decidableLT : DecidableRel fun (x x_1 : α) => x < x_1
- compare_eq_compareOfLessAndEq : ∀ (a b : α), compare a b = compareOfLessAndEq a b
- zero : α
- zero_le_one : 0 ≤ 1
- inv : α → α
- div : α → α → α
a / b := a * b⁻¹- zpow : ℤ → α → α
The power operation:
a ^ n = a * ··· * a;a ^ (-n) = a⁻¹ * ··· a⁻¹(ntimes) - zpow_zero' : ∀ (a : α), LinearOrderedCommGroupWithZero.zpow 0 a = 1
a ^ 0 = 1 - zpow_succ' : ∀ (n : ℕ) (a : α), LinearOrderedCommGroupWithZero.zpow (Int.ofNat (Nat.succ n)) a = a * LinearOrderedCommGroupWithZero.zpow (Int.ofNat n) a
a ^ (n + 1) = a * a ^ n - zpow_neg' : ∀ (n : ℕ) (a : α), LinearOrderedCommGroupWithZero.zpow (Int.negSucc n) a = (LinearOrderedCommGroupWithZero.zpow (↑(Nat.succ n)) a)⁻¹
a ^ -(n + 1) = (a ^ (n + 1))⁻¹ - exists_pair_ne : ∃ (x : α), ∃ (y : α), x ≠ y
The inverse of
0in a group with zero is0.Every nonzero element of a group with zero is invertible.
Instances
Equations
- instLinearOrderedCommMonoidWithZeroMultiplicativeOrderDual = let __src := Multiplicative.orderedCommMonoid; let __src_1 := Multiplicative.linearOrder; LinearOrderedCommMonoidWithZero.mk ⋯ ⋯ ⋯
Equations
- One or more equations did not get rendered due to their size.
Equations
- instLinearOrderedCommMonoidWithZeroWithZero = let __src := WithZero.linearOrder; let __src_1 := WithZero.commMonoidWithZero; LinearOrderedCommMonoidWithZero.mk ⋯ ⋯ ⋯
Equations
- One or more equations did not get rendered due to their size.
Pullback a LinearOrderedCommMonoidWithZero under an injective map.
See note [reducible non-instances].
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- instLinearOrderedAddCommMonoidWithTopAdditiveOrderDual = let __src := Additive.orderedAddCommMonoid; let __src_1 := Additive.linearOrder; LinearOrderedAddCommMonoidWithTop.mk ⋯
Alias of mul_le_one' for unification.
Alias of one_le_mul' for unification.
Equiv.mulLeft₀ as an OrderIso on a LinearOrderedCommGroupWithZero..
Note that OrderIso.mulLeft₀ refers to the LinearOrderedField version.
Equations
- OrderIso.mulLeft₀' ha = let __src := Equiv.mulLeft₀ a ha; { toEquiv := __src, map_rel_iff' := ⋯ }
Instances For
Equiv.mulRight₀ as an OrderIso on a LinearOrderedCommGroupWithZero..
Note that OrderIso.mulRight₀ refers to the LinearOrderedField version.
Equations
- OrderIso.mulRight₀' ha = let __src := Equiv.mulRight₀ a ha; { toEquiv := __src, map_rel_iff' := ⋯ }
Instances For
Equations
- One or more equations did not get rendered due to their size.