diff -r b95d12325b51 -r 2950128b8206 src/HOL/MicroJava/Comp/DefsComp.thy --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/HOL/MicroJava/Comp/DefsComp.thy Wed Oct 23 16:10:02 2002 +0200 @@ -0,0 +1,76 @@ +(* Title: HOL/MicroJava/Comp/DefsComp.thy + ID: $Id$ + Author: Martin Strecker + Copyright GPL 2002 +*) + +(* Definitions for accessing parts of methods, states etc. *) + +theory DefsComp = JVMExec: + + + +constdefs + method_rT :: "cname \ ty \ 'c \ ty" + "method_rT mtd == (fst (snd mtd))" + + +constdefs +(* g = get *) + gx :: "xstate \ val option" "gx \ fst" + gs :: "xstate \ state" "gs \ snd" + gh :: "xstate \ aheap" "gh \ fst\snd" + gl :: "xstate \ State.locals" "gl \ snd\snd" + + gmb :: "'a prog \ cname \ sig \ 'a" + "gmb G cn si \ snd(snd(the(method (G,cn) si)))" + gis :: "jvm_method \ bytecode" + "gis \ fst \ snd \ snd" + glvs :: "java_mb \ State.locals \ locvars" + "glvs jmb loc \ map (the\loc) (gjmb_plns jmb)" + +(* jmb = aus einem JavaMaethodBody *) + gjmb_pns :: "java_mb \ vname list" "gjmb_pns \ fst" + gjmb_lvs :: "java_mb \ (vname\ty)list" "gjmb_lvs \ fst\snd" + gjmb_blk :: "java_mb \ stmt" "gjmb_blk \ fst\snd\snd" + gjmb_res :: "java_mb \ expr" "gjmb_res \ snd\snd\snd" + gjmb_plns :: "java_mb \ vname list" + "gjmb_plns \ \jmb. gjmb_pns jmb @ map fst (gjmb_lvs jmb)" + +lemmas gdefs = gx_def gh_def gl_def gmb_def gis_def glvs_def +lemmas gjmbdefs = gjmb_pns_def gjmb_lvs_def gjmb_blk_def gjmb_res_def gjmb_plns_def + +lemmas galldefs = gdefs gjmbdefs + + + +constdefs + locvars_locals :: "java_mb prog \ cname \ sig \ State.locals \ locvars" + "locvars_locals G C S lvs == the (lvs This) # glvs (gmb G C S) lvs" + + locals_locvars :: "java_mb prog \ cname \ sig \ locvars \ State.locals" + "locals_locvars G C S lvs == + empty ((gjmb_plns (gmb G C S))[\](tl lvs)) (This\(hd lvs))" + + locvars_xstate :: "java_mb prog \ cname \ sig \ xstate \ locvars" + "locvars_xstate G C S xs == locvars_locals G C S (gl xs)" + + +lemma locvars_xstate_par_dep: + "lv1 = lv2 \ + locvars_xstate G C S (xcpt1, hp1, lv1) = locvars_xstate G C S (xcpt2, hp2, lv2)" +by (simp add: locvars_xstate_def gl_def) + + + + +(**********************************************************************) +(* Conversions *) + + +lemma gx_conv [simp]: "gx (xcpt, s) = xcpt" by (simp add: gx_def) + +lemma gh_conv [simp]: "gh (xcpt, h, l) = h" by (simp add: gh_def) + + +end