[STATEMENT]
theorem (in TC1) compT_states:
assumes wf: "wf_prog p P"
shows "\<And>E T A ST.
  \<lbrakk> P,E \<turnstile>\<^sub>1 e :: T; set E \<subseteq> types P; set ST \<subseteq> types P;
    size ST + max_stack e \<le> mxs; size E + max_vars e \<le> mxl \<rbrakk>
  \<Longrightarrow> OK ` set(compT E A ST e) \<subseteq> states P mxs mxl"
(*<*)(is "\<And>E T A ST. PROP ?P e E T A ST")(*>*)

and "\<And>E Ts A ST.
  \<lbrakk> P,E \<turnstile>\<^sub>1 es[::]Ts;  set E \<subseteq> types P; set ST \<subseteq> types P;
    size ST + max_stacks es \<le> mxs; size E + max_varss es \<le> mxl \<rbrakk>
  \<Longrightarrow> OK ` set(compTs E A ST es) \<subseteq> states P mxs mxl"
(*<*)(is "\<And>E Ts A ST. PROP ?Ps es E Ts A ST")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 e :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack e \<le> mxs; length E + max_vars e \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST e) \<subseteq> states P mxs mxl) &&& (\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 es [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks es \<le> mxs; length E + max_varss es \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST es) \<subseteq> states P mxs mxl)
[PROOF STEP]
proof(induct e and es rule: compT.induct compTs.induct)
[PROOF STATE]
proof (state)
goal (22 subgoals):
 1. \<And>x E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 new x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (new x) \<le> mxs; length E + max_vars (new x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (new x)) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 Cast x1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (Cast x1 x2) \<le> mxs; length E + max_vars (Cast x1 x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (Cast x1 x2)) \<subseteq> states P mxs mxl
 3. \<And>x E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 Val x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (Val x) \<le> mxs; length E + max_vars (Val x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (Val x)) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 \<guillemotleft>x2\<guillemotright> x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxs; length E + max_vars (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1 \<guillemotleft>x2\<guillemotright> x3)) \<subseteq> states P mxs mxl
 5. \<And>x E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 Var x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (Var x) \<le> mxs; length E + max_vars (Var x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (Var x)) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1:=x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1:=x2) \<le> mxs; length E + max_vars (x1:=x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1:=x2)) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3})) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 x3 E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3})) \<subseteq> states P mxs mxl
 9. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3} := x4)) \<subseteq> states P mxs mxl
 10. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3} := x4)) \<subseteq> states P mxs mxl
A total of 22 subgoals...
[PROOF STEP]
case new
[PROOF STATE]
proof (state)
this:
P,E \<turnstile>\<^sub>1 new x_ :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (new x_) \<le> mxs
length E + max_vars (new x_) \<le> mxl

goal (22 subgoals):
 1. \<And>x E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 new x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (new x) \<le> mxs; length E + max_vars (new x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (new x)) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 Cast x1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (Cast x1 x2) \<le> mxs; length E + max_vars (Cast x1 x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (Cast x1 x2)) \<subseteq> states P mxs mxl
 3. \<And>x E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 Val x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (Val x) \<le> mxs; length E + max_vars (Val x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (Val x)) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 \<guillemotleft>x2\<guillemotright> x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxs; length E + max_vars (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1 \<guillemotleft>x2\<guillemotright> x3)) \<subseteq> states P mxs mxl
 5. \<And>x E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 Var x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (Var x) \<le> mxs; length E + max_vars (Var x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (Var x)) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1:=x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1:=x2) \<le> mxs; length E + max_vars (x1:=x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1:=x2)) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3})) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 x3 E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3})) \<subseteq> states P mxs mxl
 9. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3} := x4)) \<subseteq> states P mxs mxl
 10. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3} := x4)) \<subseteq> states P mxs mxl
A total of 22 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
P,E \<turnstile>\<^sub>1 new x_ :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (new x_) \<le> mxs
length E + max_vars (new x_) \<le> mxl

goal (1 subgoal):
 1. OK ` set (compT E A ST (new x_)) \<subseteq> states P mxs mxl
[PROOF STEP]
by(simp)
[PROOF STATE]
proof (state)
this:
OK ` set (compT E A ST (new x_)) \<subseteq> states P mxs mxl

goal (21 subgoals):
 1. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 Cast x1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (Cast x1 x2) \<le> mxs; length E + max_vars (Cast x1 x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (Cast x1 x2)) \<subseteq> states P mxs mxl
 2. \<And>x E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 Val x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (Val x) \<le> mxs; length E + max_vars (Val x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (Val x)) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 \<guillemotleft>x2\<guillemotright> x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxs; length E + max_vars (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1 \<guillemotleft>x2\<guillemotright> x3)) \<subseteq> states P mxs mxl
 4. \<And>x E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 Var x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (Var x) \<le> mxs; length E + max_vars (Var x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (Var x)) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1:=x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1:=x2) \<le> mxs; length E + max_vars (x1:=x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1:=x2)) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3})) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 x3 E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3})) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3} := x4)) \<subseteq> states P mxs mxl
 9. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3} := x4)) \<subseteq> states P mxs mxl
 10. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
A total of 21 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (21 subgoals):
 1. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 Cast x1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (Cast x1 x2) \<le> mxs; length E + max_vars (Cast x1 x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (Cast x1 x2)) \<subseteq> states P mxs mxl
 2. \<And>x E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 Val x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (Val x) \<le> mxs; length E + max_vars (Val x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (Val x)) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 \<guillemotleft>x2\<guillemotright> x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxs; length E + max_vars (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1 \<guillemotleft>x2\<guillemotright> x3)) \<subseteq> states P mxs mxl
 4. \<And>x E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 Var x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (Var x) \<le> mxs; length E + max_vars (Var x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (Var x)) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1:=x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1:=x2) \<le> mxs; length E + max_vars (x1:=x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1:=x2)) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3})) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 x3 E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3})) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3} := x4)) \<subseteq> states P mxs mxl
 9. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3} := x4)) \<subseteq> states P mxs mxl
 10. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
A total of 21 subgoals...
[PROOF STEP]
case (Cast C e)
[PROOF STATE]
proof (state)
this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 e :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack e \<le> mxs; length ?E2 + max_vars e \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 e) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 Cast C e :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (Cast C e) \<le> mxs
length E + max_vars (Cast C e) \<le> mxl

goal (21 subgoals):
 1. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 Cast x1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (Cast x1 x2) \<le> mxs; length E + max_vars (Cast x1 x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (Cast x1 x2)) \<subseteq> states P mxs mxl
 2. \<And>x E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 Val x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (Val x) \<le> mxs; length E + max_vars (Val x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (Val x)) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 \<guillemotleft>x2\<guillemotright> x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxs; length E + max_vars (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1 \<guillemotleft>x2\<guillemotright> x3)) \<subseteq> states P mxs mxl
 4. \<And>x E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 Var x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (Var x) \<le> mxs; length E + max_vars (Var x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (Var x)) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1:=x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1:=x2) \<le> mxs; length E + max_vars (x1:=x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1:=x2)) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3})) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 x3 E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3})) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3} := x4)) \<subseteq> states P mxs mxl
 9. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3} := x4)) \<subseteq> states P mxs mxl
 10. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
A total of 21 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 e :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack e \<le> mxs; length ?E2 + max_vars e \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 e) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 Cast C e :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (Cast C e) \<le> mxs
length E + max_vars (Cast C e) \<le> mxl

goal (1 subgoal):
 1. OK ` set (compT E A ST (Cast C e)) \<subseteq> states P mxs mxl
[PROOF STEP]
by (auto simp:after_in_states[OF wf])
[PROOF STATE]
proof (state)
this:
OK ` set (compT E A ST (Cast C e)) \<subseteq> states P mxs mxl

goal (20 subgoals):
 1. \<And>x E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 Val x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (Val x) \<le> mxs; length E + max_vars (Val x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (Val x)) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 \<guillemotleft>x2\<guillemotright> x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxs; length E + max_vars (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1 \<guillemotleft>x2\<guillemotright> x3)) \<subseteq> states P mxs mxl
 3. \<And>x E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 Var x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (Var x) \<le> mxs; length E + max_vars (Var x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (Var x)) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1:=x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1:=x2) \<le> mxs; length E + max_vars (x1:=x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1:=x2)) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3})) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 x3 E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3})) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3} := x4)) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3} := x4)) \<subseteq> states P mxs mxl
 9. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 10. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
A total of 20 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (20 subgoals):
 1. \<And>x E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 Val x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (Val x) \<le> mxs; length E + max_vars (Val x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (Val x)) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 \<guillemotleft>x2\<guillemotright> x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxs; length E + max_vars (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1 \<guillemotleft>x2\<guillemotright> x3)) \<subseteq> states P mxs mxl
 3. \<And>x E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 Var x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (Var x) \<le> mxs; length E + max_vars (Var x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (Var x)) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1:=x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1:=x2) \<le> mxs; length E + max_vars (x1:=x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1:=x2)) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3})) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 x3 E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3})) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3} := x4)) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3} := x4)) \<subseteq> states P mxs mxl
 9. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 10. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
A total of 20 subgoals...
[PROOF STEP]
case Val
[PROOF STATE]
proof (state)
this:
P,E \<turnstile>\<^sub>1 Val x_ :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (Val x_) \<le> mxs
length E + max_vars (Val x_) \<le> mxl

goal (20 subgoals):
 1. \<And>x E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 Val x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (Val x) \<le> mxs; length E + max_vars (Val x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (Val x)) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 \<guillemotleft>x2\<guillemotright> x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxs; length E + max_vars (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1 \<guillemotleft>x2\<guillemotright> x3)) \<subseteq> states P mxs mxl
 3. \<And>x E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 Var x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (Var x) \<le> mxs; length E + max_vars (Var x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (Var x)) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1:=x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1:=x2) \<le> mxs; length E + max_vars (x1:=x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1:=x2)) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3})) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 x3 E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3})) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3} := x4)) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3} := x4)) \<subseteq> states P mxs mxl
 9. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 10. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
A total of 20 subgoals...
[PROOF STEP]
thus  ?case
[PROOF STATE]
proof (prove)
using this:
P,E \<turnstile>\<^sub>1 Val x_ :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (Val x_) \<le> mxs
length E + max_vars (Val x_) \<le> mxl

goal (1 subgoal):
 1. OK ` set (compT E A ST (Val x_)) \<subseteq> states P mxs mxl
[PROOF STEP]
by(simp)
[PROOF STATE]
proof (state)
this:
OK ` set (compT E A ST (Val x_)) \<subseteq> states P mxs mxl

goal (19 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 \<guillemotleft>x2\<guillemotright> x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxs; length E + max_vars (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1 \<guillemotleft>x2\<guillemotright> x3)) \<subseteq> states P mxs mxl
 2. \<And>x E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 Var x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (Var x) \<le> mxs; length E + max_vars (Var x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (Var x)) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1:=x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1:=x2) \<le> mxs; length E + max_vars (x1:=x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1:=x2)) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3})) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3})) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3} := x4)) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3} := x4)) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 9. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 10. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 {x1:x2; x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack {x1:x2; x3} \<le> mxs; length E + max_vars {x1:x2; x3} \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST {x1:x2; x3}) \<subseteq> states P mxs mxl
A total of 19 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (19 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 \<guillemotleft>x2\<guillemotright> x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxs; length E + max_vars (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1 \<guillemotleft>x2\<guillemotright> x3)) \<subseteq> states P mxs mxl
 2. \<And>x E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 Var x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (Var x) \<le> mxs; length E + max_vars (Var x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (Var x)) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1:=x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1:=x2) \<le> mxs; length E + max_vars (x1:=x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1:=x2)) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3})) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3})) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3} := x4)) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3} := x4)) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 9. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 10. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 {x1:x2; x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack {x1:x2; x3} \<le> mxs; length E + max_vars {x1:x2; x3} \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST {x1:x2; x3}) \<subseteq> states P mxs mxl
A total of 19 subgoals...
[PROOF STEP]
case Var
[PROOF STATE]
proof (state)
this:
P,E \<turnstile>\<^sub>1 Var x_ :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (Var x_) \<le> mxs
length E + max_vars (Var x_) \<le> mxl

goal (19 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 \<guillemotleft>x2\<guillemotright> x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxs; length E + max_vars (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1 \<guillemotleft>x2\<guillemotright> x3)) \<subseteq> states P mxs mxl
 2. \<And>x E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 Var x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (Var x) \<le> mxs; length E + max_vars (Var x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (Var x)) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1:=x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1:=x2) \<le> mxs; length E + max_vars (x1:=x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1:=x2)) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3})) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3})) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3} := x4)) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3} := x4)) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 9. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 10. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 {x1:x2; x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack {x1:x2; x3} \<le> mxs; length E + max_vars {x1:x2; x3} \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST {x1:x2; x3}) \<subseteq> states P mxs mxl
A total of 19 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
P,E \<turnstile>\<^sub>1 Var x_ :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (Var x_) \<le> mxs
length E + max_vars (Var x_) \<le> mxl

goal (1 subgoal):
 1. OK ` set (compT E A ST (Var x_)) \<subseteq> states P mxs mxl
[PROOF STEP]
by(simp)
[PROOF STATE]
proof (state)
this:
OK ` set (compT E A ST (Var x_)) \<subseteq> states P mxs mxl

goal (18 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 \<guillemotleft>x2\<guillemotright> x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxs; length E + max_vars (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1 \<guillemotleft>x2\<guillemotright> x3)) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1:=x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1:=x2) \<le> mxs; length E + max_vars (x1:=x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1:=x2)) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3})) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3})) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3} := x4)) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3} := x4)) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 9. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 {x1:x2; x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack {x1:x2; x3} \<le> mxs; length E + max_vars {x1:x2; x3} \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST {x1:x2; x3}) \<subseteq> states P mxs mxl
 10. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1;; x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1;; x2) \<le> mxs; length E + max_vars (x1;; x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1;; x2)) \<subseteq> states P mxs mxl
A total of 18 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (18 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 \<guillemotleft>x2\<guillemotright> x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxs; length E + max_vars (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1 \<guillemotleft>x2\<guillemotright> x3)) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1:=x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1:=x2) \<le> mxs; length E + max_vars (x1:=x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1:=x2)) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3})) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3})) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3} := x4)) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3} := x4)) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 9. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 {x1:x2; x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack {x1:x2; x3} \<le> mxs; length E + max_vars {x1:x2; x3} \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST {x1:x2; x3}) \<subseteq> states P mxs mxl
 10. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1;; x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1;; x2) \<le> mxs; length E + max_vars (x1;; x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1;; x2)) \<subseteq> states P mxs mxl
A total of 18 subgoals...
[PROOF STEP]
case LAss
[PROOF STATE]
proof (state)
this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x2_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x2_ \<le> mxs; length ?E2 + max_vars x2_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x2_) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 x1_:=x2_ :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (x1_:=x2_) \<le> mxs
length E + max_vars (x1_:=x2_) \<le> mxl

goal (18 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 \<guillemotleft>x2\<guillemotright> x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxs; length E + max_vars (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1 \<guillemotleft>x2\<guillemotright> x3)) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1:=x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1:=x2) \<le> mxs; length E + max_vars (x1:=x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1:=x2)) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3})) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3})) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3} := x4)) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3} := x4)) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 9. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 {x1:x2; x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack {x1:x2; x3} \<le> mxs; length E + max_vars {x1:x2; x3} \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST {x1:x2; x3}) \<subseteq> states P mxs mxl
 10. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1;; x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1;; x2) \<le> mxs; length E + max_vars (x1;; x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1;; x2)) \<subseteq> states P mxs mxl
A total of 18 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x2_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x2_ \<le> mxs; length ?E2 + max_vars x2_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x2_) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 x1_:=x2_ :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (x1_:=x2_) \<le> mxs
length E + max_vars (x1_:=x2_) \<le> mxl

goal (1 subgoal):
 1. OK ` set (compT E A ST (x1_:=x2_)) \<subseteq> states P mxs mxl
[PROOF STEP]
by(auto simp:after_in_states[OF wf])
[PROOF STATE]
proof (state)
this:
OK ` set (compT E A ST (x1_:=x2_)) \<subseteq> states P mxs mxl

goal (17 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 \<guillemotleft>x2\<guillemotright> x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxs; length E + max_vars (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1 \<guillemotleft>x2\<guillemotright> x3)) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3})) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3})) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3} := x4)) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3} := x4)) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 {x1:x2; x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack {x1:x2; x3} \<le> mxs; length E + max_vars {x1:x2; x3} \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST {x1:x2; x3}) \<subseteq> states P mxs mxl
 9. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1;; x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1;; x2) \<le> mxs; length E + max_vars (x1;; x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1;; x2)) \<subseteq> states P mxs mxl
 10. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 if (x1) x2 else x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (if (x1) x2 else x3) \<le> mxs; length E + max_vars (if (x1) x2 else x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (if (x1) x2 else x3)) \<subseteq> states P mxs mxl
A total of 17 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (17 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 \<guillemotleft>x2\<guillemotright> x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxs; length E + max_vars (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1 \<guillemotleft>x2\<guillemotright> x3)) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3})) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3})) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3} := x4)) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3} := x4)) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 {x1:x2; x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack {x1:x2; x3} \<le> mxs; length E + max_vars {x1:x2; x3} \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST {x1:x2; x3}) \<subseteq> states P mxs mxl
 9. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1;; x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1;; x2) \<le> mxs; length E + max_vars (x1;; x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1;; x2)) \<subseteq> states P mxs mxl
 10. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 if (x1) x2 else x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (if (x1) x2 else x3) \<le> mxs; length E + max_vars (if (x1) x2 else x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (if (x1) x2 else x3)) \<subseteq> states P mxs mxl
A total of 17 subgoals...
[PROOF STEP]
case FAcc
[PROOF STATE]
proof (state)
this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x1_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x1_ \<le> mxs; length ?E2 + max_vars x1_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x1_) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 x1_\<bullet>x2_{x3_} :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (x1_\<bullet>x2_{x3_}) \<le> mxs
length E + max_vars (x1_\<bullet>x2_{x3_}) \<le> mxl

goal (17 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 \<guillemotleft>x2\<guillemotright> x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxs; length E + max_vars (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1 \<guillemotleft>x2\<guillemotright> x3)) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3})) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3})) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3} := x4)) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3} := x4)) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 {x1:x2; x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack {x1:x2; x3} \<le> mxs; length E + max_vars {x1:x2; x3} \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST {x1:x2; x3}) \<subseteq> states P mxs mxl
 9. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1;; x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1;; x2) \<le> mxs; length E + max_vars (x1;; x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1;; x2)) \<subseteq> states P mxs mxl
 10. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 if (x1) x2 else x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (if (x1) x2 else x3) \<le> mxs; length E + max_vars (if (x1) x2 else x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (if (x1) x2 else x3)) \<subseteq> states P mxs mxl
A total of 17 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x1_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x1_ \<le> mxs; length ?E2 + max_vars x1_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x1_) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 x1_\<bullet>x2_{x3_} :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (x1_\<bullet>x2_{x3_}) \<le> mxs
length E + max_vars (x1_\<bullet>x2_{x3_}) \<le> mxl

goal (1 subgoal):
 1. OK ` set (compT E A ST (x1_\<bullet>x2_{x3_})) \<subseteq> states P mxs mxl
[PROOF STEP]
by(auto simp:after_in_states[OF wf])
[PROOF STATE]
proof (state)
this:
OK ` set (compT E A ST (x1_\<bullet>x2_{x3_})) \<subseteq> states P mxs mxl

goal (16 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 \<guillemotleft>x2\<guillemotright> x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxs; length E + max_vars (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1 \<guillemotleft>x2\<guillemotright> x3)) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3})) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3} := x4)) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3} := x4)) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 {x1:x2; x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack {x1:x2; x3} \<le> mxs; length E + max_vars {x1:x2; x3} \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST {x1:x2; x3}) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1;; x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1;; x2) \<le> mxs; length E + max_vars (x1;; x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1;; x2)) \<subseteq> states P mxs mxl
 9. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 if (x1) x2 else x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (if (x1) x2 else x3) \<le> mxs; length E + max_vars (if (x1) x2 else x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (if (x1) x2 else x3)) \<subseteq> states P mxs mxl
 10. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 while (x1) x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (while (x1) x2) \<le> mxs; length E + max_vars (while (x1) x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (while (x1) x2)) \<subseteq> states P mxs mxl
A total of 16 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (16 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 \<guillemotleft>x2\<guillemotright> x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxs; length E + max_vars (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1 \<guillemotleft>x2\<guillemotright> x3)) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3})) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3} := x4)) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3} := x4)) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 {x1:x2; x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack {x1:x2; x3} \<le> mxs; length E + max_vars {x1:x2; x3} \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST {x1:x2; x3}) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1;; x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1;; x2) \<le> mxs; length E + max_vars (x1;; x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1;; x2)) \<subseteq> states P mxs mxl
 9. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 if (x1) x2 else x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (if (x1) x2 else x3) \<le> mxs; length E + max_vars (if (x1) x2 else x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (if (x1) x2 else x3)) \<subseteq> states P mxs mxl
 10. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 while (x1) x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (while (x1) x2) \<le> mxs; length E + max_vars (while (x1) x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (while (x1) x2)) \<subseteq> states P mxs mxl
A total of 16 subgoals...
[PROOF STEP]
case SFAcc
[PROOF STATE]
proof (state)
this:
P,E \<turnstile>\<^sub>1 x1_\<bullet>\<^sub>sx2_{x3_} :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (x1_\<bullet>\<^sub>sx2_{x3_}) \<le> mxs
length E + max_vars (x1_\<bullet>\<^sub>sx2_{x3_}) \<le> mxl

goal (16 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 \<guillemotleft>x2\<guillemotright> x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxs; length E + max_vars (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1 \<guillemotleft>x2\<guillemotright> x3)) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3}) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3}) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3})) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3} := x4)) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3} := x4)) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 {x1:x2; x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack {x1:x2; x3} \<le> mxs; length E + max_vars {x1:x2; x3} \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST {x1:x2; x3}) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1;; x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1;; x2) \<le> mxs; length E + max_vars (x1;; x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1;; x2)) \<subseteq> states P mxs mxl
 9. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 if (x1) x2 else x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (if (x1) x2 else x3) \<le> mxs; length E + max_vars (if (x1) x2 else x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (if (x1) x2 else x3)) \<subseteq> states P mxs mxl
 10. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 while (x1) x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (while (x1) x2) \<le> mxs; length E + max_vars (while (x1) x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (while (x1) x2)) \<subseteq> states P mxs mxl
A total of 16 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
P,E \<turnstile>\<^sub>1 x1_\<bullet>\<^sub>sx2_{x3_} :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (x1_\<bullet>\<^sub>sx2_{x3_}) \<le> mxs
length E + max_vars (x1_\<bullet>\<^sub>sx2_{x3_}) \<le> mxl

goal (1 subgoal):
 1. OK ` set (compT E A ST (x1_\<bullet>\<^sub>sx2_{x3_})) \<subseteq> states P mxs mxl
[PROOF STEP]
by(auto simp:after_in_states[OF wf])
[PROOF STATE]
proof (state)
this:
OK ` set (compT E A ST (x1_\<bullet>\<^sub>sx2_{x3_})) \<subseteq> states P mxs mxl

goal (15 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 \<guillemotleft>x2\<guillemotright> x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxs; length E + max_vars (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1 \<guillemotleft>x2\<guillemotright> x3)) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3} := x4)) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3} := x4)) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 {x1:x2; x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack {x1:x2; x3} \<le> mxs; length E + max_vars {x1:x2; x3} \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST {x1:x2; x3}) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1;; x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1;; x2) \<le> mxs; length E + max_vars (x1;; x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1;; x2)) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 if (x1) x2 else x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (if (x1) x2 else x3) \<le> mxs; length E + max_vars (if (x1) x2 else x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (if (x1) x2 else x3)) \<subseteq> states P mxs mxl
 9. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 while (x1) x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (while (x1) x2) \<le> mxs; length E + max_vars (while (x1) x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (while (x1) x2)) \<subseteq> states P mxs mxl
 10. \<And>x E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x \<le> mxs; length E + max_vars x \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 throw x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (throw x) \<le> mxs; length E + max_vars (throw x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (throw x)) \<subseteq> states P mxs mxl
A total of 15 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (15 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 \<guillemotleft>x2\<guillemotright> x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxs; length E + max_vars (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1 \<guillemotleft>x2\<guillemotright> x3)) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3} := x4)) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3} := x4)) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 {x1:x2; x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack {x1:x2; x3} \<le> mxs; length E + max_vars {x1:x2; x3} \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST {x1:x2; x3}) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1;; x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1;; x2) \<le> mxs; length E + max_vars (x1;; x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1;; x2)) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 if (x1) x2 else x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (if (x1) x2 else x3) \<le> mxs; length E + max_vars (if (x1) x2 else x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (if (x1) x2 else x3)) \<subseteq> states P mxs mxl
 9. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 while (x1) x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (while (x1) x2) \<le> mxs; length E + max_vars (while (x1) x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (while (x1) x2)) \<subseteq> states P mxs mxl
 10. \<And>x E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x \<le> mxs; length E + max_vars x \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 throw x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (throw x) \<le> mxs; length E + max_vars (throw x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (throw x)) \<subseteq> states P mxs mxl
A total of 15 subgoals...
[PROOF STEP]
case FAss
[PROOF STATE]
proof (state)
this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x1_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x1_ \<le> mxs; length ?E2 + max_vars x1_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x1_) \<subseteq> states P mxs mxl
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x4_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x4_ \<le> mxs; length ?E2 + max_vars x4_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x4_) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 x1_\<bullet>x2_{x3_} := x4_ :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (x1_\<bullet>x2_{x3_} := x4_) \<le> mxs
length E + max_vars (x1_\<bullet>x2_{x3_} := x4_) \<le> mxl

goal (15 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 \<guillemotleft>x2\<guillemotright> x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxs; length E + max_vars (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1 \<guillemotleft>x2\<guillemotright> x3)) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>x2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2{x3} := x4)) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3} := x4)) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 {x1:x2; x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack {x1:x2; x3} \<le> mxs; length E + max_vars {x1:x2; x3} \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST {x1:x2; x3}) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1;; x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1;; x2) \<le> mxs; length E + max_vars (x1;; x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1;; x2)) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 if (x1) x2 else x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (if (x1) x2 else x3) \<le> mxs; length E + max_vars (if (x1) x2 else x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (if (x1) x2 else x3)) \<subseteq> states P mxs mxl
 9. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 while (x1) x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (while (x1) x2) \<le> mxs; length E + max_vars (while (x1) x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (while (x1) x2)) \<subseteq> states P mxs mxl
 10. \<And>x E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x \<le> mxs; length E + max_vars x \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 throw x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (throw x) \<le> mxs; length E + max_vars (throw x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (throw x)) \<subseteq> states P mxs mxl
A total of 15 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x1_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x1_ \<le> mxs; length ?E2 + max_vars x1_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x1_) \<subseteq> states P mxs mxl
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x4_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x4_ \<le> mxs; length ?E2 + max_vars x4_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x4_) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 x1_\<bullet>x2_{x3_} := x4_ :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (x1_\<bullet>x2_{x3_} := x4_) \<le> mxs
length E + max_vars (x1_\<bullet>x2_{x3_} := x4_) \<le> mxl

goal (1 subgoal):
 1. OK ` set (compT E A ST (x1_\<bullet>x2_{x3_} := x4_)) \<subseteq> states P mxs mxl
[PROOF STEP]
by(auto simp:image_Un WT\<^sub>1_is_type[OF wf] after_in_states[OF wf])
[PROOF STATE]
proof (state)
this:
OK ` set (compT E A ST (x1_\<bullet>x2_{x3_} := x4_)) \<subseteq> states P mxs mxl

goal (14 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 \<guillemotleft>x2\<guillemotright> x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxs; length E + max_vars (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1 \<guillemotleft>x2\<guillemotright> x3)) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3} := x4)) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 {x1:x2; x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack {x1:x2; x3} \<le> mxs; length E + max_vars {x1:x2; x3} \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST {x1:x2; x3}) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1;; x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1;; x2) \<le> mxs; length E + max_vars (x1;; x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1;; x2)) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 if (x1) x2 else x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (if (x1) x2 else x3) \<le> mxs; length E + max_vars (if (x1) x2 else x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (if (x1) x2 else x3)) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 while (x1) x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (while (x1) x2) \<le> mxs; length E + max_vars (while (x1) x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (while (x1) x2)) \<subseteq> states P mxs mxl
 9. \<And>x E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x \<le> mxs; length E + max_vars x \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 throw x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (throw x) \<le> mxs; length E + max_vars (throw x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (throw x)) \<subseteq> states P mxs mxl
 10. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 try x1 catch(x2 x3) x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (try x1 catch(x2 x3) x4) \<le> mxs; length E + max_vars (try x1 catch(x2 x3) x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (try x1 catch(x2 x3) x4)) \<subseteq> states P mxs mxl
A total of 14 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (14 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 \<guillemotleft>x2\<guillemotright> x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxs; length E + max_vars (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1 \<guillemotleft>x2\<guillemotright> x3)) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3} := x4)) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 {x1:x2; x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack {x1:x2; x3} \<le> mxs; length E + max_vars {x1:x2; x3} \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST {x1:x2; x3}) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1;; x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1;; x2) \<le> mxs; length E + max_vars (x1;; x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1;; x2)) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 if (x1) x2 else x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (if (x1) x2 else x3) \<le> mxs; length E + max_vars (if (x1) x2 else x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (if (x1) x2 else x3)) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 while (x1) x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (while (x1) x2) \<le> mxs; length E + max_vars (while (x1) x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (while (x1) x2)) \<subseteq> states P mxs mxl
 9. \<And>x E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x \<le> mxs; length E + max_vars x \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 throw x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (throw x) \<le> mxs; length E + max_vars (throw x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (throw x)) \<subseteq> states P mxs mxl
 10. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 try x1 catch(x2 x3) x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (try x1 catch(x2 x3) x4) \<le> mxs; length E + max_vars (try x1 catch(x2 x3) x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (try x1 catch(x2 x3) x4)) \<subseteq> states P mxs mxl
A total of 14 subgoals...
[PROOF STEP]
case SFAss
[PROOF STATE]
proof (state)
this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x4_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x4_ \<le> mxs; length ?E2 + max_vars x4_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x4_) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 x1_\<bullet>\<^sub>sx2_{x3_} := x4_ :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (x1_\<bullet>\<^sub>sx2_{x3_} := x4_) \<le> mxs
length E + max_vars (x1_\<bullet>\<^sub>sx2_{x3_} := x4_) \<le> mxl

goal (14 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 \<guillemotleft>x2\<guillemotright> x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxs; length E + max_vars (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1 \<guillemotleft>x2\<guillemotright> x3)) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2{x3} := x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2{x3} := x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2{x3} := x4)) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 {x1:x2; x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack {x1:x2; x3} \<le> mxs; length E + max_vars {x1:x2; x3} \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST {x1:x2; x3}) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1;; x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1;; x2) \<le> mxs; length E + max_vars (x1;; x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1;; x2)) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 if (x1) x2 else x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (if (x1) x2 else x3) \<le> mxs; length E + max_vars (if (x1) x2 else x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (if (x1) x2 else x3)) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 while (x1) x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (while (x1) x2) \<le> mxs; length E + max_vars (while (x1) x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (while (x1) x2)) \<subseteq> states P mxs mxl
 9. \<And>x E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x \<le> mxs; length E + max_vars x \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 throw x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (throw x) \<le> mxs; length E + max_vars (throw x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (throw x)) \<subseteq> states P mxs mxl
 10. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 try x1 catch(x2 x3) x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (try x1 catch(x2 x3) x4) \<le> mxs; length E + max_vars (try x1 catch(x2 x3) x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (try x1 catch(x2 x3) x4)) \<subseteq> states P mxs mxl
A total of 14 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x4_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x4_ \<le> mxs; length ?E2 + max_vars x4_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x4_) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 x1_\<bullet>\<^sub>sx2_{x3_} := x4_ :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (x1_\<bullet>\<^sub>sx2_{x3_} := x4_) \<le> mxs
length E + max_vars (x1_\<bullet>\<^sub>sx2_{x3_} := x4_) \<le> mxl

goal (1 subgoal):
 1. OK ` set (compT E A ST (x1_\<bullet>\<^sub>sx2_{x3_} := x4_)) \<subseteq> states P mxs mxl
[PROOF STEP]
by(auto simp:image_Un WT\<^sub>1_is_type[OF wf] after_in_states[OF wf])
[PROOF STATE]
proof (state)
this:
OK ` set (compT E A ST (x1_\<bullet>\<^sub>sx2_{x3_} := x4_)) \<subseteq> states P mxs mxl

goal (13 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 \<guillemotleft>x2\<guillemotright> x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxs; length E + max_vars (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1 \<guillemotleft>x2\<guillemotright> x3)) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 {x1:x2; x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack {x1:x2; x3} \<le> mxs; length E + max_vars {x1:x2; x3} \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST {x1:x2; x3}) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1;; x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1;; x2) \<le> mxs; length E + max_vars (x1;; x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1;; x2)) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 if (x1) x2 else x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (if (x1) x2 else x3) \<le> mxs; length E + max_vars (if (x1) x2 else x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (if (x1) x2 else x3)) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 while (x1) x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (while (x1) x2) \<le> mxs; length E + max_vars (while (x1) x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (while (x1) x2)) \<subseteq> states P mxs mxl
 8. \<And>x E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x \<le> mxs; length E + max_vars x \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 throw x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (throw x) \<le> mxs; length E + max_vars (throw x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (throw x)) \<subseteq> states P mxs mxl
 9. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 try x1 catch(x2 x3) x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (try x1 catch(x2 x3) x4) \<le> mxs; length E + max_vars (try x1 catch(x2 x3) x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (try x1 catch(x2 x3) x4)) \<subseteq> states P mxs mxl
 10. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
A total of 13 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (13 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 \<guillemotleft>x2\<guillemotright> x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxs; length E + max_vars (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1 \<guillemotleft>x2\<guillemotright> x3)) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 {x1:x2; x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack {x1:x2; x3} \<le> mxs; length E + max_vars {x1:x2; x3} \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST {x1:x2; x3}) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1;; x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1;; x2) \<le> mxs; length E + max_vars (x1;; x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1;; x2)) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 if (x1) x2 else x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (if (x1) x2 else x3) \<le> mxs; length E + max_vars (if (x1) x2 else x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (if (x1) x2 else x3)) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 while (x1) x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (while (x1) x2) \<le> mxs; length E + max_vars (while (x1) x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (while (x1) x2)) \<subseteq> states P mxs mxl
 8. \<And>x E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x \<le> mxs; length E + max_vars x \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 throw x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (throw x) \<le> mxs; length E + max_vars (throw x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (throw x)) \<subseteq> states P mxs mxl
 9. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 try x1 catch(x2 x3) x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (try x1 catch(x2 x3) x4) \<le> mxs; length E + max_vars (try x1 catch(x2 x3) x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (try x1 catch(x2 x3) x4)) \<subseteq> states P mxs mxl
 10. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
A total of 13 subgoals...
[PROOF STEP]
case Seq
[PROOF STATE]
proof (state)
this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x1_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x1_ \<le> mxs; length ?E2 + max_vars x1_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x1_) \<subseteq> states P mxs mxl
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x2_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x2_ \<le> mxs; length ?E2 + max_vars x2_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x2_) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 x1_;; x2_ :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (x1_;; x2_) \<le> mxs
length E + max_vars (x1_;; x2_) \<le> mxl

goal (13 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 \<guillemotleft>x2\<guillemotright> x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxs; length E + max_vars (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1 \<guillemotleft>x2\<guillemotright> x3)) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 {x1:x2; x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack {x1:x2; x3} \<le> mxs; length E + max_vars {x1:x2; x3} \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST {x1:x2; x3}) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1;; x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1;; x2) \<le> mxs; length E + max_vars (x1;; x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1;; x2)) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 if (x1) x2 else x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (if (x1) x2 else x3) \<le> mxs; length E + max_vars (if (x1) x2 else x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (if (x1) x2 else x3)) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 while (x1) x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (while (x1) x2) \<le> mxs; length E + max_vars (while (x1) x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (while (x1) x2)) \<subseteq> states P mxs mxl
 8. \<And>x E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x \<le> mxs; length E + max_vars x \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 throw x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (throw x) \<le> mxs; length E + max_vars (throw x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (throw x)) \<subseteq> states P mxs mxl
 9. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 try x1 catch(x2 x3) x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (try x1 catch(x2 x3) x4) \<le> mxs; length E + max_vars (try x1 catch(x2 x3) x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (try x1 catch(x2 x3) x4)) \<subseteq> states P mxs mxl
 10. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
A total of 13 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x1_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x1_ \<le> mxs; length ?E2 + max_vars x1_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x1_) \<subseteq> states P mxs mxl
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x2_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x2_ \<le> mxs; length ?E2 + max_vars x2_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x2_) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 x1_;; x2_ :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (x1_;; x2_) \<le> mxs
length E + max_vars (x1_;; x2_) \<le> mxl

goal (1 subgoal):
 1. OK ` set (compT E A ST (x1_;; x2_)) \<subseteq> states P mxs mxl
[PROOF STEP]
by(auto simp:image_Un after_in_states[OF wf])
[PROOF STATE]
proof (state)
this:
OK ` set (compT E A ST (x1_;; x2_)) \<subseteq> states P mxs mxl

goal (12 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 \<guillemotleft>x2\<guillemotright> x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxs; length E + max_vars (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1 \<guillemotleft>x2\<guillemotright> x3)) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 {x1:x2; x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack {x1:x2; x3} \<le> mxs; length E + max_vars {x1:x2; x3} \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST {x1:x2; x3}) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 if (x1) x2 else x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (if (x1) x2 else x3) \<le> mxs; length E + max_vars (if (x1) x2 else x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (if (x1) x2 else x3)) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 while (x1) x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (while (x1) x2) \<le> mxs; length E + max_vars (while (x1) x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (while (x1) x2)) \<subseteq> states P mxs mxl
 7. \<And>x E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x \<le> mxs; length E + max_vars x \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 throw x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (throw x) \<le> mxs; length E + max_vars (throw x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (throw x)) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 try x1 catch(x2 x3) x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (try x1 catch(x2 x3) x4) \<le> mxs; length E + max_vars (try x1 catch(x2 x3) x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (try x1 catch(x2 x3) x4)) \<subseteq> states P mxs mxl
 9. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
 10. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
A total of 12 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (12 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 \<guillemotleft>x2\<guillemotright> x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxs; length E + max_vars (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1 \<guillemotleft>x2\<guillemotright> x3)) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 {x1:x2; x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack {x1:x2; x3} \<le> mxs; length E + max_vars {x1:x2; x3} \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST {x1:x2; x3}) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 if (x1) x2 else x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (if (x1) x2 else x3) \<le> mxs; length E + max_vars (if (x1) x2 else x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (if (x1) x2 else x3)) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 while (x1) x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (while (x1) x2) \<le> mxs; length E + max_vars (while (x1) x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (while (x1) x2)) \<subseteq> states P mxs mxl
 7. \<And>x E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x \<le> mxs; length E + max_vars x \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 throw x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (throw x) \<le> mxs; length E + max_vars (throw x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (throw x)) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 try x1 catch(x2 x3) x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (try x1 catch(x2 x3) x4) \<le> mxs; length E + max_vars (try x1 catch(x2 x3) x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (try x1 catch(x2 x3) x4)) \<subseteq> states P mxs mxl
 9. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
 10. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
A total of 12 subgoals...
[PROOF STEP]
case BinOp
[PROOF STATE]
proof (state)
this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x1_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x1_ \<le> mxs; length ?E2 + max_vars x1_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x1_) \<subseteq> states P mxs mxl
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x3_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x3_ \<le> mxs; length ?E2 + max_vars x3_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x3_) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 x1_ \<guillemotleft>x2_\<guillemotright> x3_ :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (x1_ \<guillemotleft>x2_\<guillemotright> x3_) \<le> mxs
length E + max_vars (x1_ \<guillemotleft>x2_\<guillemotright> x3_) \<le> mxl

goal (12 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 \<guillemotleft>x2\<guillemotright> x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxs; length E + max_vars (x1 \<guillemotleft>x2\<guillemotright> x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1 \<guillemotleft>x2\<guillemotright> x3)) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 {x1:x2; x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack {x1:x2; x3} \<le> mxs; length E + max_vars {x1:x2; x3} \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST {x1:x2; x3}) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 if (x1) x2 else x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (if (x1) x2 else x3) \<le> mxs; length E + max_vars (if (x1) x2 else x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (if (x1) x2 else x3)) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 while (x1) x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (while (x1) x2) \<le> mxs; length E + max_vars (while (x1) x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (while (x1) x2)) \<subseteq> states P mxs mxl
 7. \<And>x E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x \<le> mxs; length E + max_vars x \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 throw x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (throw x) \<le> mxs; length E + max_vars (throw x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (throw x)) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 try x1 catch(x2 x3) x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (try x1 catch(x2 x3) x4) \<le> mxs; length E + max_vars (try x1 catch(x2 x3) x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (try x1 catch(x2 x3) x4)) \<subseteq> states P mxs mxl
 9. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
 10. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
A total of 12 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x1_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x1_ \<le> mxs; length ?E2 + max_vars x1_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x1_) \<subseteq> states P mxs mxl
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x3_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x3_ \<le> mxs; length ?E2 + max_vars x3_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x3_) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 x1_ \<guillemotleft>x2_\<guillemotright> x3_ :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (x1_ \<guillemotleft>x2_\<guillemotright> x3_) \<le> mxs
length E + max_vars (x1_ \<guillemotleft>x2_\<guillemotright> x3_) \<le> mxl

goal (1 subgoal):
 1. OK ` set (compT E A ST (x1_ \<guillemotleft>x2_\<guillemotright> x3_)) \<subseteq> states P mxs mxl
[PROOF STEP]
by(auto simp:image_Un WT\<^sub>1_is_type[OF wf] after_in_states[OF wf])
[PROOF STATE]
proof (state)
this:
OK ` set (compT E A ST (x1_ \<guillemotleft>x2_\<guillemotright> x3_)) \<subseteq> states P mxs mxl

goal (11 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 {x1:x2; x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack {x1:x2; x3} \<le> mxs; length E + max_vars {x1:x2; x3} \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST {x1:x2; x3}) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 if (x1) x2 else x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (if (x1) x2 else x3) \<le> mxs; length E + max_vars (if (x1) x2 else x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (if (x1) x2 else x3)) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 while (x1) x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (while (x1) x2) \<le> mxs; length E + max_vars (while (x1) x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (while (x1) x2)) \<subseteq> states P mxs mxl
 6. \<And>x E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x \<le> mxs; length E + max_vars x \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 throw x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (throw x) \<le> mxs; length E + max_vars (throw x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (throw x)) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 try x1 catch(x2 x3) x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (try x1 catch(x2 x3) x4) \<le> mxs; length E + max_vars (try x1 catch(x2 x3) x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (try x1 catch(x2 x3) x4)) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
 9. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
 10. \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 [] [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks [] \<le> mxs; length E + max_varss [] \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST []) \<subseteq> states P mxs mxl
A total of 11 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (11 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 {x1:x2; x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack {x1:x2; x3} \<le> mxs; length E + max_vars {x1:x2; x3} \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST {x1:x2; x3}) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 if (x1) x2 else x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (if (x1) x2 else x3) \<le> mxs; length E + max_vars (if (x1) x2 else x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (if (x1) x2 else x3)) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 while (x1) x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (while (x1) x2) \<le> mxs; length E + max_vars (while (x1) x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (while (x1) x2)) \<subseteq> states P mxs mxl
 6. \<And>x E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x \<le> mxs; length E + max_vars x \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 throw x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (throw x) \<le> mxs; length E + max_vars (throw x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (throw x)) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 try x1 catch(x2 x3) x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (try x1 catch(x2 x3) x4) \<le> mxs; length E + max_vars (try x1 catch(x2 x3) x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (try x1 catch(x2 x3) x4)) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
 9. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
 10. \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 [] [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks [] \<le> mxs; length E + max_varss [] \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST []) \<subseteq> states P mxs mxl
A total of 11 subgoals...
[PROOF STEP]
case Cond
[PROOF STATE]
proof (state)
this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x1_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x1_ \<le> mxs; length ?E2 + max_vars x1_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x1_) \<subseteq> states P mxs mxl
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x2_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x2_ \<le> mxs; length ?E2 + max_vars x2_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x2_) \<subseteq> states P mxs mxl
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x3_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x3_ \<le> mxs; length ?E2 + max_vars x3_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x3_) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 if (x1_) x2_ else x3_ :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (if (x1_) x2_ else x3_) \<le> mxs
length E + max_vars (if (x1_) x2_ else x3_) \<le> mxl

goal (11 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 {x1:x2; x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack {x1:x2; x3} \<le> mxs; length E + max_vars {x1:x2; x3} \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST {x1:x2; x3}) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 if (x1) x2 else x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (if (x1) x2 else x3) \<le> mxs; length E + max_vars (if (x1) x2 else x3) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (if (x1) x2 else x3)) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 while (x1) x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (while (x1) x2) \<le> mxs; length E + max_vars (while (x1) x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (while (x1) x2)) \<subseteq> states P mxs mxl
 6. \<And>x E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x \<le> mxs; length E + max_vars x \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 throw x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (throw x) \<le> mxs; length E + max_vars (throw x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (throw x)) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 try x1 catch(x2 x3) x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (try x1 catch(x2 x3) x4) \<le> mxs; length E + max_vars (try x1 catch(x2 x3) x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (try x1 catch(x2 x3) x4)) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
 9. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
 10. \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 [] [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks [] \<le> mxs; length E + max_varss [] \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST []) \<subseteq> states P mxs mxl
A total of 11 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x1_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x1_ \<le> mxs; length ?E2 + max_vars x1_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x1_) \<subseteq> states P mxs mxl
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x2_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x2_ \<le> mxs; length ?E2 + max_vars x2_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x2_) \<subseteq> states P mxs mxl
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x3_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x3_ \<le> mxs; length ?E2 + max_vars x3_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x3_) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 if (x1_) x2_ else x3_ :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (if (x1_) x2_ else x3_) \<le> mxs
length E + max_vars (if (x1_) x2_ else x3_) \<le> mxl

goal (1 subgoal):
 1. OK ` set (compT E A ST (if (x1_) x2_ else x3_)) \<subseteq> states P mxs mxl
[PROOF STEP]
by(force simp:image_Un WT\<^sub>1_is_type[OF wf] after_in_states[OF wf])
[PROOF STATE]
proof (state)
this:
OK ` set (compT E A ST (if (x1_) x2_ else x3_)) \<subseteq> states P mxs mxl

goal (10 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 {x1:x2; x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack {x1:x2; x3} \<le> mxs; length E + max_vars {x1:x2; x3} \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST {x1:x2; x3}) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 while (x1) x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (while (x1) x2) \<le> mxs; length E + max_vars (while (x1) x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (while (x1) x2)) \<subseteq> states P mxs mxl
 5. \<And>x E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x \<le> mxs; length E + max_vars x \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 throw x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (throw x) \<le> mxs; length E + max_vars (throw x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (throw x)) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 try x1 catch(x2 x3) x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (try x1 catch(x2 x3) x4) \<le> mxs; length E + max_vars (try x1 catch(x2 x3) x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (try x1 catch(x2 x3) x4)) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
 9. \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 [] [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks [] \<le> mxs; length E + max_varss [] \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST []) \<subseteq> states P mxs mxl
 10. \<And>x1 x2 E Ts A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x2 \<le> mxs; length E + max_varss x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 # x2 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks (x1 # x2) \<le> mxs; length E + max_varss (x1 # x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST (x1 # x2)) \<subseteq> states P mxs mxl
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (10 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 {x1:x2; x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack {x1:x2; x3} \<le> mxs; length E + max_vars {x1:x2; x3} \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST {x1:x2; x3}) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 while (x1) x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (while (x1) x2) \<le> mxs; length E + max_vars (while (x1) x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (while (x1) x2)) \<subseteq> states P mxs mxl
 5. \<And>x E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x \<le> mxs; length E + max_vars x \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 throw x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (throw x) \<le> mxs; length E + max_vars (throw x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (throw x)) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 try x1 catch(x2 x3) x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (try x1 catch(x2 x3) x4) \<le> mxs; length E + max_vars (try x1 catch(x2 x3) x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (try x1 catch(x2 x3) x4)) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
 9. \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 [] [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks [] \<le> mxs; length E + max_varss [] \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST []) \<subseteq> states P mxs mxl
 10. \<And>x1 x2 E Ts A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x2 \<le> mxs; length E + max_varss x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 # x2 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks (x1 # x2) \<le> mxs; length E + max_varss (x1 # x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST (x1 # x2)) \<subseteq> states P mxs mxl
[PROOF STEP]
case While
[PROOF STATE]
proof (state)
this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x1_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x1_ \<le> mxs; length ?E2 + max_vars x1_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x1_) \<subseteq> states P mxs mxl
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x2_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x2_ \<le> mxs; length ?E2 + max_vars x2_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x2_) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 while (x1_) x2_ :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (while (x1_) x2_) \<le> mxs
length E + max_vars (while (x1_) x2_) \<le> mxl

goal (10 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 {x1:x2; x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack {x1:x2; x3} \<le> mxs; length E + max_vars {x1:x2; x3} \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST {x1:x2; x3}) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 while (x1) x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (while (x1) x2) \<le> mxs; length E + max_vars (while (x1) x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (while (x1) x2)) \<subseteq> states P mxs mxl
 5. \<And>x E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x \<le> mxs; length E + max_vars x \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 throw x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (throw x) \<le> mxs; length E + max_vars (throw x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (throw x)) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 try x1 catch(x2 x3) x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (try x1 catch(x2 x3) x4) \<le> mxs; length E + max_vars (try x1 catch(x2 x3) x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (try x1 catch(x2 x3) x4)) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
 9. \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 [] [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks [] \<le> mxs; length E + max_varss [] \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST []) \<subseteq> states P mxs mxl
 10. \<And>x1 x2 E Ts A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x2 \<le> mxs; length E + max_varss x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 # x2 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks (x1 # x2) \<le> mxs; length E + max_varss (x1 # x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST (x1 # x2)) \<subseteq> states P mxs mxl
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x1_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x1_ \<le> mxs; length ?E2 + max_vars x1_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x1_) \<subseteq> states P mxs mxl
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x2_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x2_ \<le> mxs; length ?E2 + max_vars x2_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x2_) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 while (x1_) x2_ :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (while (x1_) x2_) \<le> mxs
length E + max_vars (while (x1_) x2_) \<le> mxl

goal (1 subgoal):
 1. OK ` set (compT E A ST (while (x1_) x2_)) \<subseteq> states P mxs mxl
[PROOF STEP]
by(auto simp:image_Un WT\<^sub>1_is_type[OF wf] after_in_states[OF wf])
[PROOF STATE]
proof (state)
this:
OK ` set (compT E A ST (while (x1_) x2_)) \<subseteq> states P mxs mxl

goal (9 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 {x1:x2; x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack {x1:x2; x3} \<le> mxs; length E + max_vars {x1:x2; x3} \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST {x1:x2; x3}) \<subseteq> states P mxs mxl
 4. \<And>x E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x \<le> mxs; length E + max_vars x \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 throw x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (throw x) \<le> mxs; length E + max_vars (throw x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (throw x)) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 try x1 catch(x2 x3) x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (try x1 catch(x2 x3) x4) \<le> mxs; length E + max_vars (try x1 catch(x2 x3) x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (try x1 catch(x2 x3) x4)) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
 8. \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 [] [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks [] \<le> mxs; length E + max_varss [] \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST []) \<subseteq> states P mxs mxl
 9. \<And>x1 x2 E Ts A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x2 \<le> mxs; length E + max_varss x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 # x2 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks (x1 # x2) \<le> mxs; length E + max_varss (x1 # x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST (x1 # x2)) \<subseteq> states P mxs mxl
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (9 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 {x1:x2; x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack {x1:x2; x3} \<le> mxs; length E + max_vars {x1:x2; x3} \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST {x1:x2; x3}) \<subseteq> states P mxs mxl
 4. \<And>x E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x \<le> mxs; length E + max_vars x \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 throw x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (throw x) \<le> mxs; length E + max_vars (throw x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (throw x)) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 try x1 catch(x2 x3) x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (try x1 catch(x2 x3) x4) \<le> mxs; length E + max_vars (try x1 catch(x2 x3) x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (try x1 catch(x2 x3) x4)) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
 8. \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 [] [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks [] \<le> mxs; length E + max_varss [] \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST []) \<subseteq> states P mxs mxl
 9. \<And>x1 x2 E Ts A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x2 \<le> mxs; length E + max_varss x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 # x2 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks (x1 # x2) \<le> mxs; length E + max_varss (x1 # x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST (x1 # x2)) \<subseteq> states P mxs mxl
[PROOF STEP]
case Block
[PROOF STATE]
proof (state)
this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x3_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x3_ \<le> mxs; length ?E2 + max_vars x3_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x3_) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 {x1_:x2_; x3_} :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack {x1_:x2_; x3_} \<le> mxs
length E + max_vars {x1_:x2_; x3_} \<le> mxl

goal (9 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x3 \<le> mxs; length E + max_vars x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 {x1:x2; x3} :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack {x1:x2; x3} \<le> mxs; length E + max_vars {x1:x2; x3} \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST {x1:x2; x3}) \<subseteq> states P mxs mxl
 4. \<And>x E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x \<le> mxs; length E + max_vars x \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 throw x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (throw x) \<le> mxs; length E + max_vars (throw x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (throw x)) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 try x1 catch(x2 x3) x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (try x1 catch(x2 x3) x4) \<le> mxs; length E + max_vars (try x1 catch(x2 x3) x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (try x1 catch(x2 x3) x4)) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
 8. \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 [] [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks [] \<le> mxs; length E + max_varss [] \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST []) \<subseteq> states P mxs mxl
 9. \<And>x1 x2 E Ts A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x2 \<le> mxs; length E + max_varss x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 # x2 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks (x1 # x2) \<le> mxs; length E + max_varss (x1 # x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST (x1 # x2)) \<subseteq> states P mxs mxl
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x3_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x3_ \<le> mxs; length ?E2 + max_vars x3_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x3_) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 {x1_:x2_; x3_} :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack {x1_:x2_; x3_} \<le> mxs
length E + max_vars {x1_:x2_; x3_} \<le> mxl

goal (1 subgoal):
 1. OK ` set (compT E A ST {x1_:x2_; x3_}) \<subseteq> states P mxs mxl
[PROOF STEP]
by(auto)
[PROOF STATE]
proof (state)
this:
OK ` set (compT E A ST {x1_:x2_; x3_}) \<subseteq> states P mxs mxl

goal (8 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 3. \<And>x E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x \<le> mxs; length E + max_vars x \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 throw x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (throw x) \<le> mxs; length E + max_vars (throw x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (throw x)) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 try x1 catch(x2 x3) x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (try x1 catch(x2 x3) x4) \<le> mxs; length E + max_vars (try x1 catch(x2 x3) x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (try x1 catch(x2 x3) x4)) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
 7. \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 [] [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks [] \<le> mxs; length E + max_varss [] \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST []) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 E Ts A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x2 \<le> mxs; length E + max_varss x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 # x2 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks (x1 # x2) \<le> mxs; length E + max_varss (x1 # x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST (x1 # x2)) \<subseteq> states P mxs mxl
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (8 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 3. \<And>x E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x \<le> mxs; length E + max_vars x \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 throw x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (throw x) \<le> mxs; length E + max_vars (throw x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (throw x)) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 try x1 catch(x2 x3) x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (try x1 catch(x2 x3) x4) \<le> mxs; length E + max_vars (try x1 catch(x2 x3) x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (try x1 catch(x2 x3) x4)) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
 7. \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 [] [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks [] \<le> mxs; length E + max_varss [] \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST []) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 E Ts A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x2 \<le> mxs; length E + max_varss x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 # x2 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks (x1 # x2) \<le> mxs; length E + max_varss (x1 # x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST (x1 # x2)) \<subseteq> states P mxs mxl
[PROOF STEP]
case (TryCatch e\<^sub>1 C i e\<^sub>2)
[PROOF STATE]
proof (state)
this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 e\<^sub>1 :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack e\<^sub>1 \<le> mxs; length ?E2 + max_vars e\<^sub>1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 e\<^sub>1) \<subseteq> states P mxs mxl
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 e\<^sub>2 :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack e\<^sub>2 \<le> mxs; length ?E2 + max_vars e\<^sub>2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 e\<^sub>2) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 try e\<^sub>1 catch(C i) e\<^sub>2 :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (try e\<^sub>1 catch(C i) e\<^sub>2) \<le> mxs
length E + max_vars (try e\<^sub>1 catch(C i) e\<^sub>2) \<le> mxl

goal (8 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 3. \<And>x E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x \<le> mxs; length E + max_vars x \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 throw x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (throw x) \<le> mxs; length E + max_vars (throw x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (throw x)) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 try x1 catch(x2 x3) x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (try x1 catch(x2 x3) x4) \<le> mxs; length E + max_vars (try x1 catch(x2 x3) x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (try x1 catch(x2 x3) x4)) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
 7. \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 [] [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks [] \<le> mxs; length E + max_varss [] \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST []) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 E Ts A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x2 \<le> mxs; length E + max_varss x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 # x2 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks (x1 # x2) \<le> mxs; length E + max_varss (x1 # x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST (x1 # x2)) \<subseteq> states P mxs mxl
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 e\<^sub>1 :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack e\<^sub>1 \<le> mxs; length ?E2 + max_vars e\<^sub>1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 e\<^sub>1) \<subseteq> states P mxs mxl
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 e\<^sub>2 :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack e\<^sub>2 \<le> mxs; length ?E2 + max_vars e\<^sub>2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 e\<^sub>2) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 try e\<^sub>1 catch(C i) e\<^sub>2 :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (try e\<^sub>1 catch(C i) e\<^sub>2) \<le> mxs
length E + max_vars (try e\<^sub>1 catch(C i) e\<^sub>2) \<le> mxl

goal (8 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 3. \<And>x E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x \<le> mxs; length E + max_vars x \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 throw x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (throw x) \<le> mxs; length E + max_vars (throw x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (throw x)) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 try x1 catch(x2 x3) x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (try x1 catch(x2 x3) x4) \<le> mxs; length E + max_vars (try x1 catch(x2 x3) x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (try x1 catch(x2 x3) x4)) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
 7. \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 [] [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks [] \<le> mxs; length E + max_varss [] \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST []) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 E Ts A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x2 \<le> mxs; length E + max_varss x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 # x2 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks (x1 # x2) \<le> mxs; length E + max_varss (x1 # x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST (x1 # x2)) \<subseteq> states P mxs mxl
[PROOF STEP]
have "size ST + 1 \<le> mxs"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. length ST + 1 \<le> mxs
[PROOF STEP]
using TryCatch.prems max_stack1[where e=e\<^sub>1]
[PROOF STATE]
proof (prove)
using this:
P,E \<turnstile>\<^sub>1 try e\<^sub>1 catch(C i) e\<^sub>2 :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (try e\<^sub>1 catch(C i) e\<^sub>2) \<le> mxs
length E + max_vars (try e\<^sub>1 catch(C i) e\<^sub>2) \<le> mxl
?P,?E \<turnstile>\<^sub>1 e\<^sub>1 :: ?T \<Longrightarrow> 1 \<le> max_stack e\<^sub>1

goal (1 subgoal):
 1. length ST + 1 \<le> mxs
[PROOF STEP]
by fastforce
[PROOF STATE]
proof (state)
this:
length ST + 1 \<le> mxs

goal (8 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 3. \<And>x E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x \<le> mxs; length E + max_vars x \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 throw x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (throw x) \<le> mxs; length E + max_vars (throw x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (throw x)) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 try x1 catch(x2 x3) x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (try x1 catch(x2 x3) x4) \<le> mxs; length E + max_vars (try x1 catch(x2 x3) x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (try x1 catch(x2 x3) x4)) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
 7. \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 [] [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks [] \<le> mxs; length E + max_varss [] \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST []) \<subseteq> states P mxs mxl
 8. \<And>x1 x2 E Ts A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x2 \<le> mxs; length E + max_varss x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 # x2 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks (x1 # x2) \<le> mxs; length E + max_varss (x1 # x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST (x1 # x2)) \<subseteq> states P mxs mxl
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 e\<^sub>1 :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack e\<^sub>1 \<le> mxs; length ?E2 + max_vars e\<^sub>1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 e\<^sub>1) \<subseteq> states P mxs mxl
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 e\<^sub>2 :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack e\<^sub>2 \<le> mxs; length ?E2 + max_vars e\<^sub>2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 e\<^sub>2) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 try e\<^sub>1 catch(C i) e\<^sub>2 :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (try e\<^sub>1 catch(C i) e\<^sub>2) \<le> mxs
length E + max_vars (try e\<^sub>1 catch(C i) e\<^sub>2) \<le> mxl
length ST + 1 \<le> mxs
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 e\<^sub>1 :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack e\<^sub>1 \<le> mxs; length ?E2 + max_vars e\<^sub>1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 e\<^sub>1) \<subseteq> states P mxs mxl
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 e\<^sub>2 :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack e\<^sub>2 \<le> mxs; length ?E2 + max_vars e\<^sub>2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 e\<^sub>2) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 try e\<^sub>1 catch(C i) e\<^sub>2 :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (try e\<^sub>1 catch(C i) e\<^sub>2) \<le> mxs
length E + max_vars (try e\<^sub>1 catch(C i) e\<^sub>2) \<le> mxl
length ST + 1 \<le> mxs

goal (1 subgoal):
 1. OK ` set (compT E A ST (try e\<^sub>1 catch(C i) e\<^sub>2)) \<subseteq> states P mxs mxl
[PROOF STEP]
by(auto simp:image_Un WT\<^sub>1_is_type[OF wf] after_in_states[OF wf]
                  is_class_type_aux)
[PROOF STATE]
proof (state)
this:
OK ` set (compT E A ST (try e\<^sub>1 catch(C i) e\<^sub>2)) \<subseteq> states P mxs mxl

goal (7 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 3. \<And>x E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x \<le> mxs; length E + max_vars x \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 throw x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (throw x) \<le> mxs; length E + max_vars (throw x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (throw x)) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
 6. \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 [] [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks [] \<le> mxs; length E + max_varss [] \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST []) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 E Ts A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x2 \<le> mxs; length E + max_varss x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 # x2 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks (x1 # x2) \<le> mxs; length E + max_varss (x1 # x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST (x1 # x2)) \<subseteq> states P mxs mxl
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (7 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 3. \<And>x E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x \<le> mxs; length E + max_vars x \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 throw x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (throw x) \<le> mxs; length E + max_vars (throw x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (throw x)) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
 6. \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 [] [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks [] \<le> mxs; length E + max_varss [] \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST []) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 E Ts A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x2 \<le> mxs; length E + max_varss x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 # x2 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks (x1 # x2) \<le> mxs; length E + max_varss (x1 # x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST (x1 # x2)) \<subseteq> states P mxs mxl
[PROOF STEP]
case Nil_exp
[PROOF STATE]
proof (state)
this:
P,E \<turnstile>\<^sub>1 [] [::] Ts
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stacks [] \<le> mxs
length E + max_varss [] \<le> mxl

goal (7 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 3. \<And>x E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x \<le> mxs; length E + max_vars x \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 throw x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (throw x) \<le> mxs; length E + max_vars (throw x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (throw x)) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
 6. \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 [] [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks [] \<le> mxs; length E + max_varss [] \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST []) \<subseteq> states P mxs mxl
 7. \<And>x1 x2 E Ts A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x2 \<le> mxs; length E + max_varss x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 # x2 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks (x1 # x2) \<le> mxs; length E + max_varss (x1 # x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST (x1 # x2)) \<subseteq> states P mxs mxl
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
P,E \<turnstile>\<^sub>1 [] [::] Ts
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stacks [] \<le> mxs
length E + max_varss [] \<le> mxl

goal (1 subgoal):
 1. OK ` set (compTs E A ST []) \<subseteq> states P mxs mxl
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
OK ` set (compTs E A ST []) \<subseteq> states P mxs mxl

goal (6 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 3. \<And>x E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x \<le> mxs; length E + max_vars x \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 throw x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (throw x) \<le> mxs; length E + max_vars (throw x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (throw x)) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 E Ts A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x2 \<le> mxs; length E + max_varss x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 # x2 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks (x1 # x2) \<le> mxs; length E + max_varss (x1 # x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST (x1 # x2)) \<subseteq> states P mxs mxl
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (6 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 3. \<And>x E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x \<le> mxs; length E + max_vars x \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 throw x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (throw x) \<le> mxs; length E + max_vars (throw x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (throw x)) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 E Ts A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x2 \<le> mxs; length E + max_varss x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 # x2 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks (x1 # x2) \<le> mxs; length E + max_varss (x1 # x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST (x1 # x2)) \<subseteq> states P mxs mxl
[PROOF STEP]
case Cons_exp
[PROOF STATE]
proof (state)
this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x1_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x1_ \<le> mxs; length ?E2 + max_vars x1_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x1_) \<subseteq> states P mxs mxl
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x2_ [::] ?Ts2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stacks x2_ \<le> mxs; length ?E2 + max_varss x2_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs ?E2 ?A2 ?ST2 x2_) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 x1_ # x2_ [::] Ts
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stacks (x1_ # x2_) \<le> mxs
length E + max_varss (x1_ # x2_) \<le> mxl

goal (6 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 3. \<And>x E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x \<le> mxs; length E + max_vars x \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 throw x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (throw x) \<le> mxs; length E + max_vars (throw x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (throw x)) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
 6. \<And>x1 x2 E Ts A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x2 \<le> mxs; length E + max_varss x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x2) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1 # x2 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks (x1 # x2) \<le> mxs; length E + max_varss (x1 # x2) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST (x1 # x2)) \<subseteq> states P mxs mxl
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x1_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x1_ \<le> mxs; length ?E2 + max_vars x1_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x1_) \<subseteq> states P mxs mxl
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x2_ [::] ?Ts2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stacks x2_ \<le> mxs; length ?E2 + max_varss x2_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs ?E2 ?A2 ?ST2 x2_) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 x1_ # x2_ [::] Ts
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stacks (x1_ # x2_) \<le> mxs
length E + max_varss (x1_ # x2_) \<le> mxl

goal (1 subgoal):
 1. OK ` set (compTs E A ST (x1_ # x2_)) \<subseteq> states P mxs mxl
[PROOF STEP]
by(auto simp:image_Un  WT\<^sub>1_is_type[OF wf] after_in_states[OF wf])
[PROOF STATE]
proof (state)
this:
OK ` set (compTs E A ST (x1_ # x2_)) \<subseteq> states P mxs mxl

goal (5 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 3. \<And>x E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x \<le> mxs; length E + max_vars x \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 throw x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (throw x) \<le> mxs; length E + max_vars (throw x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (throw x)) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (5 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 3. \<And>x E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x \<le> mxs; length E + max_vars x \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 throw x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (throw x) \<le> mxs; length E + max_vars (throw x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (throw x)) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
[PROOF STEP]
case throw
[PROOF STATE]
proof (state)
this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x_ \<le> mxs; length ?E2 + max_vars x_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x_) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 throw x_ :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (throw x_) \<le> mxs
length E + max_vars (throw x_) \<le> mxl

goal (5 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 3. \<And>x E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x \<le> mxs; length E + max_vars x \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 throw x :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (throw x) \<le> mxs; length E + max_vars (throw x) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (throw x)) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
 5. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x_ \<le> mxs; length ?E2 + max_vars x_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x_) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 throw x_ :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (throw x_) \<le> mxs
length E + max_vars (throw x_) \<le> mxl

goal (1 subgoal):
 1. OK ` set (compT E A ST (throw x_)) \<subseteq> states P mxs mxl
[PROOF STEP]
by(auto simp: WT\<^sub>1_is_type[OF wf] after_in_states[OF wf])
[PROOF STATE]
proof (state)
this:
OK ` set (compT E A ST (throw x_)) \<subseteq> states P mxs mxl

goal (4 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
[PROOF STEP]
case Call
[PROOF STATE]
proof (state)
this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x1_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x1_ \<le> mxs; length ?E2 + max_vars x1_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x1_) \<subseteq> states P mxs mxl
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x3_ [::] ?Ts2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stacks x3_ \<le> mxs; length ?E2 + max_varss x3_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs ?E2 ?A2 ?ST2 x3_) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 x1_\<bullet>x2_(x3_) :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (x1_\<bullet>x2_(x3_)) \<le> mxs
length E + max_vars (x1_\<bullet>x2_(x3_)) \<le> mxl

goal (4 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x1 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x1 \<le> mxs; length E + max_vars x1 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x1) \<subseteq> states P mxs mxl; \<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>x2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>x2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>x2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>x2(x3))) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
 4. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x1_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x1_ \<le> mxs; length ?E2 + max_vars x1_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x1_) \<subseteq> states P mxs mxl
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x3_ [::] ?Ts2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stacks x3_ \<le> mxs; length ?E2 + max_varss x3_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs ?E2 ?A2 ?ST2 x3_) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 x1_\<bullet>x2_(x3_) :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (x1_\<bullet>x2_(x3_)) \<le> mxs
length E + max_vars (x1_\<bullet>x2_(x3_)) \<le> mxl

goal (1 subgoal):
 1. OK ` set (compT E A ST (x1_\<bullet>x2_(x3_))) \<subseteq> states P mxs mxl
[PROOF STEP]
by(auto simp:image_Un WT\<^sub>1_is_type[OF wf] after_in_states[OF wf])
[PROOF STATE]
proof (state)
this:
OK ` set (compT E A ST (x1_\<bullet>x2_(x3_))) \<subseteq> states P mxs mxl

goal (3 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
[PROOF STEP]
case SCall
[PROOF STATE]
proof (state)
this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x3_ [::] ?Ts2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stacks x3_ \<le> mxs; length ?E2 + max_varss x3_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs ?E2 ?A2 ?ST2 x3_) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 x1_\<bullet>\<^sub>sx2_(x3_) :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (x1_\<bullet>\<^sub>sx2_(x3_)) \<le> mxs
length E + max_vars (x1_\<bullet>\<^sub>sx2_(x3_)) \<le> mxl

goal (3 subgoals):
 1. \<And>x1 x2 x3 E T A ST. \<lbrakk>\<And>E Ts A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x3 [::] Ts; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stacks x3 \<le> mxs; length E + max_varss x3 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs E A ST x3) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 x1\<bullet>\<^sub>sx2(x3) :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (x1\<bullet>\<^sub>sx2(x3)) \<le> mxs; length E + max_vars (x1\<bullet>\<^sub>sx2(x3)) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (x1\<bullet>\<^sub>sx2(x3))) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
 3. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x3_ [::] ?Ts2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stacks x3_ \<le> mxs; length ?E2 + max_varss x3_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compTs ?E2 ?A2 ?ST2 x3_) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 x1_\<bullet>\<^sub>sx2_(x3_) :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (x1_\<bullet>\<^sub>sx2_(x3_)) \<le> mxs
length E + max_vars (x1_\<bullet>\<^sub>sx2_(x3_)) \<le> mxl

goal (1 subgoal):
 1. OK ` set (compT E A ST (x1_\<bullet>\<^sub>sx2_(x3_))) \<subseteq> states P mxs mxl
[PROOF STEP]
by(auto simp:image_Un WT\<^sub>1_is_type[OF wf] after_in_states[OF wf])
[PROOF STATE]
proof (state)
this:
OK ` set (compT E A ST (x1_\<bullet>\<^sub>sx2_(x3_))) \<subseteq> states P mxs mxl

goal (2 subgoals):
 1. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
[PROOF STEP]
case INIT
[PROOF STATE]
proof (state)
this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x4_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x4_ \<le> mxs; length ?E2 + max_vars x4_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x4_) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 INIT x1_ (x2_,x3_) \<leftarrow> x4_ :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (INIT x1_ (x2_,x3_) \<leftarrow> x4_) \<le> mxs
length E + max_vars (INIT x1_ (x2_,x3_) \<leftarrow> x4_) \<le> mxl

goal (2 subgoals):
 1. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 INIT x1 (x2,x3) \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxs; length E + max_vars (INIT x1 (x2,x3) \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (INIT x1 (x2,x3) \<leftarrow> x4)) \<subseteq> states P mxs mxl
 2. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x4_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x4_ \<le> mxs; length ?E2 + max_vars x4_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x4_) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 INIT x1_ (x2_,x3_) \<leftarrow> x4_ :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (INIT x1_ (x2_,x3_) \<leftarrow> x4_) \<le> mxs
length E + max_vars (INIT x1_ (x2_,x3_) \<leftarrow> x4_) \<le> mxl

goal (1 subgoal):
 1. OK ` set (compT E A ST (INIT x1_ (x2_,x3_) \<leftarrow> x4_)) \<subseteq> states P mxs mxl
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
OK ` set (compT E A ST (INIT x1_ (x2_,x3_) \<leftarrow> x4_)) \<subseteq> states P mxs mxl

goal (1 subgoal):
 1. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
[PROOF STEP]
case RI
[PROOF STATE]
proof (state)
this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x2_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x2_ \<le> mxs; length ?E2 + max_vars x2_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x2_) \<subseteq> states P mxs mxl
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x4_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x4_ \<le> mxs; length ?E2 + max_vars x4_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x4_) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 RI (x1_,x2_) ; x3_ \<leftarrow> x4_ :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (RI (x1_,x2_) ; x3_ \<leftarrow> x4_) \<le> mxs
length E + max_vars (RI (x1_,x2_) ; x3_ \<leftarrow> x4_) \<le> mxl

goal (1 subgoal):
 1. \<And>x1 x2 x3 x4 E T A ST. \<lbrakk>\<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x2 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x2 \<le> mxs; length E + max_vars x2 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x2) \<subseteq> states P mxs mxl; \<And>E T A ST. \<lbrakk>P,E \<turnstile>\<^sub>1 x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack x4 \<le> mxs; length E + max_vars x4 \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST x4) \<subseteq> states P mxs mxl; P,E \<turnstile>\<^sub>1 RI (x1,x2) ; x3 \<leftarrow> x4 :: T; set E \<subseteq> types P; set ST \<subseteq> types P; length ST + max_stack (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxs; length E + max_vars (RI (x1,x2) ; x3 \<leftarrow> x4) \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT E A ST (RI (x1,x2) ; x3 \<leftarrow> x4)) \<subseteq> states P mxs mxl
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x2_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x2_ \<le> mxs; length ?E2 + max_vars x2_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x2_) \<subseteq> states P mxs mxl
\<lbrakk>P,?E2 \<turnstile>\<^sub>1 x4_ :: ?T2; set ?E2 \<subseteq> types P; set ?ST2 \<subseteq> types P; length ?ST2 + max_stack x4_ \<le> mxs; length ?E2 + max_vars x4_ \<le> mxl\<rbrakk> \<Longrightarrow> OK ` set (compT ?E2 ?A2 ?ST2 x4_) \<subseteq> states P mxs mxl
P,E \<turnstile>\<^sub>1 RI (x1_,x2_) ; x3_ \<leftarrow> x4_ :: T
set E \<subseteq> types P
set ST \<subseteq> types P
length ST + max_stack (RI (x1_,x2_) ; x3_ \<leftarrow> x4_) \<le> mxs
length E + max_vars (RI (x1_,x2_) ; x3_ \<leftarrow> x4_) \<le> mxl

goal (1 subgoal):
 1. OK ` set (compT E A ST (RI (x1_,x2_) ; x3_ \<leftarrow> x4_)) \<subseteq> states P mxs mxl
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
OK ` set (compT E A ST (RI (x1_,x2_) ; x3_ \<leftarrow> x4_)) \<subseteq> states P mxs mxl

goal:
No subgoals!
[PROOF STEP]
qed