induct: fixes x1 :: "step_input"   and x2 :: "jvm_prog"   and x3 :: "heap"   and x4 :: "val list"   and x5 :: "val list"   and x6 :: "char list"   and x7 :: "char list"   and x8 :: "nat"   and x9 :: "init_call_status"   and x10 :: "frame list"   and x11 :: "sheap"   and x12 :: "jvm_state"   and P :: "step_input \<Rightarrow> jvm_prog \<Rightarrow> heap \<Rightarrow> val list \<Rightarrow> val list \<Rightarrow> char list \<Rightarrow> char list \<Rightarrow> nat \<Rightarrow> init_call_status \<Rightarrow> frame list \<Rightarrow> sheap \<Rightarrow> jvm_state \<Rightarrow> bool" assumes "exec_step_ind x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12"   and "\<And>n Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. P (StepI (Load n)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (None, h, (loc ! n # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, ics) # frs, sh)"   and "\<And>n Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. P (StepI (Store n)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (None, h, (tl stk, loc[n := hd stk], C\<^sub>0, M\<^sub>0, Suc pc, ics) # frs, sh)"   and "\<And>v Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. P (StepI (Push v)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (None, h, (v # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, ics) # frs, sh)"   and "\<And>h C Pa stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. new_Addr h = None \<Longrightarrow> P (StepI (New C)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh (\<lfloor>addr_of_sys_xcpt OutOfMemory\<rfloor>, h, (stk, loc, C\<^sub>0, M\<^sub>0, pc, No_ics) # frs, sh)"   and "\<And>sh C obj h ics Pa stk loc C\<^sub>0 M\<^sub>0 pc frs. \<lbrakk>sh C = \<lfloor>(obj, Done)\<rfloor>; new_Addr h = None; \<forall>Cs. ics \<noteq> Called Cs\<rbrakk> \<Longrightarrow> P (StepI (New C)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (\<lfloor>addr_of_sys_xcpt OutOfMemory\<rfloor>, h, (stk, loc, C\<^sub>0, M\<^sub>0, pc, ics) # frs, sh)"   and "\<And>h a C Pa stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. new_Addr h = \<lfloor>a\<rfloor> \<Longrightarrow> P (StepI (New C)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh (None, h(a \<mapsto> blank Pa C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)"   and "\<And>sh C obj h a ics Pa stk loc C\<^sub>0 M\<^sub>0 pc frs. \<lbrakk>sh C = \<lfloor>(obj, Done)\<rfloor>; new_Addr h = \<lfloor>a\<rfloor>; \<forall>Cs. ics \<noteq> Called Cs\<rbrakk> \<Longrightarrow> P (StepI (New C)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (None, h(a \<mapsto> blank Pa C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, ics) # frs, sh)"   and "\<And>sh C ics Pa h stk loc C\<^sub>0 M\<^sub>0 pc frs. \<lbrakk>\<forall>obj. sh C \<noteq> \<lfloor>(obj, Done)\<rfloor>; \<forall>Cs. ics \<noteq> Called Cs\<rbrakk> \<Longrightarrow> P (StepI (New C)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (None, h, (stk, loc, C\<^sub>0, M\<^sub>0, pc, Calling C []) # frs, sh)"   and "\<And>stk F C Pa h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. hd stk = Null \<Longrightarrow> P (StepI (Getfield F C)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (\<lfloor>addr_of_sys_xcpt NullPointer\<rfloor>, h, (stk, loc, C\<^sub>0, M\<^sub>0, pc, ics) # frs, sh)"   and "\<And>v stk D fs h Pa F C loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>v = hd stk; (D, fs) = the (h (the_Addr v)); v \<noteq> Null; \<nexists>t b. Pa \<turnstile> D has F,b:t in C\<rbrakk> \<Longrightarrow> P (StepI (Getfield F C)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (\<lfloor>addr_of_sys_xcpt NoSuchFieldError\<rfloor>, h, (stk, loc, C\<^sub>0, M\<^sub>0, pc, ics) # frs, sh)"   and "\<And>v stk D fs h Pa F t C loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>v = hd stk; (D, fs) = the (h (the_Addr v)); v \<noteq> Null; Pa \<turnstile> D has F,Static:t in C\<rbrakk> \<Longrightarrow> P (StepI (Getfield F C)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (\<lfloor>addr_of_sys_xcpt IncompatibleClassChangeError\<rfloor>, h, (stk, loc, C\<^sub>0, M\<^sub>0, pc, ics) # frs, sh)"   and "\<And>v stk D fs h D' b t Pa C F loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>v = hd stk; (D, fs) = the (h (the_Addr v)); (D', b, t) = field Pa C F; v \<noteq> Null; Pa \<turnstile> D has F,NonStatic:t in C\<rbrakk> \<Longrightarrow> P (StepI (Getfield F C)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (None, h, (the (fs (F, C)) # tl stk, loc, C\<^sub>0, M\<^sub>0, pc + 1, ics) # frs, sh)"   and "\<And>Pa C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<nexists>t b. Pa \<turnstile> C has F,b:t in D \<Longrightarrow> P (StepI (Getstatic C F D)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (\<lfloor>addr_of_sys_xcpt NoSuchFieldError\<rfloor>, h, (stk, loc, C\<^sub>0, M\<^sub>0, pc, ics) # frs, sh)"   and "\<And>Pa C F t D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. Pa \<turnstile> C has F,NonStatic:t in D \<Longrightarrow> P (StepI (Getstatic C F D)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (\<lfloor>addr_of_sys_xcpt IncompatibleClassChangeError\<rfloor>, h, (stk, loc, C\<^sub>0, M\<^sub>0, pc, ics) # frs, sh)"   and "\<And>D' b t Pa D F C v sh h stk loc C\<^sub>0 M\<^sub>0 pc Cs frs. \<lbrakk>(D', b, t) = field Pa D F; Pa \<turnstile> C has F,Static:t in D; v = the (fst (the (sh D')) F)\<rbrakk> \<Longrightarrow> P (StepI (Getstatic C F D)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh (None, h, (v # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)"   and "\<And>D' b t Pa D F C ics sh sfs v h stk loc C\<^sub>0 M\<^sub>0 pc frs. \<lbrakk>(D', b, t) = field Pa D F; Pa \<turnstile> C has F,Static:t in D; \<forall>Cs. ics \<noteq> Called Cs; sh D' = \<lfloor>(sfs, Done)\<rfloor>; v = the (sfs F)\<rbrakk> \<Longrightarrow> P (StepI (Getstatic C F D)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (None, h, (v # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, ics) # frs, sh)"   and "\<And>D' b t Pa D F C sh ics h stk loc C\<^sub>0 M\<^sub>0 pc frs. \<lbrakk>(D', b, t) = field Pa D F; Pa \<turnstile> C has F,Static:t in D; \<forall>sfs. sh D' \<noteq> \<lfloor>(sfs, Done)\<rfloor>; \<forall>Cs. ics \<noteq> Called Cs\<rbrakk> \<Longrightarrow> P (StepI (Getstatic C F D)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (None, h, (stk, loc, C\<^sub>0, M\<^sub>0, pc, Calling D' []) # frs, sh)"   and "\<And>stk F C Pa h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. hd (tl stk) = Null \<Longrightarrow> P (StepI (Putfield F C)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (\<lfloor>addr_of_sys_xcpt NullPointer\<rfloor>, h, (stk, loc, C\<^sub>0, M\<^sub>0, pc, ics) # frs, sh)"   and "\<And>r stk a D fs h Pa F C loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>r = hd (tl stk); a = the_Addr r; (D, fs) = the (h a); r \<noteq> Null; \<nexists>t b. Pa \<turnstile> D has F,b:t in C\<rbrakk> \<Longrightarrow> P (StepI (Putfield F C)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (\<lfloor>addr_of_sys_xcpt NoSuchFieldError\<rfloor>, h, (stk, loc, C\<^sub>0, M\<^sub>0, pc, ics) # frs, sh)"   and "\<And>r stk a D fs h Pa F t C loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>r = hd (tl stk); a = the_Addr r; (D, fs) = the (h a); r \<noteq> Null; Pa \<turnstile> D has F,Static:t in C\<rbrakk> \<Longrightarrow> P (StepI (Putfield F C)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (\<lfloor>addr_of_sys_xcpt IncompatibleClassChangeError\<rfloor>, h, (stk, loc, C\<^sub>0, M\<^sub>0, pc, ics) # frs, sh)"   and "\<And>v stk r a D fs h D' b t Pa C F loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>v = hd stk; r = hd (tl stk); a = the_Addr r; (D, fs) = the (h a); (D', b, t) = field Pa C F; r \<noteq> Null; Pa \<turnstile> D has F,NonStatic:t in C\<rbrakk> \<Longrightarrow> P (StepI (Putfield F C)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (None, h(a \<mapsto> (D, fs((F, C) \<mapsto> v))), (tl (tl stk), loc, C\<^sub>0, M\<^sub>0, pc + 1, ics) # frs, sh)"   and "\<And>Pa C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<nexists>t b. Pa \<turnstile> C has F,b:t in D \<Longrightarrow> P (StepI (Putstatic C F D)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (\<lfloor>addr_of_sys_xcpt NoSuchFieldError\<rfloor>, h, (stk, loc, C\<^sub>0, M\<^sub>0, pc, ics) # frs, sh)"   and "\<And>Pa C F t D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. Pa \<turnstile> C has F,NonStatic:t in D \<Longrightarrow> P (StepI (Putstatic C F D)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (\<lfloor>addr_of_sys_xcpt IncompatibleClassChangeError\<rfloor>, h, (stk, loc, C\<^sub>0, M\<^sub>0, pc, ics) # frs, sh)"   and "\<And>D' b t Pa D F C sh sfs i h stk loc C\<^sub>0 M\<^sub>0 pc Cs frs. \<lbrakk>(D', b, t) = field Pa D F; Pa \<turnstile> C has F,Static:t in D; the (sh D') = (sfs, i)\<rbrakk> \<Longrightarrow> P (StepI (Putstatic C F D)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh (None, h, (tl stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh(D' \<mapsto> (sfs(F \<mapsto> hd stk), i)))"   and "\<And>D' b t Pa D F C ics sh sfs h stk loc C\<^sub>0 M\<^sub>0 pc frs. \<lbrakk>(D', b, t) = field Pa D F; Pa \<turnstile> C has F,Static:t in D; \<forall>Cs. ics \<noteq> Called Cs; sh D' = \<lfloor>(sfs, Done)\<rfloor>\<rbrakk> \<Longrightarrow> P (StepI (Putstatic C F D)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (None, h, (tl stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, ics) # frs, sh(D' \<mapsto> (sfs(F \<mapsto> hd stk), Done)))"   and "\<And>D' b t Pa D F C sh ics h stk loc C\<^sub>0 M\<^sub>0 pc frs. \<lbrakk>(D', b, t) = field Pa D F; Pa \<turnstile> C has F,Static:t in D; \<forall>sfs. sh D' \<noteq> \<lfloor>(sfs, Done)\<rfloor>; \<forall>Cs. ics \<noteq> Called Cs\<rbrakk> \<Longrightarrow> P (StepI (Putstatic C F D)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (None, h, (stk, loc, C\<^sub>0, M\<^sub>0, pc, Calling D' []) # frs, sh)"   and "\<And>Pa C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. cast_ok Pa C h (hd stk) \<Longrightarrow> P (StepI (Checkcast C)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (None, h, (stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, ics) # frs, sh)"   and "\<And>Pa C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<not> cast_ok Pa C h (hd stk) \<Longrightarrow> P (StepI (Checkcast C)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (\<lfloor>addr_of_sys_xcpt ClassCast\<rfloor>, h, (stk, loc, C\<^sub>0, M\<^sub>0, pc, ics) # frs, sh)"   and "\<And>stk n M Pa h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. stk ! n = Null \<Longrightarrow> P (StepI (Invoke M n)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (\<lfloor>addr_of_sys_xcpt NullPointer\<rfloor>, h, (stk, loc, C\<^sub>0, M\<^sub>0, pc, ics) # frs, sh)"   and "\<And>r stk n C h Pa M loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>r = stk ! n; C = cname_of h (the_Addr r); r \<noteq> Null; \<nexists>Ts T m D b. Pa \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D\<rbrakk> \<Longrightarrow> P (StepI (Invoke M n)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (\<lfloor>addr_of_sys_xcpt NoSuchMethodError\<rfloor>, h, (stk, loc, C\<^sub>0, M\<^sub>0, pc, ics) # frs, sh)"   and "\<And>r stk n C h D b Ts T mxs mxl\<^sub>0 ins xt Pa M m loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>r = stk ! n; C = cname_of h (the_Addr r); (D, b, Ts, T, mxs, mxl\<^sub>0, ins, xt) = method Pa C M; r \<noteq> Null; Pa \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D\<rbrakk> \<Longrightarrow> P (StepI (Invoke M n)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (\<lfloor>addr_of_sys_xcpt IncompatibleClassChangeError\<rfloor>, h, (stk, loc, C\<^sub>0, M\<^sub>0, pc, ics) # frs, sh)"   and "\<And>ps n stk r C h D b Ts T mxs mxl\<^sub>0 ins xt Pa M m f' loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>ps = take n stk; r = stk ! n; C = cname_of h (the_Addr r); (D, b, Ts, T, mxs, mxl\<^sub>0, ins, xt) = method Pa C M; r \<noteq> Null; Pa \<turnstile> C sees M, NonStatic :  Ts\<rightarrow>T = m in D; f' = ([], [r] @ rev ps @ replicate mxl\<^sub>0 undefined, D, M, 0, No_ics)\<rbrakk> \<Longrightarrow> P (StepI (Invoke M n)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (None, h, f' # (stk, loc, C\<^sub>0, M\<^sub>0, pc, ics) # frs, sh)"   and "\<And>D b Ts T mxs mxl\<^sub>0 ins xt Pa C M n h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>(D, b, Ts, T, mxs, mxl\<^sub>0, ins, xt) = method Pa C M; \<nexists>Ts T m D b. Pa \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D\<rbrakk> \<Longrightarrow> P (StepI (Invokestatic C M n)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (\<lfloor>addr_of_sys_xcpt NoSuchMethodError\<rfloor>, h, (stk, loc, C\<^sub>0, M\<^sub>0, pc, ics) # frs, sh)"   and "\<And>D b Ts T mxs mxl\<^sub>0 ins xt Pa C M m n h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>(D, b, Ts, T, mxs, mxl\<^sub>0, ins, xt) = method Pa C M; Pa \<turnstile> C sees M, NonStatic :  Ts\<rightarrow>T = m in D\<rbrakk> \<Longrightarrow> P (StepI (Invokestatic C M n)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (\<lfloor>addr_of_sys_xcpt IncompatibleClassChangeError\<rfloor>, h, (stk, loc, C\<^sub>0, M\<^sub>0, pc, ics) # frs, sh)"   and "\<And>ps n stk D b Ts T mxs mxl\<^sub>0 ins xt Pa C M m f' h loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>ps = take n stk; (D, b, Ts, T, mxs, mxl\<^sub>0, ins, xt) = method Pa C M; Pa \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D; f' = ([], rev ps @ replicate mxl\<^sub>0 undefined, D, M, 0, No_ics)\<rbrakk> \<Longrightarrow> P (StepI (Invokestatic C M n)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh (None, h, f' # (stk, loc, C\<^sub>0, M\<^sub>0, pc, No_ics) # frs, sh)"   and "\<And>ps n stk D b Ts T mxs mxl\<^sub>0 ins xt Pa C M m ics sh sfs f' h loc C\<^sub>0 M\<^sub>0 pc frs. \<lbrakk>ps = take n stk; (D, b, Ts, T, mxs, mxl\<^sub>0, ins, xt) = method Pa C M; Pa \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D; \<forall>Cs. ics \<noteq> Called Cs; sh D = \<lfloor>(sfs, Done)\<rfloor>; f' = ([], rev ps @ replicate mxl\<^sub>0 undefined, D, M, 0, No_ics)\<rbrakk> \<Longrightarrow> P (StepI (Invokestatic C M n)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (None, h, f' # (stk, loc, C\<^sub>0, M\<^sub>0, pc, ics) # frs, sh)"   and "\<And>D b Ts T mxs mxl\<^sub>0 ins xt Pa C M m sh ics n h stk loc C\<^sub>0 M\<^sub>0 pc frs. \<lbrakk>(D, b, Ts, T, mxs, mxl\<^sub>0, ins, xt) = method Pa C M; Pa \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D; \<forall>sfs. sh D \<noteq> \<lfloor>(sfs, Done)\<rfloor>; \<forall>Cs. ics \<noteq> Called Cs\<rbrakk> \<Longrightarrow> P (StepI (Invokestatic C M n)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (None, h, (stk, loc, C\<^sub>0, M\<^sub>0, pc, Calling D []) # frs, sh)"   and "\<And>Pa h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. P (StepI Return) Pa h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 clinit pc ics [] sh (None, h, [], sh(C\<^sub>0 \<mapsto> (fst (the (sh C\<^sub>0)), Done)))"   and "\<And>M\<^sub>0 Pa h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. M\<^sub>0 \<noteq> clinit \<Longrightarrow> P (StepI Return) Pa h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 M\<^sub>0 pc ics [] sh (None, h, [], sh)"   and "\<And>D b Ts T m Pa C\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics' frs' sh. (D, b, Ts, T, m) = method Pa C\<^sub>0 clinit \<Longrightarrow> P (StepI Return) Pa h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 clinit pc ics ((stk', loc', C', m', pc', ics') # frs') sh (None, h, (stk', loc', C', m', pc', ics') # frs', sh(C\<^sub>0 \<mapsto> (fst (the (sh C\<^sub>0)), Done)))"   and "\<And>D Ts T m Pa C\<^sub>0 M\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics' frs' sh. \<lbrakk>(D, NonStatic, Ts, T, m) = method Pa C\<^sub>0 M\<^sub>0; M\<^sub>0 \<noteq> clinit\<rbrakk> \<Longrightarrow> P (StepI Return) Pa h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 M\<^sub>0 pc ics ((stk', loc', C', m', pc', ics') # frs') sh (None, h, (hd stk\<^sub>0 # drop (length Ts + 1) stk', loc', C', m', Suc pc', ics') # frs', sh)"   and "\<And>D Ts T m Pa C\<^sub>0 M\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics' frs' sh. \<lbrakk>(D, Static, Ts, T, m) = method Pa C\<^sub>0 M\<^sub>0; M\<^sub>0 \<noteq> clinit\<rbrakk> \<Longrightarrow> P (StepI Return) Pa h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 M\<^sub>0 pc ics ((stk', loc', C', m', pc', ics') # frs') sh (None, h, (hd stk\<^sub>0 # drop (length Ts) stk', loc', C', m', Suc pc', ics') # frs', sh)"   and "\<And>Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. P (StepI Pop) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (None, h, (tl stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, ics) # frs, sh)"   and "\<And>Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. P (StepI IAdd) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (None, h, (Intg (the_Intg (hd (tl stk)) + the_Intg (hd stk)) # tl (tl stk), loc, C\<^sub>0, M\<^sub>0, Suc pc, ics) # frs, sh)"   and "\<And>stk i Pa h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. hd stk = Bool False \<Longrightarrow> P (StepI (IfFalse i)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (None, h, (tl stk, loc, C\<^sub>0, M\<^sub>0, nat (int pc + i), ics) # frs, sh)"   and "\<And>stk i Pa h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. hd stk \<noteq> Bool False \<Longrightarrow> P (StepI (IfFalse i)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (None, h, (tl stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, ics) # frs, sh)"   and "\<And>Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. P (StepI CmpEq) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (None, h, (Bool (hd (tl stk) = hd stk) # tl (tl stk), loc, C\<^sub>0, M\<^sub>0, Suc pc, ics) # frs, sh)"   and "\<And>i Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. P (StepI (Goto i)) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (None, h, (stk, loc, C\<^sub>0, M\<^sub>0, nat (int pc + i), ics) # frs, sh)"   and "\<And>stk Pa h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. hd stk \<noteq> Null \<Longrightarrow> P (StepI Throw) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (\<lfloor>the_Addr (hd stk)\<rfloor>, h, (stk, loc, C\<^sub>0, M\<^sub>0, pc, ics) # frs, sh)"   and "\<And>stk Pa h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. hd stk = Null \<Longrightarrow> P (StepI Throw) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (\<lfloor>addr_of_sys_xcpt NullPointer\<rfloor>, h, (stk, loc, C\<^sub>0, M\<^sub>0, pc, ics) # frs, sh)"   and "\<And>sh C Cs Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = None \<Longrightarrow> P (StepC C Cs) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (None, h, (stk, loc, C\<^sub>0, M\<^sub>0, pc, Calling C Cs) # frs, sh(C \<mapsto> (sblank Pa C, Prepared)))"   and "\<And>sh C sfs Cs Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Done)\<rfloor> \<Longrightarrow> P (StepC C Cs) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (None, h, (stk, loc, C\<^sub>0, M\<^sub>0, pc, Called Cs) # frs, sh)"   and "\<And>sh C sfs Cs Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Processing)\<rfloor> \<Longrightarrow> P (StepC C Cs) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (None, h, (stk, loc, C\<^sub>0, M\<^sub>0, pc, Called Cs) # frs, sh)"   and "\<And>sh C sfs Cs Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Error)\<rfloor> \<Longrightarrow> P (StepC C Cs) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (None, h, (stk, loc, C\<^sub>0, M\<^sub>0, pc, Throwing Cs (addr_of_sys_xcpt NoClassDefFoundError)) # frs, sh)"   and "\<And>sh C sfs sh' Cs Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Prepared)\<rfloor>; sh' = sh(C \<mapsto> (fst (the (sh C)), Processing)); C = Object\<rbrakk> \<Longrightarrow> P (StepC C Cs) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (None, h, (stk, loc, C\<^sub>0, M\<^sub>0, pc, Called (C # Cs)) # frs, sh')"   and "\<And>sh C sfs sh' D Pa Cs h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Prepared)\<rfloor>; sh' = sh(C \<mapsto> (fst (the (sh C)), Processing)); C \<noteq> Object; D = fst (the (class Pa C))\<rbrakk> \<Longrightarrow> P (StepC C Cs) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (None, h, (stk, loc, C\<^sub>0, M\<^sub>0, pc, Calling D (C # Cs)) # frs, sh')"   and "\<And>C Cs Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. P (StepC2 C Cs) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (None, h, create_init_frame Pa C # (stk, loc, C\<^sub>0, M\<^sub>0, pc, Called Cs) # frs, sh)"   and "\<And>C Cs a Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. P (StepT (C # Cs) a) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (None, h, (stk, loc, C\<^sub>0, M\<^sub>0, pc, Throwing Cs a) # frs, sh(C \<mapsto> (fst (the (sh C)), Error)))"   and "\<And>a Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. P (StepT [] a) Pa h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh (\<lfloor>a\<rfloor>, h, (stk, loc, C\<^sub>0, M\<^sub>0, pc, No_ics) # frs, sh)" shows "P x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12"