@@ -24,6 +24,8 @@ open_locale classical big_operators
24
24
25
25
universes u v
26
26
27
+ section comm_semiring
28
+
27
29
variables {R : Type u} [comm_semiring R] (x y z : R)
28
30
29
31
/-- The proposition that `x` and `y` are coprime, defined to be the existence of `a` and `b` such
@@ -162,3 +164,91 @@ show is_coprime x (x * k), from hk ▸ H
162
164
theorem is_coprime.map (H : is_coprime x y) {S : Type v} [comm_semiring S] (f : R →+* S) :
163
165
is_coprime (f x) (f y) :=
164
166
let ⟨a, b, h⟩ := H in ⟨f a, f b, by rw [← f.map_mul, ← f.map_mul, ← f.map_add, h, f.map_one]⟩
167
+
168
+ variables {x y z}
169
+
170
+ lemma is_coprime.of_add_mul_left_left (h : is_coprime (x + y * z) y) : is_coprime x y :=
171
+ let ⟨a, b, H⟩ := h in ⟨a, a * z + b, by simpa only [add_mul, mul_add,
172
+ add_assoc, add_comm, add_left_comm, mul_assoc, mul_comm, mul_left_comm] using H⟩
173
+
174
+ lemma is_coprime.of_add_mul_right_left (h : is_coprime (x + z * y) y) : is_coprime x y :=
175
+ by { rw mul_comm at h, exact h.of_add_mul_left_left }
176
+
177
+ lemma is_coprime.of_add_mul_left_right (h : is_coprime x (y + x * z)) : is_coprime x y :=
178
+ by { rw is_coprime_comm at h ⊢, exact h.of_add_mul_left_left }
179
+
180
+ lemma is_coprime.of_add_mul_right_right (h : is_coprime x (y + z * x)) : is_coprime x y :=
181
+ by { rw mul_comm at h, exact h.of_add_mul_left_right }
182
+
183
+ lemma is_coprime.of_mul_add_left_left (h : is_coprime (y * z + x) y) : is_coprime x y :=
184
+ by { rw add_comm at h, exact h.of_add_mul_left_left }
185
+
186
+ lemma is_coprime.of_mul_add_right_left (h : is_coprime (z * y + x) y) : is_coprime x y :=
187
+ by { rw add_comm at h, exact h.of_add_mul_right_left }
188
+
189
+ lemma is_coprime.of_mul_add_left_right (h : is_coprime x (x * z + y)) : is_coprime x y :=
190
+ by { rw add_comm at h, exact h.of_add_mul_left_right }
191
+
192
+ lemma is_coprime.of_mul_add_right_right (h : is_coprime x (z * x + y)) : is_coprime x y :=
193
+ by { rw add_comm at h, exact h.of_add_mul_right_right }
194
+
195
+ end comm_semiring
196
+
197
+ namespace is_coprime
198
+
199
+ section comm_ring
200
+
201
+ variables {R : Type u} [comm_ring R]
202
+
203
+ lemma add_mul_left_left {x y : R} (h : is_coprime x y) (z : R) : is_coprime (x + y * z) y :=
204
+ @of_add_mul_left_left R _ _ _ (-z) $
205
+ by simpa only [mul_neg_eq_neg_mul_symm, add_neg_cancel_right] using h
206
+
207
+ lemma add_mul_right_left {x y : R} (h : is_coprime x y) (z : R) : is_coprime (x + z * y) y :=
208
+ by { rw mul_comm, exact h.add_mul_left_left z }
209
+
210
+ lemma add_mul_left_right {x y : R} (h : is_coprime x y) (z : R) : is_coprime x (y + x * z) :=
211
+ by { rw is_coprime_comm, exact h.symm.add_mul_left_left z }
212
+
213
+ lemma add_mul_right_right {x y : R} (h : is_coprime x y) (z : R) : is_coprime x (y + z * x) :=
214
+ by { rw is_coprime_comm, exact h.symm.add_mul_right_left z }
215
+
216
+ lemma mul_add_left_left {x y : R} (h : is_coprime x y) (z : R) : is_coprime (y * z + x) y :=
217
+ by { rw add_comm, exact h.add_mul_left_left z }
218
+
219
+ lemma mul_add_right_left {x y : R} (h : is_coprime x y) (z : R) : is_coprime (z * y + x) y :=
220
+ by { rw add_comm, exact h.add_mul_right_left z }
221
+
222
+ lemma mul_add_left_right {x y : R} (h : is_coprime x y) (z : R) : is_coprime x (x * z + y) :=
223
+ by { rw add_comm, exact h.add_mul_left_right z }
224
+
225
+ lemma mul_add_right_right {x y : R} (h : is_coprime x y) (z : R) : is_coprime x (z * x + y) :=
226
+ by { rw add_comm, exact h.add_mul_right_right z }
227
+
228
+ lemma add_mul_left_left_iff {x y z : R} : is_coprime (x + y * z) y ↔ is_coprime x y :=
229
+ ⟨of_add_mul_left_left, λ h, h.add_mul_left_left z⟩
230
+
231
+ lemma add_mul_right_left_iff {x y z : R} : is_coprime (x + z * y) y ↔ is_coprime x y :=
232
+ ⟨of_add_mul_right_left, λ h, h.add_mul_right_left z⟩
233
+
234
+ lemma add_mul_left_right_iff {x y z : R} : is_coprime x (y + x * z) ↔ is_coprime x y :=
235
+ ⟨of_add_mul_left_right, λ h, h.add_mul_left_right z⟩
236
+
237
+ lemma add_mul_right_right_iff {x y z : R} : is_coprime x (y + z * x) ↔ is_coprime x y :=
238
+ ⟨of_add_mul_right_right, λ h, h.add_mul_right_right z⟩
239
+
240
+ lemma mul_add_left_left_iff {x y z : R} : is_coprime (y * z + x) y ↔ is_coprime x y :=
241
+ ⟨of_mul_add_left_left, λ h, h.mul_add_left_left z⟩
242
+
243
+ lemma mul_add_right_left_iff {x y z : R} : is_coprime (z * y + x) y ↔ is_coprime x y :=
244
+ ⟨of_mul_add_right_left, λ h, h.mul_add_right_left z⟩
245
+
246
+ lemma mul_add_left_right_iff {x y z : R} : is_coprime x (x * z + y) ↔ is_coprime x y :=
247
+ ⟨of_mul_add_left_right, λ h, h.mul_add_left_right z⟩
248
+
249
+ lemma mul_add_right_right_iff {x y z : R} : is_coprime x (z * x + y) ↔ is_coprime x y :=
250
+ ⟨of_mul_add_right_right, λ h, h.mul_add_right_right z⟩
251
+
252
+ end comm_ring
253
+
254
+ end is_coprime
0 commit comments