equal
deleted
inserted
replaced
150 lemma floor_unique_iff: |
150 lemma floor_unique_iff: |
151 fixes x :: "'a::floor_ceiling" |
151 fixes x :: "'a::floor_ceiling" |
152 shows "\<lfloor>x\<rfloor> = a \<longleftrightarrow> of_int a \<le> x \<and> x < of_int a + 1" |
152 shows "\<lfloor>x\<rfloor> = a \<longleftrightarrow> of_int a \<le> x \<and> x < of_int a + 1" |
153 using floor_correct floor_unique by auto |
153 using floor_correct floor_unique by auto |
154 |
154 |
155 lemma of_int_floor_le: "of_int (floor x) \<le> x" |
155 lemma of_int_floor_le [simp]: "of_int (floor x) \<le> x" |
156 using floor_correct .. |
156 using floor_correct .. |
157 |
157 |
158 lemma le_floor_iff: "z \<le> floor x \<longleftrightarrow> of_int z \<le> x" |
158 lemma le_floor_iff: "z \<le> floor x \<longleftrightarrow> of_int z \<le> x" |
159 proof |
159 proof |
160 assume "z \<le> floor x" |
160 assume "z \<le> floor x" |
379 |
379 |
380 notation (xsymbols) |
380 notation (xsymbols) |
381 ceiling ("\<lceil>_\<rceil>") |
381 ceiling ("\<lceil>_\<rceil>") |
382 |
382 |
383 lemma ceiling_correct: "of_int (ceiling x) - 1 < x \<and> x \<le> of_int (ceiling x)" |
383 lemma ceiling_correct: "of_int (ceiling x) - 1 < x \<and> x \<le> of_int (ceiling x)" |
384 unfolding ceiling_def using floor_correct [of "- x"] by simp |
384 unfolding ceiling_def using floor_correct [of "- x"] by (simp add: le_minus_iff) |
385 |
385 |
386 lemma ceiling_unique: "\<lbrakk>of_int z - 1 < x; x \<le> of_int z\<rbrakk> \<Longrightarrow> ceiling x = z" |
386 lemma ceiling_unique: "\<lbrakk>of_int z - 1 < x; x \<le> of_int z\<rbrakk> \<Longrightarrow> ceiling x = z" |
387 unfolding ceiling_def using floor_unique [of "- z" "- x"] by simp |
387 unfolding ceiling_def using floor_unique [of "- z" "- x"] by simp |
388 |
388 |
389 lemma le_of_int_ceiling: "x \<le> of_int (ceiling x)" |
389 lemma le_of_int_ceiling [simp]: "x \<le> of_int (ceiling x)" |
390 using ceiling_correct .. |
390 using ceiling_correct .. |
391 |
391 |
392 lemma ceiling_le_iff: "ceiling x \<le> z \<longleftrightarrow> x \<le> of_int z" |
392 lemma ceiling_le_iff: "ceiling x \<le> z \<longleftrightarrow> x \<le> of_int z" |
393 unfolding ceiling_def using le_floor_iff [of "- z" "- x"] by auto |
393 unfolding ceiling_def using le_floor_iff [of "- z" "- x"] by auto |
394 |
394 |
492 lemma floor_le_ceiling [simp]: "floor x \<le> ceiling x" by (simp add: ceiling_altdef) |
492 lemma floor_le_ceiling [simp]: "floor x \<le> ceiling x" by (simp add: ceiling_altdef) |
493 |
493 |
494 text \<open>Addition and subtraction of integers\<close> |
494 text \<open>Addition and subtraction of integers\<close> |
495 |
495 |
496 lemma ceiling_add_of_int [simp]: "ceiling (x + of_int z) = ceiling x + z" |
496 lemma ceiling_add_of_int [simp]: "ceiling (x + of_int z) = ceiling x + z" |
497 using ceiling_correct [of x] by (simp add: ceiling_unique) |
497 using ceiling_correct [of x] by (simp add: ceiling_def) |
498 |
498 |
499 lemma ceiling_add_numeral [simp]: |
499 lemma ceiling_add_numeral [simp]: |
500 "ceiling (x + numeral v) = ceiling x + numeral v" |
500 "ceiling (x + numeral v) = ceiling x + numeral v" |
501 using ceiling_add_of_int [of x "numeral v"] by simp |
501 using ceiling_add_of_int [of x "numeral v"] by simp |
502 |
502 |