src/HOL/MicroJava/Comp/CorrComp.thy
changeset 23757 087b0a241557
parent 22271 51a80e238b29
child 24074 40f414b87655
equal deleted inserted replaced
23756:14008ce7df96 23757:087b0a241557
   402   & (length ps = length pTs') & (E\<turnstile>a::Class C)
   402   & (length ps = length pTs') & (E\<turnstile>a::Class C)
   403   & (\<exists> pTs md rT. 
   403   & (\<exists> pTs md rT. 
   404        E\<turnstile>ps[::]pTs & max_spec (prg E) C (mn, pTs) = {((md,rT),pTs')})"
   404        E\<turnstile>ps[::]pTs & max_spec (prg E) C (mn, pTs) = {((md,rT),pTs')})"
   405 apply (simp only: wtpd_expr_def wtpd_exprs_def)
   405 apply (simp only: wtpd_expr_def wtpd_exprs_def)
   406 apply (erule exE)
   406 apply (erule exE)
   407 apply (ind_cases2 "E \<turnstile> {C}a..mn( {pTs'}ps) :: T" for T)
   407 apply (ind_cases "E \<turnstile> {C}a..mn( {pTs'}ps) :: T" for T)
   408 apply (auto simp: max_spec_preserves_length)
   408 apply (auto simp: max_spec_preserves_length)
   409 done
   409 done
   410 
   410 
   411 lemma wtpd_blk: 
   411 lemma wtpd_blk: 
   412   "\<lbrakk> method (G, D) (md, pTs) = Some (D, rT, (pns, lvars, blk, res)); 
   412   "\<lbrakk> method (G, D) (md, pTs) = Some (D, rT, (pns, lvars, blk, res)); 
   616   "(\<forall> Ts. (E \<turnstile> es [::] Ts) = list_all2 (\<lambda>e T. E \<turnstile> e :: T) es Ts)"
   616   "(\<forall> Ts. (E \<turnstile> es [::] Ts) = list_all2 (\<lambda>e T. E \<turnstile> e :: T) es Ts)"
   617 apply (rule list.induct)
   617 apply (rule list.induct)
   618 apply simp
   618 apply simp
   619 apply (rule allI)
   619 apply (rule allI)
   620 apply (rule iffI)
   620 apply (rule iffI)
   621   apply (ind_cases2 "E \<turnstile> [] [::] Ts" for Ts, assumption)
   621   apply (ind_cases "E \<turnstile> [] [::] Ts" for Ts, assumption)
   622   apply simp apply (rule WellType.Nil)
   622   apply simp apply (rule WellType.Nil)
   623 apply (simp add: list_all2_Cons1)
   623 apply (simp add: list_all2_Cons1)
   624 apply (rule allI)
   624 apply (rule allI)
   625 apply (rule iffI)
   625 apply (rule iffI)
   626   apply (rename_tac a exs Ts)
   626   apply (rename_tac a exs Ts)
   627   apply (ind_cases2 "E \<turnstile> a # exs  [::] Ts" for a exs Ts) apply blast
   627   apply (ind_cases "E \<turnstile> a # exs  [::] Ts" for a exs Ts) apply blast
   628   apply (auto intro: WellType.Cons)
   628   apply (auto intro: WellType.Cons)
   629 done
   629 done
   630 
   630 
   631 
   631 
   632 lemma conf_bool: "G,h \<turnstile> v::\<preceq>PrimT Boolean \<Longrightarrow> \<exists> b. v = Bool b"
   632 lemma conf_bool: "G,h \<turnstile> v::\<preceq>PrimT Boolean \<Longrightarrow> \<exists> b. v = Bool b"