src/HOL/MicroJava/Comp/CorrComp.thy
changeset 14143 7544966fa07d
parent 14045 a34d89ce6097
child 14174 f3cafd2929d5
equal deleted inserted replaced
14142:0b04f6587e67 14143:7544966fa07d
   584 
   584 
   585 lemma state_ok_exec: "\<lbrakk>xs::\<preceq>E; wf_java_prog (prg E); wtpd_stmt E st;
   585 lemma state_ok_exec: "\<lbrakk>xs::\<preceq>E; wf_java_prog (prg E); wtpd_stmt E st;
   586   (xs,st,xs') \<in> Eval.exec (prg E)\<rbrakk> \<Longrightarrow>  xs'::\<preceq>E"
   586   (xs,st,xs') \<in> Eval.exec (prg E)\<rbrakk> \<Longrightarrow>  xs'::\<preceq>E"
   587 apply (simp only: wtpd_stmt_def)
   587 apply (simp only: wtpd_stmt_def)
   588 apply (case_tac xs', case_tac xs)
   588 apply (case_tac xs', case_tac xs)
   589 apply (auto intro: exec_type_sound)
   589 apply (auto dest: exec_type_sound)
   590 done
   590 done
   591 
   591 
   592 
   592 
   593 lemma state_ok_init: 
   593 lemma state_ok_init: 
   594   "\<lbrakk> wf_java_prog G; (x, h, l)::\<preceq>(env_of_jmb G C S); 
   594   "\<lbrakk> wf_java_prog G; (x, h, l)::\<preceq>(env_of_jmb G C S); 
   648 
   648 
   649 lemma eval_conf: "\<lbrakk>G \<turnstile> s -e\<succ>v-> s'; wf_java_prog G; s::\<preceq>E;
   649 lemma eval_conf: "\<lbrakk>G \<turnstile> s -e\<succ>v-> s'; wf_java_prog G; s::\<preceq>E;
   650   E\<turnstile>e::T; gx s' = None; prg E = G \<rbrakk> 
   650   E\<turnstile>e::T; gx s' = None; prg E = G \<rbrakk> 
   651   \<Longrightarrow> G,gh s'\<turnstile>v::\<preceq>T"
   651   \<Longrightarrow> G,gh s'\<turnstile>v::\<preceq>T"
   652 apply (simp add: gh_def)
   652 apply (simp add: gh_def)
   653 apply (rule_tac x2="fst s" and "s2"="snd s"and "x'2"="fst s'"  
   653 apply (rule_tac x3="fst s" and "s3"="snd s"and "x'3"="fst s'"  
   654   in eval_type_sound [THEN conjunct2 [THEN mp], simplified])
   654   in eval_type_sound [THEN conjunct2 [THEN conjunct1 [THEN mp]], simplified])
   655 apply (rule sym) apply assumption
   655 apply assumption+
   656 apply assumption
       
   657 apply (simp (no_asm_use) add: surjective_pairing [THEN sym])
   656 apply (simp (no_asm_use) add: surjective_pairing [THEN sym])
   658 apply (simp only: surjective_pairing [THEN sym])
   657 apply (simp only: surjective_pairing [THEN sym])
   659 apply (auto simp add: gs_def gx_def)
   658 apply (auto simp add: gs_def gx_def)
   660 done
   659 done
   661 
   660 
  1186   (* show list_all2 (conf G h) pvs pTs *)
  1185   (* show list_all2 (conf G h) pvs pTs *)
  1187 apply (erule exE)+ apply (erule conjE)+
  1186 apply (erule exE)+ apply (erule conjE)+
  1188 apply (rule_tac Ts="pTsa" in conf_list_gext_widen) apply assumption
  1187 apply (rule_tac Ts="pTsa" in conf_list_gext_widen) apply assumption
  1189 apply (subgoal_tac "((gx s1, gs s1), ps, pvs, x, h, l) \<in> evals G")
  1188 apply (subgoal_tac "((gx s1, gs s1), ps, pvs, x, h, l) \<in> evals G")
  1190 apply (frule_tac E="env_of_jmb G CL S" in evals_type_sound)
  1189 apply (frule_tac E="env_of_jmb G CL S" in evals_type_sound)
       
  1190 apply assumption+
  1191 apply (simp only: env_of_jmb_fst) 
  1191 apply (simp only: env_of_jmb_fst) 
  1192 apply assumption
       
  1193 apply (simp add: conforms_def xconf_def gs_def)
  1192 apply (simp add: conforms_def xconf_def gs_def)
  1194 apply simp
  1193 apply simp
  1195 apply (simp (no_asm_use) only: gx_def gs_def surjective_pairing [THEN sym])
  1194 apply (simp (no_asm_use) only: gx_def gs_def surjective_pairing [THEN sym])
  1196 apply (simp (no_asm_use) only: ty_exprs_list_all2) apply simp
  1195 apply (simp (no_asm_use) only: ty_exprs_list_all2) apply simp
       
  1196 apply simp
  1197 apply (simp (no_asm_use) only: gx_def gs_def surjective_pairing [THEN sym])
  1197 apply (simp (no_asm_use) only: gx_def gs_def surjective_pairing [THEN sym])
  1198     (* list_all2 (\<lambda>T T'. G \<turnstile> T \<preceq> T') pTsa pTs *)
  1198     (* list_all2 (\<lambda>T T'. G \<turnstile> T \<preceq> T') pTsa pTs *)
  1199     apply (rule max_spec_widen, simp only: env_of_jmb_fst)
  1199     apply (rule max_spec_widen, simp only: env_of_jmb_fst)
  1200 
  1200 
  1201 
  1201