@@ -13,26 +13,98 @@ import Mathlib.Algebra.Order.Monoid.Unbundled.Basic
1313
1414variable {M : Type *} [Monoid M] [LE M]
1515
16- theorem Units.mulLECancellable_val [MulLeftMono M] (a : Mˣ) :
17- MulLECancellable (↑a : M) := fun _ _ h ↦ by
18- simpa using mul_le_mul_left' h ↑a⁻¹
16+ namespace Units
1917
20- theorem Units.mul_le_mul_left [MulLeftMono M] (a : Mˣ) {b c : M} :
21- a * b ≤ a * c ↔ b ≤ c :=
22- a.mulLECancellable_val.mul_le_mul_iff_left
18+ section MulLeftMono
19+ variable [MulLeftMono M] (u : Mˣ) {a b : M}
2320
24- theorem IsUnit.mulLECancellable [MulLeftMono M] {a : M} (ha : IsUnit a) :
25- MulLECancellable a :=
21+ theorem mulLECancellable_val : MulLECancellable (↑u : M) := fun _ _ h ↦ by
22+ simpa using mul_le_mul_left' h ↑u⁻¹
23+
24+ private theorem mul_le_mul_iff_left : u * a ≤ u * b ↔ a ≤ b :=
25+ u.mulLECancellable_val.mul_le_mul_iff_left
26+
27+ theorem inv_mul_le_iff : u⁻¹ * a ≤ b ↔ a ≤ u * b := by
28+ rw [← u.mul_le_mul_iff_left, mul_inv_cancel_left]
29+
30+ theorem le_inv_mul_iff : a ≤ u⁻¹ * b ↔ u * a ≤ b := by
31+ rw [← u.mul_le_mul_iff_left, mul_inv_cancel_left]
32+
33+ @[simp] theorem one_le_inv : (1 : M) ≤ u⁻¹ ↔ (u : M) ≤ 1 := by
34+ rw [← u.mul_le_mul_iff_left, mul_one, mul_inv]
35+
36+ @[simp] theorem inv_le_one : u⁻¹ ≤ (1 : M) ↔ (1 : M) ≤ u := by
37+ rw [← u.mul_le_mul_iff_left, mul_one, mul_inv]
38+
39+ theorem one_le_inv_mul : 1 ≤ u⁻¹ * a ↔ u ≤ a := by
40+ rw [u.le_inv_mul_iff, mul_one]
41+
42+ theorem inv_mul_le_one : u⁻¹ * a ≤ 1 ↔ a ≤ u := by
43+ rw [u.inv_mul_le_iff, mul_one]
44+
45+ alias ⟨le_mul_of_inv_mul_le, inv_mul_le_of_le_mul⟩ := inv_mul_le_iff
46+ alias ⟨mul_le_of_le_inv_mul, le_inv_mul_of_mul_le⟩ := le_inv_mul_iff
47+ alias ⟨le_of_one_le_inv, one_le_inv_of_le⟩ := one_le_inv
48+ alias ⟨le_of_inv_le_one, inv_le_one_of_le⟩ := inv_le_one
49+ alias ⟨le_of_one_le_inv_mul, one_le_inv_mul_of_le⟩ := one_le_inv_mul
50+ alias ⟨le_of_inv_mul_le_one, inv_mul_le_one_of_le⟩ := inv_mul_le_one
51+
52+ end MulLeftMono
53+
54+ section MulRightMono
55+ variable [MulRightMono M] {a b : M} (u : Mˣ)
56+
57+ private theorem mul_le_mul_iff_right : a * u ≤ b * u ↔ a ≤ b :=
58+ ⟨(by simpa using mul_le_mul_right' · ↑u⁻¹), (mul_le_mul_right' · _)⟩
59+
60+ theorem mul_inv_le_iff : a * u⁻¹ ≤ b ↔ a ≤ b * u := by
61+ rw [← u.mul_le_mul_iff_right, u.inv_mul_cancel_right]
62+
63+ theorem le_mul_inv_iff : a ≤ b * u⁻¹ ↔ a * u ≤ b := by
64+ rw [← u.mul_le_mul_iff_right, inv_mul_cancel_right]
65+
66+ theorem one_le_mul_inv : 1 ≤ a * u⁻¹ ↔ u ≤ a := by
67+ rw [u.le_mul_inv_iff, one_mul]
68+
69+ theorem mul_inv_le_one : a * u⁻¹ ≤ 1 ↔ a ≤ u := by
70+ rw [u.mul_inv_le_iff, one_mul]
71+
72+ alias ⟨le_mul_of_mul_inv_le, mul_inv_le_of_le_mul⟩ := mul_inv_le_iff
73+ alias ⟨mul_le_of_le_mul_inv, le_mul_inv_of_mul_le⟩ := le_mul_inv_iff
74+ alias ⟨le_of_one_le_mul_inv, one_le_mul_inv_of_le⟩ := one_le_mul_inv
75+ alias ⟨le_of_mul_inv_le_one, mul_inv_le_one_of_le⟩ := mul_inv_le_one
76+
77+ end MulRightMono
78+
79+ end Units
80+
81+ namespace IsUnit
82+
83+ section MulLeftMono
84+ variable [MulLeftMono M] {a b c : M} (ha : IsUnit a)
85+
86+ include ha
87+
88+ theorem mulLECancellable : MulLECancellable a :=
2689 ha.unit.mulLECancellable_val
2790
28- theorem IsUnit.mul_le_mul_left [MulLeftMono M] {a b c : M} (ha : IsUnit a) :
29- a * b ≤ a * c ↔ b ≤ c :=
30- ha.unit.mul_le_mul_left
91+ theorem mul_le_mul_left : a * b ≤ a * c ↔ b ≤ c :=
92+ ha.unit.mul_le_mul_iff_left
93+
94+ alias ⟨le_of_mul_le_mul_left, _⟩ := mul_le_mul_left
95+
96+ end MulLeftMono
97+
98+ section MulRightMono
99+ variable [MulRightMono M] {a b c : M} (hc : IsUnit c)
100+
101+ include hc
102+
103+ theorem mul_le_mul_right : a * c ≤ b * c ↔ a ≤ b :=
104+ hc.unit.mul_le_mul_iff_right
105+
106+ alias ⟨le_of_mul_le_mul_right, _⟩ := mul_le_mul_right
31107
32- theorem Units.mul_le_mul_right [MulRightMono M] (a : Mˣ) {b c : M} :
33- b * a ≤ c * a ↔ b ≤ c :=
34- ⟨(by simpa using mul_le_mul_right' · ↑a⁻¹), (mul_le_mul_right' · _)⟩
108+ end MulRightMono
35109
36- theorem IsUnit.mul_le_mul_right [MulRightMono M] {a b c : M} (ha : IsUnit a) :
37- b * a ≤ c * a ↔ b ≤ c :=
38- ha.unit.mul_le_mul_right
110+ end IsUnit
0 commit comments