equal
deleted
inserted
replaced
145 qed |
145 qed |
146 |
146 |
147 lemma one_dvd [simp]: "1 dvd a" |
147 lemma one_dvd [simp]: "1 dvd a" |
148 by (auto intro!: dvdI) |
148 by (auto intro!: dvdI) |
149 |
149 |
150 lemma dvd_mult: "a dvd c \<Longrightarrow> a dvd (b * c)" |
150 lemma dvd_mult[simp]: "a dvd c \<Longrightarrow> a dvd (b * c)" |
151 by (auto intro!: mult_left_commute dvdI elim!: dvdE) |
151 by (auto intro!: mult_left_commute dvdI elim!: dvdE) |
152 |
152 |
153 lemma dvd_mult2: "a dvd b \<Longrightarrow> a dvd (b * c)" |
153 lemma dvd_mult2[simp]: "a dvd b \<Longrightarrow> a dvd (b * c)" |
154 apply (subst mult_commute) |
154 apply (subst mult_commute) |
155 apply (erule dvd_mult) |
155 apply (erule dvd_mult) |
156 done |
156 done |
157 |
157 |
158 lemma dvd_triv_right [simp]: "a dvd b * a" |
158 lemma dvd_triv_right [simp]: "a dvd b * a" |
160 |
160 |
161 lemma dvd_triv_left [simp]: "a dvd a * b" |
161 lemma dvd_triv_left [simp]: "a dvd a * b" |
162 by (rule dvd_mult2) (rule dvd_refl) |
162 by (rule dvd_mult2) (rule dvd_refl) |
163 |
163 |
164 lemma mult_dvd_mono: |
164 lemma mult_dvd_mono: |
165 assumes ab: "a dvd b" |
165 assumes "a dvd b" |
166 and "cd": "c dvd d" |
166 and "c dvd d" |
167 shows "a * c dvd b * d" |
167 shows "a * c dvd b * d" |
168 proof - |
168 proof - |
169 from ab obtain b' where "b = a * b'" .. |
169 from `a dvd b` obtain b' where "b = a * b'" .. |
170 moreover from "cd" obtain d' where "d = c * d'" .. |
170 moreover from `c dvd d` obtain d' where "d = c * d'" .. |
171 ultimately have "b * d = (a * c) * (b' * d')" by (simp add: mult_ac) |
171 ultimately have "b * d = (a * c) * (b' * d')" by (simp add: mult_ac) |
172 then show ?thesis .. |
172 then show ?thesis .. |
173 qed |
173 qed |
174 |
174 |
175 lemma dvd_mult_left: "a * b dvd c \<Longrightarrow> a dvd c" |
175 lemma dvd_mult_left: "a * b dvd c \<Longrightarrow> a dvd c" |
308 then obtain k where "y = x * k" .. |
308 then obtain k where "y = x * k" .. |
309 then have "y = - x * - k" by simp |
309 then have "y = - x * - k" by simp |
310 then show "- x dvd y" .. |
310 then show "- x dvd y" .. |
311 qed |
311 qed |
312 |
312 |
313 lemma dvd_diff: "x dvd y \<Longrightarrow> x dvd z \<Longrightarrow> x dvd (y - z)" |
313 lemma dvd_diff[simp]: "x dvd y \<Longrightarrow> x dvd z \<Longrightarrow> x dvd (y - z)" |
314 by (simp add: diff_minus dvd_add dvd_minus_iff) |
314 by (simp add: diff_minus dvd_minus_iff) |
315 |
315 |
316 end |
316 end |
317 |
317 |
318 class ring_no_zero_divisors = ring + no_zero_divisors |
318 class ring_no_zero_divisors = ring + no_zero_divisors |
319 begin |
319 begin |
380 then show "a = b \<or> a = - b" |
380 then show "a = b \<or> a = - b" |
381 by (simp add: right_minus_eq eq_neg_iff_add_eq_0) |
381 by (simp add: right_minus_eq eq_neg_iff_add_eq_0) |
382 next |
382 next |
383 assume "a = b \<or> a = - b" |
383 assume "a = b \<or> a = - b" |
384 then show "a * a = b * b" by auto |
384 then show "a * a = b * b" by auto |
|
385 qed |
|
386 |
|
387 lemma dvd_mult_cancel_right [simp]: |
|
388 "a * c dvd b * c \<longleftrightarrow> c = 0 \<or> a dvd b" |
|
389 proof - |
|
390 have "a * c dvd b * c \<longleftrightarrow> (\<exists>k. b * c = (a * k) * c)" |
|
391 unfolding dvd_def by (simp add: mult_ac) |
|
392 also have "(\<exists>k. b * c = (a * k) * c) \<longleftrightarrow> c = 0 \<or> a dvd b" |
|
393 unfolding dvd_def by simp |
|
394 finally show ?thesis . |
|
395 qed |
|
396 |
|
397 lemma dvd_mult_cancel_left [simp]: |
|
398 "c * a dvd c * b \<longleftrightarrow> c = 0 \<or> a dvd b" |
|
399 proof - |
|
400 have "c * a dvd c * b \<longleftrightarrow> (\<exists>k. b * c = (a * k) * c)" |
|
401 unfolding dvd_def by (simp add: mult_ac) |
|
402 also have "(\<exists>k. b * c = (a * k) * c) \<longleftrightarrow> c = 0 \<or> a dvd b" |
|
403 unfolding dvd_def by simp |
|
404 finally show ?thesis . |
385 qed |
405 qed |
386 |
406 |
387 end |
407 end |
388 |
408 |
389 class division_ring = ring_1 + inverse + |
409 class division_ring = ring_1 + inverse + |