[STATEMENT]
lemma exec_step_ind_imp_exec_step:
assumes esi: "exec_step_ind si P h stk loc C M pc ics frs sh (xp', h', frs', sh')"
  and si: "exec_step_input P C M pc ics = si"
shows "exec_step P h stk loc C M pc ics frs sh = (xp', h', frs', sh')"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. exec_step P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. exec_step P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
[PROOF STEP]
have StepI:
   "\<And>P C M pc Cs i . exec_step_input P C M pc (Called Cs) = StepI i
           \<Longrightarrow> instrs_of P C M ! pc = i \<and> Cs = []"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>P C M pc Cs i. exec_step_input P C M pc (Called Cs) = StepI i \<Longrightarrow> instrs_of P C M ! pc = i \<and> Cs = []
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>P C M pc Cs i. exec_step_input P C M pc (Called Cs) = StepI i \<Longrightarrow> instrs_of P C M ! pc = i \<and> Cs = []
[PROOF STEP]
fix P C M pc Cs i
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>P C M pc Cs i. exec_step_input P C M pc (Called Cs) = StepI i \<Longrightarrow> instrs_of P C M ! pc = i \<and> Cs = []
[PROOF STEP]
show "exec_step_input P C M pc (Called Cs) = StepI i
           \<Longrightarrow> instrs_of P C M ! pc = i \<and> Cs = []"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. exec_step_input P C M pc (Called Cs) = StepI i \<Longrightarrow> instrs_of P C M ! pc = i \<and> Cs = []
[PROOF STEP]
by(cases Cs; simp)
[PROOF STATE]
proof (state)
this:
exec_step_input P C M pc (Called Cs) = StepI i \<Longrightarrow> instrs_of P C M ! pc = i \<and> Cs = []

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
exec_step_input ?P ?C ?M ?pc (Called ?Cs) = StepI ?i \<Longrightarrow> instrs_of ?P ?C ?M ! ?pc = ?i \<and> ?Cs = []

goal (1 subgoal):
 1. exec_step P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
[PROOF STEP]
have StepC:
   "\<And>P C M pc ics C' Cs. exec_step_input P C M pc ics = StepC C' Cs \<Longrightarrow> ics = Calling C' Cs"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>P C M pc ics C' Cs. exec_step_input P C M pc ics = StepC C' Cs \<Longrightarrow> ics = Calling C' Cs
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
exec_step_input ?P ?C ?M ?pc ?ics = StepC ?C' ?Cs \<Longrightarrow> ?ics = Calling ?C' ?Cs

goal (1 subgoal):
 1. exec_step P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
[PROOF STEP]
have StepT:
   "\<And>P C M pc ics Cs a. exec_step_input P C M pc ics = StepT Cs a \<Longrightarrow> ics = Throwing Cs a"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>P C M pc ics Cs a. exec_step_input P C M pc ics = StepT Cs a \<Longrightarrow> ics = Throwing Cs a
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
exec_step_input ?P ?C ?M ?pc ?ics = StepT ?Cs ?a \<Longrightarrow> ?ics = Throwing ?Cs ?a

goal (1 subgoal):
 1. exec_step P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. exec_step P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
[PROOF STEP]
using assms
[PROOF STATE]
proof (prove)
using this:
exec_step_ind si P h stk loc C M pc ics frs sh (xp', h', frs', sh')
exec_step_input P C M pc ics = si

goal (1 subgoal):
 1. exec_step P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
[PROOF STEP]
proof(induct rule: exec_step_ind.induct)
[PROOF STATE]
proof (state)
goal (59 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>sh C obj h ics P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 7. \<And>sh C obj h a ics P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, ics) # frs, sh)
 8. \<And>sh C ics P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>v stk D fs h P 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. P \<turnstile> D has F,b:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 59 subgoals...
[PROOF STEP]
case (exec_step_ind_NewOOM_Done sh C obj h ics P stk loc C\<^sub>0 M\<^sub>0 pc frs)
[PROOF STATE]
proof (state)
this:
sh C = \<lfloor>(obj, Done)\<rfloor>
new_Addr h = None
\<forall>Cs. ics \<noteq> Called Cs
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (New C)

goal (59 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>sh C obj h ics P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 7. \<And>sh C obj h a ics P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, ics) # frs, sh)
 8. \<And>sh C ics P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>v stk D fs h P 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. P \<turnstile> D has F,b:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 59 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
sh C = \<lfloor>(obj, Done)\<rfloor>
new_Addr h = None
\<forall>Cs. ics \<noteq> Called Cs
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (New C)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
sh C = \<lfloor>(obj, Done)\<rfloor>
new_Addr h = None
\<forall>Cs. ics \<noteq> Called Cs
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (New C)

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases ics, auto)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (58 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>sh C obj h a ics P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, ics) # frs, sh)
 7. \<And>sh C ics P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>v stk D fs h P 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. P \<turnstile> D has F,b:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>v stk D fs h P 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; P \<turnstile> D has F,Static:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 58 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (58 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>sh C obj h a ics P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, ics) # frs, sh)
 7. \<And>sh C ics P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>v stk D fs h P 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. P \<turnstile> D has F,b:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>v stk D fs h P 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; P \<turnstile> D has F,Static:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 58 subgoals...
[PROOF STEP]
case (exec_step_ind_New_Done sh C obj h a ics P stk loc C\<^sub>0 M\<^sub>0 pc frs)
[PROOF STATE]
proof (state)
this:
sh C = \<lfloor>(obj, Done)\<rfloor>
new_Addr h = \<lfloor>a\<rfloor>
\<forall>Cs. ics \<noteq> Called Cs
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (New C)

goal (58 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>sh C obj h a ics P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, ics) # frs, sh)
 7. \<And>sh C ics P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>v stk D fs h P 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. P \<turnstile> D has F,b:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>v stk D fs h P 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; P \<turnstile> D has F,Static:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 58 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
sh C = \<lfloor>(obj, Done)\<rfloor>
new_Addr h = \<lfloor>a\<rfloor>
\<forall>Cs. ics \<noteq> Called Cs
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (New C)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
sh C = \<lfloor>(obj, Done)\<rfloor>
new_Addr h = \<lfloor>a\<rfloor>
\<forall>Cs. ics \<noteq> Called Cs
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (New C)

goal (1 subgoal):
 1. exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, ics) # frs, sh)
[PROOF STEP]
by(cases ics, auto)
[PROOF STATE]
proof (state)
this:
exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, ics) # frs, sh)

goal (57 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>sh C ics P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>v stk D fs h P 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. P \<turnstile> D has F,b:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>v stk D fs h P 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; P \<turnstile> D has F,Static:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>v stk D fs h D' b t P 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 P C F; v \<noteq> Null; P \<turnstile> D has F,NonStatic:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 57 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (57 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>sh C ics P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>v stk D fs h P 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. P \<turnstile> D has F,b:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>v stk D fs h P 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; P \<turnstile> D has F,Static:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>v stk D fs h D' b t P 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 P C F; v \<noteq> Null; P \<turnstile> D has F,NonStatic:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 57 subgoals...
[PROOF STEP]
case (exec_step_ind_New_Init sh C ics P h stk loc C\<^sub>0 M\<^sub>0 pc frs)
[PROOF STATE]
proof (state)
this:
\<forall>obj. sh C \<noteq> \<lfloor>(obj, Done)\<rfloor>
\<forall>Cs. ics \<noteq> Called Cs
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (New C)

goal (57 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>sh C ics P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>v stk D fs h P 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. P \<turnstile> D has F,b:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>v stk D fs h P 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; P \<turnstile> D has F,Static:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>v stk D fs h D' b t P 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 P C F; v \<noteq> Null; P \<turnstile> D has F,NonStatic:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 57 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<forall>obj. sh C \<noteq> \<lfloor>(obj, Done)\<rfloor>
\<forall>Cs. ics \<noteq> Called Cs
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (New C)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
\<forall>obj. sh C \<noteq> \<lfloor>(obj, Done)\<rfloor>
\<forall>Cs. ics \<noteq> Called Cs
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (New C)

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases ics, auto split: init_state.splits)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (56 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>v stk D fs h P 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. P \<turnstile> D has F,b:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>v stk D fs h P 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; P \<turnstile> D has F,Static:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>v stk D fs h D' b t P 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 P C F; v \<noteq> Null; P \<turnstile> D has F,NonStatic:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 56 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (56 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>v stk D fs h P 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. P \<turnstile> D has F,b:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>v stk D fs h P 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; P \<turnstile> D has F,Static:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>v stk D fs h D' b t P 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 P C F; v \<noteq> Null; P \<turnstile> D has F,NonStatic:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 56 subgoals...
[PROOF STEP]
case (exec_step_ind_Getfield_NoField v stk D fs h P F C loc C\<^sub>0 M\<^sub>0 pc ics frs sh)
[PROOF STATE]
proof (state)
this:
v = hd stk
(D, fs) = the (h (the_Addr v))
v \<noteq> Null
\<nexists>t b. P \<turnstile> D has F,b:t in C
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)

goal (56 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>v stk D fs h P 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. P \<turnstile> D has F,b:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>v stk D fs h P 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; P \<turnstile> D has F,Static:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>v stk D fs h D' b t P 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 P C F; v \<noteq> Null; P \<turnstile> D has F,NonStatic:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 56 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
v = hd stk
(D, fs) = the (h (the_Addr v))
v \<noteq> Null
\<nexists>t b. P \<turnstile> D has F,b:t in C
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
v = hd stk
(D, fs) = the (h (the_Addr v))
v \<noteq> Null
\<nexists>t b. P \<turnstile> D has F,b:t in C
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases "the (h (the_Addr (hd stk)))", cases ics, auto dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (55 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>v stk D fs h P 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; P \<turnstile> D has F,Static:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>v stk D fs h D' b t P 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 P C F; v \<noteq> Null; P \<turnstile> D has F,NonStatic:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C F t D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>P \<turnstile> C has F,NonStatic:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 55 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (55 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>v stk D fs h P 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; P \<turnstile> D has F,Static:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>v stk D fs h D' b t P 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 P C F; v \<noteq> Null; P \<turnstile> D has F,NonStatic:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C F t D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>P \<turnstile> C has F,NonStatic:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 55 subgoals...
[PROOF STEP]
case (exec_step_ind_Getfield_Static v stk D fs h P F t C loc C\<^sub>0 M\<^sub>0 pc ics frs sh)
[PROOF STATE]
proof (state)
this:
v = hd stk
(D, fs) = the (h (the_Addr v))
v \<noteq> Null
P \<turnstile> D has F,Static:t in C
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)

goal (55 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>v stk D fs h P 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; P \<turnstile> D has F,Static:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>v stk D fs h D' b t P 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 P C F; v \<noteq> Null; P \<turnstile> D has F,NonStatic:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C F t D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>P \<turnstile> C has F,NonStatic:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 55 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
v = hd stk
(D, fs) = the (h (the_Addr v))
v \<noteq> Null
P \<turnstile> D has F,Static:t in C
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
v = hd stk
(D, fs) = the (h (the_Addr v))
v \<noteq> Null
P \<turnstile> D has F,Static:t in C
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases "the (h (the_Addr (hd stk)))", cases "fst(snd(field P C F))",
        cases ics, auto simp: split_beta dest: has_field_sees[OF has_field_idemp] dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (54 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>v stk D fs h D' b t P 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 P C F; v \<noteq> Null; P \<turnstile> D has F,NonStatic:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F t D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>P \<turnstile> C has F,NonStatic:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>D' b t P D F C v sh h stk loc C\<^sub>0 M\<^sub>0 pc Cs frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; v = the (fst (the (sh D')) F); exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 54 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (54 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>v stk D fs h D' b t P 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 P C F; v \<noteq> Null; P \<turnstile> D has F,NonStatic:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F t D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>P \<turnstile> C has F,NonStatic:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>D' b t P D F C v sh h stk loc C\<^sub>0 M\<^sub>0 pc Cs frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; v = the (fst (the (sh D')) F); exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 54 subgoals...
[PROOF STEP]
case (exec_step_ind_Getfield v stk D fs h D' b t P C F loc C\<^sub>0 M\<^sub>0 pc ics frs sh)
[PROOF STATE]
proof (state)
this:
v = hd stk
(D, fs) = the (h (the_Addr v))
(D', b, t) = field P C F
v \<noteq> Null
P \<turnstile> D has F,NonStatic:t in C
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)

goal (54 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>v stk D fs h D' b t P 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 P C F; v \<noteq> Null; P \<turnstile> D has F,NonStatic:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F t D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>P \<turnstile> C has F,NonStatic:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>D' b t P D F C v sh h stk loc C\<^sub>0 M\<^sub>0 pc Cs frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; v = the (fst (the (sh D')) F); exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 54 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
v = hd stk
(D, fs) = the (h (the_Addr v))
(D', b, t) = field P C F
v \<noteq> Null
P \<turnstile> D has F,NonStatic:t in C
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
v = hd stk
(D, fs) = the (h (the_Addr v))
(D', b, t) = field P C F
v \<noteq> Null
P \<turnstile> D has F,NonStatic:t in C
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases "the (h (the_Addr (hd stk)))",
        cases ics; fastforce simp: split_beta dest: has_field_sees[OF has_field_idemp] dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (53 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>P C F t D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>P \<turnstile> C has F,NonStatic:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>D' b t P D F C v sh h stk loc C\<^sub>0 M\<^sub>0 pc Cs frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; v = the (fst (the (sh D')) F); exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>D' b t P D F C ics sh sfs v h stk loc C\<^sub>0 M\<^sub>0 pc frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; \<forall>Cs. ics \<noteq> Called Cs; sh D' = \<lfloor>(sfs, Done)\<rfloor>; v = the (sfs F); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 53 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (53 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>P C F t D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>P \<turnstile> C has F,NonStatic:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>D' b t P D F C v sh h stk loc C\<^sub>0 M\<^sub>0 pc Cs frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; v = the (fst (the (sh D')) F); exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>D' b t P D F C ics sh sfs v h stk loc C\<^sub>0 M\<^sub>0 pc frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; \<forall>Cs. ics \<noteq> Called Cs; sh D' = \<lfloor>(sfs, Done)\<rfloor>; v = the (sfs F); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 53 subgoals...
[PROOF STEP]
case (exec_step_ind_Getstatic_NonStatic P C F t D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh)
[PROOF STATE]
proof (state)
this:
P \<turnstile> C has F,NonStatic:t in D
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)

goal (53 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>P C F t D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>P \<turnstile> C has F,NonStatic:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>D' b t P D F C v sh h stk loc C\<^sub>0 M\<^sub>0 pc Cs frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; v = the (fst (the (sh D')) F); exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>D' b t P D F C ics sh sfs v h stk loc C\<^sub>0 M\<^sub>0 pc frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; \<forall>Cs. ics \<noteq> Called Cs; sh D' = \<lfloor>(sfs, Done)\<rfloor>; v = the (sfs F); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 53 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
P \<turnstile> C has F,NonStatic:t in D
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
P \<turnstile> C has F,NonStatic:t in D
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases ics; fastforce simp: split_beta split: staticb.splits
                             dest: has_field_sees[OF has_field_idemp] dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (52 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>D' b t P D F C v sh h stk loc C\<^sub>0 M\<^sub>0 pc Cs frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; v = the (fst (the (sh D')) F); exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>D' b t P D F C ics sh sfs v h stk loc C\<^sub>0 M\<^sub>0 pc frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; \<forall>Cs. ics \<noteq> Called Cs; sh D' = \<lfloor>(sfs, Done)\<rfloor>; v = the (sfs F); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>D' b t P D F C sh ics h stk loc C\<^sub>0 M\<^sub>0 pc frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; \<forall>sfs. sh D' \<noteq> \<lfloor>(sfs, Done)\<rfloor>; \<forall>Cs. ics \<noteq> Called Cs; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 52 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (52 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>D' b t P D F C v sh h stk loc C\<^sub>0 M\<^sub>0 pc Cs frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; v = the (fst (the (sh D')) F); exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>D' b t P D F C ics sh sfs v h stk loc C\<^sub>0 M\<^sub>0 pc frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; \<forall>Cs. ics \<noteq> Called Cs; sh D' = \<lfloor>(sfs, Done)\<rfloor>; v = the (sfs F); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>D' b t P D F C sh ics h stk loc C\<^sub>0 M\<^sub>0 pc frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; \<forall>sfs. sh D' \<noteq> \<lfloor>(sfs, Done)\<rfloor>; \<forall>Cs. ics \<noteq> Called Cs; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 52 subgoals...
[PROOF STEP]
case exec_step_ind_Getstatic_Called
[PROOF STATE]
proof (state)
this:
(D'_, b_, t_) = field P_ D_ F_
P_ \<turnstile> C_ has F_,Static:t_ in D_
v_ = the (fst (the (sh_ D'_)) F_)
exec_step_input P_ C\<^sub>0_ M\<^sub>0_ pc_ (Called Cs_) = StepI (Getstatic C_ F_ D_)

goal (52 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>D' b t P D F C v sh h stk loc C\<^sub>0 M\<^sub>0 pc Cs frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; v = the (fst (the (sh D')) F); exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>D' b t P D F C ics sh sfs v h stk loc C\<^sub>0 M\<^sub>0 pc frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; \<forall>Cs. ics \<noteq> Called Cs; sh D' = \<lfloor>(sfs, Done)\<rfloor>; v = the (sfs F); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>D' b t P D F C sh ics h stk loc C\<^sub>0 M\<^sub>0 pc frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; \<forall>sfs. sh D' \<noteq> \<lfloor>(sfs, Done)\<rfloor>; \<forall>Cs. ics \<noteq> Called Cs; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 52 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
(D'_, b_, t_) = field P_ D_ F_
P_ \<turnstile> C_ has F_,Static:t_ in D_
v_ = the (fst (the (sh_ D'_)) F_)
exec_step_input P_ C\<^sub>0_ M\<^sub>0_ pc_ (Called Cs_) = StepI (Getstatic C_ F_ D_)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
(D'_, b_, t_) = field P_ D_ F_
P_ \<turnstile> C_ has F_,Static:t_ in D_
v_ = the (fst (the (sh_ D'_)) F_)
exec_step_input P_ C\<^sub>0_ M\<^sub>0_ pc_ (Called Cs_) = StepI (Getstatic C_ F_ D_)

goal (1 subgoal):
 1. exec_step P_ 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_)
[PROOF STEP]
by(fastforce simp: split_beta split: staticb.splits dest!: StepI
                                 dest: has_field_sees[OF has_field_idemp])
[PROOF STATE]
proof (state)
this:
exec_step P_ 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_)

goal (51 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>D' b t P D F C ics sh sfs v h stk loc C\<^sub>0 M\<^sub>0 pc frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; \<forall>Cs. ics \<noteq> Called Cs; sh D' = \<lfloor>(sfs, Done)\<rfloor>; v = the (sfs F); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>D' b t P D F C sh ics h stk loc C\<^sub>0 M\<^sub>0 pc frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; \<forall>sfs. sh D' \<noteq> \<lfloor>(sfs, Done)\<rfloor>; \<forall>Cs. ics \<noteq> Called Cs; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 51 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (51 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>D' b t P D F C ics sh sfs v h stk loc C\<^sub>0 M\<^sub>0 pc frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; \<forall>Cs. ics \<noteq> Called Cs; sh D' = \<lfloor>(sfs, Done)\<rfloor>; v = the (sfs F); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>D' b t P D F C sh ics h stk loc C\<^sub>0 M\<^sub>0 pc frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; \<forall>sfs. sh D' \<noteq> \<lfloor>(sfs, Done)\<rfloor>; \<forall>Cs. ics \<noteq> Called Cs; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 51 subgoals...
[PROOF STEP]
case (exec_step_ind_Getstatic_Done D' b t P D F C ics sh sfs v h stk loc C\<^sub>0 M\<^sub>0 pc frs)
[PROOF STATE]
proof (state)
this:
(D', b, t) = field P D F
P \<turnstile> C has F,Static:t in D
\<forall>Cs. ics \<noteq> Called Cs
sh D' = \<lfloor>(sfs, Done)\<rfloor>
v = the (sfs F)
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)

goal (51 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>D' b t P D F C ics sh sfs v h stk loc C\<^sub>0 M\<^sub>0 pc frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; \<forall>Cs. ics \<noteq> Called Cs; sh D' = \<lfloor>(sfs, Done)\<rfloor>; v = the (sfs F); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>D' b t P D F C sh ics h stk loc C\<^sub>0 M\<^sub>0 pc frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; \<forall>sfs. sh D' \<noteq> \<lfloor>(sfs, Done)\<rfloor>; \<forall>Cs. ics \<noteq> Called Cs; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 51 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
(D', b, t) = field P D F
P \<turnstile> C has F,Static:t in D
\<forall>Cs. ics \<noteq> Called Cs
sh D' = \<lfloor>(sfs, Done)\<rfloor>
v = the (sfs F)
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
(D', b, t) = field P D F
P \<turnstile> C has F,Static:t in D
\<forall>Cs. ics \<noteq> Called Cs
sh D' = \<lfloor>(sfs, Done)\<rfloor>
v = the (sfs F)
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases ics, auto simp: split_beta split: staticb.splits
                                       dest: has_field_sees[OF has_field_idemp])
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (50 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>D' b t P D F C sh ics h stk loc C\<^sub>0 M\<^sub>0 pc frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; \<forall>sfs. sh D' \<noteq> \<lfloor>(sfs, Done)\<rfloor>; \<forall>Cs. ics \<noteq> Called Cs; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>r stk a D fs h P 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. P \<turnstile> D has F,b:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 50 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (50 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>D' b t P D F C sh ics h stk loc C\<^sub>0 M\<^sub>0 pc frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; \<forall>sfs. sh D' \<noteq> \<lfloor>(sfs, Done)\<rfloor>; \<forall>Cs. ics \<noteq> Called Cs; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>r stk a D fs h P 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. P \<turnstile> D has F,b:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 50 subgoals...
[PROOF STEP]
case (exec_step_ind_Getstatic_Init D' b t P D F C sh ics h stk loc C\<^sub>0 M\<^sub>0 pc frs)
[PROOF STATE]
proof (state)
this:
(D', b, t) = field P D F
P \<turnstile> C has F,Static:t in D
\<forall>sfs. sh D' \<noteq> \<lfloor>(sfs, Done)\<rfloor>
\<forall>Cs. ics \<noteq> Called Cs
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)

goal (50 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>D' b t P D F C sh ics h stk loc C\<^sub>0 M\<^sub>0 pc frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; \<forall>sfs. sh D' \<noteq> \<lfloor>(sfs, Done)\<rfloor>; \<forall>Cs. ics \<noteq> Called Cs; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>r stk a D fs h P 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. P \<turnstile> D has F,b:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 50 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
(D', b, t) = field P D F
P \<turnstile> C has F,Static:t in D
\<forall>sfs. sh D' \<noteq> \<lfloor>(sfs, Done)\<rfloor>
\<forall>Cs. ics \<noteq> Called Cs
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
(D', b, t) = field P D F
P \<turnstile> C has F,Static:t in D
\<forall>sfs. sh D' \<noteq> \<lfloor>(sfs, Done)\<rfloor>
\<forall>Cs. ics \<noteq> Called Cs
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases ics, auto simp: split_beta split: init_state.splits staticb.splits
                          dest: has_field_sees[OF has_field_idemp])
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (49 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>r stk a D fs h P 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. P \<turnstile> D has F,b:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>r stk a D fs h P 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; P \<turnstile> D has F,Static:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 49 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (49 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>r stk a D fs h P 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. P \<turnstile> D has F,b:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>r stk a D fs h P 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; P \<turnstile> D has F,Static:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 49 subgoals...
[PROOF STEP]
case (exec_step_ind_Putfield_NoField r stk a D fs h P F C loc C\<^sub>0 M\<^sub>0 pc ics frs sh)
[PROOF STATE]
proof (state)
this:
r = hd (tl stk)
a = the_Addr r
(D, fs) = the (h a)
r \<noteq> Null
\<nexists>t b. P \<turnstile> D has F,b:t in C
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)

goal (49 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>r stk a D fs h P 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. P \<turnstile> D has F,b:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>r stk a D fs h P 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; P \<turnstile> D has F,Static:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 49 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
r = hd (tl stk)
a = the_Addr r
(D, fs) = the (h a)
r \<noteq> Null
\<nexists>t b. P \<turnstile> D has F,b:t in C
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
r = hd (tl stk)
a = the_Addr r
(D, fs) = the (h a)
r \<noteq> Null
\<nexists>t b. P \<turnstile> D has F,b:t in C
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases "the (h (the_Addr (hd(tl stk))))", cases ics, auto dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (48 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>r stk a D fs h P 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; P \<turnstile> D has F,Static:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>v stk r a D fs h D' b t P 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 P C F; r \<noteq> Null; P \<turnstile> D has F,NonStatic:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 48 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (48 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>r stk a D fs h P 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; P \<turnstile> D has F,Static:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>v stk r a D fs h D' b t P 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 P C F; r \<noteq> Null; P \<turnstile> D has F,NonStatic:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 48 subgoals...
[PROOF STEP]
case (exec_step_ind_Putfield_Static r stk a D fs h P F t C loc C\<^sub>0 M\<^sub>0 pc ics frs sh)
[PROOF STATE]
proof (state)
this:
r = hd (tl stk)
a = the_Addr r
(D, fs) = the (h a)
r \<noteq> Null
P \<turnstile> D has F,Static:t in C
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)

goal (48 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>r stk a D fs h P 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; P \<turnstile> D has F,Static:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>v stk r a D fs h D' b t P 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 P C F; r \<noteq> Null; P \<turnstile> D has F,NonStatic:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 48 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
r = hd (tl stk)
a = the_Addr r
(D, fs) = the (h a)
r \<noteq> Null
P \<turnstile> D has F,Static:t in C
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
r = hd (tl stk)
a = the_Addr r
(D, fs) = the (h a)
r \<noteq> Null
P \<turnstile> D has F,Static:t in C
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases "the (h (the_Addr (hd(tl stk))))", cases "fst(snd(field P C F))",
        cases ics, auto simp: split_beta dest: has_field_sees[OF has_field_idemp] dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (47 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>v stk r a D fs h D' b t P 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 P C F; r \<noteq> Null; P \<turnstile> D has F,NonStatic:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 47 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (47 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>v stk r a D fs h D' b t P 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 P C F; r \<noteq> Null; P \<turnstile> D has F,NonStatic:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 47 subgoals...
[PROOF STEP]
case (exec_step_ind_Putfield v stk r a D fs h D' b t P C F loc C\<^sub>0 M\<^sub>0 pc ics frs sh)
[PROOF STATE]
proof (state)
this:
v = hd stk
r = hd (tl stk)
a = the_Addr r
(D, fs) = the (h a)
(D', b, t) = field P C F
r \<noteq> Null
P \<turnstile> D has F,NonStatic:t in C
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)

goal (47 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>v stk r a D fs h D' b t P 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 P C F; r \<noteq> Null; P \<turnstile> D has F,NonStatic:t in C; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 47 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
v = hd stk
r = hd (tl stk)
a = the_Addr r
(D, fs) = the (h a)
(D', b, t) = field P C F
r \<noteq> Null
P \<turnstile> D has F,NonStatic:t in C
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
v = hd stk
r = hd (tl stk)
a = the_Addr r
(D, fs) = the (h a)
(D', b, t) = field P C F
r \<noteq> Null
P \<turnstile> D has F,NonStatic:t in C
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases "the (h (the_Addr (hd(tl stk))))",
        cases ics; fastforce simp: split_beta dest: has_field_sees[OF has_field_idemp] dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (46 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C F t D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>P \<turnstile> C has F,NonStatic:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 46 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (46 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C F t D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>P \<turnstile> C has F,NonStatic:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 46 subgoals...
[PROOF STEP]
case (exec_step_ind_Putstatic_NonStatic P C F t D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh)
[PROOF STATE]
proof (state)
this:
P \<turnstile> C has F,NonStatic:t in D
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)

goal (46 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C F t D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>P \<turnstile> C has F,NonStatic:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 46 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
P \<turnstile> C has F,NonStatic:t in D
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
P \<turnstile> C has F,NonStatic:t in D
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases ics; fastforce simp: split_beta split: staticb.splits
                             dest: has_field_sees[OF has_field_idemp] dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (45 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>D' b t P D F C sh sfs i h stk loc C\<^sub>0 M\<^sub>0 pc Cs frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; the (sh D') = (sfs, i); exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)))
A total of 45 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (45 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>D' b t P D F C sh sfs i h stk loc C\<^sub>0 M\<^sub>0 pc Cs frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; the (sh D') = (sfs, i); exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)))
A total of 45 subgoals...
[PROOF STEP]
case exec_step_ind_Putstatic_Called
[PROOF STATE]
proof (state)
this:
(D'_, b_, t_) = field P_ D_ F_
P_ \<turnstile> C_ has F_,Static:t_ in D_
the (sh_ D'_) = (sfs_, i_)
exec_step_input P_ C\<^sub>0_ M\<^sub>0_ pc_ (Called Cs_) = StepI (Putstatic C_ F_ D_)

goal (45 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>D' b t P D F C sh sfs i h stk loc C\<^sub>0 M\<^sub>0 pc Cs frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; the (sh D') = (sfs, i); exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)))
A total of 45 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
(D'_, b_, t_) = field P_ D_ F_
P_ \<turnstile> C_ has F_,Static:t_ in D_
the (sh_ D'_) = (sfs_, i_)
exec_step_input P_ C\<^sub>0_ M\<^sub>0_ pc_ (Called Cs_) = StepI (Putstatic C_ F_ D_)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
(D'_, b_, t_) = field P_ D_ F_
P_ \<turnstile> C_ has F_,Static:t_ in D_
the (sh_ D'_) = (sfs_, i_)
exec_step_input P_ C\<^sub>0_ M\<^sub>0_ pc_ (Called Cs_) = StepI (Putstatic C_ F_ D_)

goal (1 subgoal):
 1. exec_step P_ 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_)))
[PROOF STEP]
by(fastforce simp: split_beta split: staticb.splits dest!: StepI
                                 dest: has_field_sees[OF has_field_idemp])
[PROOF STATE]
proof (state)
this:
exec_step P_ 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_)))

goal (44 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>D' b t P D F C ics sh sfs h stk loc C\<^sub>0 M\<^sub>0 pc frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; \<forall>Cs. ics \<noteq> Called Cs; sh D' = \<lfloor>(sfs, Done)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)))
A total of 44 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (44 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>D' b t P D F C ics sh sfs h stk loc C\<^sub>0 M\<^sub>0 pc frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; \<forall>Cs. ics \<noteq> Called Cs; sh D' = \<lfloor>(sfs, Done)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)))
A total of 44 subgoals...
[PROOF STEP]
case (exec_step_ind_Putstatic_Done D' b t P D F C ics sh sfs h stk loc C\<^sub>0 M\<^sub>0 pc frs)
[PROOF STATE]
proof (state)
this:
(D', b, t) = field P D F
P \<turnstile> C has F,Static:t in D
\<forall>Cs. ics \<noteq> Called Cs
sh D' = \<lfloor>(sfs, Done)\<rfloor>
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)

goal (44 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>D' b t P D F C ics sh sfs h stk loc C\<^sub>0 M\<^sub>0 pc frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; \<forall>Cs. ics \<noteq> Called Cs; sh D' = \<lfloor>(sfs, Done)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)))
A total of 44 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
(D', b, t) = field P D F
P \<turnstile> C has F,Static:t in D
\<forall>Cs. ics \<noteq> Called Cs
sh D' = \<lfloor>(sfs, Done)\<rfloor>
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
(D', b, t) = field P D F
P \<turnstile> C has F,Static:t in D
\<forall>Cs. ics \<noteq> Called Cs
sh D' = \<lfloor>(sfs, Done)\<rfloor>
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)

goal (1 subgoal):
 1. exec_step P 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)))
[PROOF STEP]
by(cases ics, auto simp: split_beta split: staticb.splits
                                       dest: has_field_sees[OF has_field_idemp])
[PROOF STATE]
proof (state)
this:
exec_step P 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)))

goal (43 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>D' b t P D F C sh ics h stk loc C\<^sub>0 M\<^sub>0 pc frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; \<forall>sfs. sh D' \<noteq> \<lfloor>(sfs, Done)\<rfloor>; \<forall>Cs. ics \<noteq> Called Cs; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 43 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (43 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>D' b t P D F C sh ics h stk loc C\<^sub>0 M\<^sub>0 pc frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; \<forall>sfs. sh D' \<noteq> \<lfloor>(sfs, Done)\<rfloor>; \<forall>Cs. ics \<noteq> Called Cs; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 43 subgoals...
[PROOF STEP]
case (exec_step_ind_Putstatic_Init D' b t P D F C sh ics h stk loc C\<^sub>0 M\<^sub>0 pc frs)
[PROOF STATE]
proof (state)
this:
(D', b, t) = field P D F
P \<turnstile> C has F,Static:t in D
\<forall>sfs. sh D' \<noteq> \<lfloor>(sfs, Done)\<rfloor>
\<forall>Cs. ics \<noteq> Called Cs
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)

goal (43 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>D' b t P D F C sh ics h stk loc C\<^sub>0 M\<^sub>0 pc frs. \<lbrakk>(D', b, t) = field P D F; P \<turnstile> C has F,Static:t in D; \<forall>sfs. sh D' \<noteq> \<lfloor>(sfs, Done)\<rfloor>; \<forall>Cs. ics \<noteq> Called Cs; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 43 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
(D', b, t) = field P D F
P \<turnstile> C has F,Static:t in D
\<forall>sfs. sh D' \<noteq> \<lfloor>(sfs, Done)\<rfloor>
\<forall>Cs. ics \<noteq> Called Cs
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
(D', b, t) = field P D F
P \<turnstile> C has F,Static:t in D
\<forall>sfs. sh D' \<noteq> \<lfloor>(sfs, Done)\<rfloor>
\<forall>Cs. ics \<noteq> Called Cs
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases ics, auto simp: split_beta split: staticb.splits init_state.splits
                        dest: has_field_sees[OF has_field_idemp])
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (42 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 42 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (42 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 42 subgoals...
[PROOF STEP]
case (exec_step_ind_Invoke ps n stk r C h D b Ts T mxs mxl\<^sub>0 ins xt P M m f' loc C\<^sub>0 M\<^sub>0 pc ics frs sh)
[PROOF STATE]
proof (state)
this:
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 P C M
r \<noteq> Null
P \<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)
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)

goal (42 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 42 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
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 P C M
r \<noteq> Null
P \<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)
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
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 P C M
r \<noteq> Null
P \<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)
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases ics; fastforce dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (41 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 41 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (41 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 41 subgoals...
[PROOF STEP]
case (exec_step_ind_Invokestatic_Called ps n stk D b Ts T mxs mxl\<^sub>0 ins xt P C M m ics ics' sh)
[PROOF STATE]
proof (state)
this:
ps = take n stk
(D, b, Ts, T, mxs, mxl\<^sub>0, ins, xt) = method P C M
P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D
ics = ([], rev ps @ replicate mxl\<^sub>0 undefined, D, M, 0, No_ics)
exec_step_input P C\<^sub>0_ M\<^sub>0_ pc_ (Called Cs_) = StepI (Invokestatic C M n)

goal (41 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 41 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
ps = take n stk
(D, b, Ts, T, mxs, mxl\<^sub>0, ins, xt) = method P C M
P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D
ics = ([], rev ps @ replicate mxl\<^sub>0 undefined, D, M, 0, No_ics)
exec_step_input P C\<^sub>0_ M\<^sub>0_ pc_ (Called Cs_) = StepI (Invokestatic C M n)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
ps = take n stk
(D, b, Ts, T, mxs, mxl\<^sub>0, ins, xt) = method P C M
P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D
ics = ([], rev ps @ replicate mxl\<^sub>0 undefined, D, M, 0, No_ics)
exec_step_input P C\<^sub>0_ M\<^sub>0_ pc_ (Called Cs_) = StepI (Invokestatic C M n)

goal (1 subgoal):
 1. exec_step P ics' stk sh C\<^sub>0_ M\<^sub>0_ pc_ (Called Cs_) frs_ sh_ = (None, ics', ics # (stk, sh, C\<^sub>0_, M\<^sub>0_, pc_, No_ics) # frs_, sh_)
[PROOF STEP]
by(cases ics; fastforce dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P ics' stk sh C\<^sub>0_ M\<^sub>0_ pc_ (Called Cs_) frs_ sh_ = (None, ics', ics # (stk, sh, C\<^sub>0_, M\<^sub>0_, pc_, No_ics) # frs_, sh_)

goal (40 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 40 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (40 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 40 subgoals...
[PROOF STEP]
case (exec_step_ind_Invokestatic_Done ps n stk D b Ts T mxs mxl\<^sub>0 ins xt P C M m ics sh sfs f')
[PROOF STATE]
proof (state)
this:
ps = take n stk
(D, b, Ts, T, mxs, mxl\<^sub>0, ins, xt) = method P C M
P \<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)
exec_step_input P C\<^sub>0_ M\<^sub>0_ pc_ ics = StepI (Invokestatic C M n)

goal (40 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 40 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
ps = take n stk
(D, b, Ts, T, mxs, mxl\<^sub>0, ins, xt) = method P C M
P \<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)
exec_step_input P C\<^sub>0_ M\<^sub>0_ pc_ ics = StepI (Invokestatic C M n)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
ps = take n stk
(D, b, Ts, T, mxs, mxl\<^sub>0, ins, xt) = method P C M
P \<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)
exec_step_input P C\<^sub>0_ M\<^sub>0_ pc_ ics = StepI (Invokestatic C M n)

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases ics; fastforce)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (39 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 39 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (39 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 39 subgoals...
[PROOF STEP]
case (exec_step_ind_Invokestatic_Init D b Ts T mxs mxl\<^sub>0 ins xt P C M m sh ics n h stk loc C\<^sub>0 M\<^sub>0 pc frs)
[PROOF STATE]
proof (state)
this:
(D, b, Ts, T, mxs, mxl\<^sub>0, ins, xt) = method P C M
P \<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
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)

goal (39 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 39 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
(D, b, Ts, T, mxs, mxl\<^sub>0, ins, xt) = method P C M
P \<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
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
(D, b, Ts, T, mxs, mxl\<^sub>0, ins, xt) = method P C M
P \<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
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases ics; fastforce split: init_state.splits)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (38 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 38 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (38 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 38 subgoals...
[PROOF STEP]
case (exec_step_ind_Return_NonStatic D Ts T m P C\<^sub>0 M\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics' frs' sh)
[PROOF STATE]
proof (state)
this:
(D, NonStatic, Ts, T, m) = method P C\<^sub>0 M\<^sub>0
M\<^sub>0 \<noteq> clinit
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return

goal (38 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 38 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
(D, NonStatic, Ts, T, m) = method P C\<^sub>0 M\<^sub>0
M\<^sub>0 \<noteq> clinit
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
(D, NonStatic, Ts, T, m) = method P C\<^sub>0 M\<^sub>0
M\<^sub>0 \<noteq> clinit
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases "method P C\<^sub>0 M\<^sub>0", cases ics, auto dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (37 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 37 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (37 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 37 subgoals...
[PROOF STEP]
case (exec_step_ind_Return_Static D Ts T m P C\<^sub>0 M\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics' frs' sh)
[PROOF STATE]
proof (state)
this:
(D, Static, Ts, T, m) = method P C\<^sub>0 M\<^sub>0
M\<^sub>0 \<noteq> clinit
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return

goal (37 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 37 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
(D, Static, Ts, T, m) = method P C\<^sub>0 M\<^sub>0
M\<^sub>0 \<noteq> clinit
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
(D, Static, Ts, T, m) = method P C\<^sub>0 M\<^sub>0
M\<^sub>0 \<noteq> clinit
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases "method P C\<^sub>0 M\<^sub>0", cases ics, auto dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (36 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 36 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (36 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 36 subgoals...
[PROOF STEP]
case (exec_step_ind_IfFalse_nFalse stk i P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh)
[PROOF STATE]
proof (state)
this:
hd stk \<noteq> Bool False
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)

goal (36 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 36 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
hd stk \<noteq> Bool False
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
hd stk \<noteq> Bool False
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases "hd stk"; cases ics, auto dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (35 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 35 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (35 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 35 subgoals...
[PROOF STEP]
case (exec_step_ind_Throw_Null stk P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh)
[PROOF STATE]
proof (state)
this:
hd stk = Null
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw

goal (35 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 35 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
hd stk = Null
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
hd stk = Null
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases "hd stk"; cases ics, auto dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (34 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 34 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (34 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 34 subgoals...
[PROOF STEP]
case (exec_step_ind_Init C Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh)
[PROOF STATE]
proof (state)
this:
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC2 C Cs

goal (34 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 34 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC2 C Cs
[PROOF STEP]
have "ics = Called (C#Cs)"
[PROOF STATE]
proof (prove)
using this:
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC2 C Cs

goal (1 subgoal):
 1. ics = Called (C # Cs)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
ics = Called (C # Cs)

goal (34 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 34 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
ics = Called (C # Cs)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
ics = Called (C # Cs)

goal (1 subgoal):
 1. exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh = (None, h, create_init_frame P C # (stk, loc, C\<^sub>0, M\<^sub>0, pc, Called Cs) # frs, sh)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh = (None, h, create_init_frame P C # (stk, loc, C\<^sub>0, M\<^sub>0, pc, Called Cs) # frs, sh)

goal (33 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 33 subgoals...
[PROOF STEP]
(***)
[PROOF STATE]
proof (state)
this:
exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh = (None, h, create_init_frame P C # (stk, loc, C\<^sub>0, M\<^sub>0, pc, Called Cs) # frs, sh)

goal (33 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 33 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (33 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 33 subgoals...
[PROOF STEP]
case (exec_step_ind_Load n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh)
[PROOF STATE]
proof (state)
this:
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n)

goal (33 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n) \<Longrightarrow> exec_step P 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)
 2. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 3. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 4. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 33 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Load n)

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases ics, auto dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (32 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 2. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 3. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 5. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<not> cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 32 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (32 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 2. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 3. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 5. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<not> cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 32 subgoals...
[PROOF STEP]
case (exec_step_ind_Store n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh)
[PROOF STATE]
proof (state)
this:
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n)

goal (32 subgoals):
 1. \<And>n P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n) \<Longrightarrow> exec_step P 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)
 2. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 3. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 5. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<not> cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 32 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Store n)

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases ics, auto dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (31 subgoals):
 1. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 2. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 4. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<not> cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>stk n M P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>stk ! n = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 31 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (31 subgoals):
 1. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 2. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 4. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<not> cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>stk n M P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>stk ! n = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 31 subgoals...
[PROOF STEP]
case (exec_step_ind_Push v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh)
[PROOF STATE]
proof (state)
this:
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v)

goal (31 subgoals):
 1. \<And>v P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v) \<Longrightarrow> exec_step P 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)
 2. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 4. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<not> cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>stk n M P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>stk ! n = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 31 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Push v)

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases ics, auto dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (30 subgoals):
 1. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 3. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<not> cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>stk n M P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>stk ! n = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>r stk n C h P 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. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 30 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (30 subgoals):
 1. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 3. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<not> cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>stk n M P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>stk ! n = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>r stk n C h P 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. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 30 subgoals...
[PROOF STEP]
case (exec_step_ind_NewOOM_Called h C P stk loc C\<^sub>0 M\<^sub>0 pc frs sh ics')
[PROOF STATE]
proof (state)
this:
new_Addr h = None
exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called frs) = StepI (New C)

goal (30 subgoals):
 1. \<And>h C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 3. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<not> cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>stk n M P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>stk ! n = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>r stk n C h P 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. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 30 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
new_Addr h = None
exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called frs) = StepI (New C)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
new_Addr h = None
exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called frs) = StepI (New C)

goal (1 subgoal):
 1. exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called frs) sh ics' = (\<lfloor>addr_of_sys_xcpt OutOfMemory\<rfloor>, h, (stk, loc, C\<^sub>0, M\<^sub>0, pc, No_ics) # sh, ics')
[PROOF STEP]
by(auto dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called frs) sh ics' = (\<lfloor>addr_of_sys_xcpt OutOfMemory\<rfloor>, h, (stk, loc, C\<^sub>0, M\<^sub>0, pc, No_ics) # sh, ics')

goal (29 subgoals):
 1. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 2. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<not> cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk n M P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>stk ! n = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>r stk n C h P 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. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>r stk n C h D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; r \<noteq> Null; P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 29 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (29 subgoals):
 1. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 2. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<not> cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk n M P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>stk ! n = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>r stk n C h P 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. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>r stk n C h D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; r \<noteq> Null; P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 29 subgoals...
[PROOF STEP]
case (exec_step_ind_New_Called h a C P stk loc C\<^sub>0 M\<^sub>0 pc frs sh ics')
[PROOF STATE]
proof (state)
this:
new_Addr h = \<lfloor>a\<rfloor>
exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called frs) = StepI (New C)

goal (29 subgoals):
 1. \<And>h a C P stk loc C\<^sub>0 M\<^sub>0 pc Cs frs sh. \<lbrakk>new_Addr h = \<lfloor>a\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called Cs) = StepI (New C)\<rbrakk> \<Longrightarrow> exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called Cs) frs sh = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # frs, sh)
 2. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<not> cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>stk n M P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>stk ! n = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>r stk n C h P 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. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>r stk n C h D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; r \<noteq> Null; P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 29 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
new_Addr h = \<lfloor>a\<rfloor>
exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called frs) = StepI (New C)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
new_Addr h = \<lfloor>a\<rfloor>
exec_step_input P C\<^sub>0 M\<^sub>0 pc (Called frs) = StepI (New C)

goal (1 subgoal):
 1. exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called frs) sh ics' = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # sh, ics')
[PROOF STEP]
by(auto dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P h stk loc C\<^sub>0 M\<^sub>0 pc (Called frs) sh ics' = (None, h(a \<mapsto> blank P C), (Addr a # stk, loc, C\<^sub>0, M\<^sub>0, Suc pc, No_ics) # sh, ics')

goal (28 subgoals):
 1. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<not> cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>stk n M P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>stk ! n = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>r stk n C h P 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. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>r stk n C h D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; r \<noteq> Null; P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; \<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 28 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (28 subgoals):
 1. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<not> cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>stk n M P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>stk ! n = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>r stk n C h P 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. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>r stk n C h D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; r \<noteq> Null; P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; \<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 28 subgoals...
[PROOF STEP]
case (exec_step_ind_Getfield_Null stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh)
[PROOF STATE]
proof (state)
this:
hd stk = Null
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)

goal (28 subgoals):
 1. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<not> cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>stk n M P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>stk ! n = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>r stk n C h P 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. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>r stk n C h D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; r \<noteq> Null; P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; \<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 28 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
hd stk = Null
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
hd stk = Null
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getfield F C)

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases ics, auto dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (27 subgoals):
 1. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<not> cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>stk n M P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>stk ! n = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>r stk n C h P 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. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>r stk n C h D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; r \<noteq> Null; P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; \<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; P \<turnstile> C sees M, NonStatic :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 27 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (27 subgoals):
 1. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<not> cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>stk n M P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>stk ! n = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>r stk n C h P 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. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>r stk n C h D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; r \<noteq> Null; P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; \<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; P \<turnstile> C sees M, NonStatic :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 27 subgoals...
[PROOF STEP]
case (exec_step_ind_Getstatic_NoField P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh)
[PROOF STATE]
proof (state)
this:
\<nexists>t b. P \<turnstile> C has F,b:t in D
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)

goal (27 subgoals):
 1. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<not> cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>stk n M P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>stk ! n = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>r stk n C h P 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. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>r stk n C h D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; r \<noteq> Null; P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; \<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; P \<turnstile> C sees M, NonStatic :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 27 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<nexists>t b. P \<turnstile> C has F,b:t in D
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
\<nexists>t b. P \<turnstile> C has F,b:t in D
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Getstatic C F D)

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases ics, auto dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (26 subgoals):
 1. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<not> cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>stk n M P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>stk ! n = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>r stk n C h P 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. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>r stk n C h D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; r \<noteq> Null; P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; \<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; P \<turnstile> C sees M, NonStatic :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. exec_step_input P C\<^sub>0 clinit pc ics = StepI Return \<Longrightarrow> exec_step P 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)))
A total of 26 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (26 subgoals):
 1. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<not> cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>stk n M P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>stk ! n = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>r stk n C h P 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. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>r stk n C h D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; r \<noteq> Null; P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; \<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; P \<turnstile> C sees M, NonStatic :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. exec_step_input P C\<^sub>0 clinit pc ics = StepI Return \<Longrightarrow> exec_step P 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)))
A total of 26 subgoals...
[PROOF STEP]
case (exec_step_ind_Putfield_Null stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh)
[PROOF STATE]
proof (state)
this:
hd (tl stk) = Null
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)

goal (26 subgoals):
 1. \<And>stk F C P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd (tl stk) = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<not> cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>stk n M P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>stk ! n = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>r stk n C h P 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. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>r stk n C h D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; r \<noteq> Null; P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; \<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; P \<turnstile> C sees M, NonStatic :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. exec_step_input P C\<^sub>0 clinit pc ics = StepI Return \<Longrightarrow> exec_step P 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)))
A total of 26 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
hd (tl stk) = Null
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
hd (tl stk) = Null
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putfield F C)

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases ics, auto dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (25 subgoals):
 1. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<not> cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>stk n M P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>stk ! n = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>r stk n C h P 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. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>r stk n C h D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; r \<noteq> Null; P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; \<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; P \<turnstile> C sees M, NonStatic :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. exec_step_input P C\<^sub>0 clinit pc ics = StepI Return \<Longrightarrow> exec_step P 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)))
 10. \<And>M\<^sub>0 P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. \<lbrakk>M\<^sub>0 \<noteq> clinit; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 M\<^sub>0 pc ics [] sh = (None, h, [], sh)
A total of 25 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (25 subgoals):
 1. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<not> cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>stk n M P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>stk ! n = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>r stk n C h P 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. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>r stk n C h D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; r \<noteq> Null; P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; \<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; P \<turnstile> C sees M, NonStatic :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. exec_step_input P C\<^sub>0 clinit pc ics = StepI Return \<Longrightarrow> exec_step P 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)))
 10. \<And>M\<^sub>0 P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. \<lbrakk>M\<^sub>0 \<noteq> clinit; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 M\<^sub>0 pc ics [] sh = (None, h, [], sh)
A total of 25 subgoals...
[PROOF STEP]
case (exec_step_ind_Putstatic_NoField P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh)
[PROOF STATE]
proof (state)
this:
\<nexists>t b. P \<turnstile> C has F,b:t in D
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)

goal (25 subgoals):
 1. \<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<nexists>t b. P \<turnstile> C has F,b:t in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<not> cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>stk n M P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>stk ! n = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>r stk n C h P 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. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>r stk n C h D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; r \<noteq> Null; P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; \<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; P \<turnstile> C sees M, NonStatic :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. exec_step_input P C\<^sub>0 clinit pc ics = StepI Return \<Longrightarrow> exec_step P 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)))
 10. \<And>M\<^sub>0 P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. \<lbrakk>M\<^sub>0 \<noteq> clinit; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 M\<^sub>0 pc ics [] sh = (None, h, [], sh)
A total of 25 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<nexists>t b. P \<turnstile> C has F,b:t in D
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
\<nexists>t b. P \<turnstile> C has F,b:t in D
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Putstatic C F D)

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases ics, auto dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (24 subgoals):
 1. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<not> cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>stk n M P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>stk ! n = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>r stk n C h P 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. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>r stk n C h D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; r \<noteq> Null; P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; \<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; P \<turnstile> C sees M, NonStatic :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. exec_step_input P C\<^sub>0 clinit pc ics = StepI Return \<Longrightarrow> exec_step P 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)))
 9. \<And>M\<^sub>0 P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. \<lbrakk>M\<^sub>0 \<noteq> clinit; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 M\<^sub>0 pc ics [] sh = (None, h, [], sh)
 10. \<And>D b Ts T m P C\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics' frs' sh. \<lbrakk>(D, b, Ts, T, m) = method P C\<^sub>0 clinit; exec_step_input P C\<^sub>0 clinit pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P 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)))
A total of 24 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (24 subgoals):
 1. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<not> cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>stk n M P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>stk ! n = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>r stk n C h P 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. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>r stk n C h D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; r \<noteq> Null; P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; \<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; P \<turnstile> C sees M, NonStatic :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. exec_step_input P C\<^sub>0 clinit pc ics = StepI Return \<Longrightarrow> exec_step P 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)))
 9. \<And>M\<^sub>0 P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. \<lbrakk>M\<^sub>0 \<noteq> clinit; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 M\<^sub>0 pc ics [] sh = (None, h, [], sh)
 10. \<And>D b Ts T m P C\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics' frs' sh. \<lbrakk>(D, b, Ts, T, m) = method P C\<^sub>0 clinit; exec_step_input P C\<^sub>0 clinit pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P 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)))
A total of 24 subgoals...
[PROOF STEP]
case (exec_step_ind_Checkcast P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh)
[PROOF STATE]
proof (state)
this:
cast_ok P C h (hd stk)
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)

goal (24 subgoals):
 1. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<not> cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>stk n M P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>stk ! n = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>r stk n C h P 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. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>r stk n C h D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; r \<noteq> Null; P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; \<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; P \<turnstile> C sees M, NonStatic :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. exec_step_input P C\<^sub>0 clinit pc ics = StepI Return \<Longrightarrow> exec_step P 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)))
 9. \<And>M\<^sub>0 P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. \<lbrakk>M\<^sub>0 \<noteq> clinit; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 M\<^sub>0 pc ics [] sh = (None, h, [], sh)
 10. \<And>D b Ts T m P C\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics' frs' sh. \<lbrakk>(D, b, Ts, T, m) = method P C\<^sub>0 clinit; exec_step_input P C\<^sub>0 clinit pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P 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)))
A total of 24 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
cast_ok P C h (hd stk)
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
cast_ok P C h (hd stk)
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases ics, auto dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (23 subgoals):
 1. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<not> cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>stk n M P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>stk ! n = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>r stk n C h P 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. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>r stk n C h D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; r \<noteq> Null; P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; \<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; P \<turnstile> C sees M, NonStatic :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. exec_step_input P C\<^sub>0 clinit pc ics = StepI Return \<Longrightarrow> exec_step P 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)))
 8. \<And>M\<^sub>0 P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. \<lbrakk>M\<^sub>0 \<noteq> clinit; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 M\<^sub>0 pc ics [] sh = (None, h, [], sh)
 9. \<And>D b Ts T m P C\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics' frs' sh. \<lbrakk>(D, b, Ts, T, m) = method P C\<^sub>0 clinit; exec_step_input P C\<^sub>0 clinit pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P 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)))
 10. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Pop \<Longrightarrow> exec_step P 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)
A total of 23 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (23 subgoals):
 1. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<not> cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>stk n M P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>stk ! n = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>r stk n C h P 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. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>r stk n C h D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; r \<noteq> Null; P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; \<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; P \<turnstile> C sees M, NonStatic :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. exec_step_input P C\<^sub>0 clinit pc ics = StepI Return \<Longrightarrow> exec_step P 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)))
 8. \<And>M\<^sub>0 P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. \<lbrakk>M\<^sub>0 \<noteq> clinit; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 M\<^sub>0 pc ics [] sh = (None, h, [], sh)
 9. \<And>D b Ts T m P C\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics' frs' sh. \<lbrakk>(D, b, Ts, T, m) = method P C\<^sub>0 clinit; exec_step_input P C\<^sub>0 clinit pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P 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)))
 10. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Pop \<Longrightarrow> exec_step P 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)
A total of 23 subgoals...
[PROOF STEP]
case (exec_step_ind_Checkcast_Error P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh)
[PROOF STATE]
proof (state)
this:
\<not> cast_ok P C h (hd stk)
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)

goal (23 subgoals):
 1. \<And>P C h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>\<not> cast_ok P C h (hd stk); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>stk n M P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>stk ! n = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>r stk n C h P 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. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>r stk n C h D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; r \<noteq> Null; P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; \<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; P \<turnstile> C sees M, NonStatic :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. exec_step_input P C\<^sub>0 clinit pc ics = StepI Return \<Longrightarrow> exec_step P 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)))
 8. \<And>M\<^sub>0 P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. \<lbrakk>M\<^sub>0 \<noteq> clinit; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 M\<^sub>0 pc ics [] sh = (None, h, [], sh)
 9. \<And>D b Ts T m P C\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics' frs' sh. \<lbrakk>(D, b, Ts, T, m) = method P C\<^sub>0 clinit; exec_step_input P C\<^sub>0 clinit pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P 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)))
 10. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Pop \<Longrightarrow> exec_step P 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)
A total of 23 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<not> cast_ok P C h (hd stk)
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
\<not> cast_ok P C h (hd stk)
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Checkcast C)

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases ics, auto dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (22 subgoals):
 1. \<And>stk n M P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>stk ! n = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>r stk n C h P 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. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>r stk n C h D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; r \<noteq> Null; P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; \<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; P \<turnstile> C sees M, NonStatic :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. exec_step_input P C\<^sub>0 clinit pc ics = StepI Return \<Longrightarrow> exec_step P 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)))
 7. \<And>M\<^sub>0 P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. \<lbrakk>M\<^sub>0 \<noteq> clinit; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 M\<^sub>0 pc ics [] sh = (None, h, [], sh)
 8. \<And>D b Ts T m P C\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics' frs' sh. \<lbrakk>(D, b, Ts, T, m) = method P C\<^sub>0 clinit; exec_step_input P C\<^sub>0 clinit pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P 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)))
 9. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Pop \<Longrightarrow> exec_step P 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)
 10. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI IAdd \<Longrightarrow> exec_step P 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)
A total of 22 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (22 subgoals):
 1. \<And>stk n M P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>stk ! n = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>r stk n C h P 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. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>r stk n C h D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; r \<noteq> Null; P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; \<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; P \<turnstile> C sees M, NonStatic :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. exec_step_input P C\<^sub>0 clinit pc ics = StepI Return \<Longrightarrow> exec_step P 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)))
 7. \<And>M\<^sub>0 P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. \<lbrakk>M\<^sub>0 \<noteq> clinit; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 M\<^sub>0 pc ics [] sh = (None, h, [], sh)
 8. \<And>D b Ts T m P C\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics' frs' sh. \<lbrakk>(D, b, Ts, T, m) = method P C\<^sub>0 clinit; exec_step_input P C\<^sub>0 clinit pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P 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)))
 9. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Pop \<Longrightarrow> exec_step P 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)
 10. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI IAdd \<Longrightarrow> exec_step P 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)
A total of 22 subgoals...
[PROOF STEP]
case (exec_step_ind_Invoke_Null stk n M P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh)
[PROOF STATE]
proof (state)
this:
stk ! n = Null
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)

goal (22 subgoals):
 1. \<And>stk n M P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>stk ! n = Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>r stk n C h P 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. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>r stk n C h D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; r \<noteq> Null; P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; \<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; P \<turnstile> C sees M, NonStatic :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. exec_step_input P C\<^sub>0 clinit pc ics = StepI Return \<Longrightarrow> exec_step P 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)))
 7. \<And>M\<^sub>0 P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. \<lbrakk>M\<^sub>0 \<noteq> clinit; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 M\<^sub>0 pc ics [] sh = (None, h, [], sh)
 8. \<And>D b Ts T m P C\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics' frs' sh. \<lbrakk>(D, b, Ts, T, m) = method P C\<^sub>0 clinit; exec_step_input P C\<^sub>0 clinit pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P 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)))
 9. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Pop \<Longrightarrow> exec_step P 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)
 10. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI IAdd \<Longrightarrow> exec_step P 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)
A total of 22 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
stk ! n = Null
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
stk ! n = Null
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases ics, auto dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (21 subgoals):
 1. \<And>r stk n C h P 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. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>r stk n C h D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; r \<noteq> Null; P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; \<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; P \<turnstile> C sees M, NonStatic :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. exec_step_input P C\<^sub>0 clinit pc ics = StepI Return \<Longrightarrow> exec_step P 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)))
 6. \<And>M\<^sub>0 P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. \<lbrakk>M\<^sub>0 \<noteq> clinit; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 M\<^sub>0 pc ics [] sh = (None, h, [], sh)
 7. \<And>D b Ts T m P C\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics' frs' sh. \<lbrakk>(D, b, Ts, T, m) = method P C\<^sub>0 clinit; exec_step_input P C\<^sub>0 clinit pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P 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)))
 8. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Pop \<Longrightarrow> exec_step P 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)
 9. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI IAdd \<Longrightarrow> exec_step P 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)
 10. \<And>stk i P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Bool False; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 21 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (21 subgoals):
 1. \<And>r stk n C h P 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. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>r stk n C h D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; r \<noteq> Null; P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; \<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; P \<turnstile> C sees M, NonStatic :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. exec_step_input P C\<^sub>0 clinit pc ics = StepI Return \<Longrightarrow> exec_step P 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)))
 6. \<And>M\<^sub>0 P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. \<lbrakk>M\<^sub>0 \<noteq> clinit; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 M\<^sub>0 pc ics [] sh = (None, h, [], sh)
 7. \<And>D b Ts T m P C\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics' frs' sh. \<lbrakk>(D, b, Ts, T, m) = method P C\<^sub>0 clinit; exec_step_input P C\<^sub>0 clinit pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P 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)))
 8. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Pop \<Longrightarrow> exec_step P 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)
 9. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI IAdd \<Longrightarrow> exec_step P 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)
 10. \<And>stk i P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Bool False; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 21 subgoals...
[PROOF STEP]
case (exec_step_ind_Invoke_NoMethod r stk n C h P M loc C\<^sub>0 M\<^sub>0 pc ics frs sh)
[PROOF STATE]
proof (state)
this:
r = stk ! n
C = cname_of h (the_Addr r)
r \<noteq> Null
\<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)

goal (21 subgoals):
 1. \<And>r stk n C h P 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. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>r stk n C h D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; r \<noteq> Null; P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; \<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; P \<turnstile> C sees M, NonStatic :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. exec_step_input P C\<^sub>0 clinit pc ics = StepI Return \<Longrightarrow> exec_step P 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)))
 6. \<And>M\<^sub>0 P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. \<lbrakk>M\<^sub>0 \<noteq> clinit; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 M\<^sub>0 pc ics [] sh = (None, h, [], sh)
 7. \<And>D b Ts T m P C\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics' frs' sh. \<lbrakk>(D, b, Ts, T, m) = method P C\<^sub>0 clinit; exec_step_input P C\<^sub>0 clinit pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P 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)))
 8. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Pop \<Longrightarrow> exec_step P 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)
 9. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI IAdd \<Longrightarrow> exec_step P 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)
 10. \<And>stk i P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Bool False; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 21 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
r = stk ! n
C = cname_of h (the_Addr r)
r \<noteq> Null
\<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
r = stk ! n
C = cname_of h (the_Addr r)
r \<noteq> Null
\<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases ics, auto dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (20 subgoals):
 1. \<And>r stk n C h D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; r \<noteq> Null; P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; \<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; P \<turnstile> C sees M, NonStatic :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. exec_step_input P C\<^sub>0 clinit pc ics = StepI Return \<Longrightarrow> exec_step P 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)))
 5. \<And>M\<^sub>0 P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. \<lbrakk>M\<^sub>0 \<noteq> clinit; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 M\<^sub>0 pc ics [] sh = (None, h, [], sh)
 6. \<And>D b Ts T m P C\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics' frs' sh. \<lbrakk>(D, b, Ts, T, m) = method P C\<^sub>0 clinit; exec_step_input P C\<^sub>0 clinit pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P 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)))
 7. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Pop \<Longrightarrow> exec_step P 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)
 8. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI IAdd \<Longrightarrow> exec_step P 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)
 9. \<And>stk i P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Bool False; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI CmpEq \<Longrightarrow> exec_step P 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)
A total of 20 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (20 subgoals):
 1. \<And>r stk n C h D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; r \<noteq> Null; P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; \<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; P \<turnstile> C sees M, NonStatic :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. exec_step_input P C\<^sub>0 clinit pc ics = StepI Return \<Longrightarrow> exec_step P 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)))
 5. \<And>M\<^sub>0 P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. \<lbrakk>M\<^sub>0 \<noteq> clinit; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 M\<^sub>0 pc ics [] sh = (None, h, [], sh)
 6. \<And>D b Ts T m P C\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics' frs' sh. \<lbrakk>(D, b, Ts, T, m) = method P C\<^sub>0 clinit; exec_step_input P C\<^sub>0 clinit pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P 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)))
 7. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Pop \<Longrightarrow> exec_step P 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)
 8. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI IAdd \<Longrightarrow> exec_step P 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)
 9. \<And>stk i P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Bool False; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI CmpEq \<Longrightarrow> exec_step P 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)
A total of 20 subgoals...
[PROOF STEP]
case (exec_step_ind_Invoke_Static r stk n C h D b Ts T mxs mxl\<^sub>0 ins xt P M m loc C\<^sub>0 M\<^sub>0 pc ics)
[PROOF STATE]
proof (state)
this:
r = stk ! n
C = cname_of h (the_Addr r)
(D, b, Ts, T, mxs, mxl\<^sub>0, ins, xt) = method P C M
r \<noteq> Null
P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)

goal (20 subgoals):
 1. \<And>r stk n C h D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; r \<noteq> Null; P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; \<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; P \<turnstile> C sees M, NonStatic :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. exec_step_input P C\<^sub>0 clinit pc ics = StepI Return \<Longrightarrow> exec_step P 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)))
 5. \<And>M\<^sub>0 P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. \<lbrakk>M\<^sub>0 \<noteq> clinit; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 M\<^sub>0 pc ics [] sh = (None, h, [], sh)
 6. \<And>D b Ts T m P C\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics' frs' sh. \<lbrakk>(D, b, Ts, T, m) = method P C\<^sub>0 clinit; exec_step_input P C\<^sub>0 clinit pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P 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)))
 7. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Pop \<Longrightarrow> exec_step P 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)
 8. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI IAdd \<Longrightarrow> exec_step P 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)
 9. \<And>stk i P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Bool False; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI CmpEq \<Longrightarrow> exec_step P 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)
A total of 20 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
r = stk ! n
C = cname_of h (the_Addr r)
(D, b, Ts, T, mxs, mxl\<^sub>0, ins, xt) = method P C M
r \<noteq> Null
P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
r = stk ! n
C = cname_of h (the_Addr r)
(D, b, Ts, T, mxs, mxl\<^sub>0, ins, xt) = method P C M
r \<noteq> Null
P \<turnstile> C sees M, Static :  Ts\<rightarrow>T = m in D
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invoke M n)

goal (1 subgoal):
 1. exec_step P 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_)
[PROOF STEP]
by(cases ics, auto dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P 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_)

goal (19 subgoals):
 1. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; \<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; P \<turnstile> C sees M, NonStatic :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. exec_step_input P C\<^sub>0 clinit pc ics = StepI Return \<Longrightarrow> exec_step P 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)))
 4. \<And>M\<^sub>0 P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. \<lbrakk>M\<^sub>0 \<noteq> clinit; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 M\<^sub>0 pc ics [] sh = (None, h, [], sh)
 5. \<And>D b Ts T m P C\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics' frs' sh. \<lbrakk>(D, b, Ts, T, m) = method P C\<^sub>0 clinit; exec_step_input P C\<^sub>0 clinit pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P 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)))
 6. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Pop \<Longrightarrow> exec_step P 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)
 7. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI IAdd \<Longrightarrow> exec_step P 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)
 8. \<And>stk i P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Bool False; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI CmpEq \<Longrightarrow> exec_step P 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)
 10. \<And>i P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Goto i) \<Longrightarrow> exec_step P 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)
A total of 19 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (19 subgoals):
 1. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; \<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; P \<turnstile> C sees M, NonStatic :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. exec_step_input P C\<^sub>0 clinit pc ics = StepI Return \<Longrightarrow> exec_step P 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)))
 4. \<And>M\<^sub>0 P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. \<lbrakk>M\<^sub>0 \<noteq> clinit; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 M\<^sub>0 pc ics [] sh = (None, h, [], sh)
 5. \<And>D b Ts T m P C\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics' frs' sh. \<lbrakk>(D, b, Ts, T, m) = method P C\<^sub>0 clinit; exec_step_input P C\<^sub>0 clinit pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P 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)))
 6. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Pop \<Longrightarrow> exec_step P 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)
 7. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI IAdd \<Longrightarrow> exec_step P 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)
 8. \<And>stk i P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Bool False; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI CmpEq \<Longrightarrow> exec_step P 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)
 10. \<And>i P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Goto i) \<Longrightarrow> exec_step P 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)
A total of 19 subgoals...
[PROOF STEP]
case (exec_step_ind_Invokestatic_NoMethod D b Ts T mxs mxl\<^sub>0 ins xt P C M n h stk loc C\<^sub>0 M\<^sub>0 pc ics)
[PROOF STATE]
proof (state)
this:
(D, b, Ts, T, mxs, mxl\<^sub>0, ins, xt) = method P C M
\<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)

goal (19 subgoals):
 1. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; \<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; P \<turnstile> C sees M, NonStatic :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. exec_step_input P C\<^sub>0 clinit pc ics = StepI Return \<Longrightarrow> exec_step P 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)))
 4. \<And>M\<^sub>0 P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. \<lbrakk>M\<^sub>0 \<noteq> clinit; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 M\<^sub>0 pc ics [] sh = (None, h, [], sh)
 5. \<And>D b Ts T m P C\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics' frs' sh. \<lbrakk>(D, b, Ts, T, m) = method P C\<^sub>0 clinit; exec_step_input P C\<^sub>0 clinit pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P 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)))
 6. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Pop \<Longrightarrow> exec_step P 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)
 7. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI IAdd \<Longrightarrow> exec_step P 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)
 8. \<And>stk i P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Bool False; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI CmpEq \<Longrightarrow> exec_step P 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)
 10. \<And>i P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Goto i) \<Longrightarrow> exec_step P 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)
A total of 19 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
(D, b, Ts, T, mxs, mxl\<^sub>0, ins, xt) = method P C M
\<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
(D, b, Ts, T, mxs, mxl\<^sub>0, ins, xt) = method P C M
\<nexists>Ts T m D b. P \<turnstile> C sees M, b :  Ts\<rightarrow>T = m in D
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)

goal (1 subgoal):
 1. exec_step P 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_)
[PROOF STEP]
by(cases ics, auto dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P 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_)

goal (18 subgoals):
 1. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; P \<turnstile> C sees M, NonStatic :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. exec_step_input P C\<^sub>0 clinit pc ics = StepI Return \<Longrightarrow> exec_step P 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)))
 3. \<And>M\<^sub>0 P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. \<lbrakk>M\<^sub>0 \<noteq> clinit; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 M\<^sub>0 pc ics [] sh = (None, h, [], sh)
 4. \<And>D b Ts T m P C\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics' frs' sh. \<lbrakk>(D, b, Ts, T, m) = method P C\<^sub>0 clinit; exec_step_input P C\<^sub>0 clinit pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P 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)))
 5. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Pop \<Longrightarrow> exec_step P 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)
 6. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI IAdd \<Longrightarrow> exec_step P 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)
 7. \<And>stk i P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Bool False; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI CmpEq \<Longrightarrow> exec_step P 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)
 9. \<And>i P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Goto i) \<Longrightarrow> exec_step P 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)
 10. \<And>stk P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk \<noteq> Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 18 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (18 subgoals):
 1. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; P \<turnstile> C sees M, NonStatic :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. exec_step_input P C\<^sub>0 clinit pc ics = StepI Return \<Longrightarrow> exec_step P 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)))
 3. \<And>M\<^sub>0 P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. \<lbrakk>M\<^sub>0 \<noteq> clinit; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 M\<^sub>0 pc ics [] sh = (None, h, [], sh)
 4. \<And>D b Ts T m P C\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics' frs' sh. \<lbrakk>(D, b, Ts, T, m) = method P C\<^sub>0 clinit; exec_step_input P C\<^sub>0 clinit pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P 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)))
 5. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Pop \<Longrightarrow> exec_step P 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)
 6. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI IAdd \<Longrightarrow> exec_step P 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)
 7. \<And>stk i P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Bool False; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI CmpEq \<Longrightarrow> exec_step P 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)
 9. \<And>i P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Goto i) \<Longrightarrow> exec_step P 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)
 10. \<And>stk P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk \<noteq> Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 18 subgoals...
[PROOF STEP]
case (exec_step_ind_Invokestatic_NonStatic D b Ts T mxs mxl\<^sub>0 ins xt P C M m n h stk loc C\<^sub>0 M\<^sub>0 pc ics)
[PROOF STATE]
proof (state)
this:
(D, b, Ts, T, mxs, mxl\<^sub>0, ins, xt) = method P C M
P \<turnstile> C sees M, NonStatic :  Ts\<rightarrow>T = m in D
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)

goal (18 subgoals):
 1. \<And>D b Ts T mxs mxl\<^sub>0 ins xt P 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 P C M; P \<turnstile> C sees M, NonStatic :  Ts\<rightarrow>T = m in D; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. exec_step_input P C\<^sub>0 clinit pc ics = StepI Return \<Longrightarrow> exec_step P 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)))
 3. \<And>M\<^sub>0 P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. \<lbrakk>M\<^sub>0 \<noteq> clinit; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 M\<^sub>0 pc ics [] sh = (None, h, [], sh)
 4. \<And>D b Ts T m P C\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics' frs' sh. \<lbrakk>(D, b, Ts, T, m) = method P C\<^sub>0 clinit; exec_step_input P C\<^sub>0 clinit pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P 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)))
 5. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Pop \<Longrightarrow> exec_step P 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)
 6. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI IAdd \<Longrightarrow> exec_step P 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)
 7. \<And>stk i P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Bool False; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI CmpEq \<Longrightarrow> exec_step P 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)
 9. \<And>i P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Goto i) \<Longrightarrow> exec_step P 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)
 10. \<And>stk P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk \<noteq> Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 18 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
(D, b, Ts, T, mxs, mxl\<^sub>0, ins, xt) = method P C M
P \<turnstile> C sees M, NonStatic :  Ts\<rightarrow>T = m in D
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
(D, b, Ts, T, mxs, mxl\<^sub>0, ins, xt) = method P C M
P \<turnstile> C sees M, NonStatic :  Ts\<rightarrow>T = m in D
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Invokestatic C M n)

goal (1 subgoal):
 1. exec_step P 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_)
[PROOF STEP]
by(cases ics, auto dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P 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_)

goal (17 subgoals):
 1. \<And>P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. exec_step_input P C\<^sub>0 clinit pc ics = StepI Return \<Longrightarrow> exec_step P 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)))
 2. \<And>M\<^sub>0 P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. \<lbrakk>M\<^sub>0 \<noteq> clinit; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 M\<^sub>0 pc ics [] sh = (None, h, [], sh)
 3. \<And>D b Ts T m P C\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics' frs' sh. \<lbrakk>(D, b, Ts, T, m) = method P C\<^sub>0 clinit; exec_step_input P C\<^sub>0 clinit pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P 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)))
 4. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Pop \<Longrightarrow> exec_step P 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)
 5. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI IAdd \<Longrightarrow> exec_step P 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)
 6. \<And>stk i P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Bool False; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI CmpEq \<Longrightarrow> exec_step P 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)
 8. \<And>i P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Goto i) \<Longrightarrow> exec_step P 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)
 9. \<And>stk P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk \<noteq> Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>sh C Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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 P C, Prepared)))
A total of 17 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (17 subgoals):
 1. \<And>P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. exec_step_input P C\<^sub>0 clinit pc ics = StepI Return \<Longrightarrow> exec_step P 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)))
 2. \<And>M\<^sub>0 P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. \<lbrakk>M\<^sub>0 \<noteq> clinit; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 M\<^sub>0 pc ics [] sh = (None, h, [], sh)
 3. \<And>D b Ts T m P C\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics' frs' sh. \<lbrakk>(D, b, Ts, T, m) = method P C\<^sub>0 clinit; exec_step_input P C\<^sub>0 clinit pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P 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)))
 4. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Pop \<Longrightarrow> exec_step P 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)
 5. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI IAdd \<Longrightarrow> exec_step P 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)
 6. \<And>stk i P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Bool False; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI CmpEq \<Longrightarrow> exec_step P 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)
 8. \<And>i P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Goto i) \<Longrightarrow> exec_step P 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)
 9. \<And>stk P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk \<noteq> Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>sh C Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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 P C, Prepared)))
A total of 17 subgoals...
[PROOF STEP]
case (exec_step_ind_Return_Last_Init P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh)
[PROOF STATE]
proof (state)
this:
exec_step_input P C\<^sub>0 clinit pc ics = StepI Return

goal (17 subgoals):
 1. \<And>P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. exec_step_input P C\<^sub>0 clinit pc ics = StepI Return \<Longrightarrow> exec_step P 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)))
 2. \<And>M\<^sub>0 P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. \<lbrakk>M\<^sub>0 \<noteq> clinit; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 M\<^sub>0 pc ics [] sh = (None, h, [], sh)
 3. \<And>D b Ts T m P C\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics' frs' sh. \<lbrakk>(D, b, Ts, T, m) = method P C\<^sub>0 clinit; exec_step_input P C\<^sub>0 clinit pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P 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)))
 4. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Pop \<Longrightarrow> exec_step P 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)
 5. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI IAdd \<Longrightarrow> exec_step P 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)
 6. \<And>stk i P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Bool False; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI CmpEq \<Longrightarrow> exec_step P 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)
 8. \<And>i P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Goto i) \<Longrightarrow> exec_step P 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)
 9. \<And>stk P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk \<noteq> Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>sh C Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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 P C, Prepared)))
A total of 17 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
exec_step_input P C\<^sub>0 clinit pc ics = StepI Return
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
exec_step_input P C\<^sub>0 clinit pc ics = StepI Return

goal (1 subgoal):
 1. exec_step P 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)))
[PROOF STEP]
by(cases ics, auto dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P 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)))

goal (16 subgoals):
 1. \<And>M\<^sub>0 P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. \<lbrakk>M\<^sub>0 \<noteq> clinit; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 M\<^sub>0 pc ics [] sh = (None, h, [], sh)
 2. \<And>D b Ts T m P C\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics' frs' sh. \<lbrakk>(D, b, Ts, T, m) = method P C\<^sub>0 clinit; exec_step_input P C\<^sub>0 clinit pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P 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)))
 3. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Pop \<Longrightarrow> exec_step P 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)
 4. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI IAdd \<Longrightarrow> exec_step P 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)
 5. \<And>stk i P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Bool False; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI CmpEq \<Longrightarrow> exec_step P 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)
 7. \<And>i P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Goto i) \<Longrightarrow> exec_step P 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)
 8. \<And>stk P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk \<noteq> Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>sh C Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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 P C, Prepared)))
 10. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Done)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 16 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (16 subgoals):
 1. \<And>M\<^sub>0 P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. \<lbrakk>M\<^sub>0 \<noteq> clinit; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 M\<^sub>0 pc ics [] sh = (None, h, [], sh)
 2. \<And>D b Ts T m P C\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics' frs' sh. \<lbrakk>(D, b, Ts, T, m) = method P C\<^sub>0 clinit; exec_step_input P C\<^sub>0 clinit pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P 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)))
 3. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Pop \<Longrightarrow> exec_step P 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)
 4. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI IAdd \<Longrightarrow> exec_step P 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)
 5. \<And>stk i P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Bool False; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI CmpEq \<Longrightarrow> exec_step P 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)
 7. \<And>i P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Goto i) \<Longrightarrow> exec_step P 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)
 8. \<And>stk P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk \<noteq> Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>sh C Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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 P C, Prepared)))
 10. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Done)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 16 subgoals...
[PROOF STEP]
case (exec_step_ind_Return_Last M\<^sub>0 P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh)
[PROOF STATE]
proof (state)
this:
M\<^sub>0 \<noteq> clinit
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return

goal (16 subgoals):
 1. \<And>M\<^sub>0 P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 pc ics sh. \<lbrakk>M\<^sub>0 \<noteq> clinit; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 M\<^sub>0 pc ics [] sh = (None, h, [], sh)
 2. \<And>D b Ts T m P C\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics' frs' sh. \<lbrakk>(D, b, Ts, T, m) = method P C\<^sub>0 clinit; exec_step_input P C\<^sub>0 clinit pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P 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)))
 3. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Pop \<Longrightarrow> exec_step P 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)
 4. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI IAdd \<Longrightarrow> exec_step P 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)
 5. \<And>stk i P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Bool False; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI CmpEq \<Longrightarrow> exec_step P 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)
 7. \<And>i P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Goto i) \<Longrightarrow> exec_step P 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)
 8. \<And>stk P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk \<noteq> Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>sh C Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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 P C, Prepared)))
 10. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Done)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 16 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
M\<^sub>0 \<noteq> clinit
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
M\<^sub>0 \<noteq> clinit
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Return

goal (1 subgoal):
 1. exec_step P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 M\<^sub>0 pc ics [] sh = (None, h, [], sh)
[PROOF STEP]
by(cases ics, auto dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P h stk\<^sub>0 loc\<^sub>0 C\<^sub>0 M\<^sub>0 pc ics [] sh = (None, h, [], sh)

goal (15 subgoals):
 1. \<And>D b Ts T m P C\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics' frs' sh. \<lbrakk>(D, b, Ts, T, m) = method P C\<^sub>0 clinit; exec_step_input P C\<^sub>0 clinit pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P 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)))
 2. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Pop \<Longrightarrow> exec_step P 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)
 3. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI IAdd \<Longrightarrow> exec_step P 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)
 4. \<And>stk i P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Bool False; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI CmpEq \<Longrightarrow> exec_step P 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)
 6. \<And>i P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Goto i) \<Longrightarrow> exec_step P 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)
 7. \<And>stk P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk \<noteq> Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>sh C Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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 P C, Prepared)))
 9. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Done)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Processing)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 15 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (15 subgoals):
 1. \<And>D b Ts T m P C\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics' frs' sh. \<lbrakk>(D, b, Ts, T, m) = method P C\<^sub>0 clinit; exec_step_input P C\<^sub>0 clinit pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P 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)))
 2. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Pop \<Longrightarrow> exec_step P 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)
 3. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI IAdd \<Longrightarrow> exec_step P 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)
 4. \<And>stk i P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Bool False; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI CmpEq \<Longrightarrow> exec_step P 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)
 6. \<And>i P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Goto i) \<Longrightarrow> exec_step P 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)
 7. \<And>stk P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk \<noteq> Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>sh C Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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 P C, Prepared)))
 9. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Done)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Processing)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 15 subgoals...
[PROOF STEP]
case (exec_step_ind_Return_Init D b Ts T m P C\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics')
[PROOF STATE]
proof (state)
this:
(D, b, Ts, T, m) = method P C\<^sub>0 clinit
exec_step_input P C\<^sub>0 clinit pc ics = StepI Return

goal (15 subgoals):
 1. \<And>D b Ts T m P C\<^sub>0 h stk\<^sub>0 loc\<^sub>0 pc ics stk' loc' C' m' pc' ics' frs' sh. \<lbrakk>(D, b, Ts, T, m) = method P C\<^sub>0 clinit; exec_step_input P C\<^sub>0 clinit pc ics = StepI Return\<rbrakk> \<Longrightarrow> exec_step P 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)))
 2. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Pop \<Longrightarrow> exec_step P 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)
 3. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI IAdd \<Longrightarrow> exec_step P 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)
 4. \<And>stk i P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Bool False; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI CmpEq \<Longrightarrow> exec_step P 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)
 6. \<And>i P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Goto i) \<Longrightarrow> exec_step P 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)
 7. \<And>stk P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk \<noteq> Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>sh C Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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 P C, Prepared)))
 9. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Done)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Processing)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 15 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
(D, b, Ts, T, m) = method P C\<^sub>0 clinit
exec_step_input P C\<^sub>0 clinit pc ics = StepI Return
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
(D, b, Ts, T, m) = method P C\<^sub>0 clinit
exec_step_input P C\<^sub>0 clinit pc ics = StepI Return

goal (1 subgoal):
 1. exec_step P 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)))
[PROOF STEP]
by(cases ics, auto dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P 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)))

goal (14 subgoals):
 1. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Pop \<Longrightarrow> exec_step P 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)
 2. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI IAdd \<Longrightarrow> exec_step P 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)
 3. \<And>stk i P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Bool False; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI CmpEq \<Longrightarrow> exec_step P 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)
 5. \<And>i P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Goto i) \<Longrightarrow> exec_step P 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)
 6. \<And>stk P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk \<noteq> Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>sh C Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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 P C, Prepared)))
 8. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Done)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Processing)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Error)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 14 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (14 subgoals):
 1. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Pop \<Longrightarrow> exec_step P 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)
 2. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI IAdd \<Longrightarrow> exec_step P 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)
 3. \<And>stk i P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Bool False; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI CmpEq \<Longrightarrow> exec_step P 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)
 5. \<And>i P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Goto i) \<Longrightarrow> exec_step P 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)
 6. \<And>stk P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk \<noteq> Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>sh C Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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 P C, Prepared)))
 8. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Done)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Processing)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Error)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 14 subgoals...
[PROOF STEP]
case (exec_step_ind_Pop P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh)
[PROOF STATE]
proof (state)
this:
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Pop

goal (14 subgoals):
 1. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Pop \<Longrightarrow> exec_step P 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)
 2. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI IAdd \<Longrightarrow> exec_step P 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)
 3. \<And>stk i P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Bool False; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI CmpEq \<Longrightarrow> exec_step P 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)
 5. \<And>i P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Goto i) \<Longrightarrow> exec_step P 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)
 6. \<And>stk P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk \<noteq> Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>sh C Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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 P C, Prepared)))
 8. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Done)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Processing)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Error)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
A total of 14 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Pop
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Pop

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases ics, auto dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (13 subgoals):
 1. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI IAdd \<Longrightarrow> exec_step P 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)
 2. \<And>stk i P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Bool False; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI CmpEq \<Longrightarrow> exec_step P 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)
 4. \<And>i P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Goto i) \<Longrightarrow> exec_step P 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)
 5. \<And>stk P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk \<noteq> Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>sh C Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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 P C, Prepared)))
 7. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Done)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Processing)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Error)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>sh C sfs sh' Cs P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
A total of 13 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (13 subgoals):
 1. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI IAdd \<Longrightarrow> exec_step P 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)
 2. \<And>stk i P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Bool False; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI CmpEq \<Longrightarrow> exec_step P 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)
 4. \<And>i P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Goto i) \<Longrightarrow> exec_step P 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)
 5. \<And>stk P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk \<noteq> Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>sh C Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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 P C, Prepared)))
 7. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Done)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Processing)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Error)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>sh C sfs sh' Cs P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
A total of 13 subgoals...
[PROOF STEP]
case (exec_step_ind_IAdd P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh)
[PROOF STATE]
proof (state)
this:
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI IAdd

goal (13 subgoals):
 1. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI IAdd \<Longrightarrow> exec_step P 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)
 2. \<And>stk i P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Bool False; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI CmpEq \<Longrightarrow> exec_step P 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)
 4. \<And>i P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Goto i) \<Longrightarrow> exec_step P 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)
 5. \<And>stk P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk \<noteq> Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>sh C Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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 P C, Prepared)))
 7. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Done)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Processing)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Error)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 10. \<And>sh C sfs sh' Cs P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
A total of 13 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI IAdd
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI IAdd

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases ics, auto dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (12 subgoals):
 1. \<And>stk i P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Bool False; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI CmpEq \<Longrightarrow> exec_step P 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)
 3. \<And>i P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Goto i) \<Longrightarrow> exec_step P 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)
 4. \<And>stk P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk \<noteq> Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>sh C Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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 P C, Prepared)))
 6. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Done)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Processing)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Error)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>sh C sfs sh' Cs P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 10. \<And>sh C sfs sh' D P 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 P C)); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
A total of 12 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (12 subgoals):
 1. \<And>stk i P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Bool False; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI CmpEq \<Longrightarrow> exec_step P 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)
 3. \<And>i P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Goto i) \<Longrightarrow> exec_step P 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)
 4. \<And>stk P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk \<noteq> Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>sh C Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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 P C, Prepared)))
 6. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Done)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Processing)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Error)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>sh C sfs sh' Cs P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 10. \<And>sh C sfs sh' D P 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 P C)); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
A total of 12 subgoals...
[PROOF STEP]
case (exec_step_ind_IfFalse_False stk i P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh)
[PROOF STATE]
proof (state)
this:
hd stk = Bool False
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)

goal (12 subgoals):
 1. \<And>stk i P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk = Bool False; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI CmpEq \<Longrightarrow> exec_step P 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)
 3. \<And>i P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Goto i) \<Longrightarrow> exec_step P 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)
 4. \<And>stk P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk \<noteq> Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>sh C Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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 P C, Prepared)))
 6. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Done)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Processing)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Error)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 9. \<And>sh C sfs sh' Cs P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 10. \<And>sh C sfs sh' D P 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 P C)); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
A total of 12 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
hd stk = Bool False
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
hd stk = Bool False
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (IfFalse i)

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases ics, auto dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (11 subgoals):
 1. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI CmpEq \<Longrightarrow> exec_step P 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)
 2. \<And>i P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Goto i) \<Longrightarrow> exec_step P 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)
 3. \<And>stk P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk \<noteq> Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>sh C Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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 P C, Prepared)))
 5. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Done)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Processing)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Error)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>sh C sfs sh' Cs P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 9. \<And>sh C sfs sh' D P 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 P C)); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 10. \<And>C Cs a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT (C # Cs) a \<Longrightarrow> exec_step P 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)))
A total of 11 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (11 subgoals):
 1. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI CmpEq \<Longrightarrow> exec_step P 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)
 2. \<And>i P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Goto i) \<Longrightarrow> exec_step P 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)
 3. \<And>stk P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk \<noteq> Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>sh C Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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 P C, Prepared)))
 5. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Done)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Processing)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Error)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>sh C sfs sh' Cs P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 9. \<And>sh C sfs sh' D P 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 P C)); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 10. \<And>C Cs a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT (C # Cs) a \<Longrightarrow> exec_step P 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)))
A total of 11 subgoals...
[PROOF STEP]
case (exec_step_ind_CmpEq P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh)
[PROOF STATE]
proof (state)
this:
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI CmpEq

goal (11 subgoals):
 1. \<And>P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI CmpEq \<Longrightarrow> exec_step P 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)
 2. \<And>i P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Goto i) \<Longrightarrow> exec_step P 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)
 3. \<And>stk P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk \<noteq> Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>sh C Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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 P C, Prepared)))
 5. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Done)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Processing)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Error)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 8. \<And>sh C sfs sh' Cs P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 9. \<And>sh C sfs sh' D P 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 P C)); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 10. \<And>C Cs a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT (C # Cs) a \<Longrightarrow> exec_step P 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)))
A total of 11 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI CmpEq
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI CmpEq

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases ics, auto dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (10 subgoals):
 1. \<And>i P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Goto i) \<Longrightarrow> exec_step P 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)
 2. \<And>stk P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk \<noteq> Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>sh C Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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 P C, Prepared)))
 4. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Done)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Processing)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Error)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>sh C sfs sh' Cs P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 8. \<And>sh C sfs sh' D P 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 P C)); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 9. \<And>C Cs a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT (C # Cs) a \<Longrightarrow> exec_step P 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)))
 10. \<And>a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT [] a \<Longrightarrow> exec_step P 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)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (10 subgoals):
 1. \<And>i P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Goto i) \<Longrightarrow> exec_step P 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)
 2. \<And>stk P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk \<noteq> Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>sh C Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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 P C, Prepared)))
 4. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Done)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Processing)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Error)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>sh C sfs sh' Cs P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 8. \<And>sh C sfs sh' D P 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 P C)); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 9. \<And>C Cs a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT (C # Cs) a \<Longrightarrow> exec_step P 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)))
 10. \<And>a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT [] a \<Longrightarrow> exec_step P 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)
[PROOF STEP]
case (exec_step_ind_Goto i P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh)
[PROOF STATE]
proof (state)
this:
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Goto i)

goal (10 subgoals):
 1. \<And>i P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Goto i) \<Longrightarrow> exec_step P 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)
 2. \<And>stk P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk \<noteq> Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>sh C Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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 P C, Prepared)))
 4. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Done)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Processing)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Error)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 7. \<And>sh C sfs sh' Cs P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 8. \<And>sh C sfs sh' D P 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 P C)); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 9. \<And>C Cs a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT (C # Cs) a \<Longrightarrow> exec_step P 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)))
 10. \<And>a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT [] a \<Longrightarrow> exec_step P 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)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Goto i)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI (Goto i)

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases ics, auto dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (9 subgoals):
 1. \<And>stk P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk \<noteq> Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>sh C Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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 P C, Prepared)))
 3. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Done)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Processing)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Error)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>sh C sfs sh' Cs P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 7. \<And>sh C sfs sh' D P 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 P C)); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 8. \<And>C Cs a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT (C # Cs) a \<Longrightarrow> exec_step P 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)))
 9. \<And>a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT [] a \<Longrightarrow> exec_step P 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)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (9 subgoals):
 1. \<And>stk P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk \<noteq> Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>sh C Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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 P C, Prepared)))
 3. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Done)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Processing)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Error)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>sh C sfs sh' Cs P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 7. \<And>sh C sfs sh' D P 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 P C)); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 8. \<And>C Cs a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT (C # Cs) a \<Longrightarrow> exec_step P 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)))
 9. \<And>a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT [] a \<Longrightarrow> exec_step P 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)
[PROOF STEP]
case (exec_step_ind_Throw stk P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh)
[PROOF STATE]
proof (state)
this:
hd stk \<noteq> Null
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw

goal (9 subgoals):
 1. \<And>stk P h loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<lbrakk>hd stk \<noteq> Null; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>sh C Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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 P C, Prepared)))
 3. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Done)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Processing)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Error)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 6. \<And>sh C sfs sh' Cs P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 7. \<And>sh C sfs sh' D P 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 P C)); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 8. \<And>C Cs a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT (C # Cs) a \<Longrightarrow> exec_step P 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)))
 9. \<And>a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT [] a \<Longrightarrow> exec_step P 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)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
hd stk \<noteq> Null
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
hd stk \<noteq> Null
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepI Throw

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(cases ics, auto dest!: StepI)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (8 subgoals):
 1. \<And>sh C Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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 P C, Prepared)))
 2. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Done)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Processing)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Error)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>sh C sfs sh' Cs P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 6. \<And>sh C sfs sh' D P 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 P C)); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 7. \<And>C Cs a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT (C # Cs) a \<Longrightarrow> exec_step P 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)))
 8. \<And>a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT [] a \<Longrightarrow> exec_step P 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)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (8 subgoals):
 1. \<And>sh C Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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 P C, Prepared)))
 2. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Done)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Processing)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Error)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>sh C sfs sh' Cs P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 6. \<And>sh C sfs sh' D P 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 P C)); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 7. \<And>C Cs a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT (C # Cs) a \<Longrightarrow> exec_step P 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)))
 8. \<And>a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT [] a \<Longrightarrow> exec_step P 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)
[PROOF STEP]
case (exec_step_ind_Init_None_Called sh C Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs)
[PROOF STATE]
proof (state)
this:
sh C = None
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs

goal (8 subgoals):
 1. \<And>sh C Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = None; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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 P C, Prepared)))
 2. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Done)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Processing)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Error)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 5. \<And>sh C sfs sh' Cs P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 6. \<And>sh C sfs sh' D P 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 P C)); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 7. \<And>C Cs a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT (C # Cs) a \<Longrightarrow> exec_step P 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)))
 8. \<And>a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT [] a \<Longrightarrow> exec_step P 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)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
sh C = None
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
sh C = None
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs

goal (1 subgoal):
 1. exec_step P 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 P C, Prepared)))
[PROOF STEP]
by(auto dest!: StepC)
[PROOF STATE]
proof (state)
this:
exec_step P 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 P C, Prepared)))

goal (7 subgoals):
 1. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Done)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Processing)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Error)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>sh C sfs sh' Cs P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 5. \<And>sh C sfs sh' D P 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 P C)); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 6. \<And>C Cs a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT (C # Cs) a \<Longrightarrow> exec_step P 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)))
 7. \<And>a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT [] a \<Longrightarrow> exec_step P 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)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (7 subgoals):
 1. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Done)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Processing)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Error)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>sh C sfs sh' Cs P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 5. \<And>sh C sfs sh' D P 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 P C)); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 6. \<And>C Cs a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT (C # Cs) a \<Longrightarrow> exec_step P 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)))
 7. \<And>a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT [] a \<Longrightarrow> exec_step P 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)
[PROOF STEP]
case (exec_step_ind_Init_Done sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs)
[PROOF STATE]
proof (state)
this:
sh C = \<lfloor>(sfs, Done)\<rfloor>
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs

goal (7 subgoals):
 1. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Done)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Processing)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Error)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 4. \<And>sh C sfs sh' Cs P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 5. \<And>sh C sfs sh' D P 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 P C)); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 6. \<And>C Cs a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT (C # Cs) a \<Longrightarrow> exec_step P 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)))
 7. \<And>a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT [] a \<Longrightarrow> exec_step P 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)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
sh C = \<lfloor>(sfs, Done)\<rfloor>
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
sh C = \<lfloor>(sfs, Done)\<rfloor>
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(auto dest!: StepC)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (6 subgoals):
 1. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Processing)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Error)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>sh C sfs sh' Cs P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 4. \<And>sh C sfs sh' D P 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 P C)); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 5. \<And>C Cs a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT (C # Cs) a \<Longrightarrow> exec_step P 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)))
 6. \<And>a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT [] a \<Longrightarrow> exec_step P 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)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (6 subgoals):
 1. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Processing)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Error)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>sh C sfs sh' Cs P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 4. \<And>sh C sfs sh' D P 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 P C)); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 5. \<And>C Cs a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT (C # Cs) a \<Longrightarrow> exec_step P 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)))
 6. \<And>a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT [] a \<Longrightarrow> exec_step P 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)
[PROOF STEP]
case (exec_step_ind_Init_Processing sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs)
[PROOF STATE]
proof (state)
this:
sh C = \<lfloor>(sfs, Processing)\<rfloor>
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs

goal (6 subgoals):
 1. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Processing)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Error)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 3. \<And>sh C sfs sh' Cs P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 4. \<And>sh C sfs sh' D P 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 P C)); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 5. \<And>C Cs a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT (C # Cs) a \<Longrightarrow> exec_step P 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)))
 6. \<And>a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT [] a \<Longrightarrow> exec_step P 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)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
sh C = \<lfloor>(sfs, Processing)\<rfloor>
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
sh C = \<lfloor>(sfs, Processing)\<rfloor>
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(auto dest!: StepC)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (5 subgoals):
 1. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Error)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>sh C sfs sh' Cs P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 3. \<And>sh C sfs sh' D P 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 P C)); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 4. \<And>C Cs a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT (C # Cs) a \<Longrightarrow> exec_step P 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)))
 5. \<And>a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT [] a \<Longrightarrow> exec_step P 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)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (5 subgoals):
 1. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Error)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>sh C sfs sh' Cs P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 3. \<And>sh C sfs sh' D P 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 P C)); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 4. \<And>C Cs a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT (C # Cs) a \<Longrightarrow> exec_step P 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)))
 5. \<And>a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT [] a \<Longrightarrow> exec_step P 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)
[PROOF STEP]
case (exec_step_ind_Init_Error sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs)
[PROOF STATE]
proof (state)
this:
sh C = \<lfloor>(sfs, Error)\<rfloor>
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs

goal (5 subgoals):
 1. \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. \<lbrakk>sh C = \<lfloor>(sfs, Error)\<rfloor>; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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)
 2. \<And>sh C sfs sh' Cs P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 3. \<And>sh C sfs sh' D P 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 P C)); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 4. \<And>C Cs a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT (C # Cs) a \<Longrightarrow> exec_step P 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)))
 5. \<And>a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT [] a \<Longrightarrow> exec_step P 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)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
sh C = \<lfloor>(sfs, Error)\<rfloor>
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
sh C = \<lfloor>(sfs, Error)\<rfloor>
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(auto dest!: StepC)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal (4 subgoals):
 1. \<And>sh C sfs sh' Cs P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 2. \<And>sh C sfs sh' D P 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 P C)); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 3. \<And>C Cs a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT (C # Cs) a \<Longrightarrow> exec_step P 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)))
 4. \<And>a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT [] a \<Longrightarrow> exec_step P 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)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. \<And>sh C sfs sh' Cs P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 2. \<And>sh C sfs sh' D P 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 P C)); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 3. \<And>C Cs a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT (C # Cs) a \<Longrightarrow> exec_step P 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)))
 4. \<And>a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT [] a \<Longrightarrow> exec_step P 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)
[PROOF STEP]
case (exec_step_ind_Init_Prepared_Object sh C sfs sh' Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs)
[PROOF STATE]
proof (state)
this:
sh C = \<lfloor>(sfs, Prepared)\<rfloor>
sh' = sh(C \<mapsto> (fst (the (sh C)), Processing))
C = Object
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs

goal (4 subgoals):
 1. \<And>sh C sfs sh' Cs P 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; exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 2. \<And>sh C sfs sh' D P 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 P C)); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 3. \<And>C Cs a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT (C # Cs) a \<Longrightarrow> exec_step P 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)))
 4. \<And>a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT [] a \<Longrightarrow> exec_step P 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)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
sh C = \<lfloor>(sfs, Prepared)\<rfloor>
sh' = sh(C \<mapsto> (fst (the (sh C)), Processing))
C = Object
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
sh C = \<lfloor>(sfs, Prepared)\<rfloor>
sh' = sh(C \<mapsto> (fst (the (sh C)), Processing))
C = Object
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs

goal (1 subgoal):
 1. exec_step P 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')
[PROOF STEP]
by(auto dest!: StepC)
[PROOF STATE]
proof (state)
this:
exec_step P 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')

goal (3 subgoals):
 1. \<And>sh C sfs sh' D P 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 P C)); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 2. \<And>C Cs a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT (C # Cs) a \<Longrightarrow> exec_step P 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)))
 3. \<And>a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT [] a \<Longrightarrow> exec_step P 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)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<And>sh C sfs sh' D P 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 P C)); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 2. \<And>C Cs a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT (C # Cs) a \<Longrightarrow> exec_step P 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)))
 3. \<And>a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT [] a \<Longrightarrow> exec_step P 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)
[PROOF STEP]
case (exec_step_ind_Init_Prepared_nObject sh C sfs sh' D P Cs h stk loc C\<^sub>0 M\<^sub>0 pc ics frs)
[PROOF STATE]
proof (state)
this:
sh C = \<lfloor>(sfs, Prepared)\<rfloor>
sh' = sh(C \<mapsto> (fst (the (sh C)), Processing))
C \<noteq> Object
D = fst (the (class P C))
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs

goal (3 subgoals):
 1. \<And>sh C sfs sh' D P 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 P C)); exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs\<rbrakk> \<Longrightarrow> exec_step P 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')
 2. \<And>C Cs a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT (C # Cs) a \<Longrightarrow> exec_step P 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)))
 3. \<And>a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT [] a \<Longrightarrow> exec_step P 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)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
sh C = \<lfloor>(sfs, Prepared)\<rfloor>
sh' = sh(C \<mapsto> (fst (the (sh C)), Processing))
C \<noteq> Object
D = fst (the (class P C))
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
sh C = \<lfloor>(sfs, Prepared)\<rfloor>
sh' = sh(C \<mapsto> (fst (the (sh C)), Processing))
C \<noteq> Object
D = fst (the (class P C))
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepC C Cs

goal (1 subgoal):
 1. exec_step P 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')
[PROOF STEP]
by(auto dest!: StepC)
[PROOF STATE]
proof (state)
this:
exec_step P 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')

goal (2 subgoals):
 1. \<And>C Cs a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT (C # Cs) a \<Longrightarrow> exec_step P 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)))
 2. \<And>a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT [] a \<Longrightarrow> exec_step P 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)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>C Cs a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT (C # Cs) a \<Longrightarrow> exec_step P 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)))
 2. \<And>a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT [] a \<Longrightarrow> exec_step P 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)
[PROOF STEP]
case (exec_step_ind_InitThrow C Cs a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh)
[PROOF STATE]
proof (state)
this:
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT (C # Cs) a

goal (2 subgoals):
 1. \<And>C Cs a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT (C # Cs) a \<Longrightarrow> exec_step P 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)))
 2. \<And>a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT [] a \<Longrightarrow> exec_step P 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)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT (C # Cs) a
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT (C # Cs) a

goal (1 subgoal):
 1. exec_step P 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)))
[PROOF STEP]
by(auto dest!: StepT)
[PROOF STATE]
proof (state)
this:
exec_step P 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)))

goal (1 subgoal):
 1. \<And>a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT [] a \<Longrightarrow> exec_step P 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)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT [] a \<Longrightarrow> exec_step P 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)
[PROOF STEP]
case (exec_step_ind_InitThrow_End a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh)
[PROOF STATE]
proof (state)
this:
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT [] a

goal (1 subgoal):
 1. \<And>a P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT [] a \<Longrightarrow> exec_step P 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)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT [] a
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
exec_step_input P C\<^sub>0 M\<^sub>0 pc ics = StepT [] a

goal (1 subgoal):
 1. exec_step P 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)
[PROOF STEP]
by(auto dest!: StepT)
[PROOF STATE]
proof (state)
this:
exec_step P 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)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
exec_step P h stk loc C M pc ics frs sh = (xp', h', frs', sh')

goal:
No subgoals!
[PROOF STEP]
qed

\<comment> \<open> @{term exec_step} and @{term exec_step_ind} reach the same result given equivalent input \<close>