definition del_locs :: "state => state"where "del_locs s \ s (| locals := Map.empty |)"
definition init_locs :: "cname => mname => state => state"where "init_locs C m s \ s (| locals := locals s ++
init_vars (map_of (lcl (the (method C m)))) |)"
text\<open>The first parameter of \<^term>\<open>set_locs\<close> is of type \<^typ>\<open>state\<close>
rather than \<^typ>\<open>locals\<close> in order to keep \<^typ>\<open>locals\<close> private.\<close> definition set_locs :: "state => state => state"where "set_locs s s' \ s' (| locals := locals s |)"
definition get_local :: "state => vname => val" (\<open>_<_>\<close> [99,0] 99) where "get_local s x \ the (locals s x)"
\<comment> \<open>local function:\<close> definition get_obj :: "state => loc => obj"where "get_obj s a \ the (heap s a)"
definition obj_class :: "state => loc => cname"where "obj_class s a \ fst (get_obj s a)"
definition get_field :: "state => loc => fname => val"where "get_field s a f \ the (snd (get_obj s a) f)"
\<comment> \<open>local function:\<close> definition hupd :: "loc => obj => state => state" (\<open>hupd'(_\<mapsto>_')\<close> [10,10] 1000) where "hupd a obj s \ s (| heap := ((heap s)(a\obj))|)"
definition lupd :: "vname => val => state => state" (\<open>lupd'(_\<mapsto>_')\<close> [10,10] 1000) where "lupd x v s \ s (| locals := ((locals s)(x\v ))|)"
definition new_obj :: "loc => cname => state => state"where "new_obj a C \ hupd(a\(C,init_vars (field C)))"
definition upd_obj :: "loc => fname => val => state => state"where "upd_obj a f v s \ let (C,fs) = the (heap s a) in hupd(a\(C,fs(f\v))) s"
definition new_Addr :: "state => val"where "new_Addr s == SOME v. (\a. v = Addr a \ (heap s) a = None) | v = Null"
subsection "Properties not used in the meta theory"
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.