[STATEMENT]
lemma D_last_index_compE\<^sub>1:
      "\<And>A Vs. \<lbrakk> A \<subseteq> set Vs; fv e \<subseteq> set Vs \<rbrakk> \<Longrightarrow>
                \<D> e \<lfloor>A\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs e) \<lfloor>last_index Vs ` A\<rfloor>"
and "\<And>A Vs. \<lbrakk> A \<subseteq> set Vs; fvs es \<subseteq> set Vs \<rbrakk> \<Longrightarrow>
                \<D>s es \<lfloor>A\<rfloor> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs es) \<lfloor>last_index Vs ` A\<rfloor>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv e \<subseteq> set Vs; \<D> e \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs e) \<lfloor>last_index Vs ` A\<rfloor>) &&& (\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs es \<subseteq> set Vs; \<D>s es \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs es) \<lfloor>last_index Vs ` A\<rfloor>)
[PROOF STEP]
(*<*)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv e \<subseteq> set Vs; \<D> e \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs e) \<lfloor>last_index Vs ` A\<rfloor>) &&& (\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs es \<subseteq> set Vs; \<D>s es \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs es) \<lfloor>last_index Vs ` A\<rfloor>)
[PROOF STEP]
proof(induct e and es rule: \<D>.induct \<D>s.induct)
[PROOF STATE]
proof (state)
goal (17 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1 \<guillemotleft>x2\<guillemotright> x3) \<subseteq> set Vs; \<D> (x1 \<guillemotleft>x2\<guillemotright> x3) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1 \<guillemotleft>x2\<guillemotright> x3)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x1 x2 x3 x4 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x4 \<subseteq> set Vs; \<D> x4 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x4) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3} := x4) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3} := x4) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3} := x4)) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs x3 \<subseteq> set Vs; \<D>s x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2(x3)) \<subseteq> set Vs; \<D> (x1\<bullet>x2(x3)) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2(x3))) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
A total of 17 subgoals...
[PROOF STEP]
case (BinOp e\<^sub>1 bop e\<^sub>2)
[PROOF STATE]
proof (state)
this:
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>1 \<subseteq> set ?Vs; \<D> e\<^sub>1 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>1) \<lfloor>last_index ?Vs ` ?A\<rfloor>
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>2 \<subseteq> set ?Vs; \<D> e\<^sub>2 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>2) \<lfloor>last_index ?Vs ` ?A\<rfloor>
A \<subseteq> set Vs
fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs
\<D> (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<lfloor>A\<rfloor>

goal (17 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1 \<guillemotleft>x2\<guillemotright> x3) \<subseteq> set Vs; \<D> (x1 \<guillemotleft>x2\<guillemotright> x3) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1 \<guillemotleft>x2\<guillemotright> x3)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x1 x2 x3 x4 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x4 \<subseteq> set Vs; \<D> x4 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x4) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3} := x4) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3} := x4) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3} := x4)) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs x3 \<subseteq> set Vs; \<D>s x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2(x3)) \<subseteq> set Vs; \<D> (x1\<bullet>x2(x3)) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2(x3))) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
A total of 17 subgoals...
[PROOF STEP]
hence IH\<^sub>1: "\<D> (compE\<^sub>1 Vs e\<^sub>1) \<lfloor>last_index Vs ` A\<rfloor>"
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>1 \<subseteq> set ?Vs; \<D> e\<^sub>1 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>1) \<lfloor>last_index ?Vs ` ?A\<rfloor>
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>2 \<subseteq> set ?Vs; \<D> e\<^sub>2 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>2) \<lfloor>last_index ?Vs ` ?A\<rfloor>
A \<subseteq> set Vs
fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs
\<D> (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<lfloor>A\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs e\<^sub>1) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs e\<^sub>1) \<lfloor>last_index Vs ` A\<rfloor>

goal (17 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1 \<guillemotleft>x2\<guillemotright> x3) \<subseteq> set Vs; \<D> (x1 \<guillemotleft>x2\<guillemotright> x3) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1 \<guillemotleft>x2\<guillemotright> x3)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x1 x2 x3 x4 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x4 \<subseteq> set Vs; \<D> x4 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x4) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3} := x4) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3} := x4) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3} := x4)) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs x3 \<subseteq> set Vs; \<D>s x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2(x3)) \<subseteq> set Vs; \<D> (x1\<bullet>x2(x3)) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2(x3))) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
A total of 17 subgoals...
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
proof (cases "\<A> e\<^sub>1")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<A> e\<^sub>1 = None \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
case None
[PROOF STATE]
proof (state)
this:
\<A> e\<^sub>1 = None

goal (2 subgoals):
 1. \<A> e\<^sub>1 = None \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
\<A> e\<^sub>1 = None

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
using BinOp
[PROOF STATE]
proof (prove)
using this:
\<A> e\<^sub>1 = None
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>1 \<subseteq> set ?Vs; \<D> e\<^sub>1 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>1) \<lfloor>last_index ?Vs ` ?A\<rfloor>
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>2 \<subseteq> set ?Vs; \<D> e\<^sub>2 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>2) \<lfloor>last_index ?Vs ` ?A\<rfloor>
A \<subseteq> set Vs
fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs
\<D> (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<lfloor>A\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
case (Some A\<^sub>1)
[PROOF STATE]
proof (state)
this:
\<A> e\<^sub>1 = \<lfloor>A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
have indexA\<^sub>1: "\<A> (compE\<^sub>1 Vs e\<^sub>1) = \<lfloor>last_index Vs ` A\<^sub>1\<rfloor>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<A> (compE\<^sub>1 Vs e\<^sub>1) = \<lfloor>last_index Vs ` A\<^sub>1\<rfloor>
[PROOF STEP]
using A_compE\<^sub>1[OF Some] BinOp.prems
[PROOF STATE]
proof (prove)
using this:
fv e\<^sub>1 \<subseteq> set ?Vs \<Longrightarrow> \<A> (compE\<^sub>1 ?Vs e\<^sub>1) = \<lfloor>last_index ?Vs ` A\<^sub>1\<rfloor>
A \<subseteq> set Vs
fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs
\<D> (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<lfloor>A\<rfloor>

goal (1 subgoal):
 1. \<A> (compE\<^sub>1 Vs e\<^sub>1) = \<lfloor>last_index Vs ` A\<^sub>1\<rfloor>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<A> (compE\<^sub>1 Vs e\<^sub>1) = \<lfloor>last_index Vs ` A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
have "A \<union> A\<^sub>1 \<subseteq> set Vs"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. A \<union> A\<^sub>1 \<subseteq> set Vs
[PROOF STEP]
using BinOp.prems A_fv[OF Some]
[PROOF STATE]
proof (prove)
using this:
A \<subseteq> set Vs
fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs
\<D> (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<lfloor>A\<rfloor>
A\<^sub>1 \<subseteq> fv e\<^sub>1

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

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
hence "\<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` (A \<union> A\<^sub>1)\<rfloor>"
[PROOF STATE]
proof (prove)
using this:
A \<union> A\<^sub>1 \<subseteq> set Vs

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` (A \<union> A\<^sub>1)\<rfloor>
[PROOF STEP]
using BinOp Some
[PROOF STATE]
proof (prove)
using this:
A \<union> A\<^sub>1 \<subseteq> set Vs
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>1 \<subseteq> set ?Vs; \<D> e\<^sub>1 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>1) \<lfloor>last_index ?Vs ` ?A\<rfloor>
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>2 \<subseteq> set ?Vs; \<D> e\<^sub>2 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>2) \<lfloor>last_index ?Vs ` ?A\<rfloor>
A \<subseteq> set Vs
fv (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<subseteq> set Vs
\<D> (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2) \<lfloor>A\<rfloor>
\<A> e\<^sub>1 = \<lfloor>A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` (A \<union> A\<^sub>1)\<rfloor>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` (A \<union> A\<^sub>1)\<rfloor>

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
hence "\<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` A \<union> last_index Vs ` A\<^sub>1\<rfloor>"
[PROOF STATE]
proof (prove)
using this:
\<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` (A \<union> A\<^sub>1)\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` A \<union> last_index Vs ` A\<^sub>1\<rfloor>
[PROOF STEP]
by(simp add: image_Un)
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` A \<union> last_index Vs ` A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
\<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` A \<union> last_index Vs ` A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
using IH\<^sub>1 indexA\<^sub>1
[PROOF STATE]
proof (prove)
using this:
\<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` A \<union> last_index Vs ` A\<^sub>1\<rfloor>
\<D> (compE\<^sub>1 Vs e\<^sub>1) \<lfloor>last_index Vs ` A\<rfloor>
\<A> (compE\<^sub>1 Vs e\<^sub>1) = \<lfloor>last_index Vs ` A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs (e\<^sub>1 \<guillemotleft>bop\<guillemotright> e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>

goal (16 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 x4 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x4 \<subseteq> set Vs; \<D> x4 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x4) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3} := x4) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3} := x4) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3} := x4)) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs x3 \<subseteq> set Vs; \<D>s x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2(x3)) \<subseteq> set Vs; \<D> (x1\<bullet>x2(x3)) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2(x3))) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1;; x2) \<subseteq> set Vs; \<D> (x1;; x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1;; x2)) \<lfloor>last_index Vs ` A\<rfloor>
A total of 16 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (16 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 x4 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x4 \<subseteq> set Vs; \<D> x4 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x4) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3} := x4) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3} := x4) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3} := x4)) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs x3 \<subseteq> set Vs; \<D>s x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2(x3)) \<subseteq> set Vs; \<D> (x1\<bullet>x2(x3)) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2(x3))) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1;; x2) \<subseteq> set Vs; \<D> (x1;; x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1;; x2)) \<lfloor>last_index Vs ` A\<rfloor>
A total of 16 subgoals...
[PROOF STEP]
case (FAss e\<^sub>1 F D e\<^sub>2)
[PROOF STATE]
proof (state)
this:
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>1 \<subseteq> set ?Vs; \<D> e\<^sub>1 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>1) \<lfloor>last_index ?Vs ` ?A\<rfloor>
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>2 \<subseteq> set ?Vs; \<D> e\<^sub>2 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>2) \<lfloor>last_index ?Vs ` ?A\<rfloor>
A \<subseteq> set Vs
fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs
\<D> (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<lfloor>A\<rfloor>

goal (16 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 x4 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x4 \<subseteq> set Vs; \<D> x4 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x4) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3} := x4) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3} := x4) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3} := x4)) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs x3 \<subseteq> set Vs; \<D>s x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2(x3)) \<subseteq> set Vs; \<D> (x1\<bullet>x2(x3)) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2(x3))) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1;; x2) \<subseteq> set Vs; \<D> (x1;; x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1;; x2)) \<lfloor>last_index Vs ` A\<rfloor>
A total of 16 subgoals...
[PROOF STEP]
hence IH\<^sub>1: "\<D> (compE\<^sub>1 Vs e\<^sub>1) \<lfloor>last_index Vs ` A\<rfloor>"
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>1 \<subseteq> set ?Vs; \<D> e\<^sub>1 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>1) \<lfloor>last_index ?Vs ` ?A\<rfloor>
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>2 \<subseteq> set ?Vs; \<D> e\<^sub>2 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>2) \<lfloor>last_index ?Vs ` ?A\<rfloor>
A \<subseteq> set Vs
fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs
\<D> (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<lfloor>A\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs e\<^sub>1) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs e\<^sub>1) \<lfloor>last_index Vs ` A\<rfloor>

goal (16 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 x4 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x4 \<subseteq> set Vs; \<D> x4 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x4) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3} := x4) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3} := x4) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3} := x4)) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs x3 \<subseteq> set Vs; \<D>s x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2(x3)) \<subseteq> set Vs; \<D> (x1\<bullet>x2(x3)) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2(x3))) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1;; x2) \<subseteq> set Vs; \<D> (x1;; x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1;; x2)) \<lfloor>last_index Vs ` A\<rfloor>
A total of 16 subgoals...
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
proof (cases "\<A> e\<^sub>1")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<A> e\<^sub>1 = None \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
case None
[PROOF STATE]
proof (state)
this:
\<A> e\<^sub>1 = None

goal (2 subgoals):
 1. \<A> e\<^sub>1 = None \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
\<A> e\<^sub>1 = None

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
using FAss
[PROOF STATE]
proof (prove)
using this:
\<A> e\<^sub>1 = None
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>1 \<subseteq> set ?Vs; \<D> e\<^sub>1 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>1) \<lfloor>last_index ?Vs ` ?A\<rfloor>
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>2 \<subseteq> set ?Vs; \<D> e\<^sub>2 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>2) \<lfloor>last_index ?Vs ` ?A\<rfloor>
A \<subseteq> set Vs
fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs
\<D> (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<lfloor>A\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
case (Some A\<^sub>1)
[PROOF STATE]
proof (state)
this:
\<A> e\<^sub>1 = \<lfloor>A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
have indexA\<^sub>1: "\<A> (compE\<^sub>1 Vs e\<^sub>1) = \<lfloor>last_index Vs ` A\<^sub>1\<rfloor>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<A> (compE\<^sub>1 Vs e\<^sub>1) = \<lfloor>last_index Vs ` A\<^sub>1\<rfloor>
[PROOF STEP]
using A_compE\<^sub>1[OF Some] FAss.prems
[PROOF STATE]
proof (prove)
using this:
fv e\<^sub>1 \<subseteq> set ?Vs \<Longrightarrow> \<A> (compE\<^sub>1 ?Vs e\<^sub>1) = \<lfloor>last_index ?Vs ` A\<^sub>1\<rfloor>
A \<subseteq> set Vs
fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs
\<D> (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<lfloor>A\<rfloor>

goal (1 subgoal):
 1. \<A> (compE\<^sub>1 Vs e\<^sub>1) = \<lfloor>last_index Vs ` A\<^sub>1\<rfloor>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<A> (compE\<^sub>1 Vs e\<^sub>1) = \<lfloor>last_index Vs ` A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
have "A \<union> A\<^sub>1 \<subseteq> set Vs"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. A \<union> A\<^sub>1 \<subseteq> set Vs
[PROOF STEP]
using FAss.prems A_fv[OF Some]
[PROOF STATE]
proof (prove)
using this:
A \<subseteq> set Vs
fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs
\<D> (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<lfloor>A\<rfloor>
A\<^sub>1 \<subseteq> fv e\<^sub>1

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

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
hence "\<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` (A \<union> A\<^sub>1)\<rfloor>"
[PROOF STATE]
proof (prove)
using this:
A \<union> A\<^sub>1 \<subseteq> set Vs

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` (A \<union> A\<^sub>1)\<rfloor>
[PROOF STEP]
using FAss Some
[PROOF STATE]
proof (prove)
using this:
A \<union> A\<^sub>1 \<subseteq> set Vs
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>1 \<subseteq> set ?Vs; \<D> e\<^sub>1 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>1) \<lfloor>last_index ?Vs ` ?A\<rfloor>
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>2 \<subseteq> set ?Vs; \<D> e\<^sub>2 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>2) \<lfloor>last_index ?Vs ` ?A\<rfloor>
A \<subseteq> set Vs
fv (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<subseteq> set Vs
\<D> (e\<^sub>1\<bullet>F{D} := e\<^sub>2) \<lfloor>A\<rfloor>
\<A> e\<^sub>1 = \<lfloor>A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` (A \<union> A\<^sub>1)\<rfloor>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` (A \<union> A\<^sub>1)\<rfloor>

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
hence "\<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` A \<union> last_index Vs ` A\<^sub>1\<rfloor>"
[PROOF STATE]
proof (prove)
using this:
\<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` (A \<union> A\<^sub>1)\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` A \<union> last_index Vs ` A\<^sub>1\<rfloor>
[PROOF STEP]
by(simp add: image_Un)
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` A \<union> last_index Vs ` A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
\<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` A \<union> last_index Vs ` A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
using IH\<^sub>1 indexA\<^sub>1
[PROOF STATE]
proof (prove)
using this:
\<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` A \<union> last_index Vs ` A\<^sub>1\<rfloor>
\<D> (compE\<^sub>1 Vs e\<^sub>1) \<lfloor>last_index Vs ` A\<rfloor>
\<A> (compE\<^sub>1 Vs e\<^sub>1) = \<lfloor>last_index Vs ` A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>F{D} := e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>

goal (15 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs x3 \<subseteq> set Vs; \<D>s x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2(x3)) \<subseteq> set Vs; \<D> (x1\<bullet>x2(x3)) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2(x3))) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1;; x2) \<subseteq> set Vs; \<D> (x1;; x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1;; x2)) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (if (x1) x2 else x3) \<subseteq> set Vs; \<D> (if (x1) x2 else x3) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (if (x1) x2 else x3)) \<lfloor>last_index Vs ` A\<rfloor>
A total of 15 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (15 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs x3 \<subseteq> set Vs; \<D>s x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2(x3)) \<subseteq> set Vs; \<D> (x1\<bullet>x2(x3)) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2(x3))) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1;; x2) \<subseteq> set Vs; \<D> (x1;; x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1;; x2)) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (if (x1) x2 else x3) \<subseteq> set Vs; \<D> (if (x1) x2 else x3) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (if (x1) x2 else x3)) \<lfloor>last_index Vs ` A\<rfloor>
A total of 15 subgoals...
[PROOF STEP]
case (Call e\<^sub>1 M es)
[PROOF STATE]
proof (state)
this:
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>1 \<subseteq> set ?Vs; \<D> e\<^sub>1 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>1) \<lfloor>last_index ?Vs ` ?A\<rfloor>
\<lbrakk>?A \<subseteq> set ?Vs; fvs es \<subseteq> set ?Vs; \<D>s es \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 ?Vs es) \<lfloor>last_index ?Vs ` ?A\<rfloor>
A \<subseteq> set Vs
fv (e\<^sub>1\<bullet>M(es)) \<subseteq> set Vs
\<D> (e\<^sub>1\<bullet>M(es)) \<lfloor>A\<rfloor>

goal (15 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs x3 \<subseteq> set Vs; \<D>s x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2(x3)) \<subseteq> set Vs; \<D> (x1\<bullet>x2(x3)) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2(x3))) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1;; x2) \<subseteq> set Vs; \<D> (x1;; x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1;; x2)) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (if (x1) x2 else x3) \<subseteq> set Vs; \<D> (if (x1) x2 else x3) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (if (x1) x2 else x3)) \<lfloor>last_index Vs ` A\<rfloor>
A total of 15 subgoals...
[PROOF STEP]
hence IH\<^sub>1: "\<D> (compE\<^sub>1 Vs e\<^sub>1) \<lfloor>last_index Vs ` A\<rfloor>"
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>1 \<subseteq> set ?Vs; \<D> e\<^sub>1 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>1) \<lfloor>last_index ?Vs ` ?A\<rfloor>
\<lbrakk>?A \<subseteq> set ?Vs; fvs es \<subseteq> set ?Vs; \<D>s es \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 ?Vs es) \<lfloor>last_index ?Vs ` ?A\<rfloor>
A \<subseteq> set Vs
fv (e\<^sub>1\<bullet>M(es)) \<subseteq> set Vs
\<D> (e\<^sub>1\<bullet>M(es)) \<lfloor>A\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs e\<^sub>1) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs e\<^sub>1) \<lfloor>last_index Vs ` A\<rfloor>

goal (15 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs x3 \<subseteq> set Vs; \<D>s x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2(x3)) \<subseteq> set Vs; \<D> (x1\<bullet>x2(x3)) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2(x3))) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1;; x2) \<subseteq> set Vs; \<D> (x1;; x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1;; x2)) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (if (x1) x2 else x3) \<subseteq> set Vs; \<D> (if (x1) x2 else x3) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (if (x1) x2 else x3)) \<lfloor>last_index Vs ` A\<rfloor>
A total of 15 subgoals...
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>M(es))) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
proof (cases "\<A> e\<^sub>1")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<A> e\<^sub>1 = None \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>M(es))) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>M(es))) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
case None
[PROOF STATE]
proof (state)
this:
\<A> e\<^sub>1 = None

goal (2 subgoals):
 1. \<A> e\<^sub>1 = None \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>M(es))) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>M(es))) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
\<A> e\<^sub>1 = None

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>M(es))) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
using Call
[PROOF STATE]
proof (prove)
using this:
\<A> e\<^sub>1 = None
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>1 \<subseteq> set ?Vs; \<D> e\<^sub>1 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>1) \<lfloor>last_index ?Vs ` ?A\<rfloor>
\<lbrakk>?A \<subseteq> set ?Vs; fvs es \<subseteq> set ?Vs; \<D>s es \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 ?Vs es) \<lfloor>last_index ?Vs ` ?A\<rfloor>
A \<subseteq> set Vs
fv (e\<^sub>1\<bullet>M(es)) \<subseteq> set Vs
\<D> (e\<^sub>1\<bullet>M(es)) \<lfloor>A\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>M(es))) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>M(es))) \<lfloor>last_index Vs ` A\<rfloor>

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>M(es))) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>M(es))) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
case (Some A\<^sub>1)
[PROOF STATE]
proof (state)
this:
\<A> e\<^sub>1 = \<lfloor>A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>M(es))) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
have indexA\<^sub>1: "\<A> (compE\<^sub>1 Vs e\<^sub>1) = \<lfloor>last_index Vs ` A\<^sub>1\<rfloor>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<A> (compE\<^sub>1 Vs e\<^sub>1) = \<lfloor>last_index Vs ` A\<^sub>1\<rfloor>
[PROOF STEP]
using A_compE\<^sub>1[OF Some] Call.prems
[PROOF STATE]
proof (prove)
using this:
fv e\<^sub>1 \<subseteq> set ?Vs \<Longrightarrow> \<A> (compE\<^sub>1 ?Vs e\<^sub>1) = \<lfloor>last_index ?Vs ` A\<^sub>1\<rfloor>
A \<subseteq> set Vs
fv (e\<^sub>1\<bullet>M(es)) \<subseteq> set Vs
\<D> (e\<^sub>1\<bullet>M(es)) \<lfloor>A\<rfloor>

goal (1 subgoal):
 1. \<A> (compE\<^sub>1 Vs e\<^sub>1) = \<lfloor>last_index Vs ` A\<^sub>1\<rfloor>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<A> (compE\<^sub>1 Vs e\<^sub>1) = \<lfloor>last_index Vs ` A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>M(es))) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
have "A \<union> A\<^sub>1 \<subseteq> set Vs"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. A \<union> A\<^sub>1 \<subseteq> set Vs
[PROOF STEP]
using Call.prems A_fv[OF Some]
[PROOF STATE]
proof (prove)
using this:
A \<subseteq> set Vs
fv (e\<^sub>1\<bullet>M(es)) \<subseteq> set Vs
\<D> (e\<^sub>1\<bullet>M(es)) \<lfloor>A\<rfloor>
A\<^sub>1 \<subseteq> fv e\<^sub>1

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

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>M(es))) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
hence "\<D>s (compEs\<^sub>1 Vs es) \<lfloor>last_index Vs ` (A \<union> A\<^sub>1)\<rfloor>"
[PROOF STATE]
proof (prove)
using this:
A \<union> A\<^sub>1 \<subseteq> set Vs

goal (1 subgoal):
 1. \<D>s (compEs\<^sub>1 Vs es) \<lfloor>last_index Vs ` (A \<union> A\<^sub>1)\<rfloor>
[PROOF STEP]
using Call Some
[PROOF STATE]
proof (prove)
using this:
A \<union> A\<^sub>1 \<subseteq> set Vs
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>1 \<subseteq> set ?Vs; \<D> e\<^sub>1 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>1) \<lfloor>last_index ?Vs ` ?A\<rfloor>
\<lbrakk>?A \<subseteq> set ?Vs; fvs es \<subseteq> set ?Vs; \<D>s es \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 ?Vs es) \<lfloor>last_index ?Vs ` ?A\<rfloor>
A \<subseteq> set Vs
fv (e\<^sub>1\<bullet>M(es)) \<subseteq> set Vs
\<D> (e\<^sub>1\<bullet>M(es)) \<lfloor>A\<rfloor>
\<A> e\<^sub>1 = \<lfloor>A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<D>s (compEs\<^sub>1 Vs es) \<lfloor>last_index Vs ` (A \<union> A\<^sub>1)\<rfloor>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<D>s (compEs\<^sub>1 Vs es) \<lfloor>last_index Vs ` (A \<union> A\<^sub>1)\<rfloor>

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>M(es))) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
hence "\<D>s (compEs\<^sub>1 Vs es) \<lfloor>last_index Vs ` A \<union> last_index Vs ` A\<^sub>1\<rfloor>"
[PROOF STATE]
proof (prove)
using this:
\<D>s (compEs\<^sub>1 Vs es) \<lfloor>last_index Vs ` (A \<union> A\<^sub>1)\<rfloor>

goal (1 subgoal):
 1. \<D>s (compEs\<^sub>1 Vs es) \<lfloor>last_index Vs ` A \<union> last_index Vs ` A\<^sub>1\<rfloor>
[PROOF STEP]
by(simp add: image_Un)
[PROOF STATE]
proof (state)
this:
\<D>s (compEs\<^sub>1 Vs es) \<lfloor>last_index Vs ` A \<union> last_index Vs ` A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>M(es))) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
\<D>s (compEs\<^sub>1 Vs es) \<lfloor>last_index Vs ` A \<union> last_index Vs ` A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>M(es))) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
using IH\<^sub>1 indexA\<^sub>1
[PROOF STATE]
proof (prove)
using this:
\<D>s (compEs\<^sub>1 Vs es) \<lfloor>last_index Vs ` A \<union> last_index Vs ` A\<^sub>1\<rfloor>
\<D> (compE\<^sub>1 Vs e\<^sub>1) \<lfloor>last_index Vs ` A\<rfloor>
\<A> (compE\<^sub>1 Vs e\<^sub>1) = \<lfloor>last_index Vs ` A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>M(es))) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>M(es))) \<lfloor>last_index Vs ` A\<rfloor>

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs (e\<^sub>1\<bullet>M(es))) \<lfloor>last_index Vs ` A\<rfloor>

goal (14 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1;; x2) \<subseteq> set Vs; \<D> (x1;; x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1;; x2)) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (if (x1) x2 else x3) \<subseteq> set Vs; \<D> (if (x1) x2 else x3) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (if (x1) x2 else x3)) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (while (x1) x2) \<subseteq> set Vs; \<D> (while (x1) x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (while (x1) x2)) \<lfloor>last_index Vs ` A\<rfloor>
A total of 14 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (14 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1;; x2) \<subseteq> set Vs; \<D> (x1;; x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1;; x2)) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (if (x1) x2 else x3) \<subseteq> set Vs; \<D> (if (x1) x2 else x3) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (if (x1) x2 else x3)) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (while (x1) x2) \<subseteq> set Vs; \<D> (while (x1) x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (while (x1) x2)) \<lfloor>last_index Vs ` A\<rfloor>
A total of 14 subgoals...
[PROOF STEP]
case (TryCatch e\<^sub>1 C V e\<^sub>2)
[PROOF STATE]
proof (state)
this:
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>1 \<subseteq> set ?Vs; \<D> e\<^sub>1 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>1) \<lfloor>last_index ?Vs ` ?A\<rfloor>
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>2 \<subseteq> set ?Vs; \<D> e\<^sub>2 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>2) \<lfloor>last_index ?Vs ` ?A\<rfloor>
A \<subseteq> set Vs
fv (try e\<^sub>1 catch(C V) e\<^sub>2) \<subseteq> set Vs
\<D> (try e\<^sub>1 catch(C V) e\<^sub>2) \<lfloor>A\<rfloor>

goal (14 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1;; x2) \<subseteq> set Vs; \<D> (x1;; x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1;; x2)) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (if (x1) x2 else x3) \<subseteq> set Vs; \<D> (if (x1) x2 else x3) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (if (x1) x2 else x3)) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (while (x1) x2) \<subseteq> set Vs; \<D> (while (x1) x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (while (x1) x2)) \<lfloor>last_index Vs ` A\<rfloor>
A total of 14 subgoals...
[PROOF STEP]
have "\<lbrakk> A\<union>{V} \<subseteq> set(Vs@[V]); fv e\<^sub>2 \<subseteq> set(Vs@[V]); \<D> e\<^sub>2 \<lfloor>A\<union>{V}\<rfloor>\<rbrakk> \<Longrightarrow>
        \<D> (compE\<^sub>1 (Vs@[V]) e\<^sub>2) \<lfloor>last_index (Vs@[V]) ` (A\<union>{V})\<rfloor>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>A \<union> {V} \<subseteq> set (Vs @ [V]); fv e\<^sub>2 \<subseteq> set (Vs @ [V]); \<D> e\<^sub>2 \<lfloor>A \<union> {V}\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 (Vs @ [V]) e\<^sub>2) \<lfloor>last_index (Vs @ [V]) ` (A \<union> {V})\<rfloor>
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
\<lbrakk>A \<union> {V} \<subseteq> set (Vs @ [V]); fv e\<^sub>2 \<subseteq> set (Vs @ [V]); \<D> e\<^sub>2 \<lfloor>A \<union> {V}\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 (Vs @ [V]) e\<^sub>2) \<lfloor>last_index (Vs @ [V]) ` (A \<union> {V})\<rfloor>

goal (14 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1;; x2) \<subseteq> set Vs; \<D> (x1;; x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1;; x2)) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (if (x1) x2 else x3) \<subseteq> set Vs; \<D> (if (x1) x2 else x3) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (if (x1) x2 else x3)) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (while (x1) x2) \<subseteq> set Vs; \<D> (while (x1) x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (while (x1) x2)) \<lfloor>last_index Vs ` A\<rfloor>
A total of 14 subgoals...
[PROOF STEP]
hence "\<D> (compE\<^sub>1 (Vs@[V]) e\<^sub>2) \<lfloor>last_index (Vs@[V]) ` (A\<union>{V})\<rfloor>"
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>A \<union> {V} \<subseteq> set (Vs @ [V]); fv e\<^sub>2 \<subseteq> set (Vs @ [V]); \<D> e\<^sub>2 \<lfloor>A \<union> {V}\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 (Vs @ [V]) e\<^sub>2) \<lfloor>last_index (Vs @ [V]) ` (A \<union> {V})\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 (Vs @ [V]) e\<^sub>2) \<lfloor>last_index (Vs @ [V]) ` (A \<union> {V})\<rfloor>
[PROOF STEP]
using TryCatch.prems
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>A \<union> {V} \<subseteq> set (Vs @ [V]); fv e\<^sub>2 \<subseteq> set (Vs @ [V]); \<D> e\<^sub>2 \<lfloor>A \<union> {V}\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 (Vs @ [V]) e\<^sub>2) \<lfloor>last_index (Vs @ [V]) ` (A \<union> {V})\<rfloor>
A \<subseteq> set Vs
fv (try e\<^sub>1 catch(C V) e\<^sub>2) \<subseteq> set Vs
\<D> (try e\<^sub>1 catch(C V) e\<^sub>2) \<lfloor>A\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 (Vs @ [V]) e\<^sub>2) \<lfloor>last_index (Vs @ [V]) ` (A \<union> {V})\<rfloor>
[PROOF STEP]
by(simp add:Diff_subset_conv)
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 (Vs @ [V]) e\<^sub>2) \<lfloor>last_index (Vs @ [V]) ` (A \<union> {V})\<rfloor>

goal (14 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1;; x2) \<subseteq> set Vs; \<D> (x1;; x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1;; x2)) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (if (x1) x2 else x3) \<subseteq> set Vs; \<D> (if (x1) x2 else x3) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (if (x1) x2 else x3)) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (while (x1) x2) \<subseteq> set Vs; \<D> (while (x1) x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (while (x1) x2)) \<lfloor>last_index Vs ` A\<rfloor>
A total of 14 subgoals...
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 (Vs @ [V]) e\<^sub>2) \<lfloor>last_index (Vs @ [V]) ` (A \<union> {V})\<rfloor>

goal (14 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1;; x2) \<subseteq> set Vs; \<D> (x1;; x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1;; x2)) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (if (x1) x2 else x3) \<subseteq> set Vs; \<D> (if (x1) x2 else x3) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (if (x1) x2 else x3)) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (while (x1) x2) \<subseteq> set Vs; \<D> (while (x1) x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (while (x1) x2)) \<lfloor>last_index Vs ` A\<rfloor>
A total of 14 subgoals...
[PROOF STEP]
have "last_index (Vs@[V]) ` A \<subseteq> last_index Vs ` A \<union> {size Vs}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. last_index (Vs @ [V]) ` A \<subseteq> last_index Vs ` A \<union> {length Vs}
[PROOF STEP]
using TryCatch.prems
[PROOF STATE]
proof (prove)
using this:
A \<subseteq> set Vs
fv (try e\<^sub>1 catch(C V) e\<^sub>2) \<subseteq> set Vs
\<D> (try e\<^sub>1 catch(C V) e\<^sub>2) \<lfloor>A\<rfloor>

goal (1 subgoal):
 1. last_index (Vs @ [V]) ` A \<subseteq> last_index Vs ` A \<union> {length Vs}
[PROOF STEP]
by(auto simp add: image_last_index split:if_split_asm)
[PROOF STATE]
proof (state)
this:
last_index (Vs @ [V]) ` A \<subseteq> last_index Vs ` A \<union> {length Vs}

goal (14 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1;; x2) \<subseteq> set Vs; \<D> (x1;; x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1;; x2)) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (if (x1) x2 else x3) \<subseteq> set Vs; \<D> (if (x1) x2 else x3) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (if (x1) x2 else x3)) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (while (x1) x2) \<subseteq> set Vs; \<D> (while (x1) x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (while (x1) x2)) \<lfloor>last_index Vs ` A\<rfloor>
A total of 14 subgoals...
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
\<D> (compE\<^sub>1 (Vs @ [V]) e\<^sub>2) \<lfloor>last_index (Vs @ [V]) ` (A \<union> {V})\<rfloor>
last_index (Vs @ [V]) ` A \<subseteq> last_index Vs ` A \<union> {length Vs}
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
\<D> (compE\<^sub>1 (Vs @ [V]) e\<^sub>2) \<lfloor>last_index (Vs @ [V]) ` (A \<union> {V})\<rfloor>
last_index (Vs @ [V]) ` A \<subseteq> last_index Vs ` A \<union> {length Vs}

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs (try e\<^sub>1 catch(C V) e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
using TryCatch
[PROOF STATE]
proof (prove)
using this:
\<D> (compE\<^sub>1 (Vs @ [V]) e\<^sub>2) \<lfloor>last_index (Vs @ [V]) ` (A \<union> {V})\<rfloor>
last_index (Vs @ [V]) ` A \<subseteq> last_index Vs ` A \<union> {length Vs}
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>1 \<subseteq> set ?Vs; \<D> e\<^sub>1 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>1) \<lfloor>last_index ?Vs ` ?A\<rfloor>
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>2 \<subseteq> set ?Vs; \<D> e\<^sub>2 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>2) \<lfloor>last_index ?Vs ` ?A\<rfloor>
A \<subseteq> set Vs
fv (try e\<^sub>1 catch(C V) e\<^sub>2) \<subseteq> set Vs
\<D> (try e\<^sub>1 catch(C V) e\<^sub>2) \<lfloor>A\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs (try e\<^sub>1 catch(C V) e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
by(auto simp:hyperset_defs elim!:D_mono')
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs (try e\<^sub>1 catch(C V) e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>

goal (13 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1;; x2) \<subseteq> set Vs; \<D> (x1;; x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1;; x2)) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (if (x1) x2 else x3) \<subseteq> set Vs; \<D> (if (x1) x2 else x3) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (if (x1) x2 else x3)) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (while (x1) x2) \<subseteq> set Vs; \<D> (while (x1) x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (while (x1) x2)) \<lfloor>last_index Vs ` A\<rfloor>
A total of 13 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (13 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1;; x2) \<subseteq> set Vs; \<D> (x1;; x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1;; x2)) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (if (x1) x2 else x3) \<subseteq> set Vs; \<D> (if (x1) x2 else x3) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (if (x1) x2 else x3)) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (while (x1) x2) \<subseteq> set Vs; \<D> (while (x1) x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (while (x1) x2)) \<lfloor>last_index Vs ` A\<rfloor>
A total of 13 subgoals...
[PROOF STEP]
case (Seq e\<^sub>1 e\<^sub>2)
[PROOF STATE]
proof (state)
this:
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>1 \<subseteq> set ?Vs; \<D> e\<^sub>1 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>1) \<lfloor>last_index ?Vs ` ?A\<rfloor>
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>2 \<subseteq> set ?Vs; \<D> e\<^sub>2 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>2) \<lfloor>last_index ?Vs ` ?A\<rfloor>
A \<subseteq> set Vs
fv (e\<^sub>1;; e\<^sub>2) \<subseteq> set Vs
\<D> (e\<^sub>1;; e\<^sub>2) \<lfloor>A\<rfloor>

goal (13 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1;; x2) \<subseteq> set Vs; \<D> (x1;; x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1;; x2)) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (if (x1) x2 else x3) \<subseteq> set Vs; \<D> (if (x1) x2 else x3) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (if (x1) x2 else x3)) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (while (x1) x2) \<subseteq> set Vs; \<D> (while (x1) x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (while (x1) x2)) \<lfloor>last_index Vs ` A\<rfloor>
A total of 13 subgoals...
[PROOF STEP]
hence IH\<^sub>1: "\<D> (compE\<^sub>1 Vs e\<^sub>1) \<lfloor>last_index Vs ` A\<rfloor>"
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>1 \<subseteq> set ?Vs; \<D> e\<^sub>1 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>1) \<lfloor>last_index ?Vs ` ?A\<rfloor>
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>2 \<subseteq> set ?Vs; \<D> e\<^sub>2 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>2) \<lfloor>last_index ?Vs ` ?A\<rfloor>
A \<subseteq> set Vs
fv (e\<^sub>1;; e\<^sub>2) \<subseteq> set Vs
\<D> (e\<^sub>1;; e\<^sub>2) \<lfloor>A\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs e\<^sub>1) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs e\<^sub>1) \<lfloor>last_index Vs ` A\<rfloor>

goal (13 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1;; x2) \<subseteq> set Vs; \<D> (x1;; x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1;; x2)) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (if (x1) x2 else x3) \<subseteq> set Vs; \<D> (if (x1) x2 else x3) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (if (x1) x2 else x3)) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (while (x1) x2) \<subseteq> set Vs; \<D> (while (x1) x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (while (x1) x2)) \<lfloor>last_index Vs ` A\<rfloor>
A total of 13 subgoals...
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs (e\<^sub>1;; e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
proof (cases "\<A> e\<^sub>1")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<A> e\<^sub>1 = None \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1;; e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1;; e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
case None
[PROOF STATE]
proof (state)
this:
\<A> e\<^sub>1 = None

goal (2 subgoals):
 1. \<A> e\<^sub>1 = None \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1;; e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1;; e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
\<A> e\<^sub>1 = None

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs (e\<^sub>1;; e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
using Seq
[PROOF STATE]
proof (prove)
using this:
\<A> e\<^sub>1 = None
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>1 \<subseteq> set ?Vs; \<D> e\<^sub>1 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>1) \<lfloor>last_index ?Vs ` ?A\<rfloor>
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>2 \<subseteq> set ?Vs; \<D> e\<^sub>2 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>2) \<lfloor>last_index ?Vs ` ?A\<rfloor>
A \<subseteq> set Vs
fv (e\<^sub>1;; e\<^sub>2) \<subseteq> set Vs
\<D> (e\<^sub>1;; e\<^sub>2) \<lfloor>A\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs (e\<^sub>1;; e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs (e\<^sub>1;; e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1;; e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1;; e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
case (Some A\<^sub>1)
[PROOF STATE]
proof (state)
this:
\<A> e\<^sub>1 = \<lfloor>A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1;; e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
have indexA\<^sub>1: "\<A> (compE\<^sub>1 Vs e\<^sub>1) = \<lfloor>last_index Vs ` A\<^sub>1\<rfloor>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<A> (compE\<^sub>1 Vs e\<^sub>1) = \<lfloor>last_index Vs ` A\<^sub>1\<rfloor>
[PROOF STEP]
using A_compE\<^sub>1[OF Some] Seq.prems
[PROOF STATE]
proof (prove)
using this:
fv e\<^sub>1 \<subseteq> set ?Vs \<Longrightarrow> \<A> (compE\<^sub>1 ?Vs e\<^sub>1) = \<lfloor>last_index ?Vs ` A\<^sub>1\<rfloor>
A \<subseteq> set Vs
fv (e\<^sub>1;; e\<^sub>2) \<subseteq> set Vs
\<D> (e\<^sub>1;; e\<^sub>2) \<lfloor>A\<rfloor>

goal (1 subgoal):
 1. \<A> (compE\<^sub>1 Vs e\<^sub>1) = \<lfloor>last_index Vs ` A\<^sub>1\<rfloor>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<A> (compE\<^sub>1 Vs e\<^sub>1) = \<lfloor>last_index Vs ` A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1;; e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
have "A \<union> A\<^sub>1 \<subseteq> set Vs"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. A \<union> A\<^sub>1 \<subseteq> set Vs
[PROOF STEP]
using Seq.prems A_fv[OF Some]
[PROOF STATE]
proof (prove)
using this:
A \<subseteq> set Vs
fv (e\<^sub>1;; e\<^sub>2) \<subseteq> set Vs
\<D> (e\<^sub>1;; e\<^sub>2) \<lfloor>A\<rfloor>
A\<^sub>1 \<subseteq> fv e\<^sub>1

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

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1;; e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
hence "\<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` (A \<union> A\<^sub>1)\<rfloor>"
[PROOF STATE]
proof (prove)
using this:
A \<union> A\<^sub>1 \<subseteq> set Vs

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` (A \<union> A\<^sub>1)\<rfloor>
[PROOF STEP]
using Seq Some
[PROOF STATE]
proof (prove)
using this:
A \<union> A\<^sub>1 \<subseteq> set Vs
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>1 \<subseteq> set ?Vs; \<D> e\<^sub>1 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>1) \<lfloor>last_index ?Vs ` ?A\<rfloor>
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>2 \<subseteq> set ?Vs; \<D> e\<^sub>2 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>2) \<lfloor>last_index ?Vs ` ?A\<rfloor>
A \<subseteq> set Vs
fv (e\<^sub>1;; e\<^sub>2) \<subseteq> set Vs
\<D> (e\<^sub>1;; e\<^sub>2) \<lfloor>A\<rfloor>
\<A> e\<^sub>1 = \<lfloor>A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` (A \<union> A\<^sub>1)\<rfloor>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` (A \<union> A\<^sub>1)\<rfloor>

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1;; e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
hence "\<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` A \<union> last_index Vs ` A\<^sub>1\<rfloor>"
[PROOF STATE]
proof (prove)
using this:
\<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` (A \<union> A\<^sub>1)\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` A \<union> last_index Vs ` A\<^sub>1\<rfloor>
[PROOF STEP]
by(simp add: image_Un)
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` A \<union> last_index Vs ` A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (e\<^sub>1;; e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
\<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` A \<union> last_index Vs ` A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs (e\<^sub>1;; e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
using IH\<^sub>1 indexA\<^sub>1
[PROOF STATE]
proof (prove)
using this:
\<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` A \<union> last_index Vs ` A\<^sub>1\<rfloor>
\<D> (compE\<^sub>1 Vs e\<^sub>1) \<lfloor>last_index Vs ` A\<rfloor>
\<A> (compE\<^sub>1 Vs e\<^sub>1) = \<lfloor>last_index Vs ` A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs (e\<^sub>1;; e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs (e\<^sub>1;; e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs (e\<^sub>1;; e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>

goal (12 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (if (x1) x2 else x3) \<subseteq> set Vs; \<D> (if (x1) x2 else x3) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (if (x1) x2 else x3)) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (while (x1) x2) \<subseteq> set Vs; \<D> (while (x1) x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (while (x1) x2)) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>x A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x \<subseteq> set Vs; \<D> x \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (throw x) \<subseteq> set Vs; \<D> (throw x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (throw x)) \<lfloor>last_index Vs ` A\<rfloor>
A total of 12 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (12 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (if (x1) x2 else x3) \<subseteq> set Vs; \<D> (if (x1) x2 else x3) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (if (x1) x2 else x3)) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (while (x1) x2) \<subseteq> set Vs; \<D> (while (x1) x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (while (x1) x2)) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>x A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x \<subseteq> set Vs; \<D> x \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (throw x) \<subseteq> set Vs; \<D> (throw x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (throw x)) \<lfloor>last_index Vs ` A\<rfloor>
A total of 12 subgoals...
[PROOF STEP]
case (Cond e e\<^sub>1 e\<^sub>2)
[PROOF STATE]
proof (state)
this:
\<lbrakk>?A \<subseteq> set ?Vs; fv e \<subseteq> set ?Vs; \<D> e \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e) \<lfloor>last_index ?Vs ` ?A\<rfloor>
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>1 \<subseteq> set ?Vs; \<D> e\<^sub>1 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>1) \<lfloor>last_index ?Vs ` ?A\<rfloor>
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>2 \<subseteq> set ?Vs; \<D> e\<^sub>2 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>2) \<lfloor>last_index ?Vs ` ?A\<rfloor>
A \<subseteq> set Vs
fv (if (e) e\<^sub>1 else e\<^sub>2) \<subseteq> set Vs
\<D> (if (e) e\<^sub>1 else e\<^sub>2) \<lfloor>A\<rfloor>

goal (12 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (if (x1) x2 else x3) \<subseteq> set Vs; \<D> (if (x1) x2 else x3) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (if (x1) x2 else x3)) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (while (x1) x2) \<subseteq> set Vs; \<D> (while (x1) x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (while (x1) x2)) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>x A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x \<subseteq> set Vs; \<D> x \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (throw x) \<subseteq> set Vs; \<D> (throw x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (throw x)) \<lfloor>last_index Vs ` A\<rfloor>
A total of 12 subgoals...
[PROOF STEP]
hence IH\<^sub>1: "\<D> (compE\<^sub>1 Vs e) \<lfloor>last_index Vs ` A\<rfloor>"
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>?A \<subseteq> set ?Vs; fv e \<subseteq> set ?Vs; \<D> e \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e) \<lfloor>last_index ?Vs ` ?A\<rfloor>
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>1 \<subseteq> set ?Vs; \<D> e\<^sub>1 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>1) \<lfloor>last_index ?Vs ` ?A\<rfloor>
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>2 \<subseteq> set ?Vs; \<D> e\<^sub>2 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>2) \<lfloor>last_index ?Vs ` ?A\<rfloor>
A \<subseteq> set Vs
fv (if (e) e\<^sub>1 else e\<^sub>2) \<subseteq> set Vs
\<D> (if (e) e\<^sub>1 else e\<^sub>2) \<lfloor>A\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs e) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs e) \<lfloor>last_index Vs ` A\<rfloor>

goal (12 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (if (x1) x2 else x3) \<subseteq> set Vs; \<D> (if (x1) x2 else x3) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (if (x1) x2 else x3)) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (while (x1) x2) \<subseteq> set Vs; \<D> (while (x1) x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (while (x1) x2)) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>x A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x \<subseteq> set Vs; \<D> x \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (throw x) \<subseteq> set Vs; \<D> (throw x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (throw x)) \<lfloor>last_index Vs ` A\<rfloor>
A total of 12 subgoals...
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs (if (e) e\<^sub>1 else e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
proof (cases "\<A> e")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<A> e = None \<Longrightarrow> \<D> (compE\<^sub>1 Vs (if (e) e\<^sub>1 else e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>a. \<A> e = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (if (e) e\<^sub>1 else e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
case None
[PROOF STATE]
proof (state)
this:
\<A> e = None

goal (2 subgoals):
 1. \<A> e = None \<Longrightarrow> \<D> (compE\<^sub>1 Vs (if (e) e\<^sub>1 else e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>a. \<A> e = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (if (e) e\<^sub>1 else e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
\<A> e = None

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs (if (e) e\<^sub>1 else e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
using Cond
[PROOF STATE]
proof (prove)
using this:
\<A> e = None
\<lbrakk>?A \<subseteq> set ?Vs; fv e \<subseteq> set ?Vs; \<D> e \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e) \<lfloor>last_index ?Vs ` ?A\<rfloor>
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>1 \<subseteq> set ?Vs; \<D> e\<^sub>1 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>1) \<lfloor>last_index ?Vs ` ?A\<rfloor>
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>2 \<subseteq> set ?Vs; \<D> e\<^sub>2 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>2) \<lfloor>last_index ?Vs ` ?A\<rfloor>
A \<subseteq> set Vs
fv (if (e) e\<^sub>1 else e\<^sub>2) \<subseteq> set Vs
\<D> (if (e) e\<^sub>1 else e\<^sub>2) \<lfloor>A\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs (if (e) e\<^sub>1 else e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs (if (e) e\<^sub>1 else e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>

goal (1 subgoal):
 1. \<And>a. \<A> e = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (if (e) e\<^sub>1 else e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>a. \<A> e = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (if (e) e\<^sub>1 else e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
case (Some B)
[PROOF STATE]
proof (state)
this:
\<A> e = \<lfloor>B\<rfloor>

goal (1 subgoal):
 1. \<And>a. \<A> e = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (if (e) e\<^sub>1 else e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
have indexB: "\<A> (compE\<^sub>1 Vs e) = \<lfloor>last_index Vs ` B\<rfloor>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<A> (compE\<^sub>1 Vs e) = \<lfloor>last_index Vs ` B\<rfloor>
[PROOF STEP]
using A_compE\<^sub>1[OF Some] Cond.prems
[PROOF STATE]
proof (prove)
using this:
fv e \<subseteq> set ?Vs \<Longrightarrow> \<A> (compE\<^sub>1 ?Vs e) = \<lfloor>last_index ?Vs ` B\<rfloor>
A \<subseteq> set Vs
fv (if (e) e\<^sub>1 else e\<^sub>2) \<subseteq> set Vs
\<D> (if (e) e\<^sub>1 else e\<^sub>2) \<lfloor>A\<rfloor>

goal (1 subgoal):
 1. \<A> (compE\<^sub>1 Vs e) = \<lfloor>last_index Vs ` B\<rfloor>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<A> (compE\<^sub>1 Vs e) = \<lfloor>last_index Vs ` B\<rfloor>

goal (1 subgoal):
 1. \<And>a. \<A> e = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (if (e) e\<^sub>1 else e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
have "A \<union> B \<subseteq> set Vs"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. A \<union> B \<subseteq> set Vs
[PROOF STEP]
using Cond.prems A_fv[OF Some]
[PROOF STATE]
proof (prove)
using this:
A \<subseteq> set Vs
fv (if (e) e\<^sub>1 else e\<^sub>2) \<subseteq> set Vs
\<D> (if (e) e\<^sub>1 else e\<^sub>2) \<lfloor>A\<rfloor>
B \<subseteq> fv e

goal (1 subgoal):
 1. A \<union> B \<subseteq> set Vs
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
A \<union> B \<subseteq> set Vs

goal (1 subgoal):
 1. \<And>a. \<A> e = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (if (e) e\<^sub>1 else e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
hence "\<D> (compE\<^sub>1 Vs e\<^sub>1) \<lfloor>last_index Vs ` (A \<union> B)\<rfloor>"
      and "\<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` (A \<union> B)\<rfloor>"
[PROOF STATE]
proof (prove)
using this:
A \<union> B \<subseteq> set Vs

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs e\<^sub>1) \<lfloor>last_index Vs ` (A \<union> B)\<rfloor> &&& \<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` (A \<union> B)\<rfloor>
[PROOF STEP]
using Cond Some
[PROOF STATE]
proof (prove)
using this:
A \<union> B \<subseteq> set Vs
\<lbrakk>?A \<subseteq> set ?Vs; fv e \<subseteq> set ?Vs; \<D> e \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e) \<lfloor>last_index ?Vs ` ?A\<rfloor>
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>1 \<subseteq> set ?Vs; \<D> e\<^sub>1 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>1) \<lfloor>last_index ?Vs ` ?A\<rfloor>
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>2 \<subseteq> set ?Vs; \<D> e\<^sub>2 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>2) \<lfloor>last_index ?Vs ` ?A\<rfloor>
A \<subseteq> set Vs
fv (if (e) e\<^sub>1 else e\<^sub>2) \<subseteq> set Vs
\<D> (if (e) e\<^sub>1 else e\<^sub>2) \<lfloor>A\<rfloor>
\<A> e = \<lfloor>B\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs e\<^sub>1) \<lfloor>last_index Vs ` (A \<union> B)\<rfloor> &&& \<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` (A \<union> B)\<rfloor>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs e\<^sub>1) \<lfloor>last_index Vs ` (A \<union> B)\<rfloor>
\<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` (A \<union> B)\<rfloor>

goal (1 subgoal):
 1. \<And>a. \<A> e = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (if (e) e\<^sub>1 else e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
hence "\<D> (compE\<^sub>1 Vs e\<^sub>1) \<lfloor>last_index Vs ` A \<union> last_index Vs ` B\<rfloor>"
      and "\<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` A \<union> last_index Vs ` B\<rfloor>"
[PROOF STATE]
proof (prove)
using this:
\<D> (compE\<^sub>1 Vs e\<^sub>1) \<lfloor>last_index Vs ` (A \<union> B)\<rfloor>
\<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` (A \<union> B)\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs e\<^sub>1) \<lfloor>last_index Vs ` A \<union> last_index Vs ` B\<rfloor> &&& \<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` A \<union> last_index Vs ` B\<rfloor>
[PROOF STEP]
by(simp add: image_Un)+
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs e\<^sub>1) \<lfloor>last_index Vs ` A \<union> last_index Vs ` B\<rfloor>
\<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` A \<union> last_index Vs ` B\<rfloor>

goal (1 subgoal):
 1. \<And>a. \<A> e = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (if (e) e\<^sub>1 else e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
\<D> (compE\<^sub>1 Vs e\<^sub>1) \<lfloor>last_index Vs ` A \<union> last_index Vs ` B\<rfloor>
\<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` A \<union> last_index Vs ` B\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs (if (e) e\<^sub>1 else e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
using IH\<^sub>1 indexB
[PROOF STATE]
proof (prove)
using this:
\<D> (compE\<^sub>1 Vs e\<^sub>1) \<lfloor>last_index Vs ` A \<union> last_index Vs ` B\<rfloor>
\<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` A \<union> last_index Vs ` B\<rfloor>
\<D> (compE\<^sub>1 Vs e) \<lfloor>last_index Vs ` A\<rfloor>
\<A> (compE\<^sub>1 Vs e) = \<lfloor>last_index Vs ` B\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs (if (e) e\<^sub>1 else e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs (if (e) e\<^sub>1 else e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs (if (e) e\<^sub>1 else e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>

goal (11 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (while (x1) x2) \<subseteq> set Vs; \<D> (while (x1) x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (while (x1) x2)) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>x A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x \<subseteq> set Vs; \<D> x \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (throw x) \<subseteq> set Vs; \<D> (throw x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (throw x)) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs [] \<subseteq> set Vs; \<D>s [] \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs []) \<lfloor>last_index Vs ` A\<rfloor>
A total of 11 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (11 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (while (x1) x2) \<subseteq> set Vs; \<D> (while (x1) x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (while (x1) x2)) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>x A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x \<subseteq> set Vs; \<D> x \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (throw x) \<subseteq> set Vs; \<D> (throw x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (throw x)) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs [] \<subseteq> set Vs; \<D>s [] \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs []) \<lfloor>last_index Vs ` A\<rfloor>
A total of 11 subgoals...
[PROOF STEP]
case (While e\<^sub>1 e\<^sub>2)
[PROOF STATE]
proof (state)
this:
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>1 \<subseteq> set ?Vs; \<D> e\<^sub>1 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>1) \<lfloor>last_index ?Vs ` ?A\<rfloor>
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>2 \<subseteq> set ?Vs; \<D> e\<^sub>2 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>2) \<lfloor>last_index ?Vs ` ?A\<rfloor>
A \<subseteq> set Vs
fv (while (e\<^sub>1) e\<^sub>2) \<subseteq> set Vs
\<D> (while (e\<^sub>1) e\<^sub>2) \<lfloor>A\<rfloor>

goal (11 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (while (x1) x2) \<subseteq> set Vs; \<D> (while (x1) x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (while (x1) x2)) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>x A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x \<subseteq> set Vs; \<D> x \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (throw x) \<subseteq> set Vs; \<D> (throw x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (throw x)) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs [] \<subseteq> set Vs; \<D>s [] \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs []) \<lfloor>last_index Vs ` A\<rfloor>
A total of 11 subgoals...
[PROOF STEP]
hence IH\<^sub>1: "\<D> (compE\<^sub>1 Vs e\<^sub>1) \<lfloor>last_index Vs ` A\<rfloor>"
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>1 \<subseteq> set ?Vs; \<D> e\<^sub>1 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>1) \<lfloor>last_index ?Vs ` ?A\<rfloor>
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>2 \<subseteq> set ?Vs; \<D> e\<^sub>2 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>2) \<lfloor>last_index ?Vs ` ?A\<rfloor>
A \<subseteq> set Vs
fv (while (e\<^sub>1) e\<^sub>2) \<subseteq> set Vs
\<D> (while (e\<^sub>1) e\<^sub>2) \<lfloor>A\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs e\<^sub>1) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs e\<^sub>1) \<lfloor>last_index Vs ` A\<rfloor>

goal (11 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (while (x1) x2) \<subseteq> set Vs; \<D> (while (x1) x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (while (x1) x2)) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>x A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x \<subseteq> set Vs; \<D> x \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (throw x) \<subseteq> set Vs; \<D> (throw x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (throw x)) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs [] \<subseteq> set Vs; \<D>s [] \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs []) \<lfloor>last_index Vs ` A\<rfloor>
A total of 11 subgoals...
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs (while (e\<^sub>1) e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
proof (cases "\<A> e\<^sub>1")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<A> e\<^sub>1 = None \<Longrightarrow> \<D> (compE\<^sub>1 Vs (while (e\<^sub>1) e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (while (e\<^sub>1) e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
case None
[PROOF STATE]
proof (state)
this:
\<A> e\<^sub>1 = None

goal (2 subgoals):
 1. \<A> e\<^sub>1 = None \<Longrightarrow> \<D> (compE\<^sub>1 Vs (while (e\<^sub>1) e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (while (e\<^sub>1) e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
\<A> e\<^sub>1 = None

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs (while (e\<^sub>1) e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
using While
[PROOF STATE]
proof (prove)
using this:
\<A> e\<^sub>1 = None
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>1 \<subseteq> set ?Vs; \<D> e\<^sub>1 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>1) \<lfloor>last_index ?Vs ` ?A\<rfloor>
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>2 \<subseteq> set ?Vs; \<D> e\<^sub>2 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>2) \<lfloor>last_index ?Vs ` ?A\<rfloor>
A \<subseteq> set Vs
fv (while (e\<^sub>1) e\<^sub>2) \<subseteq> set Vs
\<D> (while (e\<^sub>1) e\<^sub>2) \<lfloor>A\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs (while (e\<^sub>1) e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs (while (e\<^sub>1) e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (while (e\<^sub>1) e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (while (e\<^sub>1) e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
case (Some A\<^sub>1)
[PROOF STATE]
proof (state)
this:
\<A> e\<^sub>1 = \<lfloor>A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (while (e\<^sub>1) e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
have indexA\<^sub>1: "\<A> (compE\<^sub>1 Vs e\<^sub>1) = \<lfloor>last_index Vs ` A\<^sub>1\<rfloor>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<A> (compE\<^sub>1 Vs e\<^sub>1) = \<lfloor>last_index Vs ` A\<^sub>1\<rfloor>
[PROOF STEP]
using A_compE\<^sub>1[OF Some] While.prems
[PROOF STATE]
proof (prove)
using this:
fv e\<^sub>1 \<subseteq> set ?Vs \<Longrightarrow> \<A> (compE\<^sub>1 ?Vs e\<^sub>1) = \<lfloor>last_index ?Vs ` A\<^sub>1\<rfloor>
A \<subseteq> set Vs
fv (while (e\<^sub>1) e\<^sub>2) \<subseteq> set Vs
\<D> (while (e\<^sub>1) e\<^sub>2) \<lfloor>A\<rfloor>

goal (1 subgoal):
 1. \<A> (compE\<^sub>1 Vs e\<^sub>1) = \<lfloor>last_index Vs ` A\<^sub>1\<rfloor>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<A> (compE\<^sub>1 Vs e\<^sub>1) = \<lfloor>last_index Vs ` A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (while (e\<^sub>1) e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
have "A \<union> A\<^sub>1 \<subseteq> set Vs"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. A \<union> A\<^sub>1 \<subseteq> set Vs
[PROOF STEP]
using While.prems A_fv[OF Some]
[PROOF STATE]
proof (prove)
using this:
A \<subseteq> set Vs
fv (while (e\<^sub>1) e\<^sub>2) \<subseteq> set Vs
\<D> (while (e\<^sub>1) e\<^sub>2) \<lfloor>A\<rfloor>
A\<^sub>1 \<subseteq> fv e\<^sub>1

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

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (while (e\<^sub>1) e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
hence "\<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` (A \<union> A\<^sub>1)\<rfloor>"
[PROOF STATE]
proof (prove)
using this:
A \<union> A\<^sub>1 \<subseteq> set Vs

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` (A \<union> A\<^sub>1)\<rfloor>
[PROOF STEP]
using While Some
[PROOF STATE]
proof (prove)
using this:
A \<union> A\<^sub>1 \<subseteq> set Vs
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>1 \<subseteq> set ?Vs; \<D> e\<^sub>1 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>1) \<lfloor>last_index ?Vs ` ?A\<rfloor>
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>2 \<subseteq> set ?Vs; \<D> e\<^sub>2 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>2) \<lfloor>last_index ?Vs ` ?A\<rfloor>
A \<subseteq> set Vs
fv (while (e\<^sub>1) e\<^sub>2) \<subseteq> set Vs
\<D> (while (e\<^sub>1) e\<^sub>2) \<lfloor>A\<rfloor>
\<A> e\<^sub>1 = \<lfloor>A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` (A \<union> A\<^sub>1)\<rfloor>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` (A \<union> A\<^sub>1)\<rfloor>

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (while (e\<^sub>1) e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
hence "\<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` A \<union> last_index Vs ` A\<^sub>1\<rfloor>"
[PROOF STATE]
proof (prove)
using this:
\<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` (A \<union> A\<^sub>1)\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` A \<union> last_index Vs ` A\<^sub>1\<rfloor>
[PROOF STEP]
by(simp add: image_Un)
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` A \<union> last_index Vs ` A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (while (e\<^sub>1) e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
\<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` A \<union> last_index Vs ` A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs (while (e\<^sub>1) e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
using IH\<^sub>1 indexA\<^sub>1
[PROOF STATE]
proof (prove)
using this:
\<D> (compE\<^sub>1 Vs e\<^sub>2) \<lfloor>last_index Vs ` A \<union> last_index Vs ` A\<^sub>1\<rfloor>
\<D> (compE\<^sub>1 Vs e\<^sub>1) \<lfloor>last_index Vs ` A\<rfloor>
\<A> (compE\<^sub>1 Vs e\<^sub>1) = \<lfloor>last_index Vs ` A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs (while (e\<^sub>1) e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs (while (e\<^sub>1) e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs (while (e\<^sub>1) e\<^sub>2)) \<lfloor>last_index Vs ` A\<rfloor>

goal (10 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x \<subseteq> set Vs; \<D> x \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (throw x) \<subseteq> set Vs; \<D> (throw x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (throw x)) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs [] \<subseteq> set Vs; \<D>s [] \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs []) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs x2 \<subseteq> set Vs; \<D>s x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fvs (x1 # x2) \<subseteq> set Vs; \<D>s (x1 # x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs (x1 # x2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (10 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x \<subseteq> set Vs; \<D> x \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (throw x) \<subseteq> set Vs; \<D> (throw x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (throw x)) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs [] \<subseteq> set Vs; \<D>s [] \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs []) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs x2 \<subseteq> set Vs; \<D>s x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fvs (x1 # x2) \<subseteq> set Vs; \<D>s (x1 # x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs (x1 # x2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
case (Block V T e)
[PROOF STATE]
proof (state)
this:
\<lbrakk>?A \<subseteq> set ?Vs; fv e \<subseteq> set ?Vs; \<D> e \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e) \<lfloor>last_index ?Vs ` ?A\<rfloor>
A \<subseteq> set Vs
fv {V:T; e} \<subseteq> set Vs
\<D> {V:T; e} \<lfloor>A\<rfloor>

goal (10 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x \<subseteq> set Vs; \<D> x \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (throw x) \<subseteq> set Vs; \<D> (throw x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (throw x)) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs [] \<subseteq> set Vs; \<D>s [] \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs []) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs x2 \<subseteq> set Vs; \<D>s x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fvs (x1 # x2) \<subseteq> set Vs; \<D>s (x1 # x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs (x1 # x2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
have "\<lbrakk> A-{V} \<subseteq> set(Vs@[V]); fv e \<subseteq> set(Vs@[V]); \<D> e \<lfloor>A-{V}\<rfloor> \<rbrakk> \<Longrightarrow>
        \<D> (compE\<^sub>1 (Vs@[V]) e) \<lfloor>last_index (Vs@[V]) ` (A-{V})\<rfloor>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>A - {V} \<subseteq> set (Vs @ [V]); fv e \<subseteq> set (Vs @ [V]); \<D> e \<lfloor>A - {V}\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 (Vs @ [V]) e) \<lfloor>last_index (Vs @ [V]) ` (A - {V})\<rfloor>
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
\<lbrakk>A - {V} \<subseteq> set (Vs @ [V]); fv e \<subseteq> set (Vs @ [V]); \<D> e \<lfloor>A - {V}\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 (Vs @ [V]) e) \<lfloor>last_index (Vs @ [V]) ` (A - {V})\<rfloor>

goal (10 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x \<subseteq> set Vs; \<D> x \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (throw x) \<subseteq> set Vs; \<D> (throw x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (throw x)) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs [] \<subseteq> set Vs; \<D>s [] \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs []) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs x2 \<subseteq> set Vs; \<D>s x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fvs (x1 # x2) \<subseteq> set Vs; \<D>s (x1 # x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs (x1 # x2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
hence "\<D> (compE\<^sub>1 (Vs@[V]) e) \<lfloor>last_index (Vs@[V]) ` (A-{V})\<rfloor>"
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>A - {V} \<subseteq> set (Vs @ [V]); fv e \<subseteq> set (Vs @ [V]); \<D> e \<lfloor>A - {V}\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 (Vs @ [V]) e) \<lfloor>last_index (Vs @ [V]) ` (A - {V})\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 (Vs @ [V]) e) \<lfloor>last_index (Vs @ [V]) ` (A - {V})\<rfloor>
[PROOF STEP]
using Block.prems
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>A - {V} \<subseteq> set (Vs @ [V]); fv e \<subseteq> set (Vs @ [V]); \<D> e \<lfloor>A - {V}\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 (Vs @ [V]) e) \<lfloor>last_index (Vs @ [V]) ` (A - {V})\<rfloor>
A \<subseteq> set Vs
fv {V:T; e} \<subseteq> set Vs
\<D> {V:T; e} \<lfloor>A\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 (Vs @ [V]) e) \<lfloor>last_index (Vs @ [V]) ` (A - {V})\<rfloor>
[PROOF STEP]
by(simp add:Diff_subset_conv)
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 (Vs @ [V]) e) \<lfloor>last_index (Vs @ [V]) ` (A - {V})\<rfloor>

goal (10 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x \<subseteq> set Vs; \<D> x \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (throw x) \<subseteq> set Vs; \<D> (throw x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (throw x)) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs [] \<subseteq> set Vs; \<D>s [] \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs []) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs x2 \<subseteq> set Vs; \<D>s x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fvs (x1 # x2) \<subseteq> set Vs; \<D>s (x1 # x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs (x1 # x2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 (Vs @ [V]) e) \<lfloor>last_index (Vs @ [V]) ` (A - {V})\<rfloor>

goal (10 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x \<subseteq> set Vs; \<D> x \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (throw x) \<subseteq> set Vs; \<D> (throw x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (throw x)) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs [] \<subseteq> set Vs; \<D>s [] \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs []) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs x2 \<subseteq> set Vs; \<D>s x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fvs (x1 # x2) \<subseteq> set Vs; \<D>s (x1 # x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs (x1 # x2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
have "size Vs \<notin> last_index Vs ` A"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. length Vs \<notin> last_index Vs ` A
[PROOF STEP]
using Block.prems
[PROOF STATE]
proof (prove)
using this:
A \<subseteq> set Vs
fv {V:T; e} \<subseteq> set Vs
\<D> {V:T; e} \<lfloor>A\<rfloor>

goal (1 subgoal):
 1. length Vs \<notin> last_index Vs ` A
[PROOF STEP]
by(auto simp add:image_def size_last_index_conv)
[PROOF STATE]
proof (state)
this:
length Vs \<notin> last_index Vs ` A

goal (10 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x3 \<subseteq> set Vs; \<D> x3 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x3) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv {x1:x2; x3} \<subseteq> set Vs; \<D> {x1:x2; x3} \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs {x1:x2; x3}) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>x A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x \<subseteq> set Vs; \<D> x \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (throw x) \<subseteq> set Vs; \<D> (throw x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (throw x)) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs [] \<subseteq> set Vs; \<D>s [] \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs []) \<lfloor>last_index Vs ` A\<rfloor>
 10. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs x2 \<subseteq> set Vs; \<D>s x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fvs (x1 # x2) \<subseteq> set Vs; \<D>s (x1 # x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs (x1 # x2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
\<D> (compE\<^sub>1 (Vs @ [V]) e) \<lfloor>last_index (Vs @ [V]) ` (A - {V})\<rfloor>
length Vs \<notin> last_index Vs ` A
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
\<D> (compE\<^sub>1 (Vs @ [V]) e) \<lfloor>last_index (Vs @ [V]) ` (A - {V})\<rfloor>
length Vs \<notin> last_index Vs ` A

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs {V:T; e}) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
using Block
[PROOF STATE]
proof (prove)
using this:
\<D> (compE\<^sub>1 (Vs @ [V]) e) \<lfloor>last_index (Vs @ [V]) ` (A - {V})\<rfloor>
length Vs \<notin> last_index Vs ` A
\<lbrakk>?A \<subseteq> set ?Vs; fv e \<subseteq> set ?Vs; \<D> e \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e) \<lfloor>last_index ?Vs ` ?A\<rfloor>
A \<subseteq> set Vs
fv {V:T; e} \<subseteq> set Vs
\<D> {V:T; e} \<lfloor>A\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs {V:T; e}) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
by(auto simp add: image_last_index Diff_subset_conv hyperset_defs elim!: D_mono')
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs {V:T; e}) \<lfloor>last_index Vs ` A\<rfloor>

goal (9 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x \<subseteq> set Vs; \<D> x \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (throw x) \<subseteq> set Vs; \<D> (throw x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (throw x)) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs [] \<subseteq> set Vs; \<D>s [] \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs []) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs x2 \<subseteq> set Vs; \<D>s x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fvs (x1 # x2) \<subseteq> set Vs; \<D>s (x1 # x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs (x1 # x2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (9 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x \<subseteq> set Vs; \<D> x \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (throw x) \<subseteq> set Vs; \<D> (throw x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (throw x)) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs [] \<subseteq> set Vs; \<D>s [] \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs []) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs x2 \<subseteq> set Vs; \<D>s x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fvs (x1 # x2) \<subseteq> set Vs; \<D>s (x1 # x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs (x1 # x2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
case (Cons_exp e\<^sub>1 es)
[PROOF STATE]
proof (state)
this:
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>1 \<subseteq> set ?Vs; \<D> e\<^sub>1 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>1) \<lfloor>last_index ?Vs ` ?A\<rfloor>
\<lbrakk>?A \<subseteq> set ?Vs; fvs es \<subseteq> set ?Vs; \<D>s es \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 ?Vs es) \<lfloor>last_index ?Vs ` ?A\<rfloor>
A \<subseteq> set Vs
fvs (e\<^sub>1 # es) \<subseteq> set Vs
\<D>s (e\<^sub>1 # es) \<lfloor>A\<rfloor>

goal (9 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x \<subseteq> set Vs; \<D> x \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (throw x) \<subseteq> set Vs; \<D> (throw x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (throw x)) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs [] \<subseteq> set Vs; \<D>s [] \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs []) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs x2 \<subseteq> set Vs; \<D>s x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fvs (x1 # x2) \<subseteq> set Vs; \<D>s (x1 # x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs (x1 # x2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
hence IH\<^sub>1: "\<D> (compE\<^sub>1 Vs e\<^sub>1) \<lfloor>last_index Vs ` A\<rfloor>"
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>1 \<subseteq> set ?Vs; \<D> e\<^sub>1 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>1) \<lfloor>last_index ?Vs ` ?A\<rfloor>
\<lbrakk>?A \<subseteq> set ?Vs; fvs es \<subseteq> set ?Vs; \<D>s es \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 ?Vs es) \<lfloor>last_index ?Vs ` ?A\<rfloor>
A \<subseteq> set Vs
fvs (e\<^sub>1 # es) \<subseteq> set Vs
\<D>s (e\<^sub>1 # es) \<lfloor>A\<rfloor>

goal (1 subgoal):
 1. \<D> (compE\<^sub>1 Vs e\<^sub>1) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<D> (compE\<^sub>1 Vs e\<^sub>1) \<lfloor>last_index Vs ` A\<rfloor>

goal (9 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x \<subseteq> set Vs; \<D> x \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (throw x) \<subseteq> set Vs; \<D> (throw x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (throw x)) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs [] \<subseteq> set Vs; \<D>s [] \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs []) \<lfloor>last_index Vs ` A\<rfloor>
 9. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs x2 \<subseteq> set Vs; \<D>s x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fvs (x1 # x2) \<subseteq> set Vs; \<D>s (x1 # x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs (x1 # x2)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<D>s (compEs\<^sub>1 Vs (e\<^sub>1 # es)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
proof (cases "\<A> e\<^sub>1")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<A> e\<^sub>1 = None \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs (e\<^sub>1 # es)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs (e\<^sub>1 # es)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
case None
[PROOF STATE]
proof (state)
this:
\<A> e\<^sub>1 = None

goal (2 subgoals):
 1. \<A> e\<^sub>1 = None \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs (e\<^sub>1 # es)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs (e\<^sub>1 # es)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
\<A> e\<^sub>1 = None

goal (1 subgoal):
 1. \<D>s (compEs\<^sub>1 Vs (e\<^sub>1 # es)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
using Cons_exp
[PROOF STATE]
proof (prove)
using this:
\<A> e\<^sub>1 = None
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>1 \<subseteq> set ?Vs; \<D> e\<^sub>1 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>1) \<lfloor>last_index ?Vs ` ?A\<rfloor>
\<lbrakk>?A \<subseteq> set ?Vs; fvs es \<subseteq> set ?Vs; \<D>s es \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 ?Vs es) \<lfloor>last_index ?Vs ` ?A\<rfloor>
A \<subseteq> set Vs
fvs (e\<^sub>1 # es) \<subseteq> set Vs
\<D>s (e\<^sub>1 # es) \<lfloor>A\<rfloor>

goal (1 subgoal):
 1. \<D>s (compEs\<^sub>1 Vs (e\<^sub>1 # es)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<D>s (compEs\<^sub>1 Vs (e\<^sub>1 # es)) \<lfloor>last_index Vs ` A\<rfloor>

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs (e\<^sub>1 # es)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs (e\<^sub>1 # es)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
case (Some A\<^sub>1)
[PROOF STATE]
proof (state)
this:
\<A> e\<^sub>1 = \<lfloor>A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs (e\<^sub>1 # es)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
have indexA\<^sub>1: "\<A> (compE\<^sub>1 Vs e\<^sub>1) = \<lfloor>last_index Vs ` A\<^sub>1\<rfloor>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<A> (compE\<^sub>1 Vs e\<^sub>1) = \<lfloor>last_index Vs ` A\<^sub>1\<rfloor>
[PROOF STEP]
using A_compE\<^sub>1[OF Some] Cons_exp.prems
[PROOF STATE]
proof (prove)
using this:
fv e\<^sub>1 \<subseteq> set ?Vs \<Longrightarrow> \<A> (compE\<^sub>1 ?Vs e\<^sub>1) = \<lfloor>last_index ?Vs ` A\<^sub>1\<rfloor>
A \<subseteq> set Vs
fvs (e\<^sub>1 # es) \<subseteq> set Vs
\<D>s (e\<^sub>1 # es) \<lfloor>A\<rfloor>

goal (1 subgoal):
 1. \<A> (compE\<^sub>1 Vs e\<^sub>1) = \<lfloor>last_index Vs ` A\<^sub>1\<rfloor>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<A> (compE\<^sub>1 Vs e\<^sub>1) = \<lfloor>last_index Vs ` A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs (e\<^sub>1 # es)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
have "A \<union> A\<^sub>1 \<subseteq> set Vs"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. A \<union> A\<^sub>1 \<subseteq> set Vs
[PROOF STEP]
using Cons_exp.prems A_fv[OF Some]
[PROOF STATE]
proof (prove)
using this:
A \<subseteq> set Vs
fvs (e\<^sub>1 # es) \<subseteq> set Vs
\<D>s (e\<^sub>1 # es) \<lfloor>A\<rfloor>
A\<^sub>1 \<subseteq> fv e\<^sub>1

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

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs (e\<^sub>1 # es)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
hence "\<D>s (compEs\<^sub>1 Vs es) \<lfloor>last_index Vs ` (A \<union> A\<^sub>1)\<rfloor>"
[PROOF STATE]
proof (prove)
using this:
A \<union> A\<^sub>1 \<subseteq> set Vs

goal (1 subgoal):
 1. \<D>s (compEs\<^sub>1 Vs es) \<lfloor>last_index Vs ` (A \<union> A\<^sub>1)\<rfloor>
[PROOF STEP]
using Cons_exp Some
[PROOF STATE]
proof (prove)
using this:
A \<union> A\<^sub>1 \<subseteq> set Vs
\<lbrakk>?A \<subseteq> set ?Vs; fv e\<^sub>1 \<subseteq> set ?Vs; \<D> e\<^sub>1 \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 ?Vs e\<^sub>1) \<lfloor>last_index ?Vs ` ?A\<rfloor>
\<lbrakk>?A \<subseteq> set ?Vs; fvs es \<subseteq> set ?Vs; \<D>s es \<lfloor>?A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 ?Vs es) \<lfloor>last_index ?Vs ` ?A\<rfloor>
A \<subseteq> set Vs
fvs (e\<^sub>1 # es) \<subseteq> set Vs
\<D>s (e\<^sub>1 # es) \<lfloor>A\<rfloor>
\<A> e\<^sub>1 = \<lfloor>A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<D>s (compEs\<^sub>1 Vs es) \<lfloor>last_index Vs ` (A \<union> A\<^sub>1)\<rfloor>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<D>s (compEs\<^sub>1 Vs es) \<lfloor>last_index Vs ` (A \<union> A\<^sub>1)\<rfloor>

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs (e\<^sub>1 # es)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
hence "\<D>s (compEs\<^sub>1 Vs es) \<lfloor>last_index Vs ` A \<union> last_index Vs ` A\<^sub>1\<rfloor>"
[PROOF STATE]
proof (prove)
using this:
\<D>s (compEs\<^sub>1 Vs es) \<lfloor>last_index Vs ` (A \<union> A\<^sub>1)\<rfloor>

goal (1 subgoal):
 1. \<D>s (compEs\<^sub>1 Vs es) \<lfloor>last_index Vs ` A \<union> last_index Vs ` A\<^sub>1\<rfloor>
[PROOF STEP]
by(simp add: image_Un)
[PROOF STATE]
proof (state)
this:
\<D>s (compEs\<^sub>1 Vs es) \<lfloor>last_index Vs ` A \<union> last_index Vs ` A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<And>a. \<A> e\<^sub>1 = \<lfloor>a\<rfloor> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs (e\<^sub>1 # es)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
\<D>s (compEs\<^sub>1 Vs es) \<lfloor>last_index Vs ` A \<union> last_index Vs ` A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<D>s (compEs\<^sub>1 Vs (e\<^sub>1 # es)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
using IH\<^sub>1 indexA\<^sub>1
[PROOF STATE]
proof (prove)
using this:
\<D>s (compEs\<^sub>1 Vs es) \<lfloor>last_index Vs ` A \<union> last_index Vs ` A\<^sub>1\<rfloor>
\<D> (compE\<^sub>1 Vs e\<^sub>1) \<lfloor>last_index Vs ` A\<rfloor>
\<A> (compE\<^sub>1 Vs e\<^sub>1) = \<lfloor>last_index Vs ` A\<^sub>1\<rfloor>

goal (1 subgoal):
 1. \<D>s (compEs\<^sub>1 Vs (e\<^sub>1 # es)) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<D>s (compEs\<^sub>1 Vs (e\<^sub>1 # es)) \<lfloor>last_index Vs ` A\<rfloor>

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<D>s (compEs\<^sub>1 Vs (e\<^sub>1 # es)) \<lfloor>last_index Vs ` A\<rfloor>

goal (8 subgoals):
 1. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (new x) \<subseteq> set Vs; \<D> (new x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (new x)) \<lfloor>last_index Vs ` A\<rfloor>
 2. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (Cast x1 x2) \<subseteq> set Vs; \<D> (Cast x1 x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Cast x1 x2)) \<lfloor>last_index Vs ` A\<rfloor>
 3. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Val x) \<subseteq> set Vs; \<D> (Val x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Val x)) \<lfloor>last_index Vs ` A\<rfloor>
 4. \<And>x A Vs. \<lbrakk>A \<subseteq> set Vs; fv (Var x) \<subseteq> set Vs; \<D> (Var x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (Var x)) \<lfloor>last_index Vs ` A\<rfloor>
 5. \<And>x1 x2 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x2 \<subseteq> set Vs; \<D> x2 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x2) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1:=x2) \<subseteq> set Vs; \<D> (x1:=x2) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1:=x2)) \<lfloor>last_index Vs ` A\<rfloor>
 6. \<And>x1 x2 x3 A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x1 \<subseteq> set Vs; \<D> x1 \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x1) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (x1\<bullet>x2{x3}) \<subseteq> set Vs; \<D> (x1\<bullet>x2{x3}) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (x1\<bullet>x2{x3})) \<lfloor>last_index Vs ` A\<rfloor>
 7. \<And>x A Vs. \<lbrakk>\<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fv x \<subseteq> set Vs; \<D> x \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs x) \<lfloor>last_index Vs ` A\<rfloor>; A \<subseteq> set Vs; fv (throw x) \<subseteq> set Vs; \<D> (throw x) \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D> (compE\<^sub>1 Vs (throw x)) \<lfloor>last_index Vs ` A\<rfloor>
 8. \<And>A Vs. \<lbrakk>A \<subseteq> set Vs; fvs [] \<subseteq> set Vs; \<D>s [] \<lfloor>A\<rfloor>\<rbrakk> \<Longrightarrow> \<D>s (compEs\<^sub>1 Vs []) \<lfloor>last_index Vs ` A\<rfloor>
[PROOF STEP]
qed (simp_all add:hyperset_defs)