--- a/src/HOL/Imperative_HOL/Array.thy Thu Jun 01 23:22:40 2017 +0200
+++ b/src/HOL/Imperative_HOL/Array.thy Fri Jun 02 09:26:04 2017 +0200
@@ -443,14 +443,14 @@
code_printing type_constructor array \<rightharpoonup> (SML) "_/ array"
code_printing constant Array \<rightharpoonup> (SML) "raise/ (Fail/ \"bare Array\")"
-code_printing constant Array.new' \<rightharpoonup> (SML) "(fn/ ()/ =>/ Array.array/ ((_),/ (_)))"
+code_printing constant Array.new' \<rightharpoonup> (SML) "(fn/ ()/ =>/ Array.array/ (IntInf.toInt _,/ (_)))"
code_printing constant Array.of_list \<rightharpoonup> (SML) "(fn/ ()/ =>/ Array.fromList/ _)"
-code_printing constant Array.make' \<rightharpoonup> (SML) "(fn/ ()/ =>/ Array.tabulate/ ((_),/ (_)))"
-code_printing constant Array.len' \<rightharpoonup> (SML) "(fn/ ()/ =>/ Array.length/ _)"
-code_printing constant Array.nth' \<rightharpoonup> (SML) "(fn/ ()/ =>/ Array.sub/ ((_),/ (_)))"
-code_printing constant Array.upd' \<rightharpoonup> (SML) "(fn/ ()/ =>/ Array.update/ ((_),/ (_),/ (_)))"
+code_printing constant Array.make' \<rightharpoonup> (SML) "(fn/ ()/ =>/ Array.tabulate/ (IntInf.toInt _,/ _ o IntInf.fromInt))"
+code_printing constant Array.len' \<rightharpoonup> (SML) "(fn/ ()/ =>/ IntInf.fromInt (Array.length/ _))"
+code_printing constant Array.nth' \<rightharpoonup> (SML) "(fn/ ()/ =>/ Array.sub/ ((_),/ IntInf.toInt _))"
+code_printing constant Array.upd' \<rightharpoonup> (SML) "(fn/ ()/ =>/ Array.update/ ((_),/ IntInf.toInt _,/ (_)))"
code_printing constant "HOL.equal :: 'a array \<Rightarrow> 'a array \<Rightarrow> bool" \<rightharpoonup> (SML) infixl 6 "="
-
+
code_reserved SML Array
--- a/src/HOL/Imperative_HOL/Heap.thy Thu Jun 01 23:22:40 2017 +0200
+++ b/src/HOL/Imperative_HOL/Heap.thy Fri Jun 02 09:26:04 2017 +0200
@@ -32,6 +32,8 @@
instance String.literal :: heap ..
+instance char :: heap ..
+
instance typerep :: heap ..
@@ -76,6 +78,10 @@
instance ref :: (type) countable
by (rule countable_classI [of addr_of_ref]) simp
+instance array :: (type) heap ..
+instance ref :: (type) heap ..
+
+
text \<open>Syntactic convenience\<close>
setup \<open>