# HG changeset patch # User oheimb # Date 943025452 -3600 # Node ID 3e5ddca613dd19395f1e71a974203e3aa6f8d782 # Parent 2855e262129ccfd3a548b454e8a38ef45c6d843a re-shaped and re-ordered conversion relations diff -r 2855e262129c -r 3e5ddca613dd src/HOL/MicroJava/BV/BVSpec.thy --- a/src/HOL/MicroJava/BV/BVSpec.thy Thu Nov 18 12:12:39 1999 +0100 +++ b/src/HOL/MicroJava/BV/BVSpec.thy Fri Nov 19 16:30:52 1999 +0100 @@ -22,7 +22,7 @@ pc+1 < max_pc \\ idx < length LT \\ (\\ts. (LT ! idx) = Some ts \\ - G \\ phi ! (pc+1) >>>= (ts # ST , LT)))" + G \\ (ts # ST , LT) <=s phi ! (pc+1)))" "wt_LS (Store idx) G phi max_pc pc = (let (ST,LT) = phi ! pc @@ -30,19 +30,19 @@ pc+1 < max_pc \\ idx < length LT \\ (\\ts ST'. ST = ts # ST' \\ - G \\ phi ! (pc+1) >>>= (ST' , LT[idx:=Some ts])))" + G \\ (ST' , LT[idx:=Some ts]) <=s phi ! (pc+1)))" "wt_LS (Bipush i) G phi max_pc pc = (let (ST,LT) = phi ! pc in pc+1 < max_pc \\ - G \\ phi ! (pc+1) >>>= ((PrimT Integer) # ST , LT))" + G \\ ((PrimT Integer) # ST , LT) <=s phi ! (pc+1))" "wt_LS (Aconst_null) G phi max_pc pc = (let (ST,LT) = phi ! pc in pc+1 < max_pc \\ - G \\ phi ! (pc+1) >>>= (NT # ST , LT))" + G \\ (NT # ST , LT) <=s phi ! (pc+1))" consts wt_MO :: "[manipulate_object,jvm_prog,method_type,p_count,p_count] \\ bool" @@ -55,7 +55,7 @@ (\\T oT ST'. cfield (G,C) F = Some(C,T) \\ ST = oT # ST' \\ G \\ oT \\ (Class C) \\ - G \\ phi ! (pc+1) >>>= (T # ST' , LT)))" + G \\ (T # ST' , LT) <=s phi ! (pc+1)))" "wt_MO (Putfield F C) G phi max_pc pc = (let (ST,LT) = phi ! pc @@ -67,7 +67,7 @@ ST = vT # oT # ST' \\ G \\ oT \\ (Class C) \\ G \\ vT \\ T \\ - G \\ phi ! (pc+1) >>>= (ST' , LT)))" + G \\ (ST' , LT) <=s phi ! (pc+1)))" consts @@ -78,7 +78,7 @@ in pc+1 < max_pc \\ is_class G C \\ - G \\ phi ! (pc+1) >>>= ((Class C) # ST , LT))" + G \\ ((Class C) # ST , LT) <=s phi ! (pc+1))" consts wt_CH :: "[check_object,jvm_prog,method_type,p_count,p_count] \\ bool" @@ -89,7 +89,7 @@ pc+1 < max_pc \\ is_class G C \\ (\\rt ST'. ST = RefT rt # ST' \\ - G \\ phi ! (pc+1) >>>= (Class C # ST' , LT)))" + G \\ (Class C # ST' , LT) <=s phi ! (pc+1)))" consts wt_OS :: "[op_stack,jvm_prog,method_type,p_count,p_count] \\ bool" @@ -99,35 +99,35 @@ in \\ts ST'. pc+1 < max_pc \\ ST = ts # ST' \\ - G \\ phi ! (pc+1) >>>= (ST' , LT))" + G \\ (ST' , LT) <=s phi ! (pc+1))" "wt_OS Dup G phi max_pc pc = (let (ST,LT) = phi ! pc in pc+1 < max_pc \\ (\\ts ST'. ST = ts # ST' \\ - G \\ phi ! (pc+1) >>>= (ts # ts # ST' , LT)))" + G \\ (ts # ts # ST' , LT) <=s phi ! (pc+1)))" "wt_OS Dup_x1 G phi max_pc pc = (let (ST,LT) = phi ! pc in pc+1 < max_pc \\ (\\ts1 ts2 ST'. ST = ts1 # ts2 # ST' \\ - G \\ phi ! (pc+1) >>>= (ts1 # ts2 # ts1 # ST' , LT)))" + G \\ (ts1 # ts2 # ts1 # ST' , LT) <=s phi ! (pc+1)))" "wt_OS Dup_x2 G phi max_pc pc = (let (ST,LT) = phi ! pc in pc+1 < max_pc \\ (\\ts1 ts2 ts3 ST'. ST = ts1 # ts2 # ts3 # ST' \\ - G \\ phi ! (pc+1) >>>= (ts1 # ts2 # ts3 # ts1 # ST' , LT)))" + G \\ (ts1 # ts2 # ts3 # ts1 # ST' , LT) <=s phi ! (pc+1)))" "wt_OS Swap G phi max_pc pc = (let (ST,LT) = phi ! pc in pc+1 < max_pc \\ (\\ts ts' ST'. ST = ts' # ts # ST' \\ - G \\ phi ! (pc+1) >>>= (ts # ts' # ST' , LT)))" + G \\ (ts # ts' # ST' , LT) <=s phi ! (pc+1)))" consts wt_BR :: "[branch,jvm_prog,method_type,p_count,p_count] \\ bool" @@ -137,13 +137,13 @@ in pc+1 < max_pc \\ (nat(int pc+branch)) < max_pc \\ (\\ts ts' ST'. ST = ts # ts' # ST' \\ ts = ts' \\ - G \\ phi ! (pc+1) >>>= (ST' , LT) \\ - G \\ phi ! (nat(int pc+branch)) >>>= (ST' , LT)))" + G \\ (ST' , LT) <=s phi ! (pc+1) \\ + G \\ (ST' , LT) <=s phi ! (nat(int pc+branch))))" "wt_BR (Goto branch) G phi max_pc pc = (let (ST,LT) = phi ! pc in (nat(int pc+branch)) < max_pc \\ - G \\ phi ! (nat(int pc+branch)) >>>= (ST , LT))" + G \\ (ST , LT) <=s phi ! (nat(int pc+branch)))" consts wt_MI :: "[meth_inv,jvm_prog,method_type,p_count,p_count] \\ bool" @@ -156,7 +156,7 @@ length apTs = length fpTs \\ (\\(aT,fT)\\set(zip apTs fpTs). G \\ aT \\ fT) \\ (\\D rT b. cmethd (G,C) (mn,fpTs) = Some(D,rT,b) \\ - G \\ phi ! (pc+1) >>>= (rT # ST' , LT))))" + G \\ (rT # ST' , LT) <=s phi ! (pc+1))))" constdefs wt_MR :: "[jvm_prog,ty,method_type,p_count] \\ bool" @@ -183,7 +183,7 @@ constdefs wt_start :: "[jvm_prog,cname,ty list,nat,method_type] \\ bool" "wt_start G C pTs mxl phi \\ - G \\ phi!0 >>>= ([],(Some(Class C))#((map Some pTs))@(replicate mxl None))" + G \\ ([],(Some(Class C))#((map Some pTs))@(replicate mxl None)) <=s phi!0" wt_method :: "[jvm_prog,cname,ty list,ty,nat,instr list,method_type] \\ bool" diff -r 2855e262129c -r 3e5ddca613dd src/HOL/MicroJava/BV/Convert.ML --- a/src/HOL/MicroJava/BV/Convert.ML Thu Nov 18 12:12:39 1999 +0100 +++ b/src/HOL/MicroJava/BV/Convert.ML Fri Nov 19 16:30:52 1999 +0100 @@ -9,32 +9,32 @@ [ prove_widen_lemma "G\\S\\T \\ S = PrimT x \\ T = PrimT x"]; Addsimps [widen_PrimT_conv1]; -Goalw [sup_ty_opt_def] "(G \\ any >= None) = (any = None)"; +Goalw [sup_ty_opt_def] "(G \\ None <=o any) = (any = None)"; by(simp_tac (simpset() addsplits [option.split]) 1); qed "anyConvNone"; Addsimps [anyConvNone]; -Goalw [sup_ty_opt_def] "(G \\ Some ty >= Some ty') = (G \\ ty' \\ ty)"; +Goalw [sup_ty_opt_def] "(G \\ Some ty' <=o Some ty) = (G \\ ty' \\ ty)"; by(Simp_tac 1); qed "SomeanyConvSome"; Addsimps [SomeanyConvSome]; Goal -"(G \\ X >= Some(PrimT Integer)) = (X=None \\ (X=Some(PrimT Integer)))"; +"(G \\ Some(PrimT Integer) <=o X) = (X=None \\ (X=Some(PrimT Integer)))"; by (simp_tac (simpset() setloop (split_tac [ty.split,option.split]) addsimps [sup_ty_opt_def]) 1); qed "sup_PTS_eq"; Goal -"CFS \\ XT >>= [] = (XT=[])"; +"CFS \\ [] <=l XT = (XT=[])"; by (case_tac "XT=[]" 1); by (asm_simp_tac (simpset() addsimps [sup_loc_def]) 1); by (fast_tac (claset() addss (simpset() addsimps [sup_loc_def,neq_Nil_conv])) 1); qed "sup_loc_Nil"; Goal -"CFS \\ XT >>= (Y#YT) = (\\X XT'. XT=X#XT' \\ CFS \\ X>=Y \\ CFS \\ XT'>>=YT)"; +"CFS \\ (Y#YT) <=l XT = (\\X XT'. XT=X#XT' \\ CFS \\ Y <=o X \\ CFS \\ YT <=l XT')"; by (case_tac "XT=[]" 1); by (asm_simp_tac (simpset() addsimps [sup_loc_def]) 1); by (fast_tac (claset() addss (simpset() addsimps [sup_loc_def,neq_Nil_conv])) 1); diff -r 2855e262129c -r 3e5ddca613dd src/HOL/MicroJava/BV/Convert.thy --- a/src/HOL/MicroJava/BV/Convert.thy Thu Nov 18 12:12:39 1999 +0100 +++ b/src/HOL/MicroJava/BV/Convert.thy Fri Nov 19 16:30:52 1999 +0100 @@ -15,19 +15,19 @@ constdefs - sup_ty_opt :: "['code prog,ty option,ty option] \\ bool" ("_ \\_ >= _") - "G \\ a >= a' \\ + sup_ty_opt :: "['code prog,ty option,ty option] \\ bool" ("_ \\_ <=o _") + "G \\ a' <=o a \\ case a of None \\ True | Some t \\ case a' of None \\ False | Some t' \\ G \\ t' \\ t" - sup_loc :: "['code prog,locvars_type,locvars_type] \\ bool" ("_ \\ _ >>= _" [71,71] 70) - "G \\ LT >>= LT' \\ (length LT=length LT') \\ (\\(t,t')\\set (zip LT LT'). G \\ t >= t')" + sup_loc :: "['code prog,locvars_type,locvars_type] \\ bool" ("_ \\ _ <=l _" [71,71] 70) + "G \\ LT <=l LT' \\ (length LT=length LT') \\ (\\(t,t')\\set (zip LT LT'). G \\ t <=o t')" - sup_state :: "['code prog,state_type,state_type] \\ bool" ("_ \\ _ >>>= _" [71,71] 70) - "G \\ s >>>= s' \\ G \\ map Some (fst s) >>= map Some (fst s') \\ G \\ snd s >>= snd s'" + sup_state :: "['code prog,state_type,state_type] \\ bool" ("_ \\ _ <=s _" [71,71] 70) + "G \\ s <=s s' \\ G \\ map Some (fst s) <=l map Some (fst s') \\ G \\ snd s <=l snd s'" end diff -r 2855e262129c -r 3e5ddca613dd src/HOL/MicroJava/BV/Correct.ML --- a/src/HOL/MicroJava/BV/Correct.ML Thu Nov 18 12:12:39 1999 +0100 +++ b/src/HOL/MicroJava/BV/Correct.ML Fri Nov 19 16:30:52 1999 +0100 @@ -62,14 +62,14 @@ Goal -"wf_prog wt G \\ approx_val G h val us \\ G \\ us' >= us \\ approx_val G h val us'"; +"wf_prog wt G \\ approx_val G h val us \\ G \\ us <=o us' \\ approx_val G h val us'"; by (asm_simp_tac (simpset() addsimps [sup_PTS_eq,approx_val_def] addsplits [option.split,val_.split,ty.split]) 1); by(blast_tac (claset() addIs [conf_widen]) 1); qed_spec_mp "approx_val_imp_approx_val_sup"; Goal -"\\ wf_prog wt G; approx_loc G hp loc LT; idx < length LT ; val = loc ! idx ; G \\ at >= LT ! idx \\ \ +"\\ wf_prog wt G; approx_loc G hp loc LT; idx < length LT ; val = loc ! idx ; G \\ LT ! idx <=o at\\ \ \\\ approx_val G hp val at"; by (fast_tac (claset() addIs [approx_val_imp_approx_val_sup] addss (simpset() addsimps [split_def,approx_loc_def,all_set_conv_all_nth])) 1); @@ -104,7 +104,7 @@ Goalw [sup_loc_def,approx_loc_def] -"wf_prog wt G \\ approx_loc G hp lvars lt \\ G \\ lt' >>= lt \\ approx_loc G hp lvars lt'"; +"wf_prog wt G \\ approx_loc G hp lvars lt \\ G \\ lt <=l lt' \\ approx_loc G hp lvars lt'"; by (auto_tac (claset() , simpset() addsimps [all_set_conv_all_nth,split_def])); by (auto_tac (claset() addEs [approx_val_imp_approx_val_sup] , simpset())); qed_spec_mp "approx_loc_imp_approx_loc_sup"; @@ -154,7 +154,7 @@ Goalw [approx_stk_def] -"wf_prog wt G \\ approx_stk G hp lvars st \\ G \\ (map Some st') >>= (map Some st) \\ approx_stk G hp lvars st'"; +"wf_prog wt G \\ approx_stk G hp lvars st \\ G \\ (map Some st) <=l (map Some st') \\ approx_stk G hp lvars st'"; by (fast_tac (claset() addIs [approx_loc_imp_approx_loc_sup]) 1); qed_spec_mp "approx_stk_imp_approx_stk_sup";