equal
deleted
inserted
replaced
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]) |