src/HOL/MicroJava/BV/BVSpecTypeSafe.ML
changeset 9348 f495dba0cb07
parent 9346 297dcbf64526
child 9376 c32c5696ec2a
equal deleted inserted replaced
9347:1791a62b33e7 9348:f495dba0cb07
   106 
   106 
   107 
   107 
   108 (**** CH ****)
   108 (**** CH ****)
   109 
   109 
   110 Goalw [cast_ok_def]
   110 Goalw [cast_ok_def]
   111  "\\<lbrakk> wf_prog ok G; G,h\\<turnstile>v\\<Colon>\\<preceq>RefT rt; cast_ok G (ClassT C) h v ; G\\<turnstile>(Class C)\\<preceq>T'; is_class G C \\<rbrakk> \
   111  "\\<lbrakk> wf_prog ok G; G,h\\<turnstile>v\\<Colon>\\<preceq>RefT rt; cast_ok G C h v ; G\\<turnstile>Class C\\<preceq>T; is_class G C \\<rbrakk> \
   112 \ \\<Longrightarrow> G,h\\<turnstile>v\\<Colon>\\<preceq>T'";
   112 \ \\<Longrightarrow> G,h\\<turnstile>v\\<Colon>\\<preceq>T";
   113 by (forward_tac [widen_Class] 1);
   113 by (forward_tac [widen_Class] 1);
   114 by (Clarify_tac 1);
   114 by (Clarify_tac 1);
   115 be disjE 1;
   115 be disjE 1;
   116  by (asm_full_simp_tac (simpset() addsimps [widen.null]) 1);
   116  by (asm_full_simp_tac (simpset() addsimps [widen.null]) 1);
   117 by (asm_full_simp_tac (simpset() addsimps [conf_def]) 1);
   117 by (asm_full_simp_tac (simpset() addsimps [conf_def]) 1);
   132 by (asm_full_simp_tac (simpset() addsimps [map_eq_Cons,
   132 by (asm_full_simp_tac (simpset() addsimps [map_eq_Cons,
   133 		raise_xcpt_def]@defs1 addsplits [option.split]) 1);
   133 		raise_xcpt_def]@defs1 addsplits [option.split]) 1);
   134 by (fast_tac (claset() addIs [approx_stk_imp_approx_stk_sup,approx_loc_imp_approx_loc_sup,Cast_conf2] 
   134 by (fast_tac (claset() addIs [approx_stk_imp_approx_stk_sup,approx_loc_imp_approx_loc_sup,Cast_conf2] 
   135 	addss (simpset() addsimps [map_eq_Cons,approx_val_def])) 1);
   135 	addss (simpset() addsimps [map_eq_Cons,approx_val_def])) 1);
   136 qed "Checkcast_correct";
   136 qed "Checkcast_correct";
   137 
       
   138 
   137 
   139 Goal
   138 Goal
   140 "\\<lbrakk> wt_jvm_prog G phi; \
   139 "\\<lbrakk> wt_jvm_prog G phi; \
   141 \  method (G,C) sig = Some (C,rT,maxl,ins); \
   140 \  method (G,C) sig = Some (C,rT,maxl,ins); \
   142 \  ins!pc = CH ch_com; \
   141 \  ins!pc = CH ch_com; \