equal
deleted
inserted
replaced
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; \ |