[STATEMENT]
theorem assumes wf: "wwf_J_prog P"
shows eval\<^sub>1_eval: "P \<turnstile> \<langle>e,(h,l)\<rangle> \<Rightarrow> \<langle>e',(h',l')\<rangle>
  \<Longrightarrow> (\<And>Vs ls. \<lbrakk> fv e \<subseteq> set Vs;  l \<subseteq>\<^sub>m [Vs[\<mapsto>]ls]; size Vs + max_vars e \<le> size ls \<rbrakk>
       \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h,ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h',ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs[\<mapsto>]ls'])"
(*<*)
  (is "_ \<Longrightarrow> (\<And>Vs ls. PROP ?P e h l e' h' l' Vs ls)"
   is "_ \<Longrightarrow> (\<And>Vs ls. \<lbrakk> _; _; _ \<rbrakk> \<Longrightarrow> \<exists>ls'. ?Post e h l e' h' l' Vs ls ls')")
(*>*)

and evals\<^sub>1_evals: "P \<turnstile> \<langle>es,(h,l)\<rangle> [\<Rightarrow>] \<langle>es',(h',l')\<rangle>
    \<Longrightarrow> (\<And>Vs ls. \<lbrakk> fvs es \<subseteq> set Vs;  l \<subseteq>\<^sub>m [Vs[\<mapsto>]ls]; size Vs + max_varss es \<le> size ls \<rbrakk>
         \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs es,(h,ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs es',(h',ls')\<rangle> \<and>
                      l' \<subseteq>\<^sub>m [Vs[\<mapsto>]ls'])"
(*<*)
  (is "_ \<Longrightarrow> (\<And>Vs ls. PROP ?Ps es h l es' h' l' Vs ls)"
   is "_ \<Longrightarrow> (\<And>Vs ls. \<lbrakk> _; _; _\<rbrakk> \<Longrightarrow> \<exists>ls'. ?Posts es h l es' h' l' Vs ls ls')")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (P \<turnstile> \<langle>e,(h, l)\<rangle> \<Rightarrow> \<langle>e',(h', l')\<rangle> \<Longrightarrow> (\<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h', ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls'])) &&& (P \<turnstile> \<langle>es,(h, l)\<rangle> [\<Rightarrow>] \<langle>es',(h', l')\<rangle> \<Longrightarrow> (\<And>Vs ls. \<lbrakk>fvs es \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss es \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs es,(h, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs es',(h', ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']))
[PROOF STEP]
proof (induct rule:eval_evals_inducts)
[PROOF STATE]
proof (state)
goal (43 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 43 subgoals...
[PROOF STEP]
case Nil
[PROOF STATE]
proof (state)
this:
fvs [] \<subseteq> set Vs
b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_varss [] \<le> length ls

goal (43 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 43 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
fvs [] \<subseteq> set Vs
b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_varss [] \<le> length ls

goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs [],(a_, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs [],(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by(fastforce intro!:Nil\<^sub>1)
[PROOF STATE]
proof (state)
this:
\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs [],(a_, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs [],(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (42 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 42 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (42 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 42 subgoals...
[PROOF STEP]
case (Cons e h l v h' l' es es' h\<^sub>2 l\<^sub>2)
[PROOF STATE]
proof (state)
this:
P \<turnstile> \<langle>e,(h, l)\<rangle> \<Rightarrow> \<langle>Val v,(h', l')\<rangle>
\<lbrakk>fv e \<subseteq> set ?Vs; l \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e,(h, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h', ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
P \<turnstile> \<langle>es,(h', l')\<rangle> [\<Rightarrow>] \<langle>es',(h\<^sub>2, l\<^sub>2)\<rangle>
\<lbrakk>fvs es \<subseteq> set ?Vs; l' \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_varss es \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 ?Vs es,(h', ?ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 ?Vs es',(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fvs (e # es) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_varss (e # es) \<le> length ls

goal (42 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 42 subgoals...
[PROOF STEP]
have "PROP ?P e h l (Val v) h' l' Vs ls"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>fv e \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h', ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
\<lbrakk>fv e \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h', ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (42 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 42 subgoals...
[PROOF STEP]
with Cons.prems
[PROOF STATE]
proof (chain)
picking this:
fvs (e # es) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_varss (e # es) \<le> length ls
\<lbrakk>fv e \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h', ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
obtain ls' where 1: "?Post e h l (Val v) h' l' Vs ls ls'"
    "size ls = size ls'"
[PROOF STATE]
proof (prove)
using this:
fvs (e # es) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_varss (e # es) \<le> length ls
\<lbrakk>fv e \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h', ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (1 subgoal):
 1. (\<And>ls'. \<lbrakk>compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h', ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; length ls = length ls'\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(auto intro!:eval\<^sub>1_preserves_len)
[PROOF STATE]
proof (state)
this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h', ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
length ls = length ls'

goal (42 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 42 subgoals...
[PROOF STEP]
have "PROP ?Ps es h' l' es' h\<^sub>2 l\<^sub>2 Vs ls'"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>fvs es \<subseteq> set Vs; l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; length Vs + max_varss es \<le> length ls'\<rbrakk> \<Longrightarrow> \<exists>ls'a. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs es,(h', ls')\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs es',(h\<^sub>2, ls'a)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls'a]
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
\<lbrakk>fvs es \<subseteq> set Vs; l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; length Vs + max_varss es \<le> length ls'\<rbrakk> \<Longrightarrow> \<exists>ls'a. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs es,(h', ls')\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs es',(h\<^sub>2, ls'a)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls'a]

goal (42 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 42 subgoals...
[PROOF STEP]
with 1 Cons.prems
[PROOF STATE]
proof (chain)
picking this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h', ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
length ls = length ls'
fvs (e # es) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_varss (e # es) \<le> length ls
\<lbrakk>fvs es \<subseteq> set Vs; l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; length Vs + max_varss es \<le> length ls'\<rbrakk> \<Longrightarrow> \<exists>ls'a. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs es,(h', ls')\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs es',(h\<^sub>2, ls'a)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls'a]
[PROOF STEP]
obtain ls\<^sub>2 where 2: "?Posts es h' l' es' h\<^sub>2 l\<^sub>2 Vs ls' ls\<^sub>2"
[PROOF STATE]
proof (prove)
using this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h', ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
length ls = length ls'
fvs (e # es) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_varss (e # es) \<le> length ls
\<lbrakk>fvs es \<subseteq> set Vs; l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; length Vs + max_varss es \<le> length ls'\<rbrakk> \<Longrightarrow> \<exists>ls'a. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs es,(h', ls')\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs es',(h\<^sub>2, ls'a)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls'a]

goal (1 subgoal):
 1. (\<And>ls\<^sub>2. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs es,(h', ls')\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs es',(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2] \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(auto)
[PROOF STATE]
proof (state)
this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs es,(h', ls')\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs es',(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]

goal (42 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 42 subgoals...
[PROOF STEP]
from 1 2 Cons
[PROOF STATE]
proof (chain)
picking this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h', ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
length ls = length ls'
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs es,(h', ls')\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs es',(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
P \<turnstile> \<langle>e,(h, l)\<rangle> \<Rightarrow> \<langle>Val v,(h', l')\<rangle>
\<lbrakk>fv e \<subseteq> set ?Vs; l \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e,(h, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h', ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
P \<turnstile> \<langle>es,(h', l')\<rangle> [\<Rightarrow>] \<langle>es',(h\<^sub>2, l\<^sub>2)\<rangle>
\<lbrakk>fvs es \<subseteq> set ?Vs; l' \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_varss es \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 ?Vs es,(h', ?ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 ?Vs es',(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fvs (e # es) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_varss (e # es) \<le> length ls
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h', ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
length ls = length ls'
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs es,(h', ls')\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs es',(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
P \<turnstile> \<langle>e,(h, l)\<rangle> \<Rightarrow> \<langle>Val v,(h', l')\<rangle>
\<lbrakk>fv e \<subseteq> set ?Vs; l \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e,(h, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h', ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
P \<turnstile> \<langle>es,(h', l')\<rangle> [\<Rightarrow>] \<langle>es',(h\<^sub>2, l\<^sub>2)\<rangle>
\<lbrakk>fvs es \<subseteq> set ?Vs; l' \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_varss es \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 ?Vs es,(h', ?ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 ?Vs es',(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fvs (e # es) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_varss (e # es) \<le> length ls

goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs (e # es),(h, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (Val v # es'),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by(auto intro!:Cons\<^sub>1)
[PROOF STATE]
proof (state)
this:
\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs (e # es),(h, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (Val v # es'),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (41 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 41 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (41 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 41 subgoals...
[PROOF STEP]
case ConsThrow
[PROOF STATE]
proof (state)
this:
P \<turnstile> \<langle>e_,(a___, b___)\<rangle> \<Rightarrow> \<langle>throw e'_,(a_, b_)\<rangle>
\<lbrakk>fv e_ \<subseteq> set ?Vs; b___ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e_,(a___, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fvs (e_ # es_) \<subseteq> set Vs
b___ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_varss (e_ # es_) \<le> length ls

goal (41 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 41 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
P \<turnstile> \<langle>e_,(a___, b___)\<rangle> \<Rightarrow> \<langle>throw e'_,(a_, b_)\<rangle>
\<lbrakk>fv e_ \<subseteq> set ?Vs; b___ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e_,(a___, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fvs (e_ # es_) \<subseteq> set Vs
b___ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_varss (e_ # es_) \<le> length ls

goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs (e_ # es_),(a___, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (throw e'_ # es_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by(fastforce intro!:ConsThrow\<^sub>1 dest: eval_final)
[PROOF STATE]
proof (state)
this:
\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs (e_ # es_),(a___, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (throw e'_ # es_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (40 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 40 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (40 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 40 subgoals...
[PROOF STEP]
case (Block e h l V e' h' l' T)
[PROOF STATE]
proof (state)
this:
P \<turnstile> \<langle>e,(h, l(V := None))\<rangle> \<Rightarrow> \<langle>e',(h', l')\<rangle>
\<lbrakk>fv e \<subseteq> set ?Vs; l(V := None) \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e,(h, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h', ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv {V:T; e} \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars {V:T; e} \<le> length ls

goal (40 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 40 subgoals...
[PROOF STEP]
let ?Vs = "Vs @ [V]"
[PROOF STATE]
proof (state)
goal (40 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 40 subgoals...
[PROOF STEP]
have IH:
  "\<lbrakk>fv e \<subseteq> set ?Vs; l(V := None) \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls];
    size ?Vs + max_vars e \<le> size ls\<rbrakk>
   \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e,(h,ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h', ls')\<rangle> \<and>
             l' \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']" and
  fv: "fv {V:T; e} \<subseteq> set Vs" and rel: "l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]" and
  len: "length Vs + max_vars {V:T; e} \<le> length ls"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((\<lbrakk>fv e \<subseteq> set (Vs @ [V]); l(V := None) \<subseteq>\<^sub>m [Vs @ [V] [\<mapsto>] ls]; length (Vs @ [V]) + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 (Vs @ [V]) e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h', ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs @ [V] [\<mapsto>] ls']) &&& fv {V:T; e} \<subseteq> set Vs) &&& l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls] &&& length Vs + max_vars {V:T; e} \<le> length ls
[PROOF STEP]
by fact+
[PROOF STATE]
proof (state)
this:
\<lbrakk>fv e \<subseteq> set (Vs @ [V]); l(V := None) \<subseteq>\<^sub>m [Vs @ [V] [\<mapsto>] ls]; length (Vs @ [V]) + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 (Vs @ [V]) e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h', ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs @ [V] [\<mapsto>] ls']
fv {V:T; e} \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars {V:T; e} \<le> length ls

goal (40 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 40 subgoals...
[PROOF STEP]
have len': "length Vs < length ls"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. length Vs < length ls
[PROOF STEP]
using len
[PROOF STATE]
proof (prove)
using this:
length Vs + max_vars {V:T; e} \<le> length ls

goal (1 subgoal):
 1. length Vs < length ls
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
length Vs < length ls

goal (40 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 40 subgoals...
[PROOF STEP]
have "fv e \<subseteq> set ?Vs"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. fv e \<subseteq> set (Vs @ [V])
[PROOF STEP]
using fv
[PROOF STATE]
proof (prove)
using this:
fv {V:T; e} \<subseteq> set Vs

goal (1 subgoal):
 1. fv e \<subseteq> set (Vs @ [V])
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
fv e \<subseteq> set (Vs @ [V])

goal (40 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 40 subgoals...
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
fv e \<subseteq> set (Vs @ [V])

goal (40 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 40 subgoals...
[PROOF STEP]
have "l(V := None) \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls]"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. l(V := None) \<subseteq>\<^sub>m [Vs @ [V] [\<mapsto>] ls]
[PROOF STEP]
using rel len'
[PROOF STATE]
proof (prove)
using this:
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs < length ls

goal (1 subgoal):
 1. l(V := None) \<subseteq>\<^sub>m [Vs @ [V] [\<mapsto>] ls]
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
l(V := None) \<subseteq>\<^sub>m [Vs @ [V] [\<mapsto>] ls]

goal (40 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 40 subgoals...
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
l(V := None) \<subseteq>\<^sub>m [Vs @ [V] [\<mapsto>] ls]

goal (40 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 40 subgoals...
[PROOF STEP]
have "size ?Vs + max_vars e \<le> size ls"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. length (Vs @ [V]) + max_vars e \<le> length ls
[PROOF STEP]
using len
[PROOF STATE]
proof (prove)
using this:
length Vs + max_vars {V:T; e} \<le> length ls

goal (1 subgoal):
 1. length (Vs @ [V]) + max_vars e \<le> length ls
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
length (Vs @ [V]) + max_vars e \<le> length ls

goal (40 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 40 subgoals...
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
fv e \<subseteq> set (Vs @ [V])
l(V := None) \<subseteq>\<^sub>m [Vs @ [V] [\<mapsto>] ls]
length (Vs @ [V]) + max_vars e \<le> length ls
[PROOF STEP]
obtain ls' where
   1: "compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e,(h,ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h',ls')\<rangle>"
   and rel': "l' \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']"
[PROOF STATE]
proof (prove)
using this:
fv e \<subseteq> set (Vs @ [V])
l(V := None) \<subseteq>\<^sub>m [Vs @ [V] [\<mapsto>] ls]
length (Vs @ [V]) + max_vars e \<le> length ls

goal (1 subgoal):
 1. (\<And>ls'. \<lbrakk>compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 (Vs @ [V]) e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h', ls')\<rangle>; l' \<subseteq>\<^sub>m [Vs @ [V] [\<mapsto>] ls']\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
using IH
[PROOF STATE]
proof (prove)
using this:
fv e \<subseteq> set (Vs @ [V])
l(V := None) \<subseteq>\<^sub>m [Vs @ [V] [\<mapsto>] ls]
length (Vs @ [V]) + max_vars e \<le> length ls
\<lbrakk>fv e \<subseteq> set (Vs @ [V]); l(V := None) \<subseteq>\<^sub>m [Vs @ [V] [\<mapsto>] ls]; length (Vs @ [V]) + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 (Vs @ [V]) e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h', ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs @ [V] [\<mapsto>] ls']

goal (1 subgoal):
 1. (\<And>ls'. \<lbrakk>compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 (Vs @ [V]) e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h', ls')\<rangle>; l' \<subseteq>\<^sub>m [Vs @ [V] [\<mapsto>] ls']\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 (Vs @ [V]) e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h', ls')\<rangle>
l' \<subseteq>\<^sub>m [Vs @ [V] [\<mapsto>] ls']

goal (40 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 40 subgoals...
[PROOF STEP]
have [simp]: "length ls = length ls'"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. length ls = length ls'
[PROOF STEP]
by(rule eval\<^sub>1_preserves_len[OF 1])
[PROOF STATE]
proof (state)
this:
length ls = length ls'

goal (40 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 40 subgoals...
[PROOF STEP]
show "\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs {V:T; e},(h,ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h',ls')\<rangle>
              \<and> l'(V := l V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']" (is "\<exists>ls'. ?R ls'")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs {V:T; e},(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h', ls')\<rangle> \<and> l'(V := l V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
proof
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs {V:T; e},(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h', ?ls')\<rangle> \<and> l'(V := l V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ?ls']
[PROOF STEP]
show "?R ls'"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs {V:T; e},(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h', ls')\<rangle> \<and> l'(V := l V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
proof
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs {V:T; e},(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h', ls')\<rangle>
 2. l'(V := l V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
show "compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs {V:T; e},(h,ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h',ls')\<rangle>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs {V:T; e},(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h', ls')\<rangle>
[PROOF STEP]
using 1
[PROOF STATE]
proof (prove)
using this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 (Vs @ [V]) e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h', ls')\<rangle>

goal (1 subgoal):
 1. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs {V:T; e},(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h', ls')\<rangle>
[PROOF STEP]
by(simp add:Block\<^sub>1)
[PROOF STATE]
proof (state)
this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs {V:T; e},(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h', ls')\<rangle>

goal (1 subgoal):
 1. l'(V := l V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. l'(V := l V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
show "l'(V := l V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. l'(V := l V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. l'(V := l V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
have "l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls', V \<mapsto> ls' ! length Vs]"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls', V \<mapsto> ls' ! length Vs]
[PROOF STEP]
using len' rel'
[PROOF STATE]
proof (prove)
using this:
length Vs < length ls
l' \<subseteq>\<^sub>m [Vs @ [V] [\<mapsto>] ls']

goal (1 subgoal):
 1. l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls', V \<mapsto> ls' ! length Vs]
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls', V \<mapsto> ls' ! length Vs]

goal (1 subgoal):
 1. l'(V := l V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls', V \<mapsto> ls' ! length Vs]

goal (1 subgoal):
 1. l'(V := l V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
{
[PROOF STATE]
proof (state)
this:
l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls', V \<mapsto> ls' ! length Vs]

goal (1 subgoal):
 1. l'(V := l V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
assume VinVs: "V \<in> set Vs"
[PROOF STATE]
proof (state)
this:
V \<in> set Vs

goal (1 subgoal):
 1. l'(V := l V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
hence "hidden (Vs @ [V]) (last_index Vs V)"
[PROOF STATE]
proof (prove)
using this:
V \<in> set Vs

goal (1 subgoal):
 1. hidden (Vs @ [V]) (last_index Vs V)
[PROOF STEP]
by(rule hidden_last_index)
[PROOF STATE]
proof (state)
this:
hidden (Vs @ [V]) (last_index Vs V)

goal (1 subgoal):
 1. l'(V := l V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
hence "unmod (compE\<^sub>1 (Vs @ [V]) e) (last_index Vs V)"
[PROOF STATE]
proof (prove)
using this:
hidden (Vs @ [V]) (last_index Vs V)

goal (1 subgoal):
 1. unmod (compE\<^sub>1 (Vs @ [V]) e) (last_index Vs V)
[PROOF STEP]
by(rule hidden_unmod)
[PROOF STATE]
proof (state)
this:
unmod (compE\<^sub>1 (Vs @ [V]) e) (last_index Vs V)

goal (1 subgoal):
 1. l'(V := l V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
unmod (compE\<^sub>1 (Vs @ [V]) e) (last_index Vs V)

goal (1 subgoal):
 1. l'(V := l V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
have "last_index Vs V < length ls"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. last_index Vs V < length ls
[PROOF STEP]
using len' VinVs
[PROOF STATE]
proof (prove)
using this:
length Vs < length ls
V \<in> set Vs

goal (1 subgoal):
 1. last_index Vs V < length ls
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
last_index Vs V < length ls

goal (1 subgoal):
 1. l'(V := l V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
unmod (compE\<^sub>1 (Vs @ [V]) e) (last_index Vs V)
last_index Vs V < length ls
[PROOF STEP]
have "ls ! last_index Vs V = ls' ! last_index Vs V"
[PROOF STATE]
proof (prove)
using this:
unmod (compE\<^sub>1 (Vs @ [V]) e) (last_index Vs V)
last_index Vs V < length ls

goal (1 subgoal):
 1. ls ! last_index Vs V = ls' ! last_index Vs V
[PROOF STEP]
by(rule eval\<^sub>1_preserves_unmod[OF 1])
[PROOF STATE]
proof (state)
this:
ls ! last_index Vs V = ls' ! last_index Vs V

goal (1 subgoal):
 1. l'(V := l V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
}
[PROOF STATE]
proof (state)
this:
V \<in> set Vs \<Longrightarrow> ls ! last_index Vs V = ls' ! last_index Vs V

goal (1 subgoal):
 1. l'(V := l V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls', V \<mapsto> ls' ! length Vs]
V \<in> set Vs \<Longrightarrow> ls ! last_index Vs V = ls' ! last_index Vs V
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls', V \<mapsto> ls' ! length Vs]
V \<in> set Vs \<Longrightarrow> ls ! last_index Vs V = ls' ! last_index Vs V

goal (1 subgoal):
 1. l'(V := l V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
using Block_lem[OF rel] len'
[PROOF STATE]
proof (prove)
using this:
l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls', V \<mapsto> ls' ! length Vs]
V \<in> set Vs \<Longrightarrow> ls ! last_index Vs V = ls' ! last_index Vs V
\<lbrakk>?l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ?ls', ?V \<mapsto> ?v]; ?V \<in> set Vs \<Longrightarrow> ls ! last_index Vs ?V = ?ls' ! last_index Vs ?V; length ls = length ?ls'; length Vs < length ?ls'\<rbrakk> \<Longrightarrow> ?l'(?V := l ?V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ?ls']
length Vs < length ls

goal (1 subgoal):
 1. l'(V := l V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
l'(V := l V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
l'(V := l V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs {V:T; e},(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h', ls')\<rangle> \<and> l'(V := l V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs {V:T; e},(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h', ls')\<rangle> \<and> l'(V := l V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (39 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 39 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (39 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 39 subgoals...
[PROOF STEP]
case (TryThrow e' h l a h' l' D fs C V e\<^sub>2)
[PROOF STATE]
proof (state)
this:
P \<turnstile> \<langle>e',(h, l)\<rangle> \<Rightarrow> \<langle>Throw a,(h', l')\<rangle>
\<lbrakk>fv e' \<subseteq> set ?Vs; l \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e' \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e',(h, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Throw a),(h', ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
h' a = \<lfloor>(D, fs)\<rfloor>
(D, C) \<notin> (subcls1 P)\<^sup>*
fv (try e' catch(C V) e\<^sub>2) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (try e' catch(C V) e\<^sub>2) \<le> length ls

goal (39 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 39 subgoals...
[PROOF STEP]
have "PROP ?P e' h l (Throw a) h' l' Vs ls"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>fv e' \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e' \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e',(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Throw a),(h', ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
\<lbrakk>fv e' \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e' \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e',(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Throw a),(h', ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (39 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 39 subgoals...
[PROOF STEP]
with TryThrow.prems
[PROOF STATE]
proof (chain)
picking this:
fv (try e' catch(C V) e\<^sub>2) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (try e' catch(C V) e\<^sub>2) \<le> length ls
\<lbrakk>fv e' \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e' \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e',(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Throw a),(h', ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
obtain ls' where 1: "?Post e' h l (Throw a) h' l' Vs ls ls'"
[PROOF STATE]
proof (prove)
using this:
fv (try e' catch(C V) e\<^sub>2) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (try e' catch(C V) e\<^sub>2) \<le> length ls
\<lbrakk>fv e' \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e' \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e',(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Throw a),(h', ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (1 subgoal):
 1. (\<And>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e',(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Throw a),(h', ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls'] \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(auto)
[PROOF STATE]
proof (state)
this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e',(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Throw a),(h', ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (39 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 39 subgoals...
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (try e' catch(C V) e\<^sub>2),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Throw a),(h', ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
using 1 TryThrow.hyps
[PROOF STATE]
proof (prove)
using this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e',(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Throw a),(h', ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
P \<turnstile> \<langle>e',(h, l)\<rangle> \<Rightarrow> \<langle>Throw a,(h', l')\<rangle>
\<lbrakk>fv e' \<subseteq> set ?Vs; l \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e' \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e',(h, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Throw a),(h', ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
h' a = \<lfloor>(D, fs)\<rfloor>
(D, C) \<notin> (subcls1 P)\<^sup>*

goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (try e' catch(C V) e\<^sub>2),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Throw a),(h', ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by(auto intro!:eval\<^sub>1_evals\<^sub>1.TryThrow\<^sub>1)
[PROOF STATE]
proof (state)
this:
\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (try e' catch(C V) e\<^sub>2),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Throw a),(h', ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (38 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 38 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (38 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 38 subgoals...
[PROOF STEP]
case (TryCatch e\<^sub>1 h l a h\<^sub>1 l\<^sub>1 D fs C e\<^sub>2 V e' h\<^sub>2 l\<^sub>2)
[PROOF STATE]
proof (state)
this:
P \<turnstile> \<langle>e\<^sub>1,(h, l)\<rangle> \<Rightarrow> \<langle>Throw a,(h\<^sub>1, l\<^sub>1)\<rangle>
\<lbrakk>fv e\<^sub>1 \<subseteq> set ?Vs; l \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e\<^sub>1 \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e\<^sub>1,(h, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Throw a),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
h\<^sub>1 a = \<lfloor>(D, fs)\<rfloor>
P \<turnstile> D \<preceq>\<^sup>* C
P \<turnstile> \<langle>e\<^sub>2,(h\<^sub>1, l\<^sub>1(V \<mapsto> Addr a))\<rangle> \<Rightarrow> \<langle>e',(h\<^sub>2, l\<^sub>2)\<rangle>
\<lbrakk>fv e\<^sub>2 \<subseteq> set ?Vs; l\<^sub>1(V \<mapsto> Addr a) \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e\<^sub>2 \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e\<^sub>2,(h\<^sub>1, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (try e\<^sub>1 catch(C V) e\<^sub>2) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (try e\<^sub>1 catch(C V) e\<^sub>2) \<le> length ls

goal (38 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 38 subgoals...
[PROOF STEP]
let ?e = "try e\<^sub>1 catch(C V) e\<^sub>2"
[PROOF STATE]
proof (state)
goal (38 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 38 subgoals...
[PROOF STEP]
have IH\<^sub>1: "\<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls];
              size Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk>
          \<Longrightarrow> \<exists>ls\<^sub>1. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h,ls)\<rangle> \<Rightarrow>
                                \<langle>fin\<^sub>1 (Throw a),(h\<^sub>1,ls\<^sub>1)\<rangle> \<and>
                    l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]" and
    fv: "fv ?e \<subseteq> set Vs" and
    rel: "l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]" and
    len: "length Vs + max_vars ?e \<le> length ls"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((\<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls\<^sub>1. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Throw a),(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]) &&& fv (try e\<^sub>1 catch(C V) e\<^sub>2) \<subseteq> set Vs) &&& l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls] &&& length Vs + max_vars (try e\<^sub>1 catch(C V) e\<^sub>2) \<le> length ls
[PROOF STEP]
by fact+
[PROOF STATE]
proof (state)
this:
\<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls\<^sub>1. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Throw a),(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
fv (try e\<^sub>1 catch(C V) e\<^sub>2) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (try e\<^sub>1 catch(C V) e\<^sub>2) \<le> length ls

goal (38 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 38 subgoals...
[PROOF STEP]
have "fv e\<^sub>1 \<subseteq> set Vs"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. fv e\<^sub>1 \<subseteq> set Vs
[PROOF STEP]
using fv
[PROOF STATE]
proof (prove)
using this:
fv (try e\<^sub>1 catch(C V) e\<^sub>2) \<subseteq> set Vs

goal (1 subgoal):
 1. fv e\<^sub>1 \<subseteq> set Vs
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
fv e\<^sub>1 \<subseteq> set Vs

goal (38 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 38 subgoals...
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
fv e\<^sub>1 \<subseteq> set Vs

goal (38 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 38 subgoals...
[PROOF STEP]
have "length Vs + max_vars e\<^sub>1 \<le> length ls"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. length Vs + max_vars e\<^sub>1 \<le> length ls
[PROOF STEP]
using len
[PROOF STATE]
proof (prove)
using this:
length Vs + max_vars (try e\<^sub>1 catch(C V) e\<^sub>2) \<le> length ls

goal (1 subgoal):
 1. length Vs + max_vars e\<^sub>1 \<le> length ls
[PROOF STEP]
by(auto)
[PROOF STATE]
proof (state)
this:
length Vs + max_vars e\<^sub>1 \<le> length ls

goal (38 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 38 subgoals...
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
fv e\<^sub>1 \<subseteq> set Vs
length Vs + max_vars e\<^sub>1 \<le> length ls
[PROOF STEP]
obtain ls\<^sub>1 where
    1: "compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h,ls)\<rangle> \<Rightarrow> \<langle>Throw a,(h\<^sub>1,ls\<^sub>1)\<rangle>"
    and rel\<^sub>1: "l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]"
[PROOF STATE]
proof (prove)
using this:
fv e\<^sub>1 \<subseteq> set Vs
length Vs + max_vars e\<^sub>1 \<le> length ls

goal (1 subgoal):
 1. (\<And>ls\<^sub>1. \<lbrakk>compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h, ls)\<rangle> \<Rightarrow> \<langle>Throw a,(h\<^sub>1, ls\<^sub>1)\<rangle>; l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
using IH\<^sub>1 rel
[PROOF STATE]
proof (prove)
using this:
fv e\<^sub>1 \<subseteq> set Vs
length Vs + max_vars e\<^sub>1 \<le> length ls
\<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls\<^sub>1. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Throw a),(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]

goal (1 subgoal):
 1. (\<And>ls\<^sub>1. \<lbrakk>compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h, ls)\<rangle> \<Rightarrow> \<langle>Throw a,(h\<^sub>1, ls\<^sub>1)\<rangle>; l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by fastforce
[PROOF STATE]
proof (state)
this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h, ls)\<rangle> \<Rightarrow> \<langle>Throw a,(h\<^sub>1, ls\<^sub>1)\<rangle>
l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]

goal (38 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 38 subgoals...
[PROOF STEP]
from 1
[PROOF STATE]
proof (chain)
picking this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h, ls)\<rangle> \<Rightarrow> \<langle>Throw a,(h\<^sub>1, ls\<^sub>1)\<rangle>
[PROOF STEP]
have [simp]: "size ls = size ls\<^sub>1"
[PROOF STATE]
proof (prove)
using this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h, ls)\<rangle> \<Rightarrow> \<langle>Throw a,(h\<^sub>1, ls\<^sub>1)\<rangle>

goal (1 subgoal):
 1. length ls = length ls\<^sub>1
[PROOF STEP]
by(rule eval\<^sub>1_preserves_len)
[PROOF STATE]
proof (state)
this:
length ls = length ls\<^sub>1

goal (38 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 38 subgoals...
[PROOF STEP]
let ?Vs = "Vs @ [V]"
[PROOF STATE]
proof (state)
goal (38 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 38 subgoals...
[PROOF STEP]
let ?ls = "(ls\<^sub>1[size Vs:=Addr a])"
[PROOF STATE]
proof (state)
goal (38 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 38 subgoals...
[PROOF STEP]
have IH\<^sub>2: "\<lbrakk>fv e\<^sub>2 \<subseteq> set ?Vs; l\<^sub>1(V \<mapsto> Addr a) \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls];
              length ?Vs + max_vars e\<^sub>2 \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls\<^sub>2.
       compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e\<^sub>2,(h\<^sub>1,?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls\<^sub>2)\<rangle> \<and>
       l\<^sub>2 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls\<^sub>2]"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>fv e\<^sub>2 \<subseteq> set (Vs @ [V]); l\<^sub>1(V \<mapsto> Addr a) \<subseteq>\<^sub>m [Vs @ [V] [\<mapsto>] ls\<^sub>1[length Vs := Addr a]]; length (Vs @ [V]) + max_vars e\<^sub>2 \<le> length (ls\<^sub>1[length Vs := Addr a])\<rbrakk> \<Longrightarrow> \<exists>ls\<^sub>2. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 (Vs @ [V]) e\<^sub>2,(h\<^sub>1, ls\<^sub>1[length Vs := Addr a])\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs @ [V] [\<mapsto>] ls\<^sub>2]
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
\<lbrakk>fv e\<^sub>2 \<subseteq> set (Vs @ [V]); l\<^sub>1(V \<mapsto> Addr a) \<subseteq>\<^sub>m [Vs @ [V] [\<mapsto>] ls\<^sub>1[length Vs := Addr a]]; length (Vs @ [V]) + max_vars e\<^sub>2 \<le> length (ls\<^sub>1[length Vs := Addr a])\<rbrakk> \<Longrightarrow> \<exists>ls\<^sub>2. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 (Vs @ [V]) e\<^sub>2,(h\<^sub>1, ls\<^sub>1[length Vs := Addr a])\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs @ [V] [\<mapsto>] ls\<^sub>2]

goal (38 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 38 subgoals...
[PROOF STEP]
have len\<^sub>1: "size Vs < size ls\<^sub>1"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. length Vs < length ls\<^sub>1
[PROOF STEP]
using len
[PROOF STATE]
proof (prove)
using this:
length Vs + max_vars (try e\<^sub>1 catch(C V) e\<^sub>2) \<le> length ls

goal (1 subgoal):
 1. length Vs < length ls\<^sub>1
[PROOF STEP]
by(auto)
[PROOF STATE]
proof (state)
this:
length Vs < length ls\<^sub>1

goal (38 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 38 subgoals...
[PROOF STEP]
have "fv e\<^sub>2 \<subseteq> set ?Vs"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. fv e\<^sub>2 \<subseteq> set (Vs @ [V])
[PROOF STEP]
using fv
[PROOF STATE]
proof (prove)
using this:
fv (try e\<^sub>1 catch(C V) e\<^sub>2) \<subseteq> set Vs

goal (1 subgoal):
 1. fv e\<^sub>2 \<subseteq> set (Vs @ [V])
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
fv e\<^sub>2 \<subseteq> set (Vs @ [V])

goal (38 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 38 subgoals...
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
fv e\<^sub>2 \<subseteq> set (Vs @ [V])

goal (38 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 38 subgoals...
[PROOF STEP]
have "l\<^sub>1(V \<mapsto> Addr a) \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. l\<^sub>1(V \<mapsto> Addr a) \<subseteq>\<^sub>m [Vs @ [V] [\<mapsto>] ls\<^sub>1[length Vs := Addr a]]
[PROOF STEP]
using rel\<^sub>1 len\<^sub>1
[PROOF STATE]
proof (prove)
using this:
l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length Vs < length ls\<^sub>1

goal (1 subgoal):
 1. l\<^sub>1(V \<mapsto> Addr a) \<subseteq>\<^sub>m [Vs @ [V] [\<mapsto>] ls\<^sub>1[length Vs := Addr a]]
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
l\<^sub>1(V \<mapsto> Addr a) \<subseteq>\<^sub>m [Vs @ [V] [\<mapsto>] ls\<^sub>1[length Vs := Addr a]]

goal (38 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 38 subgoals...
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
l\<^sub>1(V \<mapsto> Addr a) \<subseteq>\<^sub>m [Vs @ [V] [\<mapsto>] ls\<^sub>1[length Vs := Addr a]]

goal (38 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 38 subgoals...
[PROOF STEP]
have "length ?Vs + max_vars e\<^sub>2 \<le> length ?ls"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. length (Vs @ [V]) + max_vars e\<^sub>2 \<le> length (ls\<^sub>1[length Vs := Addr a])
[PROOF STEP]
using len
[PROOF STATE]
proof (prove)
using this:
length Vs + max_vars (try e\<^sub>1 catch(C V) e\<^sub>2) \<le> length ls

goal (1 subgoal):
 1. length (Vs @ [V]) + max_vars e\<^sub>2 \<le> length (ls\<^sub>1[length Vs := Addr a])
[PROOF STEP]
by(auto)
[PROOF STATE]
proof (state)
this:
length (Vs @ [V]) + max_vars e\<^sub>2 \<le> length (ls\<^sub>1[length Vs := Addr a])

goal (38 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 38 subgoals...
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
fv e\<^sub>2 \<subseteq> set (Vs @ [V])
l\<^sub>1(V \<mapsto> Addr a) \<subseteq>\<^sub>m [Vs @ [V] [\<mapsto>] ls\<^sub>1[length Vs := Addr a]]
length (Vs @ [V]) + max_vars e\<^sub>2 \<le> length (ls\<^sub>1[length Vs := Addr a])
[PROOF STEP]
obtain ls\<^sub>2 where
    2: "compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e\<^sub>2,(h\<^sub>1,?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls\<^sub>2)\<rangle>"
    and rel\<^sub>2: "l\<^sub>2 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls\<^sub>2]"
[PROOF STATE]
proof (prove)
using this:
fv e\<^sub>2 \<subseteq> set (Vs @ [V])
l\<^sub>1(V \<mapsto> Addr a) \<subseteq>\<^sub>m [Vs @ [V] [\<mapsto>] ls\<^sub>1[length Vs := Addr a]]
length (Vs @ [V]) + max_vars e\<^sub>2 \<le> length (ls\<^sub>1[length Vs := Addr a])

goal (1 subgoal):
 1. (\<And>ls\<^sub>2. \<lbrakk>compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 (Vs @ [V]) e\<^sub>2,(h\<^sub>1, ls\<^sub>1[length Vs := Addr a])\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls\<^sub>2)\<rangle>; l\<^sub>2 \<subseteq>\<^sub>m [Vs @ [V] [\<mapsto>] ls\<^sub>2]\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
using IH\<^sub>2
[PROOF STATE]
proof (prove)
using this:
fv e\<^sub>2 \<subseteq> set (Vs @ [V])
l\<^sub>1(V \<mapsto> Addr a) \<subseteq>\<^sub>m [Vs @ [V] [\<mapsto>] ls\<^sub>1[length Vs := Addr a]]
length (Vs @ [V]) + max_vars e\<^sub>2 \<le> length (ls\<^sub>1[length Vs := Addr a])
\<lbrakk>fv e\<^sub>2 \<subseteq> set (Vs @ [V]); l\<^sub>1(V \<mapsto> Addr a) \<subseteq>\<^sub>m [Vs @ [V] [\<mapsto>] ls\<^sub>1[length Vs := Addr a]]; length (Vs @ [V]) + max_vars e\<^sub>2 \<le> length (ls\<^sub>1[length Vs := Addr a])\<rbrakk> \<Longrightarrow> \<exists>ls\<^sub>2. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 (Vs @ [V]) e\<^sub>2,(h\<^sub>1, ls\<^sub>1[length Vs := Addr a])\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs @ [V] [\<mapsto>] ls\<^sub>2]

goal (1 subgoal):
 1. (\<And>ls\<^sub>2. \<lbrakk>compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 (Vs @ [V]) e\<^sub>2,(h\<^sub>1, ls\<^sub>1[length Vs := Addr a])\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls\<^sub>2)\<rangle>; l\<^sub>2 \<subseteq>\<^sub>m [Vs @ [V] [\<mapsto>] ls\<^sub>2]\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 (Vs @ [V]) e\<^sub>2,(h\<^sub>1, ls\<^sub>1[length Vs := Addr a])\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls\<^sub>2)\<rangle>
l\<^sub>2 \<subseteq>\<^sub>m [Vs @ [V] [\<mapsto>] ls\<^sub>2]

goal (38 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 38 subgoals...
[PROOF STEP]
from 2
[PROOF STATE]
proof (chain)
picking this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 (Vs @ [V]) e\<^sub>2,(h\<^sub>1, ls\<^sub>1[length Vs := Addr a])\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls\<^sub>2)\<rangle>
[PROOF STEP]
have [simp]: "size ls\<^sub>1 = size ls\<^sub>2"
[PROOF STATE]
proof (prove)
using this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 (Vs @ [V]) e\<^sub>2,(h\<^sub>1, ls\<^sub>1[length Vs := Addr a])\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls\<^sub>2)\<rangle>

goal (1 subgoal):
 1. length ls\<^sub>1 = length ls\<^sub>2
[PROOF STEP]
by(fastforce dest: eval\<^sub>1_preserves_len)
[PROOF STATE]
proof (state)
this:
length ls\<^sub>1 = length ls\<^sub>2

goal (38 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 38 subgoals...
[PROOF STEP]
show "\<exists>ls\<^sub>2. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs ?e,(h,ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2,ls\<^sub>2)\<rangle> \<and>
              l\<^sub>2(V := l\<^sub>1 V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]"  (is "\<exists>ls\<^sub>2. ?R ls\<^sub>2")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>ls\<^sub>2. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (try e\<^sub>1 catch(C V) e\<^sub>2),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2(V := l\<^sub>1 V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
[PROOF STEP]
proof
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (try e\<^sub>1 catch(C V) e\<^sub>2),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ?ls\<^sub>2)\<rangle> \<and> l\<^sub>2(V := l\<^sub>1 V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ?ls\<^sub>2]
[PROOF STEP]
show "?R ls\<^sub>2"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (try e\<^sub>1 catch(C V) e\<^sub>2),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2(V := l\<^sub>1 V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
[PROOF STEP]
proof
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (try e\<^sub>1 catch(C V) e\<^sub>2),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls\<^sub>2)\<rangle>
 2. l\<^sub>2(V := l\<^sub>1 V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
[PROOF STEP]
have hp: "h\<^sub>1 a = Some (D, fs)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. h\<^sub>1 a = \<lfloor>(D, fs)\<rfloor>
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
h\<^sub>1 a = \<lfloor>(D, fs)\<rfloor>

goal (2 subgoals):
 1. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (try e\<^sub>1 catch(C V) e\<^sub>2),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls\<^sub>2)\<rangle>
 2. l\<^sub>2(V := l\<^sub>1 V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
[PROOF STEP]
have "P \<turnstile> D \<preceq>\<^sup>* C"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. P \<turnstile> D \<preceq>\<^sup>* C
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
P \<turnstile> D \<preceq>\<^sup>* C

goal (2 subgoals):
 1. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (try e\<^sub>1 catch(C V) e\<^sub>2),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls\<^sub>2)\<rangle>
 2. l\<^sub>2(V := l\<^sub>1 V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
[PROOF STEP]
hence caught: "compP\<^sub>1 P \<turnstile> D \<preceq>\<^sup>* C"
[PROOF STATE]
proof (prove)
using this:
P \<turnstile> D \<preceq>\<^sup>* C

goal (1 subgoal):
 1. compP\<^sub>1 P \<turnstile> D \<preceq>\<^sup>* C
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
compP\<^sub>1 P \<turnstile> D \<preceq>\<^sup>* C

goal (2 subgoals):
 1. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (try e\<^sub>1 catch(C V) e\<^sub>2),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls\<^sub>2)\<rangle>
 2. l\<^sub>2(V := l\<^sub>1 V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
[PROOF STEP]
from TryCatch\<^sub>1[OF 1 _ caught len\<^sub>1 2, OF hp]
[PROOF STATE]
proof (chain)
picking this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>try compE\<^sub>1 Vs e\<^sub>1 catch(C length Vs) compE\<^sub>1 (Vs @ [V]) e\<^sub>2,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls\<^sub>2)\<rangle>
[PROOF STEP]
show "compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs ?e,(h,ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2,ls\<^sub>2)\<rangle>"
[PROOF STATE]
proof (prove)
using this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>try compE\<^sub>1 Vs e\<^sub>1 catch(C length Vs) compE\<^sub>1 (Vs @ [V]) e\<^sub>2,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls\<^sub>2)\<rangle>

goal (1 subgoal):
 1. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (try e\<^sub>1 catch(C V) e\<^sub>2),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls\<^sub>2)\<rangle>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (try e\<^sub>1 catch(C V) e\<^sub>2),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls\<^sub>2)\<rangle>

goal (1 subgoal):
 1. l\<^sub>2(V := l\<^sub>1 V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. l\<^sub>2(V := l\<^sub>1 V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
[PROOF STEP]
show "l\<^sub>2(V := l\<^sub>1 V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. l\<^sub>2(V := l\<^sub>1 V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. l\<^sub>2(V := l\<^sub>1 V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
[PROOF STEP]
have "l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2, V \<mapsto> ls\<^sub>2 ! length Vs]"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2, V \<mapsto> ls\<^sub>2 ! length Vs]
[PROOF STEP]
using len\<^sub>1 rel\<^sub>2
[PROOF STATE]
proof (prove)
using this:
length Vs < length ls\<^sub>1
l\<^sub>2 \<subseteq>\<^sub>m [Vs @ [V] [\<mapsto>] ls\<^sub>2]

goal (1 subgoal):
 1. l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2, V \<mapsto> ls\<^sub>2 ! length Vs]
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2, V \<mapsto> ls\<^sub>2 ! length Vs]

goal (1 subgoal):
 1. l\<^sub>2(V := l\<^sub>1 V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2, V \<mapsto> ls\<^sub>2 ! length Vs]

goal (1 subgoal):
 1. l\<^sub>2(V := l\<^sub>1 V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
[PROOF STEP]
{
[PROOF STATE]
proof (state)
this:
l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2, V \<mapsto> ls\<^sub>2 ! length Vs]

goal (1 subgoal):
 1. l\<^sub>2(V := l\<^sub>1 V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
[PROOF STEP]
assume VinVs: "V \<in> set Vs"
[PROOF STATE]
proof (state)
this:
V \<in> set Vs

goal (1 subgoal):
 1. l\<^sub>2(V := l\<^sub>1 V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
[PROOF STEP]
hence "hidden (Vs @ [V]) (last_index Vs V)"
[PROOF STATE]
proof (prove)
using this:
V \<in> set Vs

goal (1 subgoal):
 1. hidden (Vs @ [V]) (last_index Vs V)
[PROOF STEP]
by(rule hidden_last_index)
[PROOF STATE]
proof (state)
this:
hidden (Vs @ [V]) (last_index Vs V)

goal (1 subgoal):
 1. l\<^sub>2(V := l\<^sub>1 V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
[PROOF STEP]
hence "unmod (compE\<^sub>1 (Vs @ [V]) e\<^sub>2) (last_index Vs V)"
[PROOF STATE]
proof (prove)
using this:
hidden (Vs @ [V]) (last_index Vs V)

goal (1 subgoal):
 1. unmod (compE\<^sub>1 (Vs @ [V]) e\<^sub>2) (last_index Vs V)
[PROOF STEP]
by(rule hidden_unmod)
[PROOF STATE]
proof (state)
this:
unmod (compE\<^sub>1 (Vs @ [V]) e\<^sub>2) (last_index Vs V)

goal (1 subgoal):
 1. l\<^sub>2(V := l\<^sub>1 V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
unmod (compE\<^sub>1 (Vs @ [V]) e\<^sub>2) (last_index Vs V)

goal (1 subgoal):
 1. l\<^sub>2(V := l\<^sub>1 V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
[PROOF STEP]
have "last_index Vs V < length ?ls"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. last_index Vs V < length (ls\<^sub>1[length Vs := Addr a])
[PROOF STEP]
using len\<^sub>1 VinVs
[PROOF STATE]
proof (prove)
using this:
length Vs < length ls\<^sub>1
V \<in> set Vs

goal (1 subgoal):
 1. last_index Vs V < length (ls\<^sub>1[length Vs := Addr a])
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
last_index Vs V < length (ls\<^sub>1[length Vs := Addr a])

goal (1 subgoal):
 1. l\<^sub>2(V := l\<^sub>1 V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
unmod (compE\<^sub>1 (Vs @ [V]) e\<^sub>2) (last_index Vs V)
last_index Vs V < length (ls\<^sub>1[length Vs := Addr a])
[PROOF STEP]
have "?ls ! last_index Vs V = ls\<^sub>2 ! last_index Vs V"
[PROOF STATE]
proof (prove)
using this:
unmod (compE\<^sub>1 (Vs @ [V]) e\<^sub>2) (last_index Vs V)
last_index Vs V < length (ls\<^sub>1[length Vs := Addr a])

goal (1 subgoal):
 1. ls\<^sub>1[length Vs := Addr a] ! last_index Vs V = ls\<^sub>2 ! last_index Vs V
[PROOF STEP]
by(rule eval\<^sub>1_preserves_unmod[OF 2])
[PROOF STATE]
proof (state)
this:
ls\<^sub>1[length Vs := Addr a] ! last_index Vs V = ls\<^sub>2 ! last_index Vs V

goal (1 subgoal):
 1. l\<^sub>2(V := l\<^sub>1 V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
ls\<^sub>1[length Vs := Addr a] ! last_index Vs V = ls\<^sub>2 ! last_index Vs V

goal (1 subgoal):
 1. l\<^sub>2(V := l\<^sub>1 V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
[PROOF STEP]
have "last_index Vs V < size Vs"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. last_index Vs V < length Vs
[PROOF STEP]
using VinVs
[PROOF STATE]
proof (prove)
using this:
V \<in> set Vs

goal (1 subgoal):
 1. last_index Vs V < length Vs
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
last_index Vs V < length Vs

goal (1 subgoal):
 1. l\<^sub>2(V := l\<^sub>1 V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
ls\<^sub>1[length Vs := Addr a] ! last_index Vs V = ls\<^sub>2 ! last_index Vs V
last_index Vs V < length Vs
[PROOF STEP]
have "ls\<^sub>1 ! last_index Vs V = ls\<^sub>2 ! last_index Vs V"
[PROOF STATE]
proof (prove)
using this:
ls\<^sub>1[length Vs := Addr a] ! last_index Vs V = ls\<^sub>2 ! last_index Vs V
last_index Vs V < length Vs

goal (1 subgoal):
 1. ls\<^sub>1 ! last_index Vs V = ls\<^sub>2 ! last_index Vs V
[PROOF STEP]
using len\<^sub>1
[PROOF STATE]
proof (prove)
using this:
ls\<^sub>1[length Vs := Addr a] ! last_index Vs V = ls\<^sub>2 ! last_index Vs V
last_index Vs V < length Vs
length Vs < length ls\<^sub>1

goal (1 subgoal):
 1. ls\<^sub>1 ! last_index Vs V = ls\<^sub>2 ! last_index Vs V
[PROOF STEP]
by(simp del:size_last_index_conv)
[PROOF STATE]
proof (state)
this:
ls\<^sub>1 ! last_index Vs V = ls\<^sub>2 ! last_index Vs V

goal (1 subgoal):
 1. l\<^sub>2(V := l\<^sub>1 V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
[PROOF STEP]
}
[PROOF STATE]
proof (state)
this:
V \<in> set Vs \<Longrightarrow> ls\<^sub>1 ! last_index Vs V = ls\<^sub>2 ! last_index Vs V

goal (1 subgoal):
 1. l\<^sub>2(V := l\<^sub>1 V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2, V \<mapsto> ls\<^sub>2 ! length Vs]
V \<in> set Vs \<Longrightarrow> ls\<^sub>1 ! last_index Vs V = ls\<^sub>2 ! last_index Vs V
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2, V \<mapsto> ls\<^sub>2 ! length Vs]
V \<in> set Vs \<Longrightarrow> ls\<^sub>1 ! last_index Vs V = ls\<^sub>2 ! last_index Vs V

goal (1 subgoal):
 1. l\<^sub>2(V := l\<^sub>1 V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
[PROOF STEP]
using Block_lem[OF rel\<^sub>1] len\<^sub>1
[PROOF STATE]
proof (prove)
using this:
l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2, V \<mapsto> ls\<^sub>2 ! length Vs]
V \<in> set Vs \<Longrightarrow> ls\<^sub>1 ! last_index Vs V = ls\<^sub>2 ! last_index Vs V
\<lbrakk>?l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ?ls', ?V \<mapsto> ?v]; ?V \<in> set Vs \<Longrightarrow> ls\<^sub>1 ! last_index Vs ?V = ?ls' ! last_index Vs ?V; length ls\<^sub>1 = length ?ls'; length Vs < length ?ls'\<rbrakk> \<Longrightarrow> ?l'(?V := l\<^sub>1 ?V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ?ls']
length Vs < length ls\<^sub>1

goal (1 subgoal):
 1. l\<^sub>2(V := l\<^sub>1 V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
l\<^sub>2(V := l\<^sub>1 V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
l\<^sub>2(V := l\<^sub>1 V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (try e\<^sub>1 catch(C V) e\<^sub>2),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2(V := l\<^sub>1 V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<exists>ls\<^sub>2. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (try e\<^sub>1 catch(C V) e\<^sub>2),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2(V := l\<^sub>1 V) \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]

goal (37 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 37 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (37 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 37 subgoals...
[PROOF STEP]
case Try
[PROOF STATE]
proof (state)
this:
P \<turnstile> \<langle>e\<^sub>1_,(a___, b___)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1_,(a_, b_)\<rangle>
\<lbrakk>fv e\<^sub>1_ \<subseteq> set ?Vs; b___ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e\<^sub>1_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e\<^sub>1_,(a___, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (try e\<^sub>1_ catch(C_ V_) e\<^sub>2_) \<subseteq> set Vs
b___ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (try e\<^sub>1_ catch(C_ V_) e\<^sub>2_) \<le> length ls

goal (37 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 37 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
P \<turnstile> \<langle>e\<^sub>1_,(a___, b___)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1_,(a_, b_)\<rangle>
\<lbrakk>fv e\<^sub>1_ \<subseteq> set ?Vs; b___ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e\<^sub>1_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e\<^sub>1_,(a___, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (try e\<^sub>1_ catch(C_ V_) e\<^sub>2_) \<subseteq> set Vs
b___ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (try e\<^sub>1_ catch(C_ V_) e\<^sub>2_) \<le> length ls

goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (try e\<^sub>1_ catch(C_ V_) e\<^sub>2_),(a___, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by(fastforce intro!:Try\<^sub>1)
[PROOF STATE]
proof (state)
this:
\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (try e\<^sub>1_ catch(C_ V_) e\<^sub>2_),(a___, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (36 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 36 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (36 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 36 subgoals...
[PROOF STEP]
case Throw
[PROOF STATE]
proof (state)
this:
P \<turnstile> \<langle>e_,(a___, b___)\<rangle> \<Rightarrow> \<langle>addr aa___,(a_, b_)\<rangle>
\<lbrakk>fv e_ \<subseteq> set ?Vs; b___ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e_,(a___, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa___),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (throw e_) \<subseteq> set Vs
b___ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (throw e_) \<le> length ls

goal (36 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 36 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
P \<turnstile> \<langle>e_,(a___, b___)\<rangle> \<Rightarrow> \<langle>addr aa___,(a_, b_)\<rangle>
\<lbrakk>fv e_ \<subseteq> set ?Vs; b___ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e_,(a___, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa___),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (throw e_) \<subseteq> set Vs
b___ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (throw e_) \<le> length ls

goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (throw e_),(a___, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Throw aa___),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by(fastforce intro!:Throw\<^sub>1)
[PROOF STATE]
proof (state)
this:
\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (throw e_),(a___, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Throw aa___),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (35 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 35 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (35 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 35 subgoals...
[PROOF STEP]
case ThrowNull
[PROOF STATE]
proof (state)
this:
P \<turnstile> \<langle>e_,(a___, b___)\<rangle> \<Rightarrow> \<langle>null,(a_, b_)\<rangle>
\<lbrakk>fv e_ \<subseteq> set ?Vs; b___ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e_,(a___, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (throw e_) \<subseteq> set Vs
b___ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (throw e_) \<le> length ls

goal (35 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 35 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
P \<turnstile> \<langle>e_,(a___, b___)\<rangle> \<Rightarrow> \<langle>null,(a_, b_)\<rangle>
\<lbrakk>fv e_ \<subseteq> set ?Vs; b___ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e_,(a___, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (throw e_) \<subseteq> set Vs
b___ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (throw e_) \<le> length ls

goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (throw e_),(a___, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by(fastforce intro!:ThrowNull\<^sub>1)
[PROOF STATE]
proof (state)
this:
\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (throw e_),(a___, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (34 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 34 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (34 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 34 subgoals...
[PROOF STEP]
case ThrowThrow
[PROOF STATE]
proof (state)
this:
P \<turnstile> \<langle>e_,(a___, b___)\<rangle> \<Rightarrow> \<langle>throw e'_,(a_, b_)\<rangle>
\<lbrakk>fv e_ \<subseteq> set ?Vs; b___ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e_,(a___, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (throw e_) \<subseteq> set Vs
b___ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (throw e_) \<le> length ls

goal (34 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 34 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
P \<turnstile> \<langle>e_,(a___, b___)\<rangle> \<Rightarrow> \<langle>throw e'_,(a_, b_)\<rangle>
\<lbrakk>fv e_ \<subseteq> set ?Vs; b___ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e_,(a___, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (throw e_) \<subseteq> set Vs
b___ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (throw e_) \<le> length ls

goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (throw e_),(a___, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by(fastforce intro!:ThrowThrow\<^sub>1)
[PROOF STATE]
proof (state)
this:
\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (throw e_),(a___, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (33 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 33 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (33 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 33 subgoals...
[PROOF STEP]
case (CondT e h l h\<^sub>1 l\<^sub>1 e\<^sub>1 e' h\<^sub>2 l\<^sub>2 e\<^sub>2)
[PROOF STATE]
proof (state)
this:
P \<turnstile> \<langle>e,(h, l)\<rangle> \<Rightarrow> \<langle>true,(h\<^sub>1, l\<^sub>1)\<rangle>
\<lbrakk>fv e \<subseteq> set ?Vs; l \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e,(h, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 true,(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
P \<turnstile> \<langle>e\<^sub>1,(h\<^sub>1, l\<^sub>1)\<rangle> \<Rightarrow> \<langle>e',(h\<^sub>2, l\<^sub>2)\<rangle>
\<lbrakk>fv e\<^sub>1 \<subseteq> set ?Vs; l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e\<^sub>1 \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e\<^sub>1,(h\<^sub>1, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (if (e) e\<^sub>1 else e\<^sub>2) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (if (e) e\<^sub>1 else e\<^sub>2) \<le> length ls

goal (33 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 33 subgoals...
[PROOF STEP]
have "PROP ?P e h l true h\<^sub>1 l\<^sub>1 Vs ls"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>fv e \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 true,(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
\<lbrakk>fv e \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 true,(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (33 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 33 subgoals...
[PROOF STEP]
with CondT.prems
[PROOF STATE]
proof (chain)
picking this:
fv (if (e) e\<^sub>1 else e\<^sub>2) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (if (e) e\<^sub>1 else e\<^sub>2) \<le> length ls
\<lbrakk>fv e \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 true,(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
obtain ls\<^sub>1 where 1: "?Post e h l true h\<^sub>1 l\<^sub>1 Vs ls ls\<^sub>1"
    "size ls = size ls\<^sub>1"
[PROOF STATE]
proof (prove)
using this:
fv (if (e) e\<^sub>1 else e\<^sub>2) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (if (e) e\<^sub>1 else e\<^sub>2) \<le> length ls
\<lbrakk>fv e \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 true,(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (1 subgoal):
 1. (\<And>ls\<^sub>1. \<lbrakk>compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 true,(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length ls = length ls\<^sub>1\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(auto intro!:eval\<^sub>1_preserves_len)
[PROOF STATE]
proof (state)
this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 true,(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1

goal (33 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 33 subgoals...
[PROOF STEP]
have "PROP ?P e\<^sub>1 h\<^sub>1 l\<^sub>1 e' h\<^sub>2 l\<^sub>2 Vs ls\<^sub>1"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length Vs + max_vars e\<^sub>1 \<le> length ls\<^sub>1\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
\<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length Vs + max_vars e\<^sub>1 \<le> length ls\<^sub>1\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (33 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 33 subgoals...
[PROOF STEP]
with 1 CondT.prems
[PROOF STATE]
proof (chain)
picking this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 true,(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1
fv (if (e) e\<^sub>1 else e\<^sub>2) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (if (e) e\<^sub>1 else e\<^sub>2) \<le> length ls
\<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length Vs + max_vars e\<^sub>1 \<le> length ls\<^sub>1\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
obtain ls\<^sub>2 where 2: "?Post e\<^sub>1 h\<^sub>1 l\<^sub>1 e' h\<^sub>2 l\<^sub>2 Vs ls\<^sub>1 ls\<^sub>2"
[PROOF STATE]
proof (prove)
using this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 true,(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1
fv (if (e) e\<^sub>1 else e\<^sub>2) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (if (e) e\<^sub>1 else e\<^sub>2) \<le> length ls
\<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length Vs + max_vars e\<^sub>1 \<le> length ls\<^sub>1\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (1 subgoal):
 1. (\<And>ls\<^sub>2. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2] \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(auto)
[PROOF STATE]
proof (state)
this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]

goal (33 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 33 subgoals...
[PROOF STEP]
from 1 2
[PROOF STATE]
proof (chain)
picking this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 true,(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 true,(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]

goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (if (e) e\<^sub>1 else e\<^sub>2),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by(auto intro!:CondT\<^sub>1)
[PROOF STATE]
proof (state)
this:
\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (if (e) e\<^sub>1 else e\<^sub>2),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (32 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 32 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (32 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 32 subgoals...
[PROOF STEP]
case (CondF e h l h\<^sub>1 l\<^sub>1 e\<^sub>2 e' h\<^sub>2 l\<^sub>2 e\<^sub>1 Vs ls)
[PROOF STATE]
proof (state)
this:
P \<turnstile> \<langle>e,(h, l)\<rangle> \<Rightarrow> \<langle>false,(h\<^sub>1, l\<^sub>1)\<rangle>
\<lbrakk>fv e \<subseteq> set ?Vs; l \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e,(h, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 false,(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
P \<turnstile> \<langle>e\<^sub>2,(h\<^sub>1, l\<^sub>1)\<rangle> \<Rightarrow> \<langle>e',(h\<^sub>2, l\<^sub>2)\<rangle>
\<lbrakk>fv e\<^sub>2 \<subseteq> set ?Vs; l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e\<^sub>2 \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e\<^sub>2,(h\<^sub>1, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (if (e) e\<^sub>1 else e\<^sub>2) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (if (e) e\<^sub>1 else e\<^sub>2) \<le> length ls

goal (32 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 32 subgoals...
[PROOF STEP]
have "PROP ?P e h l false h\<^sub>1 l\<^sub>1 Vs ls"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>fv e \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 false,(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
\<lbrakk>fv e \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 false,(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (32 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 32 subgoals...
[PROOF STEP]
with CondF.prems
[PROOF STATE]
proof (chain)
picking this:
fv (if (e) e\<^sub>1 else e\<^sub>2) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (if (e) e\<^sub>1 else e\<^sub>2) \<le> length ls
\<lbrakk>fv e \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 false,(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
obtain ls\<^sub>1 where 1: "?Post e h l false h\<^sub>1 l\<^sub>1 Vs ls ls\<^sub>1"
    "size ls = size ls\<^sub>1"
[PROOF STATE]
proof (prove)
using this:
fv (if (e) e\<^sub>1 else e\<^sub>2) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (if (e) e\<^sub>1 else e\<^sub>2) \<le> length ls
\<lbrakk>fv e \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 false,(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (1 subgoal):
 1. (\<And>ls\<^sub>1. \<lbrakk>compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 false,(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length ls = length ls\<^sub>1\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(auto intro!:eval\<^sub>1_preserves_len)
[PROOF STATE]
proof (state)
this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 false,(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1

goal (32 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 32 subgoals...
[PROOF STEP]
have "PROP ?P e\<^sub>2 h\<^sub>1 l\<^sub>1 e' h\<^sub>2 l\<^sub>2 Vs ls\<^sub>1"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length Vs + max_vars e\<^sub>2 \<le> length ls\<^sub>1\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
\<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length Vs + max_vars e\<^sub>2 \<le> length ls\<^sub>1\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (32 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 32 subgoals...
[PROOF STEP]
with 1 CondF.prems
[PROOF STATE]
proof (chain)
picking this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 false,(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1
fv (if (e) e\<^sub>1 else e\<^sub>2) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (if (e) e\<^sub>1 else e\<^sub>2) \<le> length ls
\<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length Vs + max_vars e\<^sub>2 \<le> length ls\<^sub>1\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
obtain ls\<^sub>2 where 2: "?Post e\<^sub>2 h\<^sub>1 l\<^sub>1 e' h\<^sub>2 l\<^sub>2 Vs ls\<^sub>1 ls\<^sub>2"
[PROOF STATE]
proof (prove)
using this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 false,(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1
fv (if (e) e\<^sub>1 else e\<^sub>2) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (if (e) e\<^sub>1 else e\<^sub>2) \<le> length ls
\<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length Vs + max_vars e\<^sub>2 \<le> length ls\<^sub>1\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (1 subgoal):
 1. (\<And>ls\<^sub>2. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2] \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(auto)
[PROOF STATE]
proof (state)
this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]

goal (32 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 32 subgoals...
[PROOF STEP]
from 1 2
[PROOF STATE]
proof (chain)
picking this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 false,(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 false,(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]

goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (if (e) e\<^sub>1 else e\<^sub>2),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by(auto intro!:CondF\<^sub>1)
[PROOF STATE]
proof (state)
this:
\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (if (e) e\<^sub>1 else e\<^sub>2),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (31 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 31 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (31 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 31 subgoals...
[PROOF STEP]
case CondThrow
[PROOF STATE]
proof (state)
this:
P \<turnstile> \<langle>e_,(a___, b___)\<rangle> \<Rightarrow> \<langle>throw e'_,(a_, b_)\<rangle>
\<lbrakk>fv e_ \<subseteq> set ?Vs; b___ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e_,(a___, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (if (e_) e\<^sub>1_ else e\<^sub>2_) \<subseteq> set Vs
b___ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (if (e_) e\<^sub>1_ else e\<^sub>2_) \<le> length ls

goal (31 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 31 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
P \<turnstile> \<langle>e_,(a___, b___)\<rangle> \<Rightarrow> \<langle>throw e'_,(a_, b_)\<rangle>
\<lbrakk>fv e_ \<subseteq> set ?Vs; b___ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e_,(a___, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (if (e_) e\<^sub>1_ else e\<^sub>2_) \<subseteq> set Vs
b___ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (if (e_) e\<^sub>1_ else e\<^sub>2_) \<le> length ls

goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (if (e_) e\<^sub>1_ else e\<^sub>2_),(a___, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by(fastforce intro!:CondThrow\<^sub>1)
[PROOF STATE]
proof (state)
this:
\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (if (e_) e\<^sub>1_ else e\<^sub>2_),(a___, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (30 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 30 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (30 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 30 subgoals...
[PROOF STEP]
case (Seq e h l v h\<^sub>1 l\<^sub>1 e\<^sub>1 e' h\<^sub>2 l\<^sub>2)
[PROOF STATE]
proof (state)
this:
P \<turnstile> \<langle>e,(h, l)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>1, l\<^sub>1)\<rangle>
\<lbrakk>fv e \<subseteq> set ?Vs; l \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e,(h, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
P \<turnstile> \<langle>e\<^sub>1,(h\<^sub>1, l\<^sub>1)\<rangle> \<Rightarrow> \<langle>e',(h\<^sub>2, l\<^sub>2)\<rangle>
\<lbrakk>fv e\<^sub>1 \<subseteq> set ?Vs; l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e\<^sub>1 \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e\<^sub>1,(h\<^sub>1, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (e;; e\<^sub>1) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e;; e\<^sub>1) \<le> length ls

goal (30 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 30 subgoals...
[PROOF STEP]
have "PROP ?P e h l (Val v) h\<^sub>1 l\<^sub>1 Vs ls"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>fv e \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
\<lbrakk>fv e \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (30 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 30 subgoals...
[PROOF STEP]
with Seq.prems
[PROOF STATE]
proof (chain)
picking this:
fv (e;; e\<^sub>1) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e;; e\<^sub>1) \<le> length ls
\<lbrakk>fv e \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
obtain ls\<^sub>1 where 1: "?Post e h l (Val v) h\<^sub>1 l\<^sub>1 Vs ls ls\<^sub>1"
    "size ls = size ls\<^sub>1"
[PROOF STATE]
proof (prove)
using this:
fv (e;; e\<^sub>1) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e;; e\<^sub>1) \<le> length ls
\<lbrakk>fv e \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (1 subgoal):
 1. (\<And>ls\<^sub>1. \<lbrakk>compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length ls = length ls\<^sub>1\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(auto intro!:eval\<^sub>1_preserves_len)
[PROOF STATE]
proof (state)
this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1

goal (30 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 30 subgoals...
[PROOF STEP]
have "PROP ?P e\<^sub>1 h\<^sub>1 l\<^sub>1 e' h\<^sub>2 l\<^sub>2 Vs ls\<^sub>1"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length Vs + max_vars e\<^sub>1 \<le> length ls\<^sub>1\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
\<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length Vs + max_vars e\<^sub>1 \<le> length ls\<^sub>1\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (30 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 30 subgoals...
[PROOF STEP]
with 1 Seq.prems
[PROOF STATE]
proof (chain)
picking this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1
fv (e;; e\<^sub>1) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e;; e\<^sub>1) \<le> length ls
\<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length Vs + max_vars e\<^sub>1 \<le> length ls\<^sub>1\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
obtain ls\<^sub>2 where 2: "?Post e\<^sub>1 h\<^sub>1 l\<^sub>1 e' h\<^sub>2 l\<^sub>2 Vs ls\<^sub>1 ls\<^sub>2"
[PROOF STATE]
proof (prove)
using this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1
fv (e;; e\<^sub>1) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e;; e\<^sub>1) \<le> length ls
\<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length Vs + max_vars e\<^sub>1 \<le> length ls\<^sub>1\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (1 subgoal):
 1. (\<And>ls\<^sub>2. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2] \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(auto)
[PROOF STATE]
proof (state)
this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]

goal (30 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 30 subgoals...
[PROOF STEP]
from 1 2 Seq
[PROOF STATE]
proof (chain)
picking this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
P \<turnstile> \<langle>e,(h, l)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>1, l\<^sub>1)\<rangle>
\<lbrakk>fv e \<subseteq> set ?Vs; l \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e,(h, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
P \<turnstile> \<langle>e\<^sub>1,(h\<^sub>1, l\<^sub>1)\<rangle> \<Rightarrow> \<langle>e',(h\<^sub>2, l\<^sub>2)\<rangle>
\<lbrakk>fv e\<^sub>1 \<subseteq> set ?Vs; l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e\<^sub>1 \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e\<^sub>1,(h\<^sub>1, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (e;; e\<^sub>1) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e;; e\<^sub>1) \<le> length ls
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
P \<turnstile> \<langle>e,(h, l)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>1, l\<^sub>1)\<rangle>
\<lbrakk>fv e \<subseteq> set ?Vs; l \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e,(h, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
P \<turnstile> \<langle>e\<^sub>1,(h\<^sub>1, l\<^sub>1)\<rangle> \<Rightarrow> \<langle>e',(h\<^sub>2, l\<^sub>2)\<rangle>
\<lbrakk>fv e\<^sub>1 \<subseteq> set ?Vs; l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e\<^sub>1 \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e\<^sub>1,(h\<^sub>1, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (e;; e\<^sub>1) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e;; e\<^sub>1) \<le> length ls

goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e;; e\<^sub>1),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by(auto intro!:Seq\<^sub>1)
[PROOF STATE]
proof (state)
this:
\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e;; e\<^sub>1),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (29 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 29 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (29 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 29 subgoals...
[PROOF STEP]
case SeqThrow
[PROOF STATE]
proof (state)
this:
P \<turnstile> \<langle>e\<^sub>0_,(a___, b___)\<rangle> \<Rightarrow> \<langle>throw e_,(a_, b_)\<rangle>
\<lbrakk>fv e\<^sub>0_ \<subseteq> set ?Vs; b___ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e\<^sub>0_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e\<^sub>0_,(a___, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (e\<^sub>0_;; e\<^sub>1_) \<subseteq> set Vs
b___ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e\<^sub>0_;; e\<^sub>1_) \<le> length ls

goal (29 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 29 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
P \<turnstile> \<langle>e\<^sub>0_,(a___, b___)\<rangle> \<Rightarrow> \<langle>throw e_,(a_, b_)\<rangle>
\<lbrakk>fv e\<^sub>0_ \<subseteq> set ?Vs; b___ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e\<^sub>0_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e\<^sub>0_,(a___, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (e\<^sub>0_;; e\<^sub>1_) \<subseteq> set Vs
b___ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e\<^sub>0_;; e\<^sub>1_) \<le> length ls

goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>0_;; e\<^sub>1_),(a___, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by(fastforce intro!:SeqThrow\<^sub>1)
[PROOF STATE]
proof (state)
this:
\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>0_;; e\<^sub>1_),(a___, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (28 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 28 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (28 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 28 subgoals...
[PROOF STEP]
case WhileF
[PROOF STATE]
proof (state)
this:
P \<turnstile> \<langle>e_,(a___, b___)\<rangle> \<Rightarrow> \<langle>false,(a_, b_)\<rangle>
\<lbrakk>fv e_ \<subseteq> set ?Vs; b___ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e_,(a___, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 false,(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (while (e_) c_) \<subseteq> set Vs
b___ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (while (e_) c_) \<le> length ls

goal (28 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 28 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
P \<turnstile> \<langle>e_,(a___, b___)\<rangle> \<Rightarrow> \<langle>false,(a_, b_)\<rangle>
\<lbrakk>fv e_ \<subseteq> set ?Vs; b___ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e_,(a___, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 false,(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (while (e_) c_) \<subseteq> set Vs
b___ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (while (e_) c_) \<le> length ls

goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (while (e_) c_),(a___, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by(fastforce intro!:eval\<^sub>1_evals\<^sub>1.intros)
[PROOF STATE]
proof (state)
this:
\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (while (e_) c_),(a___, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (27 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 27 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (27 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 27 subgoals...
[PROOF STEP]
case (WhileT e h l h\<^sub>1 l\<^sub>1 c v h\<^sub>2 l\<^sub>2 e' h\<^sub>3 l\<^sub>3)
[PROOF STATE]
proof (state)
this:
P \<turnstile> \<langle>e,(h, l)\<rangle> \<Rightarrow> \<langle>true,(h\<^sub>1, l\<^sub>1)\<rangle>
\<lbrakk>fv e \<subseteq> set ?Vs; l \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e,(h, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 true,(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
P \<turnstile> \<langle>c,(h\<^sub>1, l\<^sub>1)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>
\<lbrakk>fv c \<subseteq> set ?Vs; l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars c \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs c,(h\<^sub>1, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
P \<turnstile> \<langle>while (e) c,(h\<^sub>2, l\<^sub>2)\<rangle> \<Rightarrow> \<langle>e',(h\<^sub>3, l\<^sub>3)\<rangle>
\<lbrakk>fv (while (e) c) \<subseteq> set ?Vs; l\<^sub>2 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars (while (e) c) \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs (while (e) c),(h\<^sub>2, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>3 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (while (e) c) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (while (e) c) \<le> length ls

goal (27 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 27 subgoals...
[PROOF STEP]
have "PROP ?P e h l true h\<^sub>1 l\<^sub>1 Vs ls"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>fv e \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 true,(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
\<lbrakk>fv e \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 true,(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (27 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 27 subgoals...
[PROOF STEP]
with WhileT.prems
[PROOF STATE]
proof (chain)
picking this:
fv (while (e) c) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (while (e) c) \<le> length ls
\<lbrakk>fv e \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 true,(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
obtain ls\<^sub>1 where 1: "?Post e h l true h\<^sub>1 l\<^sub>1 Vs ls ls\<^sub>1"
    "size ls = size ls\<^sub>1"
[PROOF STATE]
proof (prove)
using this:
fv (while (e) c) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (while (e) c) \<le> length ls
\<lbrakk>fv e \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 true,(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (1 subgoal):
 1. (\<And>ls\<^sub>1. \<lbrakk>compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 true,(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length ls = length ls\<^sub>1\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(auto intro!:eval\<^sub>1_preserves_len)
[PROOF STATE]
proof (state)
this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 true,(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1

goal (27 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 27 subgoals...
[PROOF STEP]
have "PROP ?P c h\<^sub>1 l\<^sub>1 (Val v) h\<^sub>2 l\<^sub>2 Vs ls\<^sub>1"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>fv c \<subseteq> set Vs; l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length Vs + max_vars c \<le> length ls\<^sub>1\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs c,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
\<lbrakk>fv c \<subseteq> set Vs; l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length Vs + max_vars c \<le> length ls\<^sub>1\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs c,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (27 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 27 subgoals...
[PROOF STEP]
with 1 WhileT.prems
[PROOF STATE]
proof (chain)
picking this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 true,(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1
fv (while (e) c) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (while (e) c) \<le> length ls
\<lbrakk>fv c \<subseteq> set Vs; l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length Vs + max_vars c \<le> length ls\<^sub>1\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs c,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
obtain ls\<^sub>2 where 2: "?Post c h\<^sub>1 l\<^sub>1 (Val v) h\<^sub>2 l\<^sub>2 Vs ls\<^sub>1 ls\<^sub>2"
    "size ls\<^sub>1 = size ls\<^sub>2"
[PROOF STATE]
proof (prove)
using this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 true,(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1
fv (while (e) c) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (while (e) c) \<le> length ls
\<lbrakk>fv c \<subseteq> set Vs; l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length Vs + max_vars c \<le> length ls\<^sub>1\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs c,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (1 subgoal):
 1. (\<And>ls\<^sub>2. \<lbrakk>compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs c,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]; length ls\<^sub>1 = length ls\<^sub>2\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(auto intro!:eval\<^sub>1_preserves_len)
[PROOF STATE]
proof (state)
this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs c,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
length ls\<^sub>1 = length ls\<^sub>2

goal (27 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 27 subgoals...
[PROOF STEP]
have "PROP ?P (While (e) c) h\<^sub>2 l\<^sub>2 e' h\<^sub>3 l\<^sub>3 Vs ls\<^sub>2"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>fv (while (e) c) \<subseteq> set Vs; l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]; length Vs + max_vars (while (e) c) \<le> length ls\<^sub>2\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (while (e) c),(h\<^sub>2, ls\<^sub>2)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>3 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
\<lbrakk>fv (while (e) c) \<subseteq> set Vs; l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]; length Vs + max_vars (while (e) c) \<le> length ls\<^sub>2\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (while (e) c),(h\<^sub>2, ls\<^sub>2)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>3 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (27 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 27 subgoals...
[PROOF STEP]
with 1 2 WhileT.prems
[PROOF STATE]
proof (chain)
picking this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 true,(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs c,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
length ls\<^sub>1 = length ls\<^sub>2
fv (while (e) c) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (while (e) c) \<le> length ls
\<lbrakk>fv (while (e) c) \<subseteq> set Vs; l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]; length Vs + max_vars (while (e) c) \<le> length ls\<^sub>2\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (while (e) c),(h\<^sub>2, ls\<^sub>2)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>3 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
obtain ls\<^sub>3 where 3: "?Post (While (e) c) h\<^sub>2 l\<^sub>2 e' h\<^sub>3 l\<^sub>3 Vs ls\<^sub>2 ls\<^sub>3"
[PROOF STATE]
proof (prove)
using this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 true,(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs c,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
length ls\<^sub>1 = length ls\<^sub>2
fv (while (e) c) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (while (e) c) \<le> length ls
\<lbrakk>fv (while (e) c) \<subseteq> set Vs; l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]; length Vs + max_vars (while (e) c) \<le> length ls\<^sub>2\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (while (e) c),(h\<^sub>2, ls\<^sub>2)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>3 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (1 subgoal):
 1. (\<And>ls\<^sub>3. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (while (e) c),(h\<^sub>2, ls\<^sub>2)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls\<^sub>3)\<rangle> \<and> l\<^sub>3 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>3] \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(auto)
[PROOF STATE]
proof (state)
this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (while (e) c),(h\<^sub>2, ls\<^sub>2)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls\<^sub>3)\<rangle> \<and> l\<^sub>3 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>3]

goal (27 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 27 subgoals...
[PROOF STEP]
from 1 2 3
[PROOF STATE]
proof (chain)
picking this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 true,(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs c,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
length ls\<^sub>1 = length ls\<^sub>2
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (while (e) c),(h\<^sub>2, ls\<^sub>2)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls\<^sub>3)\<rangle> \<and> l\<^sub>3 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>3]
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 true,(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs c,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
length ls\<^sub>1 = length ls\<^sub>2
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (while (e) c),(h\<^sub>2, ls\<^sub>2)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls\<^sub>3)\<rangle> \<and> l\<^sub>3 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>3]

goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (while (e) c),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>3 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by(auto intro!:WhileT\<^sub>1)
[PROOF STATE]
proof (state)
this:
\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (while (e) c),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>3 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (26 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 26 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (26 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 26 subgoals...
[PROOF STEP]
case (WhileBodyThrow e h l h\<^sub>1 l\<^sub>1 c e' h\<^sub>2 l\<^sub>2)
[PROOF STATE]
proof (state)
this:
P \<turnstile> \<langle>e,(h, l)\<rangle> \<Rightarrow> \<langle>true,(h\<^sub>1, l\<^sub>1)\<rangle>
\<lbrakk>fv e \<subseteq> set ?Vs; l \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e,(h, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 true,(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
P \<turnstile> \<langle>c,(h\<^sub>1, l\<^sub>1)\<rangle> \<Rightarrow> \<langle>throw e',(h\<^sub>2, l\<^sub>2)\<rangle>
\<lbrakk>fv c \<subseteq> set ?Vs; l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars c \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs c,(h\<^sub>1, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (while (e) c) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (while (e) c) \<le> length ls

goal (26 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 26 subgoals...
[PROOF STEP]
have "PROP ?P e h l true h\<^sub>1 l\<^sub>1 Vs ls"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>fv e \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 true,(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
\<lbrakk>fv e \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 true,(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (26 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 26 subgoals...
[PROOF STEP]
with WhileBodyThrow.prems
[PROOF STATE]
proof (chain)
picking this:
fv (while (e) c) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (while (e) c) \<le> length ls
\<lbrakk>fv e \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 true,(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
obtain ls\<^sub>1 where 1: "?Post e h l true h\<^sub>1 l\<^sub>1 Vs ls ls\<^sub>1"
    "size ls = size ls\<^sub>1"
[PROOF STATE]
proof (prove)
using this:
fv (while (e) c) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (while (e) c) \<le> length ls
\<lbrakk>fv e \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 true,(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (1 subgoal):
 1. (\<And>ls\<^sub>1. \<lbrakk>compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 true,(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length ls = length ls\<^sub>1\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(auto intro!:eval\<^sub>1_preserves_len)
[PROOF STATE]
proof (state)
this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 true,(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1

goal (26 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 26 subgoals...
[PROOF STEP]
have "PROP ?P c h\<^sub>1 l\<^sub>1 (throw e') h\<^sub>2 l\<^sub>2 Vs ls\<^sub>1"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>fv c \<subseteq> set Vs; l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length Vs + max_vars c \<le> length ls\<^sub>1\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs c,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
\<lbrakk>fv c \<subseteq> set Vs; l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length Vs + max_vars c \<le> length ls\<^sub>1\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs c,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (26 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 26 subgoals...
[PROOF STEP]
with 1 WhileBodyThrow.prems
[PROOF STATE]
proof (chain)
picking this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 true,(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1
fv (while (e) c) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (while (e) c) \<le> length ls
\<lbrakk>fv c \<subseteq> set Vs; l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length Vs + max_vars c \<le> length ls\<^sub>1\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs c,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
obtain ls\<^sub>2 where 2: "?Post c h\<^sub>1 l\<^sub>1 (throw e') h\<^sub>2 l\<^sub>2 Vs ls\<^sub>1 ls\<^sub>2"
[PROOF STATE]
proof (prove)
using this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 true,(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1
fv (while (e) c) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (while (e) c) \<le> length ls
\<lbrakk>fv c \<subseteq> set Vs; l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length Vs + max_vars c \<le> length ls\<^sub>1\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs c,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (1 subgoal):
 1. (\<And>ls\<^sub>2. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs c,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2] \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs c,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]

goal (26 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 26 subgoals...
[PROOF STEP]
from 1 2
[PROOF STATE]
proof (chain)
picking this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 true,(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs c,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 true,(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs c,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]

goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (while (e) c),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by(auto intro!:WhileBodyThrow\<^sub>1)
[PROOF STATE]
proof (state)
this:
\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (while (e) c),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (25 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 25 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (25 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 25 subgoals...
[PROOF STEP]
case WhileCondThrow
[PROOF STATE]
proof (state)
this:
P \<turnstile> \<langle>e_,(a___, b___)\<rangle> \<Rightarrow> \<langle>throw e'_,(a_, b_)\<rangle>
\<lbrakk>fv e_ \<subseteq> set ?Vs; b___ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e_,(a___, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (while (e_) c_) \<subseteq> set Vs
b___ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (while (e_) c_) \<le> length ls

goal (25 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 25 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
P \<turnstile> \<langle>e_,(a___, b___)\<rangle> \<Rightarrow> \<langle>throw e'_,(a_, b_)\<rangle>
\<lbrakk>fv e_ \<subseteq> set ?Vs; b___ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e_,(a___, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (while (e_) c_) \<subseteq> set Vs
b___ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (while (e_) c_) \<le> length ls

goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (while (e_) c_),(a___, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by(fastforce intro!:WhileCondThrow\<^sub>1)
[PROOF STATE]
proof (state)
this:
\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (while (e_) c_),(a___, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (24 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 24 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (24 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 24 subgoals...
[PROOF STEP]
case New
[PROOF STATE]
proof (state)
this:
new_Addr h_ = \<lfloor>a_\<rfloor>
P \<turnstile> C_ has_fields FDTs_
h'_ = h_(a_ \<mapsto> (C_, init_fields FDTs_))
fv (new C_) \<subseteq> set Vs
l_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (new C_) \<le> length ls

goal (24 subgoals):
 1. \<And>h a C FDTs h' l Vs ls. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; P \<turnstile> C has_fields FDTs; h' = h(a \<mapsto> (C, init_fields FDTs)); fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h', ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 24 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
new_Addr h_ = \<lfloor>a_\<rfloor>
P \<turnstile> C_ has_fields FDTs_
h'_ = h_(a_ \<mapsto> (C_, init_fields FDTs_))
fv (new C_) \<subseteq> set Vs
l_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (new C_) \<le> length ls

goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C_),(h_, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a_),(h'_, ls')\<rangle> \<and> l_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by(fastforce intro:eval\<^sub>1_evals\<^sub>1.intros)
[PROOF STATE]
proof (state)
this:
\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C_),(h_, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a_),(h'_, ls')\<rangle> \<and> l_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (23 subgoals):
 1. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 23 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (23 subgoals):
 1. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 23 subgoals...
[PROOF STEP]
case NewFail
[PROOF STATE]
proof (state)
this:
new_Addr h_ = None
fv (new C_) \<subseteq> set Vs
l_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (new C_) \<le> length ls

goal (23 subgoals):
 1. \<And>h C l Vs ls. \<lbrakk>new_Addr h = None; fv (new C) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (new C) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 23 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
new_Addr h_ = None
fv (new C_) \<subseteq> set Vs
l_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (new C_) \<le> length ls

goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C_),(h_, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h_, ls')\<rangle> \<and> l_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by(fastforce intro:eval\<^sub>1_evals\<^sub>1.intros)
[PROOF STATE]
proof (state)
this:
\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (new C_),(h_, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW OutOfMemory),(h_, ls')\<rangle> \<and> l_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (22 subgoals):
 1. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 22 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (22 subgoals):
 1. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 22 subgoals...
[PROOF STEP]
case Cast
[PROOF STATE]
proof (state)
this:
P \<turnstile> \<langle>e_,(a___, b_)\<rangle> \<Rightarrow> \<langle>addr a_,(h_, l_)\<rangle>
\<lbrakk>fv e_ \<subseteq> set ?Vs; b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e_,(a___, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a_),(h_, ls')\<rangle> \<and> l_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
h_ a_ = \<lfloor>(D_, fs_)\<rfloor>
P \<turnstile> D_ \<preceq>\<^sup>* C_
fv (Cast C_ e_) \<subseteq> set Vs
b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (Cast C_ e_) \<le> length ls

goal (22 subgoals):
 1. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; P \<turnstile> D \<preceq>\<^sup>* C; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 22 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
P \<turnstile> \<langle>e_,(a___, b_)\<rangle> \<Rightarrow> \<langle>addr a_,(h_, l_)\<rangle>
\<lbrakk>fv e_ \<subseteq> set ?Vs; b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e_,(a___, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a_),(h_, ls')\<rangle> \<and> l_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
h_ a_ = \<lfloor>(D_, fs_)\<rfloor>
P \<turnstile> D_ \<preceq>\<^sup>* C_
fv (Cast C_ e_) \<subseteq> set Vs
b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (Cast C_ e_) \<le> length ls

goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C_ e_),(a___, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a_),(h_, ls')\<rangle> \<and> l_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by(fastforce intro:eval\<^sub>1_evals\<^sub>1.intros)
[PROOF STATE]
proof (state)
this:
\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C_ e_),(a___, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a_),(h_, ls')\<rangle> \<and> l_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (21 subgoals):
 1. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 21 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (21 subgoals):
 1. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 21 subgoals...
[PROOF STEP]
case CastNull
[PROOF STATE]
proof (state)
this:
P \<turnstile> \<langle>e_,(a___, b___)\<rangle> \<Rightarrow> \<langle>null,(a_, b_)\<rangle>
\<lbrakk>fv e_ \<subseteq> set ?Vs; b___ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e_,(a___, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (Cast C_ e_) \<subseteq> set Vs
b___ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (Cast C_ e_) \<le> length ls

goal (21 subgoals):
 1. \<And>e a b aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 21 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
P \<turnstile> \<langle>e_,(a___, b___)\<rangle> \<Rightarrow> \<langle>null,(a_, b_)\<rangle>
\<lbrakk>fv e_ \<subseteq> set ?Vs; b___ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e_,(a___, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (Cast C_ e_) \<subseteq> set Vs
b___ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (Cast C_ e_) \<le> length ls

goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C_ e_),(a___, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by(fastforce intro:eval\<^sub>1_evals\<^sub>1.intros)
[PROOF STATE]
proof (state)
this:
\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C_ e_),(a___, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (20 subgoals):
 1. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 20 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (20 subgoals):
 1. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 20 subgoals...
[PROOF STEP]
case CastThrow
[PROOF STATE]
proof (state)
this:
P \<turnstile> \<langle>e_,(a___, b___)\<rangle> \<Rightarrow> \<langle>throw e'_,(a_, b_)\<rangle>
\<lbrakk>fv e_ \<subseteq> set ?Vs; b___ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e_,(a___, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (Cast C_ e_) \<subseteq> set Vs
b___ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (Cast C_ e_) \<le> length ls

goal (20 subgoals):
 1. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e a b e' aa ba C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 20 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
P \<turnstile> \<langle>e_,(a___, b___)\<rangle> \<Rightarrow> \<langle>throw e'_,(a_, b_)\<rangle>
\<lbrakk>fv e_ \<subseteq> set ?Vs; b___ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e_,(a___, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (Cast C_ e_) \<subseteq> set Vs
b___ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (Cast C_ e_) \<le> length ls

goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C_ e_),(a___, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by(fastforce intro:eval\<^sub>1_evals\<^sub>1.intros)
[PROOF STATE]
proof (state)
this:
\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C_ e_),(a___, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (19 subgoals):
 1. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 19 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (19 subgoals):
 1. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 19 subgoals...
[PROOF STEP]
case (CastFail e h l a h\<^sub>1 l\<^sub>1 D fs C)
[PROOF STATE]
proof (state)
this:
P \<turnstile> \<langle>e,(h, l)\<rangle> \<Rightarrow> \<langle>addr a,(h\<^sub>1, l\<^sub>1)\<rangle>
\<lbrakk>fv e \<subseteq> set ?Vs; l \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e,(h, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
h\<^sub>1 a = \<lfloor>(D, fs)\<rfloor>
(D, C) \<notin> (subcls1 P)\<^sup>*
fv (Cast C e) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (Cast C e) \<le> length ls

goal (19 subgoals):
 1. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 19 subgoals...
[PROOF STEP]
have "PROP ?P e h l (addr a) h\<^sub>1 l\<^sub>1 Vs ls"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>fv e \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
\<lbrakk>fv e \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (19 subgoals):
 1. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 19 subgoals...
[PROOF STEP]
with CastFail.prems
[PROOF STATE]
proof (chain)
picking this:
fv (Cast C e) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (Cast C e) \<le> length ls
\<lbrakk>fv e \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
obtain ls\<^sub>1 where 1: "?Post e h l (addr a) h\<^sub>1 l\<^sub>1 Vs ls ls\<^sub>1"
[PROOF STATE]
proof (prove)
using this:
fv (Cast C e) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (Cast C e) \<le> length ls
\<lbrakk>fv e \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (1 subgoal):
 1. (\<And>ls\<^sub>1. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1] \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]

goal (19 subgoals):
 1. \<And>e a b aa h l D fs C Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(D, fs)\<rfloor>; (D, C) \<notin> (subcls1 P)\<^sup>*; fv (Cast C e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Cast C e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 19 subgoals...
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
using 1 CastFail.hyps
[PROOF STATE]
proof (prove)
using this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
P \<turnstile> \<langle>e,(h, l)\<rangle> \<Rightarrow> \<langle>addr a,(h\<^sub>1, l\<^sub>1)\<rangle>
\<lbrakk>fv e \<subseteq> set ?Vs; l \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e,(h, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
h\<^sub>1 a = \<lfloor>(D, fs)\<rfloor>
(D, C) \<notin> (subcls1 P)\<^sup>*

goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by(auto intro!:CastFail\<^sub>1[where D=D])
[PROOF STATE]
proof (state)
this:
\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Cast C e),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW ClassCast),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (18 subgoals):
 1. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 18 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (18 subgoals):
 1. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 18 subgoals...
[PROOF STEP]
case Val
[PROOF STATE]
proof (state)
this:
fv (Val v_) \<subseteq> set Vs
b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (Val v_) \<le> length ls

goal (18 subgoals):
 1. \<And>v a b Vs ls. \<lbrakk>fv (Val v) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Val v) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(a, ls')\<rangle> \<and> b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 18 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
fv (Val v_) \<subseteq> set Vs
b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (Val v_) \<le> length ls

goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v_),(a_, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by(fastforce intro:eval\<^sub>1_evals\<^sub>1.intros)
[PROOF STATE]
proof (state)
this:
\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Val v_),(a_, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (17 subgoals):
 1. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 17 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (17 subgoals):
 1. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 17 subgoals...
[PROOF STEP]
case (BinOp e h l v\<^sub>1 h\<^sub>1 l\<^sub>1 e\<^sub>1 v\<^sub>2 h\<^sub>2 l\<^sub>2 bop v)
[PROOF STATE]
proof (state)
this:
P \<turnstile> \<langle>e,(h, l)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(h\<^sub>1, l\<^sub>1)\<rangle>
\<lbrakk>fv e \<subseteq> set ?Vs; l \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e,(h, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
P \<turnstile> \<langle>e\<^sub>1,(h\<^sub>1, l\<^sub>1)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(h\<^sub>2, l\<^sub>2)\<rangle>
\<lbrakk>fv e\<^sub>1 \<subseteq> set ?Vs; l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e\<^sub>1 \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e\<^sub>1,(h\<^sub>1, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>
fv (e \<guillemotleft>bop\<guillemotright> e\<^sub>1) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e \<guillemotleft>bop\<guillemotright> e\<^sub>1) \<le> length ls

goal (17 subgoals):
 1. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 17 subgoals...
[PROOF STEP]
have "PROP ?P e h l (Val v\<^sub>1) h\<^sub>1 l\<^sub>1 Vs ls"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>fv e \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
\<lbrakk>fv e \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (17 subgoals):
 1. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 17 subgoals...
[PROOF STEP]
with BinOp.prems
[PROOF STATE]
proof (chain)
picking this:
fv (e \<guillemotleft>bop\<guillemotright> e\<^sub>1) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e \<guillemotleft>bop\<guillemotright> e\<^sub>1) \<le> length ls
\<lbrakk>fv e \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
obtain ls\<^sub>1 where 1: "?Post e h l (Val v\<^sub>1) h\<^sub>1 l\<^sub>1 Vs ls ls\<^sub>1"
    "size ls = size ls\<^sub>1"
[PROOF STATE]
proof (prove)
using this:
fv (e \<guillemotleft>bop\<guillemotright> e\<^sub>1) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e \<guillemotleft>bop\<guillemotright> e\<^sub>1) \<le> length ls
\<lbrakk>fv e \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (1 subgoal):
 1. (\<And>ls\<^sub>1. \<lbrakk>compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length ls = length ls\<^sub>1\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(auto intro!:eval\<^sub>1_preserves_len)
[PROOF STATE]
proof (state)
this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1

goal (17 subgoals):
 1. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 17 subgoals...
[PROOF STEP]
have "PROP ?P e\<^sub>1 h\<^sub>1 l\<^sub>1 (Val v\<^sub>2) h\<^sub>2 l\<^sub>2 Vs ls\<^sub>1"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length Vs + max_vars e\<^sub>1 \<le> length ls\<^sub>1\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
\<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length Vs + max_vars e\<^sub>1 \<le> length ls\<^sub>1\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (17 subgoals):
 1. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 17 subgoals...
[PROOF STEP]
with 1 BinOp.prems
[PROOF STATE]
proof (chain)
picking this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1
fv (e \<guillemotleft>bop\<guillemotright> e\<^sub>1) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e \<guillemotleft>bop\<guillemotright> e\<^sub>1) \<le> length ls
\<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length Vs + max_vars e\<^sub>1 \<le> length ls\<^sub>1\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
obtain ls\<^sub>2 where 2: "?Post e\<^sub>1 h\<^sub>1 l\<^sub>1 (Val v\<^sub>2) h\<^sub>2 l\<^sub>2 Vs ls\<^sub>1 ls\<^sub>2"
[PROOF STATE]
proof (prove)
using this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1
fv (e \<guillemotleft>bop\<guillemotright> e\<^sub>1) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e \<guillemotleft>bop\<guillemotright> e\<^sub>1) \<le> length ls
\<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length Vs + max_vars e\<^sub>1 \<le> length ls\<^sub>1\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (1 subgoal):
 1. (\<And>ls\<^sub>2. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2] \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(auto)
[PROOF STATE]
proof (state)
this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]

goal (17 subgoals):
 1. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 v\<^sub>2 ab bb bop v Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 17 subgoals...
[PROOF STEP]
from 1 2 BinOp
[PROOF STATE]
proof (chain)
picking this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
P \<turnstile> \<langle>e,(h, l)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(h\<^sub>1, l\<^sub>1)\<rangle>
\<lbrakk>fv e \<subseteq> set ?Vs; l \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e,(h, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
P \<turnstile> \<langle>e\<^sub>1,(h\<^sub>1, l\<^sub>1)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(h\<^sub>2, l\<^sub>2)\<rangle>
\<lbrakk>fv e\<^sub>1 \<subseteq> set ?Vs; l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e\<^sub>1 \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e\<^sub>1,(h\<^sub>1, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>
fv (e \<guillemotleft>bop\<guillemotright> e\<^sub>1) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e \<guillemotleft>bop\<guillemotright> e\<^sub>1) \<le> length ls
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
P \<turnstile> \<langle>e,(h, l)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(h\<^sub>1, l\<^sub>1)\<rangle>
\<lbrakk>fv e \<subseteq> set ?Vs; l \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e,(h, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
P \<turnstile> \<langle>e\<^sub>1,(h\<^sub>1, l\<^sub>1)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>2,(h\<^sub>2, l\<^sub>2)\<rangle>
\<lbrakk>fv e\<^sub>1 \<subseteq> set ?Vs; l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e\<^sub>1 \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e\<^sub>1,(h\<^sub>1, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>2),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
binop (bop, v\<^sub>1, v\<^sub>2) = \<lfloor>v\<rfloor>
fv (e \<guillemotleft>bop\<guillemotright> e\<^sub>1) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e \<guillemotleft>bop\<guillemotright> e\<^sub>1) \<le> length ls

goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e \<guillemotleft>bop\<guillemotright> e\<^sub>1),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by(auto intro!:BinOp\<^sub>1)
[PROOF STATE]
proof (state)
this:
\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e \<guillemotleft>bop\<guillemotright> e\<^sub>1),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (16 subgoals):
 1. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 16 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (16 subgoals):
 1. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 16 subgoals...
[PROOF STEP]
case (BinOpThrow2 e\<^sub>0 h l v\<^sub>1 h\<^sub>1 l\<^sub>1 e\<^sub>1 e h\<^sub>2 l\<^sub>2 bop)
[PROOF STATE]
proof (state)
this:
P \<turnstile> \<langle>e\<^sub>0,(h, l)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(h\<^sub>1, l\<^sub>1)\<rangle>
\<lbrakk>fv e\<^sub>0 \<subseteq> set ?Vs; l \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e\<^sub>0 \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e\<^sub>0,(h, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
P \<turnstile> \<langle>e\<^sub>1,(h\<^sub>1, l\<^sub>1)\<rangle> \<Rightarrow> \<langle>throw e,(h\<^sub>2, l\<^sub>2)\<rangle>
\<lbrakk>fv e\<^sub>1 \<subseteq> set ?Vs; l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e\<^sub>1 \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e\<^sub>1,(h\<^sub>1, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (e\<^sub>0 \<guillemotleft>bop\<guillemotright> e\<^sub>1) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e\<^sub>0 \<guillemotleft>bop\<guillemotright> e\<^sub>1) \<le> length ls

goal (16 subgoals):
 1. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 16 subgoals...
[PROOF STEP]
have "PROP ?P e\<^sub>0 h l (Val v\<^sub>1) h\<^sub>1 l\<^sub>1 Vs ls"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>fv e\<^sub>0 \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>0 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>0,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
\<lbrakk>fv e\<^sub>0 \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>0 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>0,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (16 subgoals):
 1. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 16 subgoals...
[PROOF STEP]
with BinOpThrow2.prems
[PROOF STATE]
proof (chain)
picking this:
fv (e\<^sub>0 \<guillemotleft>bop\<guillemotright> e\<^sub>1) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e\<^sub>0 \<guillemotleft>bop\<guillemotright> e\<^sub>1) \<le> length ls
\<lbrakk>fv e\<^sub>0 \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>0 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>0,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
obtain ls\<^sub>1 where 1: "?Post e\<^sub>0 h l (Val v\<^sub>1) h\<^sub>1 l\<^sub>1 Vs ls ls\<^sub>1"
    "size ls = size ls\<^sub>1"
[PROOF STATE]
proof (prove)
using this:
fv (e\<^sub>0 \<guillemotleft>bop\<guillemotright> e\<^sub>1) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e\<^sub>0 \<guillemotleft>bop\<guillemotright> e\<^sub>1) \<le> length ls
\<lbrakk>fv e\<^sub>0 \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>0 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>0,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (1 subgoal):
 1. (\<And>ls\<^sub>1. \<lbrakk>compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>0,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length ls = length ls\<^sub>1\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(auto intro!:eval\<^sub>1_preserves_len)
[PROOF STATE]
proof (state)
this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>0,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1

goal (16 subgoals):
 1. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 16 subgoals...
[PROOF STEP]
have "PROP ?P e\<^sub>1 h\<^sub>1 l\<^sub>1 (throw e) h\<^sub>2 l\<^sub>2 Vs ls\<^sub>1"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length Vs + max_vars e\<^sub>1 \<le> length ls\<^sub>1\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
\<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length Vs + max_vars e\<^sub>1 \<le> length ls\<^sub>1\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (16 subgoals):
 1. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 16 subgoals...
[PROOF STEP]
with 1 BinOpThrow2.prems
[PROOF STATE]
proof (chain)
picking this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>0,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1
fv (e\<^sub>0 \<guillemotleft>bop\<guillemotright> e\<^sub>1) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e\<^sub>0 \<guillemotleft>bop\<guillemotright> e\<^sub>1) \<le> length ls
\<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length Vs + max_vars e\<^sub>1 \<le> length ls\<^sub>1\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
obtain ls\<^sub>2 where 2: "?Post e\<^sub>1 h\<^sub>1 l\<^sub>1 (throw e) h\<^sub>2 l\<^sub>2 Vs ls\<^sub>1 ls\<^sub>2"
[PROOF STATE]
proof (prove)
using this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>0,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1
fv (e\<^sub>0 \<guillemotleft>bop\<guillemotright> e\<^sub>1) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e\<^sub>0 \<guillemotleft>bop\<guillemotright> e\<^sub>1) \<le> length ls
\<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length Vs + max_vars e\<^sub>1 \<le> length ls\<^sub>1\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (1 subgoal):
 1. (\<And>ls\<^sub>2. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2] \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(auto)
[PROOF STATE]
proof (state)
this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]

goal (16 subgoals):
 1. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e\<^sub>1 a b v\<^sub>1 aa ba e\<^sub>2 e ab bb bop Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 16 subgoals...
[PROOF STEP]
from 1 2 BinOpThrow2
[PROOF STATE]
proof (chain)
picking this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>0,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
P \<turnstile> \<langle>e\<^sub>0,(h, l)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(h\<^sub>1, l\<^sub>1)\<rangle>
\<lbrakk>fv e\<^sub>0 \<subseteq> set ?Vs; l \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e\<^sub>0 \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e\<^sub>0,(h, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
P \<turnstile> \<langle>e\<^sub>1,(h\<^sub>1, l\<^sub>1)\<rangle> \<Rightarrow> \<langle>throw e,(h\<^sub>2, l\<^sub>2)\<rangle>
\<lbrakk>fv e\<^sub>1 \<subseteq> set ?Vs; l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e\<^sub>1 \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e\<^sub>1,(h\<^sub>1, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (e\<^sub>0 \<guillemotleft>bop\<guillemotright> e\<^sub>1) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e\<^sub>0 \<guillemotleft>bop\<guillemotright> e\<^sub>1) \<le> length ls
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>0,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
P \<turnstile> \<langle>e\<^sub>0,(h, l)\<rangle> \<Rightarrow> \<langle>Val v\<^sub>1,(h\<^sub>1, l\<^sub>1)\<rangle>
\<lbrakk>fv e\<^sub>0 \<subseteq> set ?Vs; l \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e\<^sub>0 \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e\<^sub>0,(h, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v\<^sub>1),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
P \<turnstile> \<langle>e\<^sub>1,(h\<^sub>1, l\<^sub>1)\<rangle> \<Rightarrow> \<langle>throw e,(h\<^sub>2, l\<^sub>2)\<rangle>
\<lbrakk>fv e\<^sub>1 \<subseteq> set ?Vs; l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e\<^sub>1 \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e\<^sub>1,(h\<^sub>1, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (e\<^sub>0 \<guillemotleft>bop\<guillemotright> e\<^sub>1) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e\<^sub>0 \<guillemotleft>bop\<guillemotright> e\<^sub>1) \<le> length ls

goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>0 \<guillemotleft>bop\<guillemotright> e\<^sub>1),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by(auto intro!:BinOpThrow\<^sub>2\<^sub>1)
[PROOF STATE]
proof (state)
this:
\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>0 \<guillemotleft>bop\<guillemotright> e\<^sub>1),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (15 subgoals):
 1. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b e' aa ba F D e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 15 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (15 subgoals):
 1. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b e' aa ba F D e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 15 subgoals...
[PROOF STEP]
case BinOpThrow1
[PROOF STATE]
proof (state)
this:
P \<turnstile> \<langle>e\<^sub>1_,(a___, b___)\<rangle> \<Rightarrow> \<langle>throw e_,(a_, b_)\<rangle>
\<lbrakk>fv e\<^sub>1_ \<subseteq> set ?Vs; b___ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e\<^sub>1_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e\<^sub>1_,(a___, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (e\<^sub>1_ \<guillemotleft>bop_\<guillemotright> e\<^sub>2_) \<subseteq> set Vs
b___ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e\<^sub>1_ \<guillemotleft>bop_\<guillemotright> e\<^sub>2_) \<le> length ls

goal (15 subgoals):
 1. \<And>e\<^sub>1 a b e aa ba bop e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b e' aa ba F D e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 15 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
P \<turnstile> \<langle>e\<^sub>1_,(a___, b___)\<rangle> \<Rightarrow> \<langle>throw e_,(a_, b_)\<rangle>
\<lbrakk>fv e\<^sub>1_ \<subseteq> set ?Vs; b___ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e\<^sub>1_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e\<^sub>1_,(a___, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (e\<^sub>1_ \<guillemotleft>bop_\<guillemotright> e\<^sub>2_) \<subseteq> set Vs
b___ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e\<^sub>1_ \<guillemotleft>bop_\<guillemotright> e\<^sub>2_) \<le> length ls

goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1_ \<guillemotleft>bop_\<guillemotright> e\<^sub>2_),(a___, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by(fastforce intro!:eval\<^sub>1_evals\<^sub>1.intros)
[PROOF STATE]
proof (state)
this:
\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1_ \<guillemotleft>bop_\<guillemotright> e\<^sub>2_),(a___, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (14 subgoals):
 1. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e' aa ba F D e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v aa ba e\<^sub>2 e' ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 14 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (14 subgoals):
 1. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e' aa ba F D e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v aa ba e\<^sub>2 e' ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 14 subgoals...
[PROOF STEP]
case Var
[PROOF STATE]
proof (state)
this:
l_ V_ = \<lfloor>v_\<rfloor>
fv (Var V_) \<subseteq> set Vs
l_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (Var V_) \<le> length ls

goal (14 subgoals):
 1. \<And>l V v h Vs ls. \<lbrakk>l V = \<lfloor>v\<rfloor>; fv (Var V) \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (Var V) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b e' aa ba F D e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e\<^sub>1 a b v aa ba e\<^sub>2 e' ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 14 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
l_ V_ = \<lfloor>v_\<rfloor>
fv (Var V_) \<subseteq> set Vs
l_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (Var V_) \<le> length ls

goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V_),(h_, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v_),(h_, ls')\<rangle> \<and> l_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by(force intro!:Var\<^sub>1 simp add: map_le_def fun_upds_apply)
[PROOF STATE]
proof (state)
this:
\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (Var V_),(h_, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v_),(h_, ls')\<rangle> \<and> l_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (13 subgoals):
 1. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b e' aa ba F D e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b v aa ba e\<^sub>2 e' ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e a b e' aa ba M ps Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 13 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (13 subgoals):
 1. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b e' aa ba F D e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b v aa ba e\<^sub>2 e' ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e a b e' aa ba M ps Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 13 subgoals...
[PROOF STEP]
case LAss
[PROOF STATE]
proof (state)
this:
P \<turnstile> \<langle>e_,(a_, b_)\<rangle> \<Rightarrow> \<langle>Val v_,(h_, l_)\<rangle>
\<lbrakk>fv e_ \<subseteq> set ?Vs; b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e_,(a_, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v_),(h_, ls')\<rangle> \<and> l_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
l'_ = l_(V_ \<mapsto> v_)
fv (V_:=e_) \<subseteq> set Vs
b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (V_:=e_) \<le> length ls

goal (13 subgoals):
 1. \<And>e a b v h l l' V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; l' = l(V \<mapsto> v); fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h, ls')\<rangle> \<and> l' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b e' aa ba F D e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e\<^sub>1 a b v aa ba e\<^sub>2 e' ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e a b e' aa ba M ps Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 13 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
P \<turnstile> \<langle>e_,(a_, b_)\<rangle> \<Rightarrow> \<langle>Val v_,(h_, l_)\<rangle>
\<lbrakk>fv e_ \<subseteq> set ?Vs; b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e_,(a_, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v_),(h_, ls')\<rangle> \<and> l_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
l'_ = l_(V_ \<mapsto> v_)
fv (V_:=e_) \<subseteq> set Vs
b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (V_:=e_) \<le> length ls

goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V_:=e_),(a_, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h_, ls')\<rangle> \<and> l'_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by(fastforce simp add: LAss_lem intro:eval\<^sub>1_evals\<^sub>1.intros
                dest:eval\<^sub>1_preserves_len)
[PROOF STATE]
proof (state)
this:
\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V_:=e_),(a_, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h_, ls')\<rangle> \<and> l'_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (12 subgoals):
 1. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e\<^sub>1 a b e' aa ba F D e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v aa ba e\<^sub>2 e' ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e a b e' aa ba M ps Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e a b v aa ba es vs ex es' ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>es,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs @ throw ex # es',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs es \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss es \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs es,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs @ throw ex # es'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(es)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(es)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(es)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw ex),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 12 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (12 subgoals):
 1. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e\<^sub>1 a b e' aa ba F D e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v aa ba e\<^sub>2 e' ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e a b e' aa ba M ps Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e a b v aa ba es vs ex es' ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>es,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs @ throw ex # es',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs es \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss es \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs es,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs @ throw ex # es'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(es)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(es)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(es)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw ex),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 12 subgoals...
[PROOF STEP]
case LAssThrow
[PROOF STATE]
proof (state)
this:
P \<turnstile> \<langle>e_,(a___, b___)\<rangle> \<Rightarrow> \<langle>throw e'_,(a_, b_)\<rangle>
\<lbrakk>fv e_ \<subseteq> set ?Vs; b___ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e_,(a___, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (V_:=e_) \<subseteq> set Vs
b___ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (V_:=e_) \<le> length ls

goal (12 subgoals):
 1. \<And>e a b e' aa ba V Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (V:=e) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (V:=e) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V:=e),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e\<^sub>1 a b e' aa ba F D e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e\<^sub>1 a b v aa ba e\<^sub>2 e' ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e a b e' aa ba M ps Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e a b v aa ba es vs ex es' ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>es,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs @ throw ex # es',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs es \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss es \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs es,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs @ throw ex # es'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(es)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(es)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(es)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw ex),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 12 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
P \<turnstile> \<langle>e_,(a___, b___)\<rangle> \<Rightarrow> \<langle>throw e'_,(a_, b_)\<rangle>
\<lbrakk>fv e_ \<subseteq> set ?Vs; b___ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e_,(a___, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (V_:=e_) \<subseteq> set Vs
b___ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (V_:=e_) \<le> length ls

goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V_:=e_),(a___, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by(fastforce intro:eval\<^sub>1_evals\<^sub>1.intros)
[PROOF STATE]
proof (state)
this:
\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (V_:=e_),(a___, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (11 subgoals):
 1. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e\<^sub>1 a b e' aa ba F D e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e\<^sub>1 a b v aa ba e\<^sub>2 e' ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b e' aa ba M ps Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e a b v aa ba es vs ex es' ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>es,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs @ throw ex # es',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs es \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss es \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs es,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs @ throw ex # es'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(es)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(es)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(es)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw ex),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e a b aa ba ps vs ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 11 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (11 subgoals):
 1. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e\<^sub>1 a b e' aa ba F D e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e\<^sub>1 a b v aa ba e\<^sub>2 e' ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b e' aa ba M ps Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e a b v aa ba es vs ex es' ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>es,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs @ throw ex # es',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs es \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss es \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs es,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs @ throw ex # es'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(es)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(es)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(es)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw ex),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e a b aa ba ps vs ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 11 subgoals...
[PROOF STEP]
case FAcc
[PROOF STATE]
proof (state)
this:
P \<turnstile> \<langle>e_,(a___, b_)\<rangle> \<Rightarrow> \<langle>addr a_,(h_, l_)\<rangle>
\<lbrakk>fv e_ \<subseteq> set ?Vs; b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e_,(a___, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a_),(h_, ls')\<rangle> \<and> l_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
h_ a_ = \<lfloor>(C_, fs_)\<rfloor>
fs_ (F_, D_) = \<lfloor>v_\<rfloor>
fv (e_\<bullet>F_{D_}) \<subseteq> set Vs
b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e_\<bullet>F_{D_}) \<le> length ls

goal (11 subgoals):
 1. \<And>e a b aa h l C fs F D v Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(h, l)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h aa = \<lfloor>(C, fs)\<rfloor>; fs (F, D) = \<lfloor>v\<rfloor>; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h, ls')\<rangle> \<and> l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e\<^sub>1 a b e' aa ba F D e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e\<^sub>1 a b v aa ba e\<^sub>2 e' ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b e' aa ba M ps Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e a b v aa ba es vs ex es' ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>es,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs @ throw ex # es',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs es \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss es \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs es,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs @ throw ex # es'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(es)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(es)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(es)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw ex),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e a b aa ba ps vs ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
A total of 11 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
P \<turnstile> \<langle>e_,(a___, b_)\<rangle> \<Rightarrow> \<langle>addr a_,(h_, l_)\<rangle>
\<lbrakk>fv e_ \<subseteq> set ?Vs; b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e_,(a___, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a_),(h_, ls')\<rangle> \<and> l_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
h_ a_ = \<lfloor>(C_, fs_)\<rfloor>
fs_ (F_, D_) = \<lfloor>v_\<rfloor>
fv (e_\<bullet>F_{D_}) \<subseteq> set Vs
b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e_\<bullet>F_{D_}) \<le> length ls

goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e_\<bullet>F_{D_}),(a___, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v_),(h_, ls')\<rangle> \<and> l_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by(fastforce intro:eval\<^sub>1_evals\<^sub>1.intros)
[PROOF STATE]
proof (state)
this:
\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e_\<bullet>F_{D_}),(a___, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v_),(h_, ls')\<rangle> \<and> l_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (10 subgoals):
 1. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e\<^sub>1 a b e' aa ba F D e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e\<^sub>1 a b v aa ba e\<^sub>2 e' ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b e' aa ba M ps Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b v aa ba es vs ex es' ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>es,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs @ throw ex # es',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs es \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss es \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs es,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs @ throw ex # es'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(es)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(es)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(es)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw ex),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e a b aa ba ps vs ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e a b aa ab ba ps vs h\<^sub>2 l\<^sub>2 C fs M Ts T pns body D l\<^sub>2' e' h\<^sub>3 l\<^sub>3 Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(ab, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(ab, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; P \<turnstile> C sees M: Ts\<rightarrow>T = (pns, body) in D; length vs = length pns; l\<^sub>2' = [this \<mapsto> Addr aa, pns [\<mapsto>] vs]; P \<turnstile> \<langle>body,(h\<^sub>2, l\<^sub>2')\<rangle> \<Rightarrow> \<langle>e',(h\<^sub>3, l\<^sub>3)\<rangle>; \<And>Vs ls. \<lbrakk>fv body \<subseteq> set Vs; l\<^sub>2' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars body \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs body,(h\<^sub>2, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>3 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (10 subgoals):
 1. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e\<^sub>1 a b e' aa ba F D e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e\<^sub>1 a b v aa ba e\<^sub>2 e' ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b e' aa ba M ps Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b v aa ba es vs ex es' ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>es,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs @ throw ex # es',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs es \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss es \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs es,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs @ throw ex # es'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(es)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(es)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(es)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw ex),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e a b aa ba ps vs ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e a b aa ab ba ps vs h\<^sub>2 l\<^sub>2 C fs M Ts T pns body D l\<^sub>2' e' h\<^sub>3 l\<^sub>3 Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(ab, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(ab, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; P \<turnstile> C sees M: Ts\<rightarrow>T = (pns, body) in D; length vs = length pns; l\<^sub>2' = [this \<mapsto> Addr aa, pns [\<mapsto>] vs]; P \<turnstile> \<langle>body,(h\<^sub>2, l\<^sub>2')\<rangle> \<Rightarrow> \<langle>e',(h\<^sub>3, l\<^sub>3)\<rangle>; \<And>Vs ls. \<lbrakk>fv body \<subseteq> set Vs; l\<^sub>2' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars body \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs body,(h\<^sub>2, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>3 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
case FAccNull
[PROOF STATE]
proof (state)
this:
P \<turnstile> \<langle>e_,(a___, b___)\<rangle> \<Rightarrow> \<langle>null,(a_, b_)\<rangle>
\<lbrakk>fv e_ \<subseteq> set ?Vs; b___ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e_,(a___, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (e_\<bullet>F_{D_}) \<subseteq> set Vs
b___ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e_\<bullet>F_{D_}) \<le> length ls

goal (10 subgoals):
 1. \<And>e a b aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e\<^sub>1 a b e' aa ba F D e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e\<^sub>1 a b v aa ba e\<^sub>2 e' ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b e' aa ba M ps Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b v aa ba es vs ex es' ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>es,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs @ throw ex # es',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs es \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss es \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs es,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs @ throw ex # es'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(es)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(es)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(es)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw ex),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e a b aa ba ps vs ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 10. \<And>e a b aa ab ba ps vs h\<^sub>2 l\<^sub>2 C fs M Ts T pns body D l\<^sub>2' e' h\<^sub>3 l\<^sub>3 Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(ab, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(ab, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; P \<turnstile> C sees M: Ts\<rightarrow>T = (pns, body) in D; length vs = length pns; l\<^sub>2' = [this \<mapsto> Addr aa, pns [\<mapsto>] vs]; P \<turnstile> \<langle>body,(h\<^sub>2, l\<^sub>2')\<rangle> \<Rightarrow> \<langle>e',(h\<^sub>3, l\<^sub>3)\<rangle>; \<And>Vs ls. \<lbrakk>fv body \<subseteq> set Vs; l\<^sub>2' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars body \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs body,(h\<^sub>2, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>3 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
P \<turnstile> \<langle>e_,(a___, b___)\<rangle> \<Rightarrow> \<langle>null,(a_, b_)\<rangle>
\<lbrakk>fv e_ \<subseteq> set ?Vs; b___ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e_,(a___, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (e_\<bullet>F_{D_}) \<subseteq> set Vs
b___ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e_\<bullet>F_{D_}) \<le> length ls

goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e_\<bullet>F_{D_}),(a___, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by(fastforce intro:eval\<^sub>1_evals\<^sub>1.intros)
[PROOF STATE]
proof (state)
this:
\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e_\<bullet>F_{D_}),(a___, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (9 subgoals):
 1. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e\<^sub>1 a b e' aa ba F D e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e\<^sub>1 a b v aa ba e\<^sub>2 e' ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba M ps Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b v aa ba es vs ex es' ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>es,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs @ throw ex # es',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs es \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss es \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs es,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs @ throw ex # es'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(es)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(es)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(es)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw ex),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b aa ba ps vs ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e a b aa ab ba ps vs h\<^sub>2 l\<^sub>2 C fs M Ts T pns body D l\<^sub>2' e' h\<^sub>3 l\<^sub>3 Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(ab, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(ab, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; P \<turnstile> C sees M: Ts\<rightarrow>T = (pns, body) in D; length vs = length pns; l\<^sub>2' = [this \<mapsto> Addr aa, pns [\<mapsto>] vs]; P \<turnstile> \<langle>body,(h\<^sub>2, l\<^sub>2')\<rangle> \<Rightarrow> \<langle>e',(h\<^sub>3, l\<^sub>3)\<rangle>; \<And>Vs ls. \<lbrakk>fv body \<subseteq> set Vs; l\<^sub>2' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars body \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs body,(h\<^sub>2, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>3 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (9 subgoals):
 1. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e\<^sub>1 a b e' aa ba F D e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e\<^sub>1 a b v aa ba e\<^sub>2 e' ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba M ps Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b v aa ba es vs ex es' ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>es,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs @ throw ex # es',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs es \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss es \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs es,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs @ throw ex # es'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(es)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(es)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(es)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw ex),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b aa ba ps vs ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e a b aa ab ba ps vs h\<^sub>2 l\<^sub>2 C fs M Ts T pns body D l\<^sub>2' e' h\<^sub>3 l\<^sub>3 Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(ab, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(ab, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; P \<turnstile> C sees M: Ts\<rightarrow>T = (pns, body) in D; length vs = length pns; l\<^sub>2' = [this \<mapsto> Addr aa, pns [\<mapsto>] vs]; P \<turnstile> \<langle>body,(h\<^sub>2, l\<^sub>2')\<rangle> \<Rightarrow> \<langle>e',(h\<^sub>3, l\<^sub>3)\<rangle>; \<And>Vs ls. \<lbrakk>fv body \<subseteq> set Vs; l\<^sub>2' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars body \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs body,(h\<^sub>2, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>3 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
case FAccThrow
[PROOF STATE]
proof (state)
this:
P \<turnstile> \<langle>e_,(a___, b___)\<rangle> \<Rightarrow> \<langle>throw e'_,(a_, b_)\<rangle>
\<lbrakk>fv e_ \<subseteq> set ?Vs; b___ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e_,(a___, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (e_\<bullet>F_{D_}) \<subseteq> set Vs
b___ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e_\<bullet>F_{D_}) \<le> length ls

goal (9 subgoals):
 1. \<And>e a b e' aa ba F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>F{D}) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>F{D}) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>F{D}),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e\<^sub>1 a b e' aa ba F D e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e\<^sub>1 a b v aa ba e\<^sub>2 e' ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b e' aa ba M ps Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b v aa ba es vs ex es' ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>es,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs @ throw ex # es',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs es \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss es \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs es,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs @ throw ex # es'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(es)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(es)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(es)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw ex),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b aa ba ps vs ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 9. \<And>e a b aa ab ba ps vs h\<^sub>2 l\<^sub>2 C fs M Ts T pns body D l\<^sub>2' e' h\<^sub>3 l\<^sub>3 Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(ab, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(ab, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; P \<turnstile> C sees M: Ts\<rightarrow>T = (pns, body) in D; length vs = length pns; l\<^sub>2' = [this \<mapsto> Addr aa, pns [\<mapsto>] vs]; P \<turnstile> \<langle>body,(h\<^sub>2, l\<^sub>2')\<rangle> \<Rightarrow> \<langle>e',(h\<^sub>3, l\<^sub>3)\<rangle>; \<And>Vs ls. \<lbrakk>fv body \<subseteq> set Vs; l\<^sub>2' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars body \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs body,(h\<^sub>2, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>3 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
P \<turnstile> \<langle>e_,(a___, b___)\<rangle> \<Rightarrow> \<langle>throw e'_,(a_, b_)\<rangle>
\<lbrakk>fv e_ \<subseteq> set ?Vs; b___ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e_ \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e_,(a___, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (e_\<bullet>F_{D_}) \<subseteq> set Vs
b___ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e_\<bullet>F_{D_}) \<le> length ls

goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e_\<bullet>F_{D_}),(a___, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by(fastforce intro:eval\<^sub>1_evals\<^sub>1.intros)
[PROOF STATE]
proof (state)
this:
\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e_\<bullet>F_{D_}),(a___, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'_),(a_, ls')\<rangle> \<and> b_ \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (8 subgoals):
 1. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e\<^sub>1 a b e' aa ba F D e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e\<^sub>1 a b v aa ba e\<^sub>2 e' ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b e' aa ba M ps Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b v aa ba es vs ex es' ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>es,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs @ throw ex # es',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs es \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss es \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs es,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs @ throw ex # es'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(es)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(es)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(es)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw ex),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b aa ba ps vs ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b aa ab ba ps vs h\<^sub>2 l\<^sub>2 C fs M Ts T pns body D l\<^sub>2' e' h\<^sub>3 l\<^sub>3 Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(ab, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(ab, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; P \<turnstile> C sees M: Ts\<rightarrow>T = (pns, body) in D; length vs = length pns; l\<^sub>2' = [this \<mapsto> Addr aa, pns [\<mapsto>] vs]; P \<turnstile> \<langle>body,(h\<^sub>2, l\<^sub>2')\<rangle> \<Rightarrow> \<langle>e',(h\<^sub>3, l\<^sub>3)\<rangle>; \<And>Vs ls. \<lbrakk>fv body \<subseteq> set Vs; l\<^sub>2' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars body \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs body,(h\<^sub>2, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>3 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (8 subgoals):
 1. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e\<^sub>1 a b e' aa ba F D e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e\<^sub>1 a b v aa ba e\<^sub>2 e' ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b e' aa ba M ps Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b v aa ba es vs ex es' ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>es,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs @ throw ex # es',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs es \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss es \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs es,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs @ throw ex # es'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(es)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(es)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(es)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw ex),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b aa ba ps vs ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b aa ab ba ps vs h\<^sub>2 l\<^sub>2 C fs M Ts T pns body D l\<^sub>2' e' h\<^sub>3 l\<^sub>3 Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(ab, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(ab, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; P \<turnstile> C sees M: Ts\<rightarrow>T = (pns, body) in D; length vs = length pns; l\<^sub>2' = [this \<mapsto> Addr aa, pns [\<mapsto>] vs]; P \<turnstile> \<langle>body,(h\<^sub>2, l\<^sub>2')\<rangle> \<Rightarrow> \<langle>e',(h\<^sub>3, l\<^sub>3)\<rangle>; \<And>Vs ls. \<lbrakk>fv body \<subseteq> set Vs; l\<^sub>2' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars body \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs body,(h\<^sub>2, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>3 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
case (FAss e\<^sub>1 h l a h\<^sub>1 l\<^sub>1 e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2')
[PROOF STATE]
proof (state)
this:
P \<turnstile> \<langle>e\<^sub>1,(h, l)\<rangle> \<Rightarrow> \<langle>addr a,(h\<^sub>1, l\<^sub>1)\<rangle>
\<lbrakk>fv e\<^sub>1 \<subseteq> set ?Vs; l \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e\<^sub>1 \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e\<^sub>1,(h, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
P \<turnstile> \<langle>e\<^sub>2,(h\<^sub>1, l\<^sub>1)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>
\<lbrakk>fv e\<^sub>2 \<subseteq> set ?Vs; l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e\<^sub>2 \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e\<^sub>2,(h\<^sub>1, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
h\<^sub>2 a = \<lfloor>(C, fs)\<rfloor>
fs' = fs((F, D) \<mapsto> v)
h\<^sub>2' = h\<^sub>2(a \<mapsto> (C, fs'))
fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls

goal (8 subgoals):
 1. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e\<^sub>1 a b e' aa ba F D e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e\<^sub>1 a b v aa ba e\<^sub>2 e' ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b e' aa ba M ps Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b v aa ba es vs ex es' ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>es,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs @ throw ex # es',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs es \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss es \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs es,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs @ throw ex # es'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(es)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(es)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(es)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw ex),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b aa ba ps vs ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b aa ab ba ps vs h\<^sub>2 l\<^sub>2 C fs M Ts T pns body D l\<^sub>2' e' h\<^sub>3 l\<^sub>3 Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(ab, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(ab, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; P \<turnstile> C sees M: Ts\<rightarrow>T = (pns, body) in D; length vs = length pns; l\<^sub>2' = [this \<mapsto> Addr aa, pns [\<mapsto>] vs]; P \<turnstile> \<langle>body,(h\<^sub>2, l\<^sub>2')\<rangle> \<Rightarrow> \<langle>e',(h\<^sub>3, l\<^sub>3)\<rangle>; \<And>Vs ls. \<lbrakk>fv body \<subseteq> set Vs; l\<^sub>2' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars body \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs body,(h\<^sub>2, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>3 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
have "PROP ?P e\<^sub>1 h l (addr a) h\<^sub>1 l\<^sub>1 Vs ls"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
\<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (8 subgoals):
 1. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e\<^sub>1 a b e' aa ba F D e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e\<^sub>1 a b v aa ba e\<^sub>2 e' ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b e' aa ba M ps Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b v aa ba es vs ex es' ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>es,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs @ throw ex # es',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs es \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss es \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs es,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs @ throw ex # es'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(es)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(es)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(es)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw ex),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b aa ba ps vs ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b aa ab ba ps vs h\<^sub>2 l\<^sub>2 C fs M Ts T pns body D l\<^sub>2' e' h\<^sub>3 l\<^sub>3 Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(ab, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(ab, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; P \<turnstile> C sees M: Ts\<rightarrow>T = (pns, body) in D; length vs = length pns; l\<^sub>2' = [this \<mapsto> Addr aa, pns [\<mapsto>] vs]; P \<turnstile> \<langle>body,(h\<^sub>2, l\<^sub>2')\<rangle> \<Rightarrow> \<langle>e',(h\<^sub>3, l\<^sub>3)\<rangle>; \<And>Vs ls. \<lbrakk>fv body \<subseteq> set Vs; l\<^sub>2' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars body \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs body,(h\<^sub>2, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>3 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
with FAss.prems
[PROOF STATE]
proof (chain)
picking this:
fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls
\<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
obtain ls\<^sub>1 where 1: "?Post e\<^sub>1 h l (addr a) h\<^sub>1 l\<^sub>1 Vs ls ls\<^sub>1"
    "size ls = size ls\<^sub>1"
[PROOF STATE]
proof (prove)
using this:
fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls
\<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (1 subgoal):
 1. (\<And>ls\<^sub>1. \<lbrakk>compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length ls = length ls\<^sub>1\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(auto intro!:eval\<^sub>1_preserves_len)
[PROOF STATE]
proof (state)
this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1

goal (8 subgoals):
 1. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e\<^sub>1 a b e' aa ba F D e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e\<^sub>1 a b v aa ba e\<^sub>2 e' ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b e' aa ba M ps Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b v aa ba es vs ex es' ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>es,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs @ throw ex # es',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs es \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss es \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs es,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs @ throw ex # es'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(es)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(es)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(es)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw ex),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b aa ba ps vs ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b aa ab ba ps vs h\<^sub>2 l\<^sub>2 C fs M Ts T pns body D l\<^sub>2' e' h\<^sub>3 l\<^sub>3 Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(ab, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(ab, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; P \<turnstile> C sees M: Ts\<rightarrow>T = (pns, body) in D; length vs = length pns; l\<^sub>2' = [this \<mapsto> Addr aa, pns [\<mapsto>] vs]; P \<turnstile> \<langle>body,(h\<^sub>2, l\<^sub>2')\<rangle> \<Rightarrow> \<langle>e',(h\<^sub>3, l\<^sub>3)\<rangle>; \<And>Vs ls. \<lbrakk>fv body \<subseteq> set Vs; l\<^sub>2' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars body \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs body,(h\<^sub>2, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>3 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
have "PROP ?P e\<^sub>2 h\<^sub>1 l\<^sub>1 (Val v) h\<^sub>2 l\<^sub>2 Vs ls\<^sub>1"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length Vs + max_vars e\<^sub>2 \<le> length ls\<^sub>1\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
\<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length Vs + max_vars e\<^sub>2 \<le> length ls\<^sub>1\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (8 subgoals):
 1. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e\<^sub>1 a b e' aa ba F D e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e\<^sub>1 a b v aa ba e\<^sub>2 e' ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b e' aa ba M ps Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b v aa ba es vs ex es' ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>es,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs @ throw ex # es',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs es \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss es \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs es,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs @ throw ex # es'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(es)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(es)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(es)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw ex),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b aa ba ps vs ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b aa ab ba ps vs h\<^sub>2 l\<^sub>2 C fs M Ts T pns body D l\<^sub>2' e' h\<^sub>3 l\<^sub>3 Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(ab, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(ab, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; P \<turnstile> C sees M: Ts\<rightarrow>T = (pns, body) in D; length vs = length pns; l\<^sub>2' = [this \<mapsto> Addr aa, pns [\<mapsto>] vs]; P \<turnstile> \<langle>body,(h\<^sub>2, l\<^sub>2')\<rangle> \<Rightarrow> \<langle>e',(h\<^sub>3, l\<^sub>3)\<rangle>; \<And>Vs ls. \<lbrakk>fv body \<subseteq> set Vs; l\<^sub>2' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars body \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs body,(h\<^sub>2, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>3 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
with 1 FAss.prems
[PROOF STATE]
proof (chain)
picking this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1
fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls
\<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length Vs + max_vars e\<^sub>2 \<le> length ls\<^sub>1\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
obtain ls\<^sub>2 where 2: "?Post e\<^sub>2 h\<^sub>1 l\<^sub>1 (Val v) h\<^sub>2 l\<^sub>2 Vs ls\<^sub>1 ls\<^sub>2"
[PROOF STATE]
proof (prove)
using this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1
fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls
\<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length Vs + max_vars e\<^sub>2 \<le> length ls\<^sub>1\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (1 subgoal):
 1. (\<And>ls\<^sub>2. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2] \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(auto)
[PROOF STATE]
proof (state)
this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]

goal (8 subgoals):
 1. \<And>e\<^sub>1 a b aa ab ba e\<^sub>2 v h\<^sub>2 l\<^sub>2 C fs fs' F D h\<^sub>2' Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(ab, ba)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(ab, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; fs' = fs((F, D) \<mapsto> v); h\<^sub>2' = h\<^sub>2(aa \<mapsto> (C, fs')); fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e\<^sub>1 a b e' aa ba F D e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e\<^sub>1 a b v aa ba e\<^sub>2 e' ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b e' aa ba M ps Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b v aa ba es vs ex es' ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>es,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs @ throw ex # es',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs es \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss es \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs es,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs @ throw ex # es'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(es)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(es)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(es)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw ex),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b aa ba ps vs ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 8. \<And>e a b aa ab ba ps vs h\<^sub>2 l\<^sub>2 C fs M Ts T pns body D l\<^sub>2' e' h\<^sub>3 l\<^sub>3 Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(ab, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(ab, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; P \<turnstile> C sees M: Ts\<rightarrow>T = (pns, body) in D; length vs = length pns; l\<^sub>2' = [this \<mapsto> Addr aa, pns [\<mapsto>] vs]; P \<turnstile> \<langle>body,(h\<^sub>2, l\<^sub>2')\<rangle> \<Rightarrow> \<langle>e',(h\<^sub>3, l\<^sub>3)\<rangle>; \<And>Vs ls. \<lbrakk>fv body \<subseteq> set Vs; l\<^sub>2' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars body \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs body,(h\<^sub>2, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>3 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
from 1 2 FAss
[PROOF STATE]
proof (chain)
picking this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
P \<turnstile> \<langle>e\<^sub>1,(h, l)\<rangle> \<Rightarrow> \<langle>addr a,(h\<^sub>1, l\<^sub>1)\<rangle>
\<lbrakk>fv e\<^sub>1 \<subseteq> set ?Vs; l \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e\<^sub>1 \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e\<^sub>1,(h, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
P \<turnstile> \<langle>e\<^sub>2,(h\<^sub>1, l\<^sub>1)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>
\<lbrakk>fv e\<^sub>2 \<subseteq> set ?Vs; l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e\<^sub>2 \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e\<^sub>2,(h\<^sub>1, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
h\<^sub>2 a = \<lfloor>(C, fs)\<rfloor>
fs' = fs((F, D) \<mapsto> v)
h\<^sub>2' = h\<^sub>2(a \<mapsto> (C, fs'))
fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(h\<^sub>1, ls\<^sub>1)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls\<^sub>2)\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>2]
P \<turnstile> \<langle>e\<^sub>1,(h, l)\<rangle> \<Rightarrow> \<langle>addr a,(h\<^sub>1, l\<^sub>1)\<rangle>
\<lbrakk>fv e\<^sub>1 \<subseteq> set ?Vs; l \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e\<^sub>1 \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e\<^sub>1,(h, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr a),(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
P \<turnstile> \<langle>e\<^sub>2,(h\<^sub>1, l\<^sub>1)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>
\<lbrakk>fv e\<^sub>2 \<subseteq> set ?Vs; l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e\<^sub>2 \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e\<^sub>2,(h\<^sub>1, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
h\<^sub>2 a = \<lfloor>(C, fs)\<rfloor>
fs' = fs((F, D) \<mapsto> v)
h\<^sub>2' = h\<^sub>2(a \<mapsto> (C, fs'))
fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls

goal (1 subgoal):
 1. \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by(auto intro!:FAss\<^sub>1)
[PROOF STATE]
proof (state)
this:
\<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 unit,(h\<^sub>2', ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (7 subgoals):
 1. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e\<^sub>1 a b e' aa ba F D e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e\<^sub>1 a b v aa ba e\<^sub>2 e' ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b e' aa ba M ps Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b v aa ba es vs ex es' ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>es,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs @ throw ex # es',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs es \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss es \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs es,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs @ throw ex # es'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(es)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(es)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(es)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw ex),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b aa ba ps vs ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b aa ab ba ps vs h\<^sub>2 l\<^sub>2 C fs M Ts T pns body D l\<^sub>2' e' h\<^sub>3 l\<^sub>3 Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(ab, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(ab, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; P \<turnstile> C sees M: Ts\<rightarrow>T = (pns, body) in D; length vs = length pns; l\<^sub>2' = [this \<mapsto> Addr aa, pns [\<mapsto>] vs]; P \<turnstile> \<langle>body,(h\<^sub>2, l\<^sub>2')\<rangle> \<Rightarrow> \<langle>e',(h\<^sub>3, l\<^sub>3)\<rangle>; \<And>Vs ls. \<lbrakk>fv body \<subseteq> set Vs; l\<^sub>2' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars body \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs body,(h\<^sub>2, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>3 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (7 subgoals):
 1. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e\<^sub>1 a b e' aa ba F D e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e\<^sub>1 a b v aa ba e\<^sub>2 e' ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b e' aa ba M ps Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b v aa ba es vs ex es' ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>es,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs @ throw ex # es',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs es \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss es \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs es,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs @ throw ex # es'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(es)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(es)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(es)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw ex),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b aa ba ps vs ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b aa ab ba ps vs h\<^sub>2 l\<^sub>2 C fs M Ts T pns body D l\<^sub>2' e' h\<^sub>3 l\<^sub>3 Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(ab, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(ab, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; P \<turnstile> C sees M: Ts\<rightarrow>T = (pns, body) in D; length vs = length pns; l\<^sub>2' = [this \<mapsto> Addr aa, pns [\<mapsto>] vs]; P \<turnstile> \<langle>body,(h\<^sub>2, l\<^sub>2')\<rangle> \<Rightarrow> \<langle>e',(h\<^sub>3, l\<^sub>3)\<rangle>; \<And>Vs ls. \<lbrakk>fv body \<subseteq> set Vs; l\<^sub>2' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars body \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs body,(h\<^sub>2, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>3 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
case (FAssNull e\<^sub>1 h l h\<^sub>1 l\<^sub>1 e\<^sub>2 v h\<^sub>2 l\<^sub>2 F D)
[PROOF STATE]
proof (state)
this:
P \<turnstile> \<langle>e\<^sub>1,(h, l)\<rangle> \<Rightarrow> \<langle>null,(h\<^sub>1, l\<^sub>1)\<rangle>
\<lbrakk>fv e\<^sub>1 \<subseteq> set ?Vs; l \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e\<^sub>1 \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e\<^sub>1,(h, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
P \<turnstile> \<langle>e\<^sub>2,(h\<^sub>1, l\<^sub>1)\<rangle> \<Rightarrow> \<langle>Val v,(h\<^sub>2, l\<^sub>2)\<rangle>
\<lbrakk>fv e\<^sub>2 \<subseteq> set ?Vs; l\<^sub>1 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ?ls]; length ?Vs + max_vars e\<^sub>2 \<le> length ?ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 ?Vs e\<^sub>2,(h\<^sub>1, ?ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [?Vs [\<mapsto>] ls']
fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls

goal (7 subgoals):
 1. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e\<^sub>1 a b e' aa ba F D e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e\<^sub>1 a b v aa ba e\<^sub>2 e' ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b e' aa ba M ps Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b v aa ba es vs ex es' ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>es,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs @ throw ex # es',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs es \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss es \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs es,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs @ throw ex # es'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(es)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(es)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(es)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw ex),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b aa ba ps vs ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b aa ab ba ps vs h\<^sub>2 l\<^sub>2 C fs M Ts T pns body D l\<^sub>2' e' h\<^sub>3 l\<^sub>3 Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(ab, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(ab, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; P \<turnstile> C sees M: Ts\<rightarrow>T = (pns, body) in D; length vs = length pns; l\<^sub>2' = [this \<mapsto> Addr aa, pns [\<mapsto>] vs]; P \<turnstile> \<langle>body,(h\<^sub>2, l\<^sub>2')\<rangle> \<Rightarrow> \<langle>e',(h\<^sub>3, l\<^sub>3)\<rangle>; \<And>Vs ls. \<lbrakk>fv body \<subseteq> set Vs; l\<^sub>2' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars body \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs body,(h\<^sub>2, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>3 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
have "PROP ?P e\<^sub>1 h l null h\<^sub>1 l\<^sub>1 Vs ls"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
\<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (7 subgoals):
 1. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e\<^sub>1 a b e' aa ba F D e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e\<^sub>1 a b v aa ba e\<^sub>2 e' ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b e' aa ba M ps Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b v aa ba es vs ex es' ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>es,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs @ throw ex # es',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs es \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss es \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs es,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs @ throw ex # es'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(es)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(es)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(es)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw ex),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 6. \<And>e a b aa ba ps vs ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(aa, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 7. \<And>e a b aa ab ba ps vs h\<^sub>2 l\<^sub>2 C fs M Ts T pns body D l\<^sub>2' e' h\<^sub>3 l\<^sub>3 Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>addr aa,(ab, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (addr aa),(ab, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>ps,(ab, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs,(h\<^sub>2, l\<^sub>2)\<rangle>; \<And>Vs ls. \<lbrakk>fvs ps \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss ps \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compEs\<^sub>1 Vs ps,(ab, ls)\<rangle> [\<Rightarrow>] \<langle>compEs\<^sub>1 Vs (map Val vs),(h\<^sub>2, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; h\<^sub>2 aa = \<lfloor>(C, fs)\<rfloor>; P \<turnstile> C sees M: Ts\<rightarrow>T = (pns, body) in D; length vs = length pns; l\<^sub>2' = [this \<mapsto> Addr aa, pns [\<mapsto>] vs]; P \<turnstile> \<langle>body,(h\<^sub>2, l\<^sub>2')\<rangle> \<Rightarrow> \<langle>e',(h\<^sub>3, l\<^sub>3)\<rangle>; \<And>Vs ls. \<lbrakk>fv body \<subseteq> set Vs; l\<^sub>2' \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars body \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs body,(h\<^sub>2, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>3 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 e',(h\<^sub>3, ls')\<rangle> \<and> l\<^sub>2 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
with FAssNull.prems
[PROOF STATE]
proof (chain)
picking this:
fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls
\<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
[PROOF STEP]
obtain ls\<^sub>1 where 1: "?Post e\<^sub>1 h l null h\<^sub>1 l\<^sub>1 Vs ls ls\<^sub>1"
    "size ls = size ls\<^sub>1"
[PROOF STATE]
proof (prove)
using this:
fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs
l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]
length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls
\<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; l \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(h\<^sub>1, ls')\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']

goal (1 subgoal):
 1. (\<And>ls\<^sub>1. \<lbrakk>compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]; length ls = length ls\<^sub>1\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(auto intro!:eval\<^sub>1_preserves_len)
[PROOF STATE]
proof (state)
this:
compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(h, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(h\<^sub>1, ls\<^sub>1)\<rangle> \<and> l\<^sub>1 \<subseteq>\<^sub>m [Vs [\<mapsto>] ls\<^sub>1]
length ls = length ls\<^sub>1

goal (7 subgoals):
 1. \<And>e\<^sub>1 a b aa ba e\<^sub>2 v ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>null,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 null,(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>Val v,(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (THROW NullPointer),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 2. \<And>e\<^sub>1 a b e' aa ba F D e\<^sub>2 Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 3. \<And>e\<^sub>1 a b v aa ba e\<^sub>2 e' ab bb F D Vs ls. \<lbrakk>P \<turnstile> \<langle>e\<^sub>1,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>1 \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>1 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>1,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>e\<^sub>2,(aa, ba)\<rangle> \<Rightarrow> \<langle>throw e',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fv e\<^sub>2 \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e\<^sub>2 \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e\<^sub>2,(aa, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(ab, ls')\<rangle> \<and> bb \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 4. \<And>e a b e' aa ba M ps Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>throw e',(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; fv (e\<bullet>M(ps)) \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars (e\<bullet>M(ps)) \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs (e\<bullet>M(ps)),(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (throw e'),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']
 5. \<And>e a b v aa ba es vs ex es' ab bb M Vs ls. \<lbrakk>P \<turnstile> \<langle>e,(a, b)\<rangle> \<Rightarrow> \<langle>Val v,(aa, ba)\<rangle>; \<And>Vs ls. \<lbrakk>fv e \<subseteq> set Vs; b \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_vars e \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>compE\<^sub>1 Vs e,(a, ls)\<rangle> \<Rightarrow> \<langle>fin\<^sub>1 (Val v),(aa, ls')\<rangle> \<and> ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls']; P \<turnstile> \<langle>es,(aa, ba)\<rangle> [\<Rightarrow>] \<langle>map Val vs @ throw ex # es',(ab, bb)\<rangle>; \<And>Vs ls. \<lbrakk>fvs es \<subseteq> set Vs; ba \<subseteq>\<^sub>m [Vs [\<mapsto>] ls]; length Vs + max_varss es \<le> length ls\<rbrakk> \<Longrightarrow> \<exists>ls'. compP\<^sub>1 P \<turnstile>\<^sub>1 \<langle>com
[cell cut: 2288437 characters, first 2000000 kept]