Module docstring
{"# Ordered monoids
This file develops some additional material on ordered monoids. "}
{"# Ordered monoids
This file develops some additional material on ordered monoids. "}
Function.Injective.isOrderedMonoid
theorem
[IsOrderedMonoid α] [One β] [Mul β] [Pow β ℕ] (f : β → α) (hf : Function.Injective f) (one : f 1 = 1)
(mul : ∀ x y, f (x * y) = f x * f y) (npow : ∀ (x) (n : ℕ), f (x ^ n) = f x ^ n) :
let _ : CommMonoid β := hf.commMonoid f one mul npow
let _ : PartialOrder β := PartialOrder.lift f hf
IsOrderedMonoid β
/-- Pullback an `IsOrderedMonoid` under an injective map. -/
@[to_additive "Pullback an `IsOrderedAddMonoid` under an injective map."]
lemma Function.Injective.isOrderedMonoid [IsOrderedMonoid α] [One β] [Mul β]
[Pow β ℕ] (f : β → α) (hf : Function.Injective f) (one : f 1 = 1)
(mul : ∀ x y, f (x * y) = f x * f y) (npow : ∀ (x) (n : ℕ), f (x ^ n) = f x ^ n) :
let _ : CommMonoid β := hf.commMonoid f one mul npow
let _ : PartialOrder β := PartialOrder.lift f hf
IsOrderedMonoid β :=
let _ : CommMonoid β := hf.commMonoid f one mul npow
let _ : PartialOrder β := PartialOrder.lift f hf
{ mul_le_mul_left a b ab c := show f (c * a) ≤ f (c * b) by
rw [mul, mul]; apply mul_le_mul_left'; exact ab }
Function.Injective.isOrderedCancelMonoid
theorem
[IsOrderedCancelMonoid α] [One β] [Mul β] [Pow β ℕ] (f : β → α) (hf : Injective f) (one : f 1 = 1)
(mul : ∀ x y, f (x * y) = f x * f y) (npow : ∀ (x) (n : ℕ), f (x ^ n) = f x ^ n) :
let _ : CommMonoid β := hf.commMonoid f one mul npow
let _ : PartialOrder β := PartialOrder.lift f hf
IsOrderedCancelMonoid β
/-- Pullback an `IsOrderedCancelMonoid` under an injective map. -/
@[to_additive Function.Injective.isOrderedCancelAddMonoid
"Pullback an `IsOrderedCancelAddMonoid` under an injective map."]
lemma Function.Injective.isOrderedCancelMonoid [IsOrderedCancelMonoid α] [One β] [Mul β]
[Pow β ℕ] (f : β → α) (hf : Injective f) (one : f 1 = 1) (mul : ∀ x y, f (x * y) = f x * f y)
(npow : ∀ (x) (n : ℕ), f (x ^ n) = f x ^ n) :
let _ : CommMonoid β := hf.commMonoid f one mul npow
let _ : PartialOrder β := PartialOrder.lift f hf
IsOrderedCancelMonoid β :=
let _ : CommMonoid β := hf.commMonoid f one mul npow
let _ : PartialOrder β := PartialOrder.lift f hf
{ __ := hf.isOrderedMonoid f one mul npow
le_of_mul_le_mul_left a b c (bc : f (a * b) ≤ f (a * c)) :=
(mul_le_mul_iff_left (f a)).1 (by rwa [← mul, ← mul]) }
OrderEmbedding.mulLeft
definition
{α : Type*} [Mul α] [LinearOrder α] [MulLeftStrictMono α] (m : α) : α ↪o α
/-- The order embedding sending `b` to `a * b`, for some fixed `a`.
See also `OrderIso.mulLeft` when working in an ordered group. -/
@[to_additive (attr := simps!)
"The order embedding sending `b` to `a + b`, for some fixed `a`.
See also `OrderIso.addLeft` when working in an additive ordered group."]
def OrderEmbedding.mulLeft {α : Type*} [Mul α] [LinearOrder α]
[MulLeftStrictMono α] (m : α) : α ↪o α :=
OrderEmbedding.ofStrictMono (fun n => m * n) fun _ _ w => mul_lt_mul_left' w m
OrderEmbedding.mulRight
definition
{α : Type*} [Mul α] [LinearOrder α] [MulRightStrictMono α] (m : α) : α ↪o α
/-- The order embedding sending `b` to `b * a`, for some fixed `a`.
See also `OrderIso.mulRight` when working in an ordered group. -/
@[to_additive (attr := simps!)
"The order embedding sending `b` to `b + a`, for some fixed `a`.
See also `OrderIso.addRight` when working in an additive ordered group."]
def OrderEmbedding.mulRight {α : Type*} [Mul α] [LinearOrder α]
[MulRightStrictMono α] (m : α) : α ↪o α :=
OrderEmbedding.ofStrictMono (fun n => n * m) fun _ _ w => mul_lt_mul_right' w m