Lemmas on the monotone multiplication typeclasses #
This file builds on Mathlib/Algebra/Order/GroupWithZero/Unbundled/Defs.lean by proving several
lemmas that do not immediately follow from the typeclass specifications.
Assumes left covariance.
Alias of Left.mul_pos.
Assumes left covariance.
Assumes right covariance.
Assumes left covariance.
Alias of Left.mul_nonneg.
Assumes left covariance.
Assumes right covariance.
Assumes left strict covariance.
Assumes right strict covariance.
Alias of Left.mul_lt_mul_of_nonneg.
Assumes left strict covariance.
Alias of Left.mul_lt_mul_of_nonneg.
Assumes left strict covariance.
Alias of Left.neg_of_mul_neg_right.
Alias of Left.neg_of_mul_neg_left.
Lemmas of the form a ≤ a * b ↔ 1 ≤ b and a * b ≤ a ↔ b ≤ 1, assuming left covariance.
Lemmas of the form a ≤ b * a ↔ 1 ≤ b and a * b ≤ b ↔ a ≤ 1, assuming right covariance.
Lemmas of the form 1 ≤ b → a ≤ a * b.
Variants with < 0 and ≤ 0 instead of 0 < and 0 ≤ appear in Mathlib/Algebra/Order/Ring/Defs
(which imports this file) as they need additional results which are not yet available here.
Alias of one_lt_mul_of_le_of_lt.
bound lemma for branching on 1 ≤ a ∨ a ≤ 1 when proving a ^ n ≤ a ^ m
The bound tactic can't handle m ≠ 0 goals yet, so we express as 0 < m
See also pow_left_strictMono₀ and Nat.pow_left_strictMono.
See also pow_right_strictMono'.
Equality holds when a ≠ 0. See mul_inv_cancel_left.
Equality holds when a ≠ 0. See mul_inv_cancel_left.
Equality holds when a ≠ 0. See inv_mul_cancel_left.
Equality holds when a ≠ 0. See inv_mul_cancel_left.
Equality holds when b ≠ 0. See mul_inv_cancel_right.
Equality holds when b ≠ 0. See mul_inv_cancel_right.
Equality holds when b ≠ 0. See inv_mul_cancel_right.
Equality holds when b ≠ 0. See inv_mul_cancel_right.
Equality holds when c ≠ 0. See mul_div_mul_right.
Equality holds when c ≠ 0. See mul_div_mul_right.
See div_self for the version with equality when a ≠ 0.
Equality holds when a ≠ 0. See mul_inv_cancel.
Equality holds when a ≠ 0. See inv_mul_cancel.
Alias of the reverse direction of inv_pos.
Alias of the reverse direction of inv_nonneg.
For a group with zero, PosMulReflectLT G₀ implies PosMulStrictMono G₀.
For a group with zero, PosMulReflectLT G₀
allows us to upgrade MulPosMono G₀ to MulPosReflectLE G₀.
The other implication holds without the PosMulReflectLT G₀ assumption,
see MulPosReflectLT.toMulPosStrictMono for a stronger version below.
This theorem shows that in the presence of the assumption PosMulReflectLT G₀,
it makes no sense to optimize between assumptions MulPosMono G₀, MulPosStrictMono G₀,
MulPosReflectLT G₀, and MulPosReflectLE G₀.
See le_inv_mul_iff₀' for a version with multiplication on the other side.
See inv_mul_le_iff₀' for a version with multiplication on the other side.
See inv_le_iff_one_le_mul₀ for a version with multiplication on the other side.
Alias of the reverse direction of one_le_inv₀.
One direction of le_inv_mul_iff₀ where c is allowed to be 0 (but b must be nonnegative).
One direction of inv_mul_le_iff₀ where b is allowed to be 0 (but c must be nonnegative).
See lt_inv_mul_iff₀' for a version with multiplication on the other side.
See inv_mul_lt_iff₀' for a version with multiplication on the other side.
See inv_lt_iff_one_lt_mul₀ for a version with multiplication on the other side.
For a group with zero, MulPosReflectLT G₀ implies MulPosStrictMono G₀.
See le_mul_inv_iff₀' for a version with multiplication on the other side.
See mul_inv_le_iff₀' for a version with multiplication on the other side.
See lt_mul_inv_iff₀' for a version with multiplication on the other side.
See mul_inv_lt_iff₀' for a version with multiplication on the other side.
See le_div_iff₀' for a version with multiplication on the other side.
See div_le_iff₀' for a version with multiplication on the other side.
See lt_div_iff₀' for a version with multiplication on the other side.
See div_lt_iff₀' for a version with multiplication on the other side.
See inv_le_iff_one_le_mul₀' for a version with multiplication on the other side.
See inv_lt_iff_one_lt_mul₀' for a version with multiplication on the other side.
One direction of le_mul_inv_iff₀ where c is allowed to be 0 (but b must be nonnegative).
One direction of mul_inv_le_iff₀ where b is allowed to be 0 (but c must be nonnegative).
One direction of le_div_iff₀ where c is allowed to be 0 (but b must be nonnegative).
One direction of div_le_iff₀ where b is allowed to be 0 (but c must be nonnegative).
See inv_anti₀ for the implication from right-to-left with one fewer assumption.
See inv_strictAnti₀ for the implication from right-to-left with one fewer assumption.
See also inv_le_of_inv_le₀ for a one-sided implication with one fewer assumption.
See also inv_lt_of_inv_lt₀ for a one-sided implication with one fewer assumption.
See also le_inv_of_le_inv₀ for a one-sided implication with one fewer assumption.
See also lt_inv_of_lt_inv₀ for a one-sided implication with one fewer assumption.
Alias of inv_neg''.
Equality holds when c ≠ 0. See mul_div_mul_left.
Equality holds when c ≠ 0. See mul_div_mul_left.
See le_inv_mul_iff₀ for a version with multiplication on the other side.
See inv_mul_le_iff₀ for a version with multiplication on the other side.
See le_mul_inv_iff₀ for a version with multiplication on the other side.
See mul_inv_le_iff₀ for a version with multiplication on the other side.
See le_div_iff₀ for a version with multiplication on the other side.
See div_le_iff₀ for a version with multiplication on the other side.
See lt_inv_mul_iff₀ for a version with multiplication on the other side.
See inv_mul_lt_iff₀ for a version with multiplication on the other side.
See lt_mul_inv_iff₀ for a version with multiplication on the other side.
See mul_inv_lt_iff₀ for a version with multiplication on the other side.
See lt_div_iff₀ for a version with multiplication on the other side.
See div_lt_iff₀ for a version with multiplication on the other side.