# HG changeset patch # User kleing # Date 952606258 -3600 # Node ID 3e56677d3b984d7526b5884babfde06f37792c09 # Parent 514df4f1df10cf980a7996cf3156ac6a8a23ddc5 minor adjustments in branch and method invocation for completeness of LBV diff -r 514df4f1df10 -r 3e56677d3b98 src/HOL/MicroJava/BV/BVSpec.thy --- a/src/HOL/MicroJava/BV/BVSpec.thy Thu Mar 09 10:35:07 2000 +0100 +++ b/src/HOL/MicroJava/BV/BVSpec.thy Thu Mar 09 13:50:58 2000 +0100 @@ -136,7 +136,9 @@ (let (ST,LT) = phi ! pc in pc+1 < max_pc \\ (nat(int pc+branch)) < max_pc \\ - (\\ts ts' ST'. ST = ts # ts' # ST' \\ (G \\ ts \\ ts' \\ G \\ ts' \\ ts) \\ + (\\ts ts' ST'. ST = ts # ts' # ST' \\ + ((\\p. ts = PrimT p \\ ts' = PrimT p) \\ + (\\r r'. ts = RefT r \\ ts' = RefT r')) \\ G \\ (ST' , LT) <=s phi ! (pc+1) \\ G \\ (ST' , LT) <=s phi ! (nat(int pc+branch))))" @@ -151,13 +153,14 @@ primrec "wt_MI (Invoke mn fpTs) G phi max_pc pc = (let (ST,LT) = phi ! pc - in + in pc+1 < max_pc \\ - (\\apTs C ST'. ST = (rev apTs) @ (Class C # ST') \\ + (\\apTs X ST'. ST = (rev apTs) @ (X # ST') \\ length apTs = length fpTs \\ + (X = NT \\ (\\C. X = Class C \\ (\\(aT,fT)\\set(zip apTs fpTs). G \\ aT \\ fT) \\ (\\D rT b. method (G,C) (mn,fpTs) = Some(D,rT,b) \\ - G \\ (rT # ST' , LT) <=s phi ! (pc+1))))" + G \\ (rT # ST' , LT) <=s phi ! (pc+1))))))" consts wt_MR :: "[meth_ret,jvm_prog,ty,method_type,p_count] \\ bool" @@ -192,7 +195,7 @@ "wt_method G C pTs rT mxl ins phi \\ let max_pc = length ins in - 0 < max_pc \\ wt_start G C pTs mxl phi \\ + length ins < length phi \\ 0 < max_pc \\ wt_start G C pTs mxl phi \\ (\\pc. pc wt_instr (ins ! pc) G rT phi max_pc pc)" wt_jvm_prog :: "[jvm_prog,prog_type] \\ bool"