@@ -9,7 +9,6 @@ theory Vanilla32
9
9
imports Word_Mem_Encoding CTypes
10
10
begin
11
11
12
-
13
12
overloading typ_info_word \<equiv> typ_info_t begin
14
13
definition
15
14
typ_info_word : "typ_info_word (w::'a::len8 word itself) \<equiv> word_tag w"
@@ -337,7 +336,7 @@ lemma ptr_typ_name [simp]:
337
336
by simp
338
337
339
338
lemma word_typ_name [ simp ]:
340
- "typ_name (typ_info_t TYPE('a::len8 word)) = '' word'' @ nat_to_bin_string (len_of TYPE('a))"
339
+ "typ_name (typ_info_t TYPE('a::len8 word)) = signed_or_unsigned_as_str TYPE('a) @ '' word'' @ nat_to_bin_string (len_of TYPE('a))"
341
340
by simp
342
341
343
342
lemma nat_to_bin_string_word_sizes [ simp ]:
@@ -357,19 +356,19 @@ lemma typ_name_words [simp]:
357
356
"typ_name (typ_info_t TYPE(16 word)) = ''word000010''"
358
357
"typ_name (typ_info_t TYPE(32 word)) = ''word0000010''"
359
358
"typ_name (typ_info_t TYPE(64 word)) = ''word00000010''"
360
- by ( auto simp : typ_uinfo_t_def )
359
+ by ( auto simp : typ_uinfo_t_def signed_or_unsigned )
361
360
362
361
lemma typ_name_swords [ simp ]:
363
- "typ_name (typ_uinfo_t TYPE(8 sword)) = ''word00010 ''"
364
- "typ_name (typ_uinfo_t TYPE(16 sword)) = ''word000010 ''"
365
- "typ_name (typ_uinfo_t TYPE(32 sword)) = ''word0000010 ''"
366
- "typ_name (typ_uinfo_t TYPE(64 sword)) = ''word00000010 ''"
362
+ "typ_name (typ_uinfo_t TYPE(8 sword)) = ''sword00010 ''"
363
+ "typ_name (typ_uinfo_t TYPE(16 sword)) = ''sword000010 ''"
364
+ "typ_name (typ_uinfo_t TYPE(32 sword)) = ''sword0000010 ''"
365
+ "typ_name (typ_uinfo_t TYPE(64 sword)) = ''sword00000010 ''"
367
366
(* these do not fire in a simple simp, because typ_info_word takes precedence (innermost term): *)
368
- "typ_name (typ_info_t TYPE(8 sword)) = ''word00010 ''"
369
- "typ_name (typ_info_t TYPE(16 sword)) = ''word000010 ''"
370
- "typ_name (typ_info_t TYPE(32 sword)) = ''word0000010 ''"
371
- "typ_name (typ_info_t TYPE(64 sword)) = ''word00000010 ''"
372
- by ( auto simp : typ_uinfo_t_def )
367
+ "typ_name (typ_info_t TYPE(8 sword)) = ''sword00010 ''"
368
+ "typ_name (typ_info_t TYPE(16 sword)) = ''sword000010 ''"
369
+ "typ_name (typ_info_t TYPE(32 sword)) = ''sword0000010 ''"
370
+ "typ_name (typ_info_t TYPE(64 sword)) = ''sword00000010 ''"
371
+ by ( auto simp : typ_uinfo_t_def signed_or_unsigned )
373
372
374
373
lemma ptr_arith [ simp ]:
375
374
"(x +\<^sub>p a = y +\<^sub>p a) = ((x::('a::c_type) ptr) = (y::'a ptr))"
0 commit comments