Documentation

Mathlib.Algebra.Order.Monoid.Canonical.Defs

Canonically ordered monoids #

class CanonicallyOrderedAdd (α : Type u_1) [Add α] [LE α] extends ExistsAddOfLE α :

An ordered additive monoid is CanonicallyOrderedAdd if the ordering coincides with the subtractibility 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 nontrivial OrderedAddCommGroups.

  • exists_add_of_le {a b : α} : a b∃ (c : α), b = a + c
  • le_self_add (a b : α) : a a + b

    For any a and b, a ≤ a + b

Instances
class CanonicallyOrderedMul (α : Type u_1) [Mul α] [LE α] extends ExistsMulOfLE α :

An ordered monoid is CanonicallyOrderedMul if the ordering coincides with the divisibility relation, which is to say, a ≤ b iff there exists c with b = a * c. Examples seem rare; it seems more likely that the OrderDual of a naturally-occurring lattice satisfies this than the lattice itself (for example, dual of the lattice of ideals of a PID or Dedekind domain satisfy this; collections of all things ≤ 1 seem to be more natural that collections of all things ≥ 1).

  • exists_mul_of_le {a b : α} : a b∃ (c : α), b = a * c
  • le_self_mul (a b : α) : a a * b

    For any a and b, a ≤ a * b

Instances
@[deprecated "Use `[OrderedAddCommMonoid α] [CanonicallyOrderedAdd α]` instead." (since := "2025-01-13")]
structure CanonicallyOrderedAddCommMonoid (α : Type u_1) extends OrderedAddCommMonoid α, OrderBot α :
Type u_1

A canonically ordered additive monoid is an ordered commutative additive monoid in which the ordering coincides with the subtractibility 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 nontrivial OrderedAddCommGroups.

@[deprecated "Use `[OrderedCommMonoid α] [CanonicallyOrderedMul α]` instead." (since := "2025-01-13")]
structure CanonicallyOrderedCommMonoid (α : Type u_1) extends OrderedCommMonoid α, OrderBot α :
Type u_1

A canonically ordered monoid is an ordered commutative monoid in which the ordering coincides with the divisibility relation, which is to say, a ≤ b iff there exists c with b = a * c. Examples seem rare; it seems more likely that the OrderDual of a naturally-occurring lattice satisfies this than the lattice itself (for example, dual of the lattice of ideals of a PID or Dedekind domain satisfy this; collections of all things ≤ 1 seem to be more natural that collections of all things ≥ 1).

theorem le_self_mul {α : Type u} [Mul α] [LE α] [CanonicallyOrderedMul α] {a b : α} :
a a * b
theorem le_self_add {α : Type u} [Add α] [LE α] [CanonicallyOrderedAdd α] {a b : α} :
a a + b
@[simp]
theorem self_le_mul_right {α : Type u} [Mul α] [LE α] [CanonicallyOrderedMul α] (a b : α) :
a a * b
@[simp]
theorem self_le_add_right {α : Type u} [Add α] [LE α] [CanonicallyOrderedAdd α] (a b : α) :
a a + b
theorem le_iff_exists_mul {α : Type u} [Mul α] [LE α] [CanonicallyOrderedMul α] {a b : α} :
a b ∃ (c : α), b = a * c
theorem le_iff_exists_add {α : Type u} [Add α] [LE α] [CanonicallyOrderedAdd α] {a b : α} :
a b ∃ (c : α), b = a + c
theorem le_of_mul_le_left {α : Type u} [Mul α] [Preorder α] [CanonicallyOrderedMul α] {a b c : α} :
a * b ca c
theorem le_of_add_le_left {α : Type u} [Add α] [Preorder α] [CanonicallyOrderedAdd α] {a b c : α} :
a + b ca c
theorem le_mul_of_le_left {α : Type u} [Mul α] [Preorder α] [CanonicallyOrderedMul α] {a b c : α} :
a ba b * c
theorem le_add_of_le_left {α : Type u} [Add α] [Preorder α] [CanonicallyOrderedAdd α] {a b c : α} :
a ba b + c
theorem le_mul_right {α : Type u} [Mul α] [Preorder α] [CanonicallyOrderedMul α] {a b c : α} :
a ba b * c

Alias of le_mul_of_le_left.

theorem le_add_right {α : Type u} [Add α] [Preorder α] [CanonicallyOrderedAdd α] {a b c : α} :
a ba b + c
theorem le_mul_self {α : Type u} [CommMagma α] [LE α] [CanonicallyOrderedMul α] {a b : α} :
a b * a
theorem le_add_self {α : Type u} [AddCommMagma α] [LE α] [CanonicallyOrderedAdd α] {a b : α} :
a b + a
@[simp]
theorem self_le_mul_left {α : Type u} [CommMagma α] [LE α] [CanonicallyOrderedMul α] (a b : α) :
a b * a
@[simp]
theorem self_le_add_left {α : Type u} [AddCommMagma α] [LE α] [CanonicallyOrderedAdd α] (a b : α) :
a b + a
theorem le_of_mul_le_right {α : Type u} [CommMagma α] [Preorder α] [CanonicallyOrderedMul α] {a b c : α} :
a * b cb c
theorem le_of_add_le_right {α : Type u} [AddCommMagma α] [Preorder α] [CanonicallyOrderedAdd α] {a b c : α} :
a + b cb c
theorem le_mul_of_le_right {α : Type u} [CommMagma α] [Preorder α] [CanonicallyOrderedMul α] {a b c : α} :
a ca b * c
theorem le_add_of_le_right {α : Type u} [AddCommMagma α] [Preorder α] [CanonicallyOrderedAdd α] {a b c : α} :
a ca b + c
theorem le_mul_left {α : Type u} [CommMagma α] [Preorder α] [CanonicallyOrderedMul α] {a b c : α} :
a ca b * c

Alias of le_mul_of_le_right.

theorem le_add_left {α : Type u} [AddCommMagma α] [Preorder α] [CanonicallyOrderedAdd α] {a b c : α} :
a ca b + c
theorem le_iff_exists_mul' {α : Type u} [CommMagma α] [Preorder α] [CanonicallyOrderedMul α] {a b : α} :
a b ∃ (c : α), b = c * a
theorem le_iff_exists_add' {α : Type u} [AddCommMagma α] [Preorder α] [CanonicallyOrderedAdd α] {a b : α} :
a b ∃ (c : α), b = c + a
@[simp]
theorem one_le {α : Type u} [MulOneClass α] [LE α] [CanonicallyOrderedMul α] (a : α) :
1 a
@[simp]
theorem zero_le {α : Type u} [AddZeroClass α] [LE α] [CanonicallyOrderedAdd α] (a : α) :
0 a
@[simp]
theorem one_lt_of_gt {α : Type u} [MulOneClass α] [Preorder α] [CanonicallyOrderedMul α] {a b : α} (h : a < b) :
1 < b
@[simp]
theorem pos_of_gt {α : Type u} [AddZeroClass α] [Preorder α] [CanonicallyOrderedAdd α] {a b : α} (h : a < b) :
0 < b
@[simp]
theorem le_one_iff_eq_one {α : Type u} [MulOneClass α] [PartialOrder α] [CanonicallyOrderedMul α] {a : α} :
a 1 a = 1
@[simp]
theorem nonpos_iff_eq_zero {α : Type u} [AddZeroClass α] [PartialOrder α] [CanonicallyOrderedAdd α] {a : α} :
a 0 a = 0
theorem one_lt_iff_ne_one {α : Type u} [MulOneClass α] [PartialOrder α] [CanonicallyOrderedMul α] {a : α} :
1 < a a 1
theorem pos_iff_ne_zero {α : Type u} [AddZeroClass α] [PartialOrder α] [CanonicallyOrderedAdd α] {a : α} :
0 < a a 0
theorem eq_one_or_one_lt {α : Type u} [MulOneClass α] [PartialOrder α] [CanonicallyOrderedMul α] (a : α) :
a = 1 1 < a
theorem eq_zero_or_pos {α : Type u} [AddZeroClass α] [PartialOrder α] [CanonicallyOrderedAdd α] (a : α) :
a = 0 0 < a
theorem one_not_mem_iff {α : Type u} [MulOneClass α] [PartialOrder α] [CanonicallyOrderedMul α] {s : Set α} :
¬1 s ∀ (x : α), x s1 < x
theorem zero_not_mem_iff {α : Type u} [AddZeroClass α] [PartialOrder α] [CanonicallyOrderedAdd α] {s : Set α} :
¬0 s ∀ (x : α), x s0 < x
theorem exists_one_lt_mul_of_lt {α : Type u} [MulOneClass α] [PartialOrder α] [CanonicallyOrderedMul α] {a b : α} (h : a < b) :
∃ (c : α), ∃ (x : 1 < c), a * c = b
theorem exists_pos_add_of_lt {α : Type u} [AddZeroClass α] [PartialOrder α] [CanonicallyOrderedAdd α] {a b : α} (h : a < b) :
∃ (c : α), ∃ (x : 0 < c), a + c = b
theorem lt_iff_exists_mul {α : Type u} [MulOneClass α] [PartialOrder α] [CanonicallyOrderedMul α] {a b : α} [MulLeftStrictMono α] :
a < b ∃ (c : α), c > 1 b = a * c
theorem lt_iff_exists_add {α : Type u} [AddZeroClass α] [PartialOrder α] [CanonicallyOrderedAdd α] {a b : α} [AddLeftStrictMono α] :
a < b ∃ (c : α), c > 0 b = a + c
@[simp]
theorem one_lt_mul_iff {α : Type u} [CommMonoid α] [PartialOrder α] [CanonicallyOrderedMul α] {a b : α} :
1 < a * b 1 < a 1 < b
@[simp]
theorem add_pos_iff {α : Type u} [AddCommMonoid α] [PartialOrder α] [CanonicallyOrderedAdd α] {a b : α} :
0 < a + b 0 < a 0 < b
@[deprecated mul_eq_one (since := "2024-07-24")]
theorem mul_eq_one_iff {α : Type u} [CommMonoid α] [Subsingleton αˣ] {a b : α} :
a * b = 1 a = 1 b = 1

Alias of mul_eq_one.

@[deprecated add_eq_zero (since := "2024-07-24")]
theorem add_eq_zero_iff {α : Type u} [AddCommMonoid α] [Subsingleton (AddUnits α)] {a b : α} :
a + b = 0 a = 0 b = 0

Alias of add_eq_zero.

theorem NeZero.pos {M : Type u_1} [AddZeroClass M] [PartialOrder M] [CanonicallyOrderedAdd M] (a : M) [NeZero a] :
0 < a
theorem NeZero.of_gt {M : Type u_1} [AddZeroClass M] [Preorder M] [CanonicallyOrderedAdd M] {x y : M} (h : x < y) :
@[instance 10]
instance NeZero.of_gt' {M : Type u_1} [AddZeroClass M] [Preorder M] [CanonicallyOrderedAdd M] [One M] {y : M} [Fact (1 < y)] :
@[deprecated "Use `[LinearOrderedAddCommMonoid α] [CanonicallyOrderedAdd α]` instead." (since := "2025-01-13")]

A canonically linear-ordered additive monoid is a canonically ordered additive monoid whose ordering is a linear order.

@[deprecated "Use `[LinearOrderedCommMonoid α] [CanonicallyOrderedMul α]` instead." (since := "2025-01-13")]

A canonically linear-ordered monoid is a canonically ordered monoid whose ordering is a linear order.

theorem min_mul_distrib {α : Type u} [LinearOrderedCommMonoid α] [CanonicallyOrderedMul α] (a b c : α) :
a b * c = a (a b) * (a c)
theorem min_add_distrib {α : Type u} [LinearOrderedAddCommMonoid α] [CanonicallyOrderedAdd α] (a b c : α) :
a (b + c) = a (a b + a c)
theorem min_mul_distrib' {α : Type u} [LinearOrderedCommMonoid α] [CanonicallyOrderedMul α] (a b c : α) :
a * b c = (a c) * (b c) c
theorem min_add_distrib' {α : Type u} [LinearOrderedAddCommMonoid α] [CanonicallyOrderedAdd α] (a b c : α) :
(a + b) c = (a c + b c) c
theorem one_min {α : Type u} [LinearOrderedCommMonoid α] [CanonicallyOrderedMul α] (a : α) :
1 a = 1
theorem zero_min {α : Type u} [LinearOrderedAddCommMonoid α] [CanonicallyOrderedAdd α] (a : α) :
0 a = 0
theorem min_one {α : Type u} [LinearOrderedCommMonoid α] [CanonicallyOrderedMul α] (a : α) :
a 1 = 1
theorem min_zero {α : Type u} [LinearOrderedAddCommMonoid α] [CanonicallyOrderedAdd α] (a : α) :
a 0 = 0
@[simp]

In a linearly ordered monoid, we are happy for bot_eq_one to be a @[simp] lemma.

@[simp]

In a linearly ordered monoid, we are happy for bot_eq_zero to be a @[simp] lemma