src/HOL/Imperative_HOL/Heap_Monad.thy
changeset 37724 6607ccf77946
parent 37709 70fafefbcc98
child 37754 683d1e1bc234
equal deleted inserted replaced
37723:831b3eb7ed8e 37724:6607ccf77946
   347 
   347 
   348 abbreviation "MREC == mrec.MREC"
   348 abbreviation "MREC == mrec.MREC"
   349 lemmas MREC_rule = mrec.MREC_rule
   349 lemmas MREC_rule = mrec.MREC_rule
   350 lemmas MREC_pinduct = mrec.MREC_pinduct
   350 lemmas MREC_pinduct = mrec.MREC_pinduct
   351 
   351 
   352 hide_const (open) heap execute
       
   353 
       
   354 
   352 
   355 subsection {* Code generator setup *}
   353 subsection {* Code generator setup *}
   356 
   354 
   357 subsubsection {* Logical intermediate layer *}
   355 subsubsection {* Logical intermediate layer *}
   358 
   356 
   362 lemma raise_raise' [code_inline]:
   360 lemma raise_raise' [code_inline]:
   363   "raise s = raise' (STR s)"
   361   "raise s = raise' (STR s)"
   364   by simp
   362   by simp
   365 
   363 
   366 code_datatype raise' -- {* avoid @{const "Heap"} formally *}
   364 code_datatype raise' -- {* avoid @{const "Heap"} formally *}
   367 
       
   368 hide_const (open) raise'
       
   369 
   365 
   370 
   366 
   371 subsubsection {* SML and OCaml *}
   367 subsubsection {* SML and OCaml *}
   372 
   368 
   373 code_type Heap (SML "unit/ ->/ _")
   369 code_type Heap (SML "unit/ ->/ _")
   491 code_type Heap (Haskell "Heap.ST/ Heap.RealWorld/ _")
   487 code_type Heap (Haskell "Heap.ST/ Heap.RealWorld/ _")
   492 code_monad "op \<guillemotright>=" Haskell
   488 code_monad "op \<guillemotright>=" Haskell
   493 code_const return (Haskell "return")
   489 code_const return (Haskell "return")
   494 code_const Heap_Monad.raise' (Haskell "error/ _")
   490 code_const Heap_Monad.raise' (Haskell "error/ _")
   495 
   491 
       
   492 hide_const (open) Heap heap execute raise'
       
   493 
   496 end
   494 end