Ordered monoids #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
This file develops the basics of ordered monoids.
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.
Remark #
Almost no monoid is actually present in this file: most assumptions have been generalized to
has_mul
or mul_one_class
.
Alias of add_lt_add_of_lt_of_lt
.
Only assumes left strict covariance.
Only assumes left strict covariance
Only assumes right strict covariance
Only assumes right strict covariance.
Lemmas of the form b ≤ c → a ≤ 1 → b * a ≤ c
,
which assume left covariance.
Assumes left covariance.
The lemma assuming right covariance is right.add_nonpos
.
Assumes left covariance.
The lemma assuming right covariance is right.mul_le_one
.
Assumes left covariance.
The lemma assuming right covariance is right.mul_lt_one_of_le_of_lt
.
Assumes left covariance.
The lemma assuming right covariance is right.add_neg_of_nonpos_of_neg
.
Assumes left covariance.
The lemma assuming right covariance is right.mul_lt_one_of_lt_of_le
.
Assumes left covariance.
The lemma assuming right covariance is right.add_neg_of_neg_of_nonpos
.
Assumes left covariance.
The lemma assuming right covariance is right.mul_lt_one
.
Assumes left covariance.
The lemma assuming right covariance is right.add_neg
.
Assumes left covariance.
The lemma assuming right covariance is right.mul_lt_one'
.
Assumes left covariance.
The lemma assuming right covariance is right.add_neg'
.
Lemmas of the form b ≤ c → 1 ≤ a → b ≤ c * a
,
which assume left covariance.
Assumes left covariance.
The lemma assuming right covariance is right.one_le_mul
.
Assumes left covariance.
The lemma assuming right covariance is right.add_nonneg
.
Assumes left covariance.
The lemma assuming right covariance is right.add_pos_of_nonneg_of_pos
.
Assumes left covariance.
The lemma assuming right covariance is right.one_lt_mul_of_le_of_lt
.
Assumes left covariance.
The lemma assuming right covariance is right.add_pos_of_pos_of_nonneg
.
Assumes left covariance.
The lemma assuming right covariance is right.one_lt_mul_of_lt_of_le
.
Assumes left covariance.
The lemma assuming right covariance is right.one_lt_mul
.
Assumes left covariance.
The lemma assuming right covariance is right.add_pos
.
Assumes left covariance.
The lemma assuming right covariance is right.add_pos'
.
Assumes left covariance.
The lemma assuming right covariance is right.one_lt_mul'
.
Lemmas of the form a ≤ 1 → b ≤ c → a * b ≤ c
,
which assume right covariance.
Assumes right covariance.
The lemma assuming left covariance is left.mul_le_one
.
Assumes right covariance.
The lemma assuming left covariance is left.add_nonpos
.
Assumes right covariance.
The lemma assuming left covariance is left.add_neg_of_neg_of_nonpos
.
Assumes right covariance.
The lemma assuming left covariance is left.mul_lt_one_of_lt_of_le
.
Assumes right covariance.
The lemma assuming left covariance is left.mul_lt_one_of_le_of_lt
.
Assumes right covariance.
The lemma assuming left covariance is left.add_neg_of_nonpos_of_neg
.
Assumes right covariance.
The lemma assuming left covariance is left.add_neg
.
Assumes right covariance.
The lemma assuming left covariance is left.mul_lt_one
.
Assumes right covariance.
The lemma assuming left covariance is left.add_neg'
.
Assumes right covariance.
The lemma assuming left covariance is left.mul_lt_one'
.
Lemmas of the form 1 ≤ a → b ≤ c → b ≤ a * c
,
which assume right covariance.
Assumes right covariance.
The lemma assuming left covariance is left.add_nonneg
.
Assumes right covariance.
The lemma assuming left covariance is left.one_le_mul
.
Assumes right covariance.
The lemma assuming left covariance is left.add_pos_of_pos_of_nonneg
.
Assumes right covariance.
The lemma assuming left covariance is left.one_lt_mul_of_lt_of_le
.
Assumes right covariance.
The lemma assuming left covariance is left.add_pos_of_nonneg_of_pos
.
Assumes right covariance.
The lemma assuming left covariance is left.one_lt_mul_of_le_of_lt
.
Assumes right covariance.
The lemma assuming left covariance is left.add_pos
.
Assumes right covariance.
The lemma assuming left covariance is left.one_lt_mul
.
Assumes right covariance.
The lemma assuming left covariance is left.add_pos'
.
Assumes right covariance.
The lemma assuming left covariance is left.one_lt_mul'
.
Alias of left.mul_le_one
.
Alias of left.mul_lt_one_of_le_of_lt
.
Alias of left.mul_lt_one_of_lt_of_le
.
Alias of left.mul_lt_one
.
Alias of left.mul_lt_one'
.
Alias of left.add_nonpos
.
Alias of left.add_neg_of_nonpos_of_neg
.
Alias of left.add_neg_of_neg_of_nonpos
.
Alias of left.add_neg
.
Alias of left.add_neg'
.
Alias of left.one_le_mul
.
Alias of left.one_lt_mul_of_le_of_lt
.
Alias of left.one_lt_mul_of_lt_of_le
.
Alias of left.one_lt_mul
.
Alias of left.one_lt_mul'
.
Alias of left.add_nonneg
.
Alias of left.add_pos_of_nonneg_of_pos
.
Alias of left.add_pos_of_pos_of_nonneg
.
Alias of left.add_pos
.
Alias of left.add_pos'
.
A semigroup with a partial order and satisfying left_cancel_semigroup
(i.e. a * c < b * c → a < b
) is a left_cancel semigroup
.
Equations
- contravariant.to_left_cancel_semigroup = {mul := semigroup.mul _inst_1, mul_assoc := _, mul_left_cancel := _}
An additive semigroup with a partial order and satisfying left_cancel_add_semigroup
(i.e. c + a < c + b → a < b
) is a left_cancel add_semigroup
.
Equations
- contravariant.to_left_cancel_add_semigroup = {add := add_semigroup.add _inst_1, add_assoc := _, add_left_cancel := _}
An additive semigroup with a partial order and satisfying right_cancel_add_semigroup
(a + c < b + c → a < b
) is a right_cancel add_semigroup
.
Equations
- contravariant.to_right_cancel_add_semigroup = {add := add_semigroup.add _inst_1, add_assoc := _, add_right_cancel := _}
A semigroup with a partial order and satisfying right_cancel_semigroup
(i.e. a * c < b * c → a < b
) is a right_cancel semigroup
.
Equations
- contravariant.to_right_cancel_semigroup = {mul := semigroup.mul _inst_1, mul_assoc := _, mul_right_cancel := _}
Alias of left.mul_eq_mul_iff_eq_and_eq
.
Alias of left.mul_eq_mul_iff_eq_and_eq
.
The product of two monotone functions is monotone.
The sum of two monotone functions is monotone.
The product of two monotone functions is monotone.
The sum of two monotone functions is monotone.
The sum of two antitone functions is antitone.
The product of two antitone functions is antitone.
The product of two antitone functions is antitone.
The sum of two antitone functions is antitone.
The product of two strictly monotone functions is strictly monotone.
The sum of two strictly monotone functions is strictly monotone.
The product of two strictly monotone functions is strictly monotone.
The sum of two strictly monotone functions is strictly monotone.
The sum of two strictly antitone functions is strictly antitone.
The product of two strictly antitone functions is strictly antitone.
The product of two strictly antitone functions is strictly antitone.
The sum of two strictly antitone functions is strictly antitone.
The product of a monotone function and a strictly monotone function is strictly monotone.
The sum of a monotone function and a strictly monotone function is strictly monotone.
The sum of a monotone function and a strictly monotone function is strictly monotone.
The product of a monotone function and a strictly monotone function is strictly monotone.
The product of a antitone function and a strictly antitone function is strictly antitone.
The sum of a antitone function and a strictly antitone function is strictly antitone.
The product of a antitone function and a strictly antitone function is strictly antitone.
The sum of a antitone function and a strictly antitone function is strictly antitone.
The sum of a strictly monotone function and a monotone function is strictly monotone.
The product of a strictly monotone function and a monotone function is strictly monotone.
The sum of a strictly monotone function and a monotone function is strictly monotone.
The product of a strictly monotone function and a monotone function is strictly monotone.
The product of a strictly antitone function and a antitone function is strictly antitone.
The sum of a strictly antitone function and a antitone function is strictly antitone.
The sum of a strictly antitone function and a antitone function is strictly antitone.
The product of a strictly antitone function and a antitone function is strictly antitone.
An element a : α
is add_le_cancellable
if x ↦ a + x
is order-reflecting.
We will make a separate version of many lemmas that require [contravariant_class α α (+) (≤)]
with
mul_le_cancellable
assumptions instead. These lemmas can then be instantiated to specific types,
like ennreal
, where we can replace the assumption add_le_cancellable x
by x ≠ ∞
.
An element a : α
is mul_le_cancellable
if x ↦ a * x
is order-reflecting.
We will make a separate version of many lemmas that require [contravariant_class α α (*) (≤)]
with
mul_le_cancellable
assumptions instead. These lemmas can then be instantiated to specific types,
like ennreal
, where we can replace the assumption add_le_cancellable x
by x ≠ ∞
.