lemma char_of_integer_of_char [code abstype]: \<open>Chr (integer_of_char c) = c\<close> by (simp add: integer_of_char_def)
lemma char_of_integer_code [code]: \<open>integer_of_char (char_of_integer k) = (if 0 \<le> k \<and> k < 256 then k else k mod 256)\<close> by (simp add: integer_of_char_def char_of_integer_def integer_eq_iff integer_less_eq_iff integer_less_iff)
lemma of_char_code [code]: \<open>of_char c = of_nat (nat_of_integer (integer_of_char c))\<close> proof - have\<open>int_of_integer (of_char c) = of_char c\<close> by (cases c) simp thenshow ?thesis by (simp add: integer_of_char_def nat_of_integer_def of_nat_of_char) qed
lemma digit_0_code [code]: \<open>digit0 c \<longleftrightarrow> bit (integer_of_char c) 0\<close> by (cases c) (simp add: integer_of_char_def)
lemma digit_1_code [code]: \<open>digit1 c \<longleftrightarrow> bit (integer_of_char c) 1\<close> by (cases c) (simp add: integer_of_char_def)
lemma digit_2_code [code]: \<open>digit2 c \<longleftrightarrow> bit (integer_of_char c) 2\<close> by (cases c) (simp add: integer_of_char_def)
lemma digit_3_code [code]: \<open>digit3 c \<longleftrightarrow> bit (integer_of_char c) 3\<close> by (cases c) (simp add: integer_of_char_def)
lemma digit_4_code [code]: \<open>digit4 c \<longleftrightarrow> bit (integer_of_char c) 4\<close> by (cases c) (simp add: integer_of_char_def)
lemma digit_5_code [code]: \<open>digit5 c \<longleftrightarrow> bit (integer_of_char c) 5\<close> by (cases c) (simp add: integer_of_char_def)
lemma digit_6_code [code]: \<open>digit6 c \<longleftrightarrow> bit (integer_of_char c) 6\<close> by (cases c) (simp add: integer_of_char_def)
lemma digit_7_code [code]: \<open>digit7 c \<longleftrightarrow> bit (integer_of_char c) 7\<close> by (cases c) (simp add: integer_of_char_def)
lemma case_char_code [code]: \<open>case_char f c = f (digit0 c) (digit1 c) (digit2 c) (digit3 c) (digit4 c) (digit5 c) (digit6 c) (digit7 c)\<close> by (fact char.case_eq_if)
lemma rec_char_code [code]: \<open>rec_char f c = f (digit0 c) (digit1 c) (digit2 c) (digit3 c) (digit4 c) (digit5 c) (digit6 c) (digit7 c)\<close> by (cases c) simp
lemma char_of_code [code]: \<open>integer_of_char (char_of a) =
byte (bit a 0) (bit a 1) (bit a 2) (bit a 3) (bit a 4) (bit a 5) (bit a 6) (bit a 7)\<close> by (simp add: char_of_def integer_of_char_def)
lemma ascii_of_code [code]: \<open>integer_of_char (String.ascii_of c) = (let k = integer_of_char c in if k < 128 then k else k - 128)\<close> proof (cases \<open>of_char c < (128 :: integer)\<close>) case True moreoverhave\<open>(of_nat 0 :: integer) \<le> of_nat (of_char c)\<close> by simp thenhave\<open>(0 :: integer) \<le> of_char c\<close> by (simp only: of_nat_0 of_nat_of_char) ultimatelyshow ?thesis by (simp add: Let_def integer_of_char_def take_bit_eq_mod integer_eq_iff integer_less_eq_iff integer_less_iff) next case False thenhave\<open>(128 :: integer) \<le> of_char c\<close> by simp moreoverhave\<open>of_nat (of_char c) < (of_nat 256 :: integer)\<close> by (simp only: of_nat_less_iff) simp thenhave\<open>of_char c < (256 :: integer)\<close> by (simp add: of_nat_of_char) moreover define k :: integer where\<open>k = of_char c - 128\<close> thenhave\<open>of_char c = k + 128\<close> by simp ultimatelyshow ?thesis by (simp add: Let_def integer_of_char_def take_bit_eq_mod integer_eq_iff integer_less_eq_iff integer_less_iff) qed
lemma equal_char_code [code]: \<open>HOL.equal c d \<longleftrightarrow> integer_of_char c = integer_of_char d\<close> by (simp add: integer_of_char_def equal)
lemma less_eq_char_code [code]: \<open>c \<le> d \<longleftrightarrow> integer_of_char c \<le> integer_of_char d\<close> (is \<open>?P \<longleftrightarrow> ?Q\<close>) proof - have\<open>?P \<longleftrightarrow> of_nat (of_char c) \<le> (of_nat (of_char d) :: integer)\<close> by (simp add: less_eq_char_def) alsohave\<open>\<dots> \<longleftrightarrow> ?Q\<close> by (simp add: of_nat_of_char integer_of_char_def) finallyshow ?thesis . qed
lemma less_char_code [code]: \<open>c < d \<longleftrightarrow> integer_of_char c < integer_of_char d\<close> (is \<open>?P \<longleftrightarrow> ?Q\<close>) proof - have\<open>?P \<longleftrightarrow> of_nat (of_char c) < (of_nat (of_char d) :: integer)\<close> by (simp add: less_char_def) alsohave\<open>\<dots> \<longleftrightarrow> ?Q\<close> by (simp add: of_nat_of_char integer_of_char_def) finallyshow ?thesis . qed
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.