equal
deleted
inserted
replaced
228 by (force dest: inverse_zero_imp_zero) |
228 by (force dest: inverse_zero_imp_zero) |
229 |
229 |
230 lemma inverse_minus_eq [simp]: |
230 lemma inverse_minus_eq [simp]: |
231 "inverse(-a) = -inverse(a::'a::{division_ring,division_by_zero})" |
231 "inverse(-a) = -inverse(a::'a::{division_ring,division_by_zero})" |
232 proof cases |
232 proof cases |
233 assume "a=0" thus ?thesis by (simp add: inverse_zero) |
233 assume "a=0" thus ?thesis by simp |
234 next |
234 next |
235 assume "a\<noteq>0" |
235 assume "a\<noteq>0" |
236 thus ?thesis by (simp add: nonzero_inverse_minus_eq) |
236 thus ?thesis by (simp add: nonzero_inverse_minus_eq) |
237 qed |
237 qed |
238 |
238 |
281 because the latter are covered by a simproc. *} |
281 because the latter are covered by a simproc. *} |
282 |
282 |
283 lemma mult_divide_mult_cancel_left: |
283 lemma mult_divide_mult_cancel_left: |
284 "c\<noteq>0 ==> (c*a) / (c*b) = a / (b::'a::{field,division_by_zero})" |
284 "c\<noteq>0 ==> (c*a) / (c*b) = a / (b::'a::{field,division_by_zero})" |
285 apply (cases "b = 0") |
285 apply (cases "b = 0") |
286 apply (simp_all add: nonzero_mult_divide_mult_cancel_left) |
286 apply simp_all |
287 done |
287 done |
288 |
288 |
289 lemma mult_divide_mult_cancel_right: |
289 lemma mult_divide_mult_cancel_right: |
290 "c\<noteq>0 ==> (a*c) / (b*c) = a / (b::'a::{field,division_by_zero})" |
290 "c\<noteq>0 ==> (a*c) / (b*c) = a / (b::'a::{field,division_by_zero})" |
291 apply (cases "b = 0") |
291 apply (cases "b = 0") |
292 apply (simp_all add: nonzero_mult_divide_mult_cancel_right) |
292 apply simp_all |
293 done |
293 done |
294 |
294 |
295 lemma divide_divide_eq_right [simp,noatp]: |
295 lemma divide_divide_eq_right [simp,noatp]: |
296 "a / (b/c) = (a*c) / (b::'a::{field,division_by_zero})" |
296 "a / (b/c) = (a*c) / (b::'a::{field,division_by_zero})" |
297 by (simp add: divide_inverse mult_ac) |
297 by (simp add: divide_inverse mult_ac) |
337 |
337 |
338 lemma positive_imp_inverse_positive: |
338 lemma positive_imp_inverse_positive: |
339 assumes a_gt_0: "0 < a" shows "0 < inverse (a::'a::linordered_field)" |
339 assumes a_gt_0: "0 < a" shows "0 < inverse (a::'a::linordered_field)" |
340 proof - |
340 proof - |
341 have "0 < a * inverse a" |
341 have "0 < a * inverse a" |
342 by (simp add: a_gt_0 [THEN order_less_imp_not_eq2] zero_less_one) |
342 by (simp add: a_gt_0 [THEN order_less_imp_not_eq2]) |
343 thus "0 < inverse a" |
343 thus "0 < inverse a" |
344 by (simp add: a_gt_0 [THEN order_less_not_sym] zero_less_mult_iff) |
344 by (simp add: a_gt_0 [THEN order_less_not_sym] zero_less_mult_iff) |
345 qed |
345 qed |
346 |
346 |
347 lemma negative_imp_inverse_negative: |
347 lemma negative_imp_inverse_negative: |
522 "(inverse x = 1) = (x = (1::'a::{field,division_by_zero}))" |
522 "(inverse x = 1) = (x = (1::'a::{field,division_by_zero}))" |
523 by (insert inverse_eq_iff_eq [of x 1], simp) |
523 by (insert inverse_eq_iff_eq [of x 1], simp) |
524 |
524 |
525 lemma one_le_inverse_iff: |
525 lemma one_le_inverse_iff: |
526 "(1 \<le> inverse x) = (0 < x & x \<le> (1::'a::{linordered_field,division_by_zero}))" |
526 "(1 \<le> inverse x) = (0 < x & x \<le> (1::'a::{linordered_field,division_by_zero}))" |
527 by (force simp add: order_le_less one_less_inverse_iff zero_less_one |
527 by (force simp add: order_le_less one_less_inverse_iff) |
528 eq_commute [of 1]) |
|
529 |
528 |
530 lemma inverse_less_1_iff: |
529 lemma inverse_less_1_iff: |
531 "(inverse x < 1) = (x \<le> 0 | 1 < (x::'a::{linordered_field,division_by_zero}))" |
530 "(inverse x < 1) = (x \<le> 0 | 1 < (x::'a::{linordered_field,division_by_zero}))" |
532 by (simp add: linorder_not_le [symmetric] one_le_inverse_iff) |
531 by (simp add: linorder_not_le [symmetric] one_le_inverse_iff) |
533 |
532 |