src/HOL/Fields.thy
changeset 56409 36489d77c484
parent 56365 713f9b9a7e51
child 56410 a14831ac3023
equal deleted inserted replaced
56408:3610e0a7693c 56409:36489d77c484
   150   by (simp add: divide_inverse nonzero_inverse_minus_eq)
   150   by (simp add: divide_inverse nonzero_inverse_minus_eq)
   151 
   151 
   152 lemma nonzero_minus_divide_divide: "b \<noteq> 0 ==> (-a) / (-b) = a / b"
   152 lemma nonzero_minus_divide_divide: "b \<noteq> 0 ==> (-a) / (-b) = a / b"
   153   by (simp add: divide_inverse nonzero_inverse_minus_eq)
   153   by (simp add: divide_inverse nonzero_inverse_minus_eq)
   154 
   154 
   155 lemma divide_minus_left [simp]: "(-a) / b = - (a / b)"
   155 lemma divide_minus_left: "(-a) / b = - (a / b)"
   156   by (simp add: divide_inverse)
   156   by (simp add: divide_inverse)
   157 
   157 
   158 lemma diff_divide_distrib: "(a - b) / c = a / c - b / c"
   158 lemma diff_divide_distrib: "(a - b) / c = a / c - b / c"
   159   using add_divide_distrib [of a "- b" c] by simp
   159   using add_divide_distrib [of a "- b" c] by (simp add: divide_inverse)
   160 
   160 
   161 lemma nonzero_eq_divide_eq [field_simps]: "c \<noteq> 0 \<Longrightarrow> a = b / c \<longleftrightarrow> a * c = b"
   161 lemma nonzero_eq_divide_eq [field_simps]: "c \<noteq> 0 \<Longrightarrow> a = b / c \<longleftrightarrow> a * c = b"
   162 proof -
   162 proof -
   163   assume [simp]: "c \<noteq> 0"
   163   assume [simp]: "c \<noteq> 0"
   164   have "a = b / c \<longleftrightarrow> a * c = (b / c) * c" by simp
   164   have "a = b / c \<longleftrightarrow> a * c = (b / c) * c" by simp
   406 
   406 
   407 lemma minus_divide_right:
   407 lemma minus_divide_right:
   408   "- (a / b) = a / - b"
   408   "- (a / b) = a / - b"
   409   by (simp add: divide_inverse)
   409   by (simp add: divide_inverse)
   410 
   410 
   411 lemma divide_minus_right [simp]:
   411 lemma divide_minus_right:
   412   "a / - b = - (a / b)"
   412   "a / - b = - (a / b)"
   413   by (simp add: divide_inverse)
   413   by (simp add: divide_inverse)
   414 
   414 
   415 lemma minus_divide_divide:
   415 lemma minus_divide_divide:
   416   "(- a) / (- b) = a / b"
   416   "(- a) / (- b) = a / b"
  1043 by (force simp add: divide_strict_right_mono le_less)
  1043 by (force simp add: divide_strict_right_mono le_less)
  1044 
  1044 
  1045 lemma divide_right_mono_neg: "a <= b 
  1045 lemma divide_right_mono_neg: "a <= b 
  1046     ==> c <= 0 ==> b / c <= a / c"
  1046     ==> c <= 0 ==> b / c <= a / c"
  1047 apply (drule divide_right_mono [of _ _ "- c"])
  1047 apply (drule divide_right_mono [of _ _ "- c"])
  1048 apply auto
  1048 apply (auto simp: divide_minus_right)
  1049 done
  1049 done
  1050 
  1050 
  1051 lemma divide_left_mono_neg: "a <= b 
  1051 lemma divide_left_mono_neg: "a <= b 
  1052     ==> c <= 0 ==> 0 < a * b ==> c / a <= c / b"
  1052     ==> c <= 0 ==> 0 < a * b ==> c / a <= c / b"
  1053   apply (drule divide_left_mono [of _ _ "- c"])
  1053   apply (drule divide_left_mono [of _ _ "- c"])
  1054   apply (auto simp add: mult_commute)
  1054   apply (auto simp add: divide_minus_left mult_commute)
  1055 done
  1055 done
  1056 
  1056 
  1057 lemma inverse_le_iff:
  1057 lemma inverse_le_iff:
  1058   "inverse a \<le> inverse b \<longleftrightarrow> (0 < a * b \<longrightarrow> b \<le> a) \<and> (a * b \<le> 0 \<longrightarrow> a \<le> b)"
  1058   "inverse a \<le> inverse b \<longleftrightarrow> (0 < a * b \<longrightarrow> b \<le> a) \<and> (a * b \<le> 0 \<longrightarrow> a \<le> b)"
  1059 proof -
  1059 proof -