@@ -111,6 +111,8 @@ section monoid
111
111
theorem divp_assoc (a b : α) (u : units α) : a * b /ₚ u = a * (b /ₚ u) :=
112
112
mul_assoc _ _ _
113
113
114
+ @[simp] theorem divp_inv (x : α) (u : units α) : a /ₚ u⁻¹ = a * u := rfl
115
+
114
116
@[simp] theorem divp_mul_cancel (a : α) (u : units α) : a /ₚ u * u = a :=
115
117
(mul_assoc _ _ _).trans $ by rw [units.inv_mul, mul_one]
116
118
@@ -120,14 +122,34 @@ section monoid
120
122
@[simp] theorem divp_right_inj (u : units α) {a b : α} : a /ₚ u = b /ₚ u ↔ a = b :=
121
123
units.mul_right_inj _
122
124
123
- theorem divp_eq_one (a : α) (u : units α) : a /ₚ u = 1 ↔ a = u :=
125
+ theorem divp_divp_eq_divp_mul (x : α) (u₁ u₂ : units α) : (x /ₚ u₁) /ₚ u₂ = x /ₚ (u₂ * u₁) :=
126
+ by simp only [divp, mul_inv_rev, units.coe_mul, mul_assoc]
127
+
128
+ theorem divp_eq_iff_mul_eq (x : α) (u : units α) (y : α) : x /ₚ u = y ↔ y * u = x :=
129
+ u.mul_right_inj.symm.trans $ by rw [divp_mul_cancel]; exact ⟨eq.symm, eq.symm⟩
130
+
131
+ theorem divp_eq_one_iff_eq (a : α) (u : units α) : a /ₚ u = 1 ↔ a = u :=
124
132
(units.mul_right_inj u).symm.trans $ by rw [divp_mul_cancel, one_mul]
125
133
126
134
@[simp] theorem one_divp (u : units α) : 1 /ₚ u = ↑u⁻¹ :=
127
135
one_mul _
128
136
129
137
end monoid
130
138
139
+ section comm_monoid
140
+
141
+ variables [comm_monoid α]
142
+
143
+ theorem divp_eq_divp_iff {x y : α} {ux uy : units α} :
144
+ x /ₚ ux = y /ₚ uy ↔ x * uy = y * ux :=
145
+ by rw [divp_eq_iff_mul_eq, mul_comm, ← divp_assoc, divp_eq_iff_mul_eq, mul_comm y ux]
146
+
147
+ theorem divp_mul_divp (x y : α) (ux uy : units α) :
148
+ (x /ₚ ux) * (y /ₚ uy) = (x * y) /ₚ (ux * uy) :=
149
+ by rw [← divp_divp_eq_divp_mul, divp_assoc, mul_comm x, divp_assoc, mul_comm]
150
+
151
+ end comm_monoid
152
+
131
153
section group
132
154
variables [group α]
133
155
0 commit comments