@@ -716,11 +716,66 @@ section GroupWithZero
716716variable [GroupWithZero G₀]
717717
718718section Preorder
719- variable [Preorder G₀] [ZeroLEOneClass G₀]
719+ variable [Preorder G₀] {a b c : G₀}
720+
721+ /-- Equality holds when `a ≠ 0`. See `mul_inv_cancel_left`. -/
722+ lemma mul_inv_left_le (hb : 0 ≤ b) : a * (a⁻¹ * b) ≤ b := by
723+ obtain rfl | ha := eq_or_ne a 0 <;> simp [*]
724+
725+ /-- Equality holds when `a ≠ 0`. See `mul_inv_cancel_left`. -/
726+ lemma le_mul_inv_left (hb : b ≤ 0 ) : b ≤ a * (a⁻¹ * b) := by
727+ obtain rfl | ha := eq_or_ne a 0 <;> simp [*]
728+
729+ /-- Equality holds when `a ≠ 0`. See `inv_mul_cancel_left`. -/
730+ lemma inv_mul_left_le (hb : 0 ≤ b) : a⁻¹ * (a * b) ≤ b := by
731+ obtain rfl | ha := eq_or_ne a 0 <;> simp [*]
732+
733+ /-- Equality holds when `a ≠ 0`. See `inv_mul_cancel_left`. -/
734+ lemma le_inv_mul_left (hb : b ≤ 0 ) : b ≤ a⁻¹ * (a * b) := by
735+ obtain rfl | ha := eq_or_ne a 0 <;> simp [*]
736+
737+ /-- Equality holds when `b ≠ 0`. See `mul_inv_cancel_right`. -/
738+ lemma mul_inv_right_le (ha : 0 ≤ a) : a * b * b⁻¹ ≤ a := by
739+ obtain rfl | hb := eq_or_ne b 0 <;> simp [*]
740+
741+ /-- Equality holds when `b ≠ 0`. See `mul_inv_cancel_right`. -/
742+ lemma le_mul_inv_right (ha : a ≤ 0 ) : a ≤ a * b * b⁻¹ := by
743+ obtain rfl | hb := eq_or_ne b 0 <;> simp [*]
744+
745+ /-- Equality holds when `b ≠ 0`. See `inv_mul_cancel_right`. -/
746+ lemma inv_mul_right_le (ha : 0 ≤ a) : a * b⁻¹ * b ≤ a := by
747+ obtain rfl | hb := eq_or_ne b 0 <;> simp [*]
748+
749+ /-- Equality holds when `b ≠ 0`. See `inv_mul_cancel_right`. -/
750+ lemma le_inv_mul_right (ha : a ≤ 0 ) : a ≤ a * b⁻¹ * b := by
751+ obtain rfl | hb := eq_or_ne b 0 <;> simp [*]
752+
753+ /-- Equality holds when `c ≠ 0`. See `mul_div_mul_right`. -/
754+ lemma mul_div_mul_right_le (h : 0 ≤ a / b) : a * c / (b * c) ≤ a / b := by
755+ obtain rfl | hc := eq_or_ne c 0
756+ · simpa
757+ · rw [mul_div_mul_right _ _ hc]
758+
759+ /-- Equality holds when `c ≠ 0`. See `mul_div_mul_right`. -/
760+ lemma le_mul_div_mul_right (h : a / b ≤ 0 ) : a / b ≤ a * c / (b * c) := by
761+ obtain rfl | hc := eq_or_ne c 0
762+ · simpa
763+ · rw [mul_div_mul_right _ _ hc]
764+
765+ end Preorder
766+
767+ section Preorder
768+ variable [Preorder G₀] [ZeroLEOneClass G₀] {a b c : G₀}
720769
721770/-- See `div_self` for the version with equality when `a ≠ 0`. -/
722771lemma div_self_le_one (a : G₀) : a / a ≤ 1 := by obtain rfl | ha := eq_or_ne a 0 <;> simp [*]
723772
773+ /-- Equality holds when `a ≠ 0`. See `mul_inv_cancel`. -/
774+ lemma mul_inv_le_one : a * a⁻¹ ≤ 1 := by simpa only [div_eq_mul_inv] using div_self_le_one a
775+
776+ /-- Equality holds when `a ≠ 0`. See `inv_mul_cancel`. -/
777+ lemma inv_mul_le_one : a⁻¹ * a ≤ 1 := by obtain rfl | ha := eq_or_ne a 0 <;> simp [*]
778+
724779end Preorder
725780
726781section PartialOrder
@@ -1236,6 +1291,24 @@ variable [MulPosStrictMono G₀]
12361291end GroupWithZero.LinearOrder
12371292
12381293section CommGroupWithZero
1294+
1295+ section Preorder
1296+ variable [CommGroupWithZero G₀] [Preorder G₀] {a b c : G₀}
1297+
1298+ /-- Equality holds when `c ≠ 0`. See `mul_div_mul_left`. -/
1299+ lemma mul_div_mul_left_le (h : 0 ≤ a / b) : c * a / (c * b) ≤ a / b := by
1300+ obtain rfl | hc := eq_or_ne c 0
1301+ · simpa
1302+ · rw [mul_div_mul_left _ _ hc]
1303+
1304+ /-- Equality holds when `c ≠ 0`. See `mul_div_mul_left`. -/
1305+ lemma le_mul_div_mul_left (h : a / b ≤ 0 ) : a / b ≤ c * a / (c * b) := by
1306+ obtain rfl | hc := eq_or_ne c 0
1307+ · simpa
1308+ · rw [mul_div_mul_left _ _ hc]
1309+
1310+ end Preorder
1311+
12391312variable [CommGroupWithZero G₀] [PartialOrder G₀] [PosMulReflectLT G₀] {a b c d : G₀}
12401313
12411314attribute [local instance ] PosMulReflectLT.toPosMulStrictMono PosMulMono.toMulPosMono
0 commit comments