diff -r 66b62cbeaab3 -r 6539627881e8 src/HOL/NanoJava/State.thy --- a/src/HOL/NanoJava/State.thy Mon Sep 10 13:57:57 2001 +0200 +++ b/src/HOL/NanoJava/State.thy Mon Sep 10 17:35:22 2001 +0200 @@ -17,17 +17,17 @@ typedecl loc datatype val - = Null (* null reference *) - | Addr loc (* address, i.e. location of object *) + = Null --{* null reference *} + | Addr loc --{* address, i.e. location of object *} types fields - = "(vnam \ val)" + = "(fname \ val)" obj = "cname \ fields" translations - "fields" \ (type)"vnam \ val option" + "fields" \ (type)"fname => val option" "obj" \ (type)"cname \ fields" constdefs @@ -67,35 +67,33 @@ get_local :: "state => vname => val" ("_<_>" [99,0] 99) "get_local s x \ the (locals s x)" -(* local function: *) +--{* local function: *} get_obj :: "state => loc => obj" "get_obj s a \ the (heap s a)" obj_class :: "state => loc => cname" "obj_class s a \ fst (get_obj s a)" - get_field :: "state => loc => vnam => val" + get_field :: "state => loc => fname => val" "get_field s a f \ the (snd (get_obj s a) f)" +--{* local function: *} + hupd :: "loc => obj => state => state" ("hupd'(_|->_')" [10,10] 1000) + "hupd a obj s \ s (| heap := ((heap s)(a\obj))|)" + + lupd :: "vname => val => state => state" ("lupd'(_|->_')" [10,10] 1000) + "lupd x v s \ s (| locals := ((locals s)(x\v ))|)" + +syntax (xsymbols) + hupd :: "loc => obj => state => state" ("hupd'(_\_')" [10,10] 1000) + lupd :: "vname => val => state => state" ("lupd'(_\_')" [10,10] 1000) + constdefs -(* local function: *) - hupd :: "loc \ obj \ state \ state" ("hupd'(_|->_')" [10,10] 1000) - "hupd a obj s \ s (| heap := ((heap s)(a\obj))|)" - - lupd :: "vname \ val \ state \ state" ("lupd'(_|->_')" [10,10] 1000) - "lupd x v s \ s (| locals := ((locals s)(x\v ))|)" - -syntax (xsymbols) - hupd :: "loc \ obj \ state \ state" ("hupd'(_\_')" [10,10] 1000) - lupd :: "vname \ val \ state \ state" ("lupd'(_\_')" [10,10] 1000) - -constdefs - - new_obj :: "loc \ cname \ state \ state" + new_obj :: "loc => cname => state => state" "new_obj a C \ hupd(a\(C,init_vars (field C)))" - upd_obj :: "loc \ vnam \ val \ state \ state" + upd_obj :: "loc => fname => val => state => state" "upd_obj a f v s \ let (C,fs) = the (heap s a) in hupd(a\(C,fs(f\v))) s" new_Addr :: "state => val"