src/HOL/RealDef.thy
changeset 41550 efa734d9b221
parent 41231 2e901158675e
child 41792 ff3cb0c418b7
equal deleted inserted replaced
41549:2c65ad10bec8 41550:efa734d9b221
  1198 done
  1198 done
  1199 
  1199 
  1200 lemma real_of_int_div_aux: "d ~= 0 ==> (real (x::int)) / (real d) = 
  1200 lemma real_of_int_div_aux: "d ~= 0 ==> (real (x::int)) / (real d) = 
  1201     real (x div d) + (real (x mod d)) / (real d)"
  1201     real (x div d) + (real (x mod d)) / (real d)"
  1202 proof -
  1202 proof -
  1203   assume "d ~= 0"
  1203   assume d: "d ~= 0"
  1204   have "x = (x div d) * d + x mod d"
  1204   have "x = (x div d) * d + x mod d"
  1205     by auto
  1205     by auto
  1206   then have "real x = real (x div d) * real d + real(x mod d)"
  1206   then have "real x = real (x div d) * real d + real(x mod d)"
  1207     by (simp only: real_of_int_mult [THEN sym] real_of_int_add [THEN sym])
  1207     by (simp only: real_of_int_mult [THEN sym] real_of_int_add [THEN sym])
  1208   then have "real x / real d = ... / real d"
  1208   then have "real x / real d = ... / real d"
  1209     by simp
  1209     by simp
  1210   then show ?thesis
  1210   then show ?thesis
  1211     by (auto simp add: add_divide_distrib algebra_simps prems)
  1211     by (auto simp add: add_divide_distrib algebra_simps d)
  1212 qed
  1212 qed
  1213 
  1213 
  1214 lemma real_of_int_div: "(d::int) ~= 0 ==> d dvd n ==>
  1214 lemma real_of_int_div: "(d::int) ~= 0 ==> d dvd n ==>
  1215     real(n div d) = real n / real d"
  1215     real(n div d) = real n / real d"
  1216   apply (frule real_of_int_div_aux [of d n])
  1216   apply (frule real_of_int_div_aux [of d n])
  1351 done
  1351 done
  1352 
  1352 
  1353 lemma real_of_nat_div_aux: "0 < d ==> (real (x::nat)) / (real d) = 
  1353 lemma real_of_nat_div_aux: "0 < d ==> (real (x::nat)) / (real d) = 
  1354     real (x div d) + (real (x mod d)) / (real d)"
  1354     real (x div d) + (real (x mod d)) / (real d)"
  1355 proof -
  1355 proof -
  1356   assume "0 < d"
  1356   assume d: "0 < d"
  1357   have "x = (x div d) * d + x mod d"
  1357   have "x = (x div d) * d + x mod d"
  1358     by auto
  1358     by auto
  1359   then have "real x = real (x div d) * real d + real(x mod d)"
  1359   then have "real x = real (x div d) * real d + real(x mod d)"
  1360     by (simp only: real_of_nat_mult [THEN sym] real_of_nat_add [THEN sym])
  1360     by (simp only: real_of_nat_mult [THEN sym] real_of_nat_add [THEN sym])
  1361   then have "real x / real d = \<dots> / real d"
  1361   then have "real x / real d = \<dots> / real d"
  1362     by simp
  1362     by simp
  1363   then show ?thesis
  1363   then show ?thesis
  1364     by (auto simp add: add_divide_distrib algebra_simps prems)
  1364     by (auto simp add: add_divide_distrib algebra_simps d)
  1365 qed
  1365 qed
  1366 
  1366 
  1367 lemma real_of_nat_div: "0 < (d::nat) ==> d dvd n ==>
  1367 lemma real_of_nat_div: "0 < (d::nat) ==> d dvd n ==>
  1368     real(n div d) = real n / real d"
  1368     real(n div d) = real n / real d"
  1369   apply (frule real_of_nat_div_aux [of d n])
  1369   apply (frule real_of_nat_div_aux [of d n])