src/HOL/Library/Code_Abstract_Char.thy
changeset 75666 714528f42922
parent 75662 ed15f2cd4f7d
child 75937 02b18f59f903
equal deleted inserted replaced
75665:707748d3d186 75666:714528f42922
    15 lemma char_of_integer_of_char [code abstype]:
    15 lemma char_of_integer_of_char [code abstype]:
    16   \<open>Chr (integer_of_char c) = c\<close>
    16   \<open>Chr (integer_of_char c) = c\<close>
    17   by (simp add: integer_of_char_def)
    17   by (simp add: integer_of_char_def)
    18 
    18 
    19 lemma char_of_integer_code [code]:
    19 lemma char_of_integer_code [code]:
    20   \<open>integer_of_char (char_of_integer k) = (if 0 \<le> k \<and> k < 256 then k else take_bit 8 k)\<close>
    20   \<open>integer_of_char (char_of_integer k) = (if 0 \<le> k \<and> k < 256 then k else k mod 256)\<close>
    21   by (simp add: integer_of_char_def char_of_integer_def take_bit_eq_mod unique_euclidean_semiring_numeral_class.mod_less)
    21   by (simp add: integer_of_char_def char_of_integer_def take_bit_eq_mod unique_euclidean_semiring_numeral_class.mod_less)
    22 
    22 
    23 lemma of_char_code [code]:
    23 lemma of_char_code [code]:
    24   \<open>of_char c = of_nat (nat_of_integer (integer_of_char c))\<close>
    24   \<open>of_char c = of_nat (nat_of_integer (integer_of_char c))\<close>
    25 proof -
    25 proof -
    47   by simp
    47   by simp
    48 
    48 
    49 lemma Char_code [code]:
    49 lemma Char_code [code]:
    50   \<open>integer_of_char (Char b0 b1 b2 b3 b4 b5 b6 b7) = byte b0 b1 b2 b3 b4 b5 b6 b7\<close>
    50   \<open>integer_of_char (Char b0 b1 b2 b3 b4 b5 b6 b7) = byte b0 b1 b2 b3 b4 b5 b6 b7\<close>
    51   by (simp add: integer_of_char_def)
    51   by (simp add: integer_of_char_def)
    52                      
    52 
    53 lemma digit_0_code [code]:
    53 lemma digit_0_code [code]:
    54   \<open>digit0 c \<longleftrightarrow> bit (integer_of_char c) 0\<close>
    54   \<open>digit0 c \<longleftrightarrow> bit (integer_of_char c) 0\<close>
    55   by (cases c) (simp add: integer_of_char_def)
    55   by (cases c) (simp add: integer_of_char_def)
    56 
    56 
    57 lemma digit_1_code [code]:
    57 lemma digit_1_code [code]: