src/HOL/Analysis/Polytope.thy
changeset 64240 eabf80376aab
parent 63967 2aa42596edc3
child 64267 b9a1486e79be
equal deleted inserted replaced
64239:de5cd9217d4c 64240:eabf80376aab
  2601     let ?n = "of_int (floor (x/a)) + 1"
  2601     let ?n = "of_int (floor (x/a)) + 1"
  2602     have x: "x < ?n * a"
  2602     have x: "x < ?n * a"
  2603       by (meson \<open>0 < a\<close> divide_less_eq floor_unique_iff)
  2603       by (meson \<open>0 < a\<close> divide_less_eq floor_unique_iff)
  2604     have "?n * a \<le> a + x"
  2604     have "?n * a \<le> a + x"
  2605       apply (simp add: algebra_simps)
  2605       apply (simp add: algebra_simps)
  2606       by (metis \<open>0 < a\<close> floor_correct less_irrefl nonzero_mult_divide_cancel_left real_mult_le_cancel_iff2 times_divide_eq_right)
  2606       by (metis \<open>0 < a\<close> floor_correct less_irrefl nonzero_mult_div_cancel_left real_mult_le_cancel_iff2 times_divide_eq_right)
  2607     also have "... < y"
  2607     also have "... < y"
  2608       by (rule 1)
  2608       by (rule 1)
  2609     finally have "?n * a < y" .
  2609     finally have "?n * a < y" .
  2610     with x show ?thesis
  2610     with x show ?thesis
  2611       using Ints_1 Ints_add Ints_of_int that by blast
  2611       using Ints_1 Ints_add Ints_of_int that by blast
  2614     let ?n = "of_int (floor (y/a)) + 1"
  2614     let ?n = "of_int (floor (y/a)) + 1"
  2615     have y: "y < ?n * a"
  2615     have y: "y < ?n * a"
  2616       by (meson \<open>0 < a\<close> divide_less_eq floor_unique_iff)
  2616       by (meson \<open>0 < a\<close> divide_less_eq floor_unique_iff)
  2617     have "?n * a \<le> a + y"
  2617     have "?n * a \<le> a + y"
  2618       apply (simp add: algebra_simps)
  2618       apply (simp add: algebra_simps)
  2619       by (metis \<open>0 < a\<close> floor_correct less_irrefl nonzero_mult_divide_cancel_left real_mult_le_cancel_iff2 times_divide_eq_right)
  2619       by (metis \<open>0 < a\<close> floor_correct less_irrefl nonzero_mult_div_cancel_left real_mult_le_cancel_iff2 times_divide_eq_right)
  2620     also have "... < x"
  2620     also have "... < x"
  2621       by (rule 2)
  2621       by (rule 2)
  2622     finally have "?n * a < x" .
  2622     finally have "?n * a < x" .
  2623     then show ?thesis
  2623     then show ?thesis
  2624       using Ints_1 Ints_add Ints_of_int that y by blast
  2624       using Ints_1 Ints_add Ints_of_int that y by blast