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