[STATEMENT]
lemma exec_step_imp_exec_step_ind:
assumes es: "exec_step P h stk loc C M pc ics frs sh = (xp', h', frs', sh')"
shows "exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
proof(cases "exec_step_input P C M pc ics")
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. \<And>x1. exec_step_input P C M pc ics = StepI x1 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x21 x22. exec_step_input P C M pc ics = StepC x21 x22 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x31 x32. exec_step_input P C M pc ics = StepC2 x31 x32 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x41 x42. exec_step_input P C M pc ics = StepT x41 x42 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case (StepT Cs a)
[PROOF STATE]
proof (state)
this:
exec_step_input P C M pc ics = StepT Cs a

goal (4 subgoals):
 1. \<And>x1. exec_step_input P C M pc ics = StepI x1 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x21 x22. exec_step_input P C M pc ics = StepC x21 x22 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x31 x32. exec_step_input P C M pc ics = StepC2 x31 x32 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x41 x42. exec_step_input P C M pc ics = StepT x41 x42 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
exec_step_input P C M pc ics = StepT Cs a
[PROOF STEP]
have "ics = Throwing Cs a"
[PROOF STATE]
proof (prove)
using this:
exec_step_input P C M pc ics = StepT Cs a

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

goal (4 subgoals):
 1. \<And>x1. exec_step_input P C M pc ics = StepI x1 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x21 x22. exec_step_input P C M pc ics = StepC x21 x22 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x31 x32. exec_step_input P C M pc ics = StepC2 x31 x32 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x41 x42. exec_step_input P C M pc ics = StepT x41 x42 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
ics = Throwing Cs a
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
ics = Throwing Cs a

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_InitThrow exec_step_ind_InitThrow_End StepT es
[PROOF STATE]
proof (prove)
using this:
ics = Throwing Cs a
exec_step_ind (StepT (?C # ?Cs) ?a) ?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)))
exec_step_ind (StepT [] ?a) ?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)
exec_step_input P C M pc ics = StepT Cs a
exec_step P h stk loc C M pc ics frs sh = (xp', h', frs', sh')

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by(cases Cs, auto)
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (3 subgoals):
 1. \<And>x1. exec_step_input P C M pc ics = StepI x1 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x21 x22. exec_step_input P C M pc ics = StepC x21 x22 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x31 x32. exec_step_input P C M pc ics = StepC2 x31 x32 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<And>x1. exec_step_input P C M pc ics = StepI x1 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x21 x22. exec_step_input P C M pc ics = StepC x21 x22 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x31 x32. exec_step_input P C M pc ics = StepC2 x31 x32 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case (StepC C1 Cs)
[PROOF STATE]
proof (state)
this:
exec_step_input P C M pc ics = StepC C1 Cs

goal (3 subgoals):
 1. \<And>x1. exec_step_input P C M pc ics = StepI x1 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x21 x22. exec_step_input P C M pc ics = StepC x21 x22 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x31 x32. exec_step_input P C M pc ics = StepC2 x31 x32 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
exec_step_input P C M pc ics = StepC C1 Cs
[PROOF STEP]
have ics: "ics = Calling C1 Cs"
[PROOF STATE]
proof (prove)
using this:
exec_step_input P C M pc ics = StepC C1 Cs

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

goal (3 subgoals):
 1. \<And>x1. exec_step_input P C M pc ics = StepI x1 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x21 x22. exec_step_input P C M pc ics = StepC x21 x22 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x31 x32. exec_step_input P C M pc ics = StepC2 x31 x32 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
obtain D b Ts T m where lets: "method P C1 clinit = (D,b,Ts,T,m)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<And>D b Ts T m. method P C1 clinit = (D, b, Ts, T, m) \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(cases "method P C1 clinit")
[PROOF STATE]
proof (state)
this:
method P C1 clinit = (D, b, Ts, T, m)

goal (3 subgoals):
 1. \<And>x1. exec_step_input P C M pc ics = StepI x1 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x21 x22. exec_step_input P C M pc ics = StepC x21 x22 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x31 x32. exec_step_input P C M pc ics = StepC2 x31 x32 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
method P C1 clinit = (D, b, Ts, T, m)
[PROOF STEP]
obtain mxs mxl\<^sub>0 ins xt where m: "m = (mxs,mxl\<^sub>0,ins,xt)"
[PROOF STATE]
proof (prove)
using this:
method P C1 clinit = (D, b, Ts, T, m)

goal (1 subgoal):
 1. (\<And>mxs mxl\<^sub>0 ins xt. m = (mxs, mxl\<^sub>0, ins, xt) \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(cases m)
[PROOF STATE]
proof (state)
this:
m = (mxs, mxl\<^sub>0, ins, xt)

goal (3 subgoals):
 1. \<And>x1. exec_step_input P C M pc ics = StepI x1 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x21 x22. exec_step_input P C M pc ics = StepC x21 x22 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x31 x32. exec_step_input P C M pc ics = StepC2 x31 x32 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) 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_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
proof(cases "sh C1")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. sh C1 = None \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>a. sh C1 = \<lfloor>a\<rfloor> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case None
[PROOF STATE]
proof (state)
this:
sh C1 = None

goal (2 subgoals):
 1. sh C1 = None \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>a. sh C1 = \<lfloor>a\<rfloor> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
sh C1 = None
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
sh C1 = None

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_Init_None_Called ics assms
[PROOF STATE]
proof (prove)
using this:
sh C1 = None
?sh ?C = None \<Longrightarrow> exec_step_ind (StepC ?C ?Cs) ?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)))
ics = Calling C1 Cs
exec_step P h stk loc C M pc ics frs sh = (xp', h', frs', sh')

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (1 subgoal):
 1. \<And>a. sh C1 = \<lfloor>a\<rfloor> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>a. sh C1 = \<lfloor>a\<rfloor> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case (Some a)
[PROOF STATE]
proof (state)
this:
sh C1 = \<lfloor>a\<rfloor>

goal (1 subgoal):
 1. \<And>a. sh C1 = \<lfloor>a\<rfloor> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
sh C1 = \<lfloor>a\<rfloor>
[PROOF STEP]
obtain sfs i where sfsi: "a = (sfs,i)"
[PROOF STATE]
proof (prove)
using this:
sh C1 = \<lfloor>a\<rfloor>

goal (1 subgoal):
 1. (\<And>sfs i. a = (sfs, i) \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(cases a)
[PROOF STATE]
proof (state)
this:
a = (sfs, i)

goal (1 subgoal):
 1. \<And>a. sh C1 = \<lfloor>a\<rfloor> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
a = (sfs, i)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
a = (sfs, i)

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_Init_Done exec_step_ind_Init_Processing
      exec_step_ind_Init_Error m lets Some ics assms
[PROOF STATE]
proof (prove)
using this:
a = (sfs, i)
?sh ?C = \<lfloor>(?sfs, Done)\<rfloor> \<Longrightarrow> exec_step_ind (StepC ?C ?Cs) ?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)
?sh ?C = \<lfloor>(?sfs, Processing)\<rfloor> \<Longrightarrow> exec_step_ind (StepC ?C ?Cs) ?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)
?sh ?C = \<lfloor>(?sfs, Error)\<rfloor> \<Longrightarrow> exec_step_ind (StepC ?C ?Cs) ?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)
m = (mxs, mxl\<^sub>0, ins, xt)
method P C1 clinit = (D, b, Ts, T, m)
sh C1 = \<lfloor>a\<rfloor>
ics = Calling C1 Cs
exec_step P h stk loc C M pc ics frs sh = (xp', h', frs', sh')

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
proof(cases i)
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. \<lbrakk>a = (sfs, i); \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Done)\<rfloor> \<Longrightarrow> exec_step_ind (StepC C Cs) 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); \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Processing)\<rfloor> \<Longrightarrow> exec_step_ind (StepC C Cs) 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); \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Error)\<rfloor> \<Longrightarrow> exec_step_ind (StepC C Cs) 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); m = (mxs, mxl\<^sub>0, ins, xt); method P C1 clinit = (D, b, Ts, T, m); sh C1 = \<lfloor>a\<rfloor>; ics = Calling C1 Cs; exec_step P h stk loc C M pc ics frs sh = (xp', h', frs', sh'); i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<lbrakk>a = (sfs, i); \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Done)\<rfloor> \<Longrightarrow> exec_step_ind (StepC C Cs) 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); \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Processing)\<rfloor> \<Longrightarrow> exec_step_ind (StepC C Cs) 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); \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Error)\<rfloor> \<Longrightarrow> exec_step_ind (StepC C Cs) 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); m = (mxs, mxl\<^sub>0, ins, xt); method P C1 clinit = (D, b, Ts, T, m); sh C1 = \<lfloor>a\<rfloor>; ics = Calling C1 Cs; exec_step P h stk loc C M pc ics frs sh = (xp', h', frs', sh'); i = Processing\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<lbrakk>a = (sfs, i); \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Done)\<rfloor> \<Longrightarrow> exec_step_ind (StepC C Cs) 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); \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Processing)\<rfloor> \<Longrightarrow> exec_step_ind (StepC C Cs) 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); \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Error)\<rfloor> \<Longrightarrow> exec_step_ind (StepC C Cs) 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); m = (mxs, mxl\<^sub>0, ins, xt); method P C1 clinit = (D, b, Ts, T, m); sh C1 = \<lfloor>a\<rfloor>; ics = Calling C1 Cs; exec_step P h stk loc C M pc ics frs sh = (xp', h', frs', sh'); i = Prepared\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<lbrakk>a = (sfs, i); \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Done)\<rfloor> \<Longrightarrow> exec_step_ind (StepC C Cs) 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); \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Processing)\<rfloor> \<Longrightarrow> exec_step_ind (StepC C Cs) 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); \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Error)\<rfloor> \<Longrightarrow> exec_step_ind (StepC C Cs) 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); m = (mxs, mxl\<^sub>0, ins, xt); method P C1 clinit = (D, b, Ts, T, m); sh C1 = \<lfloor>a\<rfloor>; ics = Calling C1 Cs; exec_step P h stk loc C M pc ics frs sh = (xp', h', frs', sh'); i = Error\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case Prepared
[PROOF STATE]
proof (state)
this:
i = Prepared

goal (4 subgoals):
 1. \<lbrakk>a = (sfs, i); \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Done)\<rfloor> \<Longrightarrow> exec_step_ind (StepC C Cs) 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); \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Processing)\<rfloor> \<Longrightarrow> exec_step_ind (StepC C Cs) 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); \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Error)\<rfloor> \<Longrightarrow> exec_step_ind (StepC C Cs) 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); m = (mxs, mxl\<^sub>0, ins, xt); method P C1 clinit = (D, b, Ts, T, m); sh C1 = \<lfloor>a\<rfloor>; ics = Calling C1 Cs; exec_step P h stk loc C M pc ics frs sh = (xp', h', frs', sh'); i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<lbrakk>a = (sfs, i); \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Done)\<rfloor> \<Longrightarrow> exec_step_ind (StepC C Cs) 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); \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Processing)\<rfloor> \<Longrightarrow> exec_step_ind (StepC C Cs) 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); \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Error)\<rfloor> \<Longrightarrow> exec_step_ind (StepC C Cs) 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); m = (mxs, mxl\<^sub>0, ins, xt); method P C1 clinit = (D, b, Ts, T, m); sh C1 = \<lfloor>a\<rfloor>; ics = Calling C1 Cs; exec_step P h stk loc C M pc ics frs sh = (xp', h', frs', sh'); i = Processing\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<lbrakk>a = (sfs, i); \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Done)\<rfloor> \<Longrightarrow> exec_step_ind (StepC C Cs) 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); \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Processing)\<rfloor> \<Longrightarrow> exec_step_ind (StepC C Cs) 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); \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Error)\<rfloor> \<Longrightarrow> exec_step_ind (StepC C Cs) 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); m = (mxs, mxl\<^sub>0, ins, xt); method P C1 clinit = (D, b, Ts, T, m); sh C1 = \<lfloor>a\<rfloor>; ics = Calling C1 Cs; exec_step P h stk loc C M pc ics frs sh = (xp', h', frs', sh'); i = Prepared\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<lbrakk>a = (sfs, i); \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Done)\<rfloor> \<Longrightarrow> exec_step_ind (StepC C Cs) 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); \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Processing)\<rfloor> \<Longrightarrow> exec_step_ind (StepC C Cs) 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); \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Error)\<rfloor> \<Longrightarrow> exec_step_ind (StepC C Cs) 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); m = (mxs, mxl\<^sub>0, ins, xt); method P C1 clinit = (D, b, Ts, T, m); sh C1 = \<lfloor>a\<rfloor>; ics = Calling C1 Cs; exec_step P h stk loc C M pc ics frs sh = (xp', h', frs', sh'); i = Error\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) 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_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_Init_Prepared_Object[where P=P] exec_step_ind_Init_Prepared_nObject
       sfsi m lets Prepared Some ics assms
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>?sh ?C = \<lfloor>(?sfs, Prepared)\<rfloor>; ?sh' = ?sh(?C \<mapsto> (fst (the (?sh ?C)), Processing)); ?C = Object\<rbrakk> \<Longrightarrow> exec_step_ind (StepC ?C ?Cs) 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')
\<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))\<rbrakk> \<Longrightarrow> exec_step_ind (StepC ?C ?Cs) ?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 = (sfs, i)
m = (mxs, mxl\<^sub>0, ins, xt)
method P C1 clinit = (D, b, Ts, T, m)
i = Prepared
sh C1 = \<lfloor>a\<rfloor>
ics = Calling C1 Cs
exec_step P h stk loc C M pc ics frs sh = (xp', h', frs', sh')

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by(auto split: if_split_asm)
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (3 subgoals):
 1. \<lbrakk>a = (sfs, i); \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Done)\<rfloor> \<Longrightarrow> exec_step_ind (StepC C Cs) 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); \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Processing)\<rfloor> \<Longrightarrow> exec_step_ind (StepC C Cs) 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); \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Error)\<rfloor> \<Longrightarrow> exec_step_ind (StepC C Cs) 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); m = (mxs, mxl\<^sub>0, ins, xt); method P C1 clinit = (D, b, Ts, T, m); sh C1 = \<lfloor>a\<rfloor>; ics = Calling C1 Cs; exec_step P h stk loc C M pc ics frs sh = (xp', h', frs', sh'); i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<lbrakk>a = (sfs, i); \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Done)\<rfloor> \<Longrightarrow> exec_step_ind (StepC C Cs) 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); \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Processing)\<rfloor> \<Longrightarrow> exec_step_ind (StepC C Cs) 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); \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Error)\<rfloor> \<Longrightarrow> exec_step_ind (StepC C Cs) 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); m = (mxs, mxl\<^sub>0, ins, xt); method P C1 clinit = (D, b, Ts, T, m); sh C1 = \<lfloor>a\<rfloor>; ics = Calling C1 Cs; exec_step P h stk loc C M pc ics frs sh = (xp', h', frs', sh'); i = Processing\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<lbrakk>a = (sfs, i); \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Done)\<rfloor> \<Longrightarrow> exec_step_ind (StepC C Cs) 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); \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Processing)\<rfloor> \<Longrightarrow> exec_step_ind (StepC C Cs) 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); \<And>sh C sfs Cs P h stk loc C\<^sub>0 M\<^sub>0 pc ics frs. sh C = \<lfloor>(sfs, Error)\<rfloor> \<Longrightarrow> exec_step_ind (StepC C Cs) 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); m = (mxs, mxl\<^sub>0, ins, xt); method P C1 clinit = (D, b, Ts, T, m); sh C1 = \<lfloor>a\<rfloor>; ics = Calling C1 Cs; exec_step P h stk loc C M pc ics frs sh = (xp', h', frs', sh'); i = Error\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
qed(auto)
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

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

goal (2 subgoals):
 1. \<And>x1. exec_step_input P C M pc ics = StepI x1 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x31 x32. exec_step_input P C M pc ics = StepC2 x31 x32 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>x1. exec_step_input P C M pc ics = StepI x1 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x31 x32. exec_step_input P C M pc ics = StepC2 x31 x32 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case (StepC2 C1 Cs)
[PROOF STATE]
proof (state)
this:
exec_step_input P C M pc ics = StepC2 C1 Cs

goal (2 subgoals):
 1. \<And>x1. exec_step_input P C M pc ics = StepI x1 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x31 x32. exec_step_input P C M pc ics = StepC2 x31 x32 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
exec_step_input P C M pc ics = StepC2 C1 Cs
[PROOF STEP]
have ics: "ics = Called (C1#Cs)"
[PROOF STATE]
proof (prove)
using this:
exec_step_input P C M pc ics = StepC2 C1 Cs

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

goal (2 subgoals):
 1. \<And>x1. exec_step_input P C M pc ics = StepI x1 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x31 x32. exec_step_input P C M pc ics = StepC2 x31 x32 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
ics = Called (C1 # Cs)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
ics = Called (C1 # Cs)

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_Init assms
[PROOF STATE]
proof (prove)
using this:
ics = Called (C1 # Cs)
exec_step_ind (StepC2 ?C ?Cs) ?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)
exec_step P h stk loc C M pc ics frs sh = (xp', h', frs', sh')

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (1 subgoal):
 1. \<And>x1. exec_step_input P C M pc ics = StepI x1 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x1. exec_step_input P C M pc ics = StepI x1 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case (StepI i)
[PROOF STATE]
proof (state)
this:
exec_step_input P C M pc ics = StepI i

goal (1 subgoal):
 1. \<And>x1. exec_step_input P C M pc ics = StepI x1 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
exec_step_input P C M pc ics = StepI i
[PROOF STEP]
have
    ics: "ics = Called [] \<or> ics = No_ics" and
    exec_instr: "exec_instr i P h stk loc C M pc ics frs sh = (xp', h', frs', sh')"
[PROOF STATE]
proof (prove)
using this:
exec_step_input P C M pc ics = StepI i

goal (1 subgoal):
 1. ics = Called [] \<or> ics = No_ics &&& exec_instr i 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_input P C M pc ics = StepI i
exec_step P h stk loc C M pc ics frs sh = (xp', h', frs', sh')

goal (1 subgoal):
 1. ics = Called [] \<or> ics = No_ics &&& exec_instr i P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
[PROOF STEP]
by(auto dest!: exec_step_input_StepID)
[PROOF STATE]
proof (state)
this:
ics = Called [] \<or> ics = No_ics
exec_instr i P h stk loc C M pc ics frs sh = (xp', h', frs', sh')

goal (1 subgoal):
 1. \<And>x1. exec_step_input P C M pc ics = StepI x1 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) 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_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
proof(cases i)
[PROOF STATE]
proof (state)
goal (18 subgoals):
 1. \<And>x1. i = Load x1 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x2. i = Store x2 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x3. i = Push x3 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x4. i = New x4 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x51 x52. i = Getfield x51 x52 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. \<And>x61 x62 x63. i = Getstatic x61 x62 x63 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. \<And>x71 x72. i = Putfield x71 x72 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. \<And>x81 x82 x83. i = Putstatic x81 x82 x83 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. \<And>x9. i = Checkcast x9 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 10. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
A total of 18 subgoals...
[PROOF STEP]
case (Load x1)
[PROOF STATE]
proof (state)
this:
i = Load x1

goal (18 subgoals):
 1. \<And>x1. i = Load x1 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x2. i = Store x2 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x3. i = Push x3 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x4. i = New x4 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x51 x52. i = Getfield x51 x52 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. \<And>x61 x62 x63. i = Getstatic x61 x62 x63 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. \<And>x71 x72. i = Putfield x71 x72 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. \<And>x81 x82 x83. i = Putstatic x81 x82 x83 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. \<And>x9. i = Checkcast x9 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 10. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
A total of 18 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
i = Load x1
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
i = Load x1

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_instr exec_step_ind_Load StepI
[PROOF STATE]
proof (prove)
using this:
i = Load x1
exec_instr i P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_ind (StepI (Load ?n)) ?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)
exec_step_input P C M pc ics = StepI i

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (17 subgoals):
 1. \<And>x2. i = Store x2 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x3. i = Push x3 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x4. i = New x4 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x51 x52. i = Getfield x51 x52 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x61 x62 x63. i = Getstatic x61 x62 x63 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. \<And>x71 x72. i = Putfield x71 x72 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. \<And>x81 x82 x83. i = Putstatic x81 x82 x83 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. \<And>x9. i = Checkcast x9 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 10. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
A total of 17 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (17 subgoals):
 1. \<And>x2. i = Store x2 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x3. i = Push x3 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x4. i = New x4 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x51 x52. i = Getfield x51 x52 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x61 x62 x63. i = Getstatic x61 x62 x63 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. \<And>x71 x72. i = Putfield x71 x72 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. \<And>x81 x82 x83. i = Putstatic x81 x82 x83 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. \<And>x9. i = Checkcast x9 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 10. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
A total of 17 subgoals...
[PROOF STEP]
case (Store x2)
[PROOF STATE]
proof (state)
this:
i = Store x2

goal (17 subgoals):
 1. \<And>x2. i = Store x2 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x3. i = Push x3 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x4. i = New x4 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x51 x52. i = Getfield x51 x52 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x61 x62 x63. i = Getstatic x61 x62 x63 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. \<And>x71 x72. i = Putfield x71 x72 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. \<And>x81 x82 x83. i = Putstatic x81 x82 x83 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. \<And>x9. i = Checkcast x9 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 10. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
A total of 17 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
i = Store x2
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
i = Store x2

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_instr exec_step_ind_Store StepI
[PROOF STATE]
proof (prove)
using this:
i = Store x2
exec_instr i P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_ind (StepI (Store ?n)) ?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)
exec_step_input P C M pc ics = StepI i

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (16 subgoals):
 1. \<And>x3. i = Push x3 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x4. i = New x4 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x51 x52. i = Getfield x51 x52 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x61 x62 x63. i = Getstatic x61 x62 x63 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x71 x72. i = Putfield x71 x72 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. \<And>x81 x82 x83. i = Putstatic x81 x82 x83 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. \<And>x9. i = Checkcast x9 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 10. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
A total of 16 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (16 subgoals):
 1. \<And>x3. i = Push x3 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x4. i = New x4 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x51 x52. i = Getfield x51 x52 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x61 x62 x63. i = Getstatic x61 x62 x63 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x71 x72. i = Putfield x71 x72 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. \<And>x81 x82 x83. i = Putstatic x81 x82 x83 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. \<And>x9. i = Checkcast x9 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 10. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
A total of 16 subgoals...
[PROOF STEP]
case (Push x3)
[PROOF STATE]
proof (state)
this:
i = Push x3

goal (16 subgoals):
 1. \<And>x3. i = Push x3 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x4. i = New x4 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x51 x52. i = Getfield x51 x52 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x61 x62 x63. i = Getstatic x61 x62 x63 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x71 x72. i = Putfield x71 x72 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. \<And>x81 x82 x83. i = Putstatic x81 x82 x83 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. \<And>x9. i = Checkcast x9 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 10. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
A total of 16 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
i = Push x3
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
i = Push x3

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_instr exec_step_ind_Push StepI
[PROOF STATE]
proof (prove)
using this:
i = Push x3
exec_instr i P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_ind (StepI (Push ?v)) ?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)
exec_step_input P C M pc ics = StepI i

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (15 subgoals):
 1. \<And>x4. i = New x4 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x51 x52. i = Getfield x51 x52 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x61 x62 x63. i = Getstatic x61 x62 x63 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x71 x72. i = Putfield x71 x72 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x81 x82 x83. i = Putstatic x81 x82 x83 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. \<And>x9. i = Checkcast x9 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 10. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
A total of 15 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (15 subgoals):
 1. \<And>x4. i = New x4 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x51 x52. i = Getfield x51 x52 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x61 x62 x63. i = Getstatic x61 x62 x63 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x71 x72. i = Putfield x71 x72 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x81 x82 x83. i = Putstatic x81 x82 x83 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. \<And>x9. i = Checkcast x9 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 10. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
A total of 15 subgoals...
[PROOF STEP]
case (New C1)
[PROOF STATE]
proof (state)
this:
i = New C1

goal (15 subgoals):
 1. \<And>x4. i = New x4 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x51 x52. i = Getfield x51 x52 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x61 x62 x63. i = Getstatic x61 x62 x63 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x71 x72. i = Putfield x71 x72 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x81 x82 x83. i = Putstatic x81 x82 x83 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. \<And>x9. i = Checkcast x9 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 10. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
A total of 15 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
i = New C1
[PROOF STEP]
obtain sfs i where sfsi: "the(sh C1) = (sfs,i)"
[PROOF STATE]
proof (prove)
using this:
i = New C1

goal (1 subgoal):
 1. (\<And>sfs i. the (sh C1) = (sfs, i) \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(cases "the(sh C1)")
[PROOF STATE]
proof (state)
this:
the (sh C1) = (sfs, i)

goal (15 subgoals):
 1. \<And>x4. i__ = New x4 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x51 x52. i__ = Getfield x51 x52 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x61 x62 x63. i__ = Getstatic x61 x62 x63 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x71 x72. i__ = Putfield x71 x72 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x81 x82 x83. i__ = Putstatic x81 x82 x83 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. \<And>x9. i__ = Checkcast x9 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. \<And>x101 x102. i__ = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. \<And>x111 x112 x113. i__ = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. i__ = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 10. i__ = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
A total of 15 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
the (sh C1) = (sfs, i)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
the (sh C1) = (sfs, i)

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_New_Called exec_step_ind_NewOOM_Called
       exec_step_ind_New_Done exec_step_ind_NewOOM_Done
       exec_step_ind_New_Init sfsi New StepI exec_instr ics
[PROOF STATE]
proof (prove)
using this:
the (sh C1) = (sfs, i)
new_Addr ?h = \<lfloor>?a\<rfloor> \<Longrightarrow> exec_step_ind (StepI (New ?C)) ?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)
new_Addr ?h = None \<Longrightarrow> exec_step_ind (StepI (New ?C)) ?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)
\<lbrakk>?sh ?C = \<lfloor>(?obj, Done)\<rfloor>; new_Addr ?h = \<lfloor>?a\<rfloor>; \<forall>Cs. ?ics \<noteq> Called Cs\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (New ?C)) ?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)
\<lbrakk>?sh ?C = \<lfloor>(?obj, Done)\<rfloor>; new_Addr ?h = None; \<forall>Cs. ?ics \<noteq> Called Cs\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (New ?C)) ?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)
\<lbrakk>\<forall>obj. ?sh ?C \<noteq> \<lfloor>(obj, Done)\<rfloor>; \<forall>Cs. ?ics \<noteq> Called Cs\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (New ?C)) ?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)
the (sh C1) = (sfs, i)
i__ = New C1
exec_step_input P C M pc ics = StepI i__
exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
ics = Called [] \<or> ics = No_ics

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by(auto split: init_state.splits)
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (14 subgoals):
 1. \<And>x51 x52. i__ = Getfield x51 x52 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x61 x62 x63. i__ = Getstatic x61 x62 x63 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x71 x72. i__ = Putfield x71 x72 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x81 x82 x83. i__ = Putstatic x81 x82 x83 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x9. i__ = Checkcast x9 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. \<And>x101 x102. i__ = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. \<And>x111 x112 x113. i__ = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. i__ = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. i__ = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 10. i__ = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
A total of 14 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (14 subgoals):
 1. \<And>x51 x52. i = Getfield x51 x52 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x61 x62 x63. i = Getstatic x61 x62 x63 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x71 x72. i = Putfield x71 x72 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x81 x82 x83. i = Putstatic x81 x82 x83 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x9. i = Checkcast x9 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 10. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
A total of 14 subgoals...
[PROOF STEP]
case (Getfield F1 C1)
[PROOF STATE]
proof (state)
this:
i = Getfield F1 C1

goal (14 subgoals):
 1. \<And>x51 x52. i = Getfield x51 x52 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x61 x62 x63. i = Getstatic x61 x62 x63 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x71 x72. i = Putfield x71 x72 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x81 x82 x83. i = Putstatic x81 x82 x83 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x9. i = Checkcast x9 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 10. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
A total of 14 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
i = Getfield F1 C1
[PROOF STEP]
obtain D fs D' b t where lets: "the(h(the_Addr (hd stk))) = (D,fs)"
      "field P C1 F1 = (D',b,t)"
[PROOF STATE]
proof (prove)
using this:
i = Getfield F1 C1

goal (1 subgoal):
 1. (\<And>D fs D' b t. \<lbrakk>the (h (the_Addr (hd stk))) = (D, fs); field P C1 F1 = (D', b, t)\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(cases "the(h(the_Addr (hd stk)))", cases "field P C1 F1")
[PROOF STATE]
proof (state)
this:
the (h (the_Addr (hd stk))) = (D, fs)
field P C1 F1 = (D', b, t)

goal (14 subgoals):
 1. \<And>x51 x52. i = Getfield x51 x52 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x61 x62 x63. i = Getstatic x61 x62 x63 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x71 x72. i = Putfield x71 x72 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x81 x82 x83. i = Putstatic x81 x82 x83 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x9. i = Checkcast x9 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 10. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
A total of 14 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
the (h (the_Addr (hd stk))) = (D, fs)
field P C1 F1 = (D', b, t)
[PROOF STEP]
have "\<And>b' t'. P \<turnstile> D has F1,b':t' in C1 \<Longrightarrow> (D', b, t) = (C1, b', t')"
[PROOF STATE]
proof (prove)
using this:
the (h (the_Addr (hd stk))) = (D, fs)
field P C1 F1 = (D', b, t)

goal (1 subgoal):
 1. \<And>b' t'. P \<turnstile> D has F1,b':t' in C1 \<Longrightarrow> (D', b, t) = (C1, b', t')
[PROOF STEP]
using field_def2 has_field_idemp has_field_sees
[PROOF STATE]
proof (prove)
using this:
the (h (the_Addr (hd stk))) = (D, fs)
field P C1 F1 = (D', b, t)
?P \<turnstile> ?C sees ?F,?b:?T in ?D \<Longrightarrow> field ?P ?C ?F = (?D, ?b, ?T)
?P \<turnstile> ?C has ?F,?b:?T in ?D \<Longrightarrow> ?P \<turnstile> ?D has ?F,?b:?T in ?D
?P \<turnstile> ?C has ?F,?b:?T in ?C \<Longrightarrow> ?P \<turnstile> ?C sees ?F,?b:?T in ?C

goal (1 subgoal):
 1. \<And>b' t'. P \<turnstile> D has F1,b':t' in C1 \<Longrightarrow> (D', b, t) = (C1, b', t')
[PROOF STEP]
by fastforce
[PROOF STATE]
proof (state)
this:
P \<turnstile> D has F1,?b':?t' in C1 \<Longrightarrow> (D', b, t) = (C1, ?b', ?t')

goal (14 subgoals):
 1. \<And>x51 x52. i = Getfield x51 x52 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x61 x62 x63. i = Getstatic x61 x62 x63 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x71 x72. i = Putfield x71 x72 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x81 x82 x83. i = Putstatic x81 x82 x83 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x9. i = Checkcast x9 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 10. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
A total of 14 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
P \<turnstile> D has F1,?b':?t' in C1 \<Longrightarrow> (D', b, t) = (C1, ?b', ?t')
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
P \<turnstile> D has F1,?b':?t' in C1 \<Longrightarrow> (D', b, t) = (C1, ?b', ?t')

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_Getfield_Null exec_step_ind_Getfield_NoField
       exec_step_ind_Getfield_Static exec_step_ind_Getfield lets Getfield StepI exec_instr
[PROOF STATE]
proof (prove)
using this:
P \<turnstile> D has F1,?b':?t' in C1 \<Longrightarrow> (D', b, t) = (C1, ?b', ?t')
hd ?stk = Null \<Longrightarrow> exec_step_ind (StepI (Getfield ?F ?C)) ?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)
\<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Getfield ?F ?C)) ?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)
\<lbrakk>?v = hd ?stk; (?D, ?fs) = the (?h (the_Addr ?v)); ?v \<noteq> Null; ?P \<turnstile> ?D has ?F,Static:?t in ?C\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Getfield ?F ?C)) ?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)
\<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Getfield ?F ?C)) ?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)
the (h (the_Addr (hd stk))) = (D, fs)
field P C1 F1 = (D', b, t)
i = Getfield F1 C1
exec_step_input P C M pc ics = StepI i
exec_instr i P h stk loc C M pc ics frs sh = (xp', h', frs', sh')

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by(auto split: if_split_asm staticb.splits) metis+
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (13 subgoals):
 1. \<And>x61 x62 x63. i = Getstatic x61 x62 x63 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x71 x72. i = Putfield x71 x72 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x81 x82 x83. i = Putstatic x81 x82 x83 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x9. i = Checkcast x9 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 10. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
A total of 13 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (13 subgoals):
 1. \<And>x61 x62 x63. i = Getstatic x61 x62 x63 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x71 x72. i = Putfield x71 x72 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x81 x82 x83. i = Putstatic x81 x82 x83 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x9. i = Checkcast x9 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 10. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
A total of 13 subgoals...
[PROOF STEP]
case (Getstatic C1 F1 D1)
[PROOF STATE]
proof (state)
this:
i = Getstatic C1 F1 D1

goal (13 subgoals):
 1. \<And>x61 x62 x63. i = Getstatic x61 x62 x63 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x71 x72. i = Putfield x71 x72 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x81 x82 x83. i = Putstatic x81 x82 x83 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x9. i = Checkcast x9 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 10. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
A total of 13 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
i = Getstatic C1 F1 D1
[PROOF STEP]
obtain D' b t where lets: "field P D1 F1 = (D',b,t)"
[PROOF STATE]
proof (prove)
using this:
i = Getstatic C1 F1 D1

goal (1 subgoal):
 1. (\<And>D' b t. field P D1 F1 = (D', b, t) \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(cases "field P D1 F1")
[PROOF STATE]
proof (state)
this:
field P D1 F1 = (D', b, t)

goal (13 subgoals):
 1. \<And>x61 x62 x63. i = Getstatic x61 x62 x63 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x71 x72. i = Putfield x71 x72 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x81 x82 x83. i = Putstatic x81 x82 x83 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x9. i = Checkcast x9 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 10. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
A total of 13 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
field P D1 F1 = (D', b, t)
[PROOF STEP]
have field: "\<And>b' t'. P \<turnstile> C1 has F1,b':t' in D1 \<Longrightarrow> (D', b, t) = (D1, b', t')"
[PROOF STATE]
proof (prove)
using this:
field P D1 F1 = (D', b, t)

goal (1 subgoal):
 1. \<And>b' t'. P \<turnstile> C1 has F1,b':t' in D1 \<Longrightarrow> (D', b, t) = (D1, b', t')
[PROOF STEP]
using field_def2 has_field_idemp has_field_sees
[PROOF STATE]
proof (prove)
using this:
field P D1 F1 = (D', b, t)
?P \<turnstile> ?C sees ?F,?b:?T in ?D \<Longrightarrow> field ?P ?C ?F = (?D, ?b, ?T)
?P \<turnstile> ?C has ?F,?b:?T in ?D \<Longrightarrow> ?P \<turnstile> ?D has ?F,?b:?T in ?D
?P \<turnstile> ?C has ?F,?b:?T in ?C \<Longrightarrow> ?P \<turnstile> ?C sees ?F,?b:?T in ?C

goal (1 subgoal):
 1. \<And>b' t'. P \<turnstile> C1 has F1,b':t' in D1 \<Longrightarrow> (D', b, t) = (D1, b', t')
[PROOF STEP]
by fastforce
[PROOF STATE]
proof (state)
this:
P \<turnstile> C1 has F1,?b':?t' in D1 \<Longrightarrow> (D', b, t) = (D1, ?b', ?t')

goal (13 subgoals):
 1. \<And>x61 x62 x63. i = Getstatic x61 x62 x63 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x71 x72. i = Putfield x71 x72 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x81 x82 x83. i = Putstatic x81 x82 x83 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x9. i = Checkcast x9 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 10. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
A total of 13 subgoals...
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
proof(cases b)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. b = Static \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. b = NonStatic \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case NonStatic
[PROOF STATE]
proof (state)
this:
b = NonStatic

goal (2 subgoals):
 1. b = Static \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. b = NonStatic \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
b = NonStatic
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
b = NonStatic

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_Getstatic_NoField exec_step_ind_Getstatic_NonStatic
        field lets Getstatic exec_instr StepI
[PROOF STATE]
proof (prove)
using this:
b = NonStatic
\<nexists>t b. ?P \<turnstile> ?C has ?F,b:t in ?D \<Longrightarrow> exec_step_ind (StepI (Getstatic ?C ?F ?D)) ?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)
?P \<turnstile> ?C has ?F,NonStatic:?t in ?D \<Longrightarrow> exec_step_ind (StepI (Getstatic ?C ?F ?D)) ?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)
P \<turnstile> C1 has F1,?b':?t' in D1 \<Longrightarrow> (D', b, t) = (D1, ?b', ?t')
field P D1 F1 = (D', b, t)
i = Getstatic C1 F1 D1
exec_instr i P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_input P C M pc ics = StepI i

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by(auto split: if_split_asm) fastforce
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (1 subgoal):
 1. b = Static \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. b = Static \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case Static
[PROOF STATE]
proof (state)
this:
b = Static

goal (1 subgoal):
 1. b = Static \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) 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_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
proof(cases "ics = Called []")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. ics = Called [] \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. ics \<noteq> Called [] \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
ics = Called []

goal (2 subgoals):
 1. ics = Called [] \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. ics \<noteq> Called [] \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
ics = Called []
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
ics = Called []

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_Getstatic_NoField
          exec_step_ind_Getstatic_Called exec_step_ind_Getstatic_Init
          Static field lets Getstatic exec_instr StepI ics
[PROOF STATE]
proof (prove)
using this:
ics = Called []
\<nexists>t b. ?P \<turnstile> ?C has ?F,b:t in ?D \<Longrightarrow> exec_step_ind (StepI (Getstatic ?C ?F ?D)) ?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)
\<lbrakk>(?D', ?b, ?t) = field ?P ?D ?F; ?P \<turnstile> ?C has ?F,Static:?t in ?D; ?v = the (fst (the (?sh ?D')) ?F)\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Getstatic ?C ?F ?D)) ?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)
\<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Getstatic ?C ?F ?D)) ?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)
b = Static
P \<turnstile> C1 has F1,?b':?t' in D1 \<Longrightarrow> (D', b, t) = (D1, ?b', ?t')
field P D1 F1 = (D', b, t)
i = Getstatic C1 F1 D1
exec_instr i P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_input P C M pc ics = StepI i
ics = Called [] \<or> ics = No_ics

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by(auto simp: split_beta split: if_split_asm) metis
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (1 subgoal):
 1. ics \<noteq> Called [] \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. ics \<noteq> Called [] \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
ics \<noteq> Called []

goal (1 subgoal):
 1. ics \<noteq> Called [] \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
ics \<noteq> Called []
[PROOF STEP]
have nCalled: "\<forall>Cs. ics \<noteq> Called Cs"
[PROOF STATE]
proof (prove)
using this:
ics \<noteq> Called []

goal (1 subgoal):
 1. \<forall>Cs. ics \<noteq> Called Cs
[PROOF STEP]
using ics
[PROOF STATE]
proof (prove)
using this:
ics \<noteq> Called []
ics = Called [] \<or> ics = No_ics

goal (1 subgoal):
 1. \<forall>Cs. ics \<noteq> Called Cs
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<forall>Cs. ics \<noteq> Called Cs

goal (1 subgoal):
 1. ics \<noteq> Called [] \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) 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_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
proof(cases "sh D1")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. sh D1 = None \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>a. sh D1 = \<lfloor>a\<rfloor> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case None
[PROOF STATE]
proof (state)
this:
sh D1 = None

goal (2 subgoals):
 1. sh D1 = None \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>a. sh D1 = \<lfloor>a\<rfloor> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
sh D1 = None
[PROOF STEP]
have nDone: "\<forall>sfs. sh D1 \<noteq> Some(sfs, Done)"
[PROOF STATE]
proof (prove)
using this:
sh D1 = None

goal (1 subgoal):
 1. \<forall>sfs. sh D1 \<noteq> \<lfloor>(sfs, Done)\<rfloor>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<forall>sfs. sh D1 \<noteq> \<lfloor>(sfs, Done)\<rfloor>

goal (2 subgoals):
 1. sh D1 = None \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>a. sh D1 = \<lfloor>a\<rfloor> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<forall>sfs. sh D1 \<noteq> \<lfloor>(sfs, Done)\<rfloor>
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
\<forall>sfs. sh D1 \<noteq> \<lfloor>(sfs, Done)\<rfloor>

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_Getstatic_NoField
            exec_step_ind_Getstatic_Init[where sh=sh, OF _ _ nDone nCalled]
            field lets None False Static Getstatic exec_instr StepI ics
[PROOF STATE]
proof (prove)
using this:
\<forall>sfs. sh D1 \<noteq> \<lfloor>(sfs, Done)\<rfloor>
\<nexists>t b. ?P \<turnstile> ?C has ?F,b:t in ?D \<Longrightarrow> exec_step_ind (StepI (Getstatic ?C ?F ?D)) ?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)
\<lbrakk>(D1, ?b, ?t) = field ?P ?D ?F; ?P \<turnstile> ?C has ?F,Static:?t in ?D\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Getstatic ?C ?F ?D)) ?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 D1 []) # ?frs, sh)
P \<turnstile> C1 has F1,?b':?t' in D1 \<Longrightarrow> (D', b, t) = (D1, ?b', ?t')
field P D1 F1 = (D', b, t)
sh D1 = None
ics \<noteq> Called []
b = Static
i = Getstatic C1 F1 D1
exec_instr i P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_input P C M pc ics = StepI i
ics = Called [] \<or> ics = No_ics

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by(auto split: if_split_asm) metis
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (1 subgoal):
 1. \<And>a. sh D1 = \<lfloor>a\<rfloor> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>a. sh D1 = \<lfloor>a\<rfloor> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case (Some a)
[PROOF STATE]
proof (state)
this:
sh D1 = \<lfloor>a\<rfloor>

goal (1 subgoal):
 1. \<And>a. sh D1 = \<lfloor>a\<rfloor> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
sh D1 = \<lfloor>a\<rfloor>
[PROOF STEP]
obtain sfs i where sfsi: "a=(sfs,i)"
[PROOF STATE]
proof (prove)
using this:
sh D1 = \<lfloor>a\<rfloor>

goal (1 subgoal):
 1. (\<And>sfs i. a = (sfs, i) \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(cases a)
[PROOF STATE]
proof (state)
this:
a = (sfs, i)

goal (1 subgoal):
 1. \<And>a. sh D1 = \<lfloor>a\<rfloor> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) 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_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_Getstatic_NoField
            exec_step_ind_Getstatic_Init sfsi False Static Some field lets Getstatic exec_instr
[PROOF STATE]
proof (prove)
using this:
\<nexists>t b. ?P \<turnstile> ?C has ?F,b:t in ?D \<Longrightarrow> exec_step_ind (StepI (Getstatic ?C ?F ?D)) ?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)
\<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Getstatic ?C ?F ?D)) ?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 = (sfs, i)
ics \<noteq> Called []
b = Static
sh D1 = \<lfloor>a\<rfloor>
P \<turnstile> C1 has F1,?b':?t' in D1 \<Longrightarrow> (D', b, t) = (D1, ?b', ?t')
field P D1 F1 = (D', b, t)
i__ = Getstatic C1 F1 D1
exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh')

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
proof(cases "i = Done")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<lbrakk>\<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<nexists>t b. P \<turnstile> C has F,b:t in D \<Longrightarrow> exec_step_ind (StepI (Getstatic C F D)) 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); \<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Getstatic C F D)) 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 = (sfs, i); ics \<noteq> Called []; b = Static; sh D1 = \<lfloor>a\<rfloor>; \<And>b' t'. P \<turnstile> C1 has F1,b':t' in D1 \<Longrightarrow> (D', b, t) = (D1, b', t'); field P D1 F1 = (D', b, t); i__ = Getstatic C1 F1 D1; exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh'); i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<lbrakk>\<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<nexists>t b. P \<turnstile> C has F,b:t in D \<Longrightarrow> exec_step_ind (StepI (Getstatic C F D)) 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); \<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Getstatic C F D)) 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 = (sfs, i); ics \<noteq> Called []; b = Static; sh D1 = \<lfloor>a\<rfloor>; \<And>b' t'. P \<turnstile> C1 has F1,b':t' in D1 \<Longrightarrow> (D', b, t) = (D1, b', t'); field P D1 F1 = (D', b, t); i__ = Getstatic C1 F1 D1; exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh'); i \<noteq> Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
i = Done

goal (2 subgoals):
 1. \<lbrakk>\<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<nexists>t b. P \<turnstile> C has F,b:t in D \<Longrightarrow> exec_step_ind (StepI (Getstatic C F D)) 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); \<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Getstatic C F D)) 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 = (sfs, i); ics \<noteq> Called []; b = Static; sh D1 = \<lfloor>a\<rfloor>; \<And>b' t'. P \<turnstile> C1 has F1,b':t' in D1 \<Longrightarrow> (D', b, t) = (D1, b', t'); field P D1 F1 = (D', b, t); i__ = Getstatic C1 F1 D1; exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh'); i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<lbrakk>\<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<nexists>t b. P \<turnstile> C has F,b:t in D \<Longrightarrow> exec_step_ind (StepI (Getstatic C F D)) 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); \<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Getstatic C F D)) 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 = (sfs, i); ics \<noteq> Called []; b = Static; sh D1 = \<lfloor>a\<rfloor>; \<And>b' t'. P \<turnstile> C1 has F1,b':t' in D1 \<Longrightarrow> (D', b, t) = (D1, b', t'); field P D1 F1 = (D', b, t); i__ = Getstatic C1 F1 D1; exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh'); i \<noteq> Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
i = Done
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
i = Done

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_Getstatic_NoField
              exec_step_ind_Getstatic_Done[OF _ _ nCalled] exec_step_ind_Getstatic_Init
              sfsi False Static Some field lets Getstatic exec_instr StepI ics
[PROOF STATE]
proof (prove)
using this:
i = Done
\<nexists>t b. ?P \<turnstile> ?C has ?F,b:t in ?D \<Longrightarrow> exec_step_ind (StepI (Getstatic ?C ?F ?D)) ?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)
\<lbrakk>(?D', ?b, ?t) = field ?P ?D ?F; ?P \<turnstile> ?C has ?F,Static:?t in ?D; ?sh ?D' = \<lfloor>(?sfs, Done)\<rfloor>; ?v = the (?sfs ?F)\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Getstatic ?C ?F ?D)) ?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)
\<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Getstatic ?C ?F ?D)) ?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 = (sfs, i)
ics \<noteq> Called []
b = Static
sh D1 = \<lfloor>a\<rfloor>
P \<turnstile> C1 has F1,?b':?t' in D1 \<Longrightarrow> (D', b, t) = (D1, ?b', ?t')
field P D1 F1 = (D', b, t)
i__ = Getstatic C1 F1 D1
exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_input P C M pc ics = StepI i__
ics = Called [] \<or> ics = No_ics

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by(auto split: if_split_asm) metis
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (1 subgoal):
 1. \<lbrakk>\<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<nexists>t b. P \<turnstile> C has F,b:t in D \<Longrightarrow> exec_step_ind (StepI (Getstatic C F D)) 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); \<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Getstatic C F D)) 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 = (sfs, i); ics \<noteq> Called []; b = Static; sh D1 = \<lfloor>a\<rfloor>; \<And>b' t'. P \<turnstile> C1 has F1,b':t' in D1 \<Longrightarrow> (D', b, t) = (D1, b', t'); field P D1 F1 = (D', b, t); i__ = Getstatic C1 F1 D1; exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh'); i \<noteq> Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>\<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<nexists>t b. P \<turnstile> C has F,b:t in D \<Longrightarrow> exec_step_ind (StepI (Getstatic C F D)) 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); \<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Getstatic C F D)) 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 = (sfs, i); ics \<noteq> Called []; b = Static; sh D1 = \<lfloor>a\<rfloor>; \<And>b' t'. P \<turnstile> C1 has F1,b':t' in D1 \<Longrightarrow> (D', b, t) = (D1, b', t'); field P D1 F1 = (D', b, t); i__ = Getstatic C1 F1 D1; exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh'); i \<noteq> Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case nD: False
[PROOF STATE]
proof (state)
this:
i \<noteq> Done

goal (1 subgoal):
 1. \<lbrakk>\<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<nexists>t b. P \<turnstile> C has F,b:t in D \<Longrightarrow> exec_step_ind (StepI (Getstatic C F D)) 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); \<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Getstatic C F D)) 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 = (sfs, i); ics \<noteq> Called []; b = Static; sh D1 = \<lfloor>a\<rfloor>; \<And>b' t'. P \<turnstile> C1 has F1,b':t' in D1 \<Longrightarrow> (D', b, t) = (D1, b', t'); field P D1 F1 = (D', b, t); i__ = Getstatic C1 F1 D1; exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh'); i \<noteq> Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
i \<noteq> Done
[PROOF STEP]
have nDone: "\<forall>sfs. sh D1 \<noteq> Some(sfs, Done)"
[PROOF STATE]
proof (prove)
using this:
i \<noteq> Done

goal (1 subgoal):
 1. \<forall>sfs. sh D1 \<noteq> \<lfloor>(sfs, Done)\<rfloor>
[PROOF STEP]
using sfsi Some
[PROOF STATE]
proof (prove)
using this:
i \<noteq> Done
a = (sfs, i)
sh D1 = \<lfloor>a\<rfloor>

goal (1 subgoal):
 1. \<forall>sfs. sh D1 \<noteq> \<lfloor>(sfs, Done)\<rfloor>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<forall>sfs. sh D1 \<noteq> \<lfloor>(sfs, Done)\<rfloor>

goal (1 subgoal):
 1. \<lbrakk>\<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<nexists>t b. P \<turnstile> C has F,b:t in D \<Longrightarrow> exec_step_ind (StepI (Getstatic C F D)) 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); \<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Getstatic C F D)) 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 = (sfs, i); ics \<noteq> Called []; b = Static; sh D1 = \<lfloor>a\<rfloor>; \<And>b' t'. P \<turnstile> C1 has F1,b':t' in D1 \<Longrightarrow> (D', b, t) = (D1, b', t'); field P D1 F1 = (D', b, t); i__ = Getstatic C1 F1 D1; exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh'); i \<noteq> Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) 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_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using nD
[PROOF STATE]
proof (prove)
using this:
i \<noteq> Done

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
proof(cases i)
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. \<lbrakk>i \<noteq> Done; i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<lbrakk>i \<noteq> Done; i = Processing\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<lbrakk>i \<noteq> Done; i = Prepared\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<lbrakk>i \<noteq> Done; i = Error\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case Processing
[PROOF STATE]
proof (state)
this:
i = Processing

goal (4 subgoals):
 1. \<lbrakk>i \<noteq> Done; i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<lbrakk>i \<noteq> Done; i = Processing\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<lbrakk>i \<noteq> Done; i = Prepared\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<lbrakk>i \<noteq> Done; i = Error\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
i = Processing
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
i = Processing

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_Getstatic_NoField
                exec_step_ind_Getstatic_Init[where sh=sh, OF _ _ nDone nCalled]
                sfsi False Static Some field lets Getstatic exec_instr StepI ics
[PROOF STATE]
proof (prove)
using this:
i = Processing
\<nexists>t b. ?P \<turnstile> ?C has ?F,b:t in ?D \<Longrightarrow> exec_step_ind (StepI (Getstatic ?C ?F ?D)) ?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)
\<lbrakk>(D1, ?b, ?t) = field ?P ?D ?F; ?P \<turnstile> ?C has ?F,Static:?t in ?D\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Getstatic ?C ?F ?D)) ?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 D1 []) # ?frs, sh)
a = (sfs, i)
ics \<noteq> Called []
b = Static
sh D1 = \<lfloor>a\<rfloor>
P \<turnstile> C1 has F1,?b':?t' in D1 \<Longrightarrow> (D', b, t) = (D1, ?b', ?t')
field P D1 F1 = (D', b, t)
i__ = Getstatic C1 F1 D1
exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_input P C M pc ics = StepI i__
ics = Called [] \<or> ics = No_ics

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by(auto split: if_split_asm) metis
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (3 subgoals):
 1. \<lbrakk>i \<noteq> Done; i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<lbrakk>i \<noteq> Done; i = Prepared\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<lbrakk>i \<noteq> Done; i = Error\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<lbrakk>i \<noteq> Done; i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<lbrakk>i \<noteq> Done; i = Prepared\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<lbrakk>i \<noteq> Done; i = Error\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case Prepared
[PROOF STATE]
proof (state)
this:
i = Prepared

goal (3 subgoals):
 1. \<lbrakk>i \<noteq> Done; i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<lbrakk>i \<noteq> Done; i = Prepared\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<lbrakk>i \<noteq> Done; i = Error\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
i = Prepared
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
i = Prepared

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_Getstatic_NoField
                exec_step_ind_Getstatic_Init[where sh=sh, OF _ _ nDone nCalled]
                sfsi False Static Some field lets Getstatic exec_instr StepI ics
[PROOF STATE]
proof (prove)
using this:
i = Prepared
\<nexists>t b. ?P \<turnstile> ?C has ?F,b:t in ?D \<Longrightarrow> exec_step_ind (StepI (Getstatic ?C ?F ?D)) ?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)
\<lbrakk>(D1, ?b, ?t) = field ?P ?D ?F; ?P \<turnstile> ?C has ?F,Static:?t in ?D\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Getstatic ?C ?F ?D)) ?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 D1 []) # ?frs, sh)
a = (sfs, i)
ics \<noteq> Called []
b = Static
sh D1 = \<lfloor>a\<rfloor>
P \<turnstile> C1 has F1,?b':?t' in D1 \<Longrightarrow> (D', b, t) = (D1, ?b', ?t')
field P D1 F1 = (D', b, t)
i__ = Getstatic C1 F1 D1
exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_input P C M pc ics = StepI i__
ics = Called [] \<or> ics = No_ics

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by(auto split: if_split_asm) metis
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (2 subgoals):
 1. \<lbrakk>i \<noteq> Done; i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<lbrakk>i \<noteq> Done; i = Error\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<lbrakk>i \<noteq> Done; i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<lbrakk>i \<noteq> Done; i = Error\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case Error
[PROOF STATE]
proof (state)
this:
i = Error

goal (2 subgoals):
 1. \<lbrakk>i \<noteq> Done; i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<lbrakk>i \<noteq> Done; i = Error\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
i = Error
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
i = Error

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_Getstatic_NoField
                exec_step_ind_Getstatic_Init[where sh=sh, OF _ _ nDone nCalled]
                sfsi False Static Some field lets Getstatic exec_instr StepI ics
[PROOF STATE]
proof (prove)
using this:
i = Error
\<nexists>t b. ?P \<turnstile> ?C has ?F,b:t in ?D \<Longrightarrow> exec_step_ind (StepI (Getstatic ?C ?F ?D)) ?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)
\<lbrakk>(D1, ?b, ?t) = field ?P ?D ?F; ?P \<turnstile> ?C has ?F,Static:?t in ?D\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Getstatic ?C ?F ?D)) ?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 D1 []) # ?frs, sh)
a = (sfs, i)
ics \<noteq> Called []
b = Static
sh D1 = \<lfloor>a\<rfloor>
P \<turnstile> C1 has F1,?b':?t' in D1 \<Longrightarrow> (D', b, t) = (D1, ?b', ?t')
field P D1 F1 = (D', b, t)
i__ = Getstatic C1 F1 D1
exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_input P C M pc ics = StepI i__
ics = Called [] \<or> ics = No_ics

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by(auto split: if_split_asm) metis
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (1 subgoal):
 1. \<lbrakk>i \<noteq> Done; i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
qed(simp)
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

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

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

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

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

goal (12 subgoals):
 1. \<And>x71 x72. i = Putfield x71 x72 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x81 x82 x83. i = Putstatic x81 x82 x83 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x9. i = Checkcast x9 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 10. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
A total of 12 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (12 subgoals):
 1. \<And>x71 x72. i = Putfield x71 x72 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x81 x82 x83. i = Putstatic x81 x82 x83 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x9. i = Checkcast x9 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 10. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
A total of 12 subgoals...
[PROOF STEP]
case (Putfield F1 C1)
[PROOF STATE]
proof (state)
this:
i = Putfield F1 C1

goal (12 subgoals):
 1. \<And>x71 x72. i = Putfield x71 x72 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x81 x82 x83. i = Putstatic x81 x82 x83 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x9. i = Checkcast x9 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 10. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
A total of 12 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
i = Putfield F1 C1
[PROOF STEP]
obtain D fs D' b t where lets: "the(h(the_Addr (hd(tl stk)))) = (D,fs)"
      "field P C1 F1 = (D',b,t)"
[PROOF STATE]
proof (prove)
using this:
i = Putfield F1 C1

goal (1 subgoal):
 1. (\<And>D fs D' b t. \<lbrakk>the (h (the_Addr (hd (tl stk)))) = (D, fs); field P C1 F1 = (D', b, t)\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(cases "the(h(the_Addr (hd(tl stk))))", cases "field P C1 F1")
[PROOF STATE]
proof (state)
this:
the (h (the_Addr (hd (tl stk)))) = (D, fs)
field P C1 F1 = (D', b, t)

goal (12 subgoals):
 1. \<And>x71 x72. i = Putfield x71 x72 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x81 x82 x83. i = Putstatic x81 x82 x83 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x9. i = Checkcast x9 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 10. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
A total of 12 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
the (h (the_Addr (hd (tl stk)))) = (D, fs)
field P C1 F1 = (D', b, t)
[PROOF STEP]
have "\<And>b' t'. P \<turnstile> D has F1,b':t' in C1 \<Longrightarrow> (D', b, t) = (C1, b', t')"
[PROOF STATE]
proof (prove)
using this:
the (h (the_Addr (hd (tl stk)))) = (D, fs)
field P C1 F1 = (D', b, t)

goal (1 subgoal):
 1. \<And>b' t'. P \<turnstile> D has F1,b':t' in C1 \<Longrightarrow> (D', b, t) = (C1, b', t')
[PROOF STEP]
using field_def2 has_field_idemp has_field_sees
[PROOF STATE]
proof (prove)
using this:
the (h (the_Addr (hd (tl stk)))) = (D, fs)
field P C1 F1 = (D', b, t)
?P \<turnstile> ?C sees ?F,?b:?T in ?D \<Longrightarrow> field ?P ?C ?F = (?D, ?b, ?T)
?P \<turnstile> ?C has ?F,?b:?T in ?D \<Longrightarrow> ?P \<turnstile> ?D has ?F,?b:?T in ?D
?P \<turnstile> ?C has ?F,?b:?T in ?C \<Longrightarrow> ?P \<turnstile> ?C sees ?F,?b:?T in ?C

goal (1 subgoal):
 1. \<And>b' t'. P \<turnstile> D has F1,b':t' in C1 \<Longrightarrow> (D', b, t) = (C1, b', t')
[PROOF STEP]
by fastforce
[PROOF STATE]
proof (state)
this:
P \<turnstile> D has F1,?b':?t' in C1 \<Longrightarrow> (D', b, t) = (C1, ?b', ?t')

goal (12 subgoals):
 1. \<And>x71 x72. i = Putfield x71 x72 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x81 x82 x83. i = Putstatic x81 x82 x83 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x9. i = Checkcast x9 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 10. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
A total of 12 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
P \<turnstile> D has F1,?b':?t' in C1 \<Longrightarrow> (D', b, t) = (C1, ?b', ?t')
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
P \<turnstile> D has F1,?b':?t' in C1 \<Longrightarrow> (D', b, t) = (C1, ?b', ?t')

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_Putfield_Null exec_step_ind_Putfield_NoField
       exec_step_ind_Putfield_Static exec_step_ind_Putfield lets Putfield exec_instr StepI
[PROOF STATE]
proof (prove)
using this:
P \<turnstile> D has F1,?b':?t' in C1 \<Longrightarrow> (D', b, t) = (C1, ?b', ?t')
hd (tl ?stk) = Null \<Longrightarrow> exec_step_ind (StepI (Putfield ?F ?C)) ?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)
\<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Putfield ?F ?C)) ?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)
\<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Putfield ?F ?C)) ?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)
\<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Putfield ?F ?C)) ?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)
the (h (the_Addr (hd (tl stk)))) = (D, fs)
field P C1 F1 = (D', b, t)
i = Putfield F1 C1
exec_instr i P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_input P C M pc ics = StepI i

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by(auto split: if_split_asm staticb.splits) metis+
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (11 subgoals):
 1. \<And>x81 x82 x83. i = Putstatic x81 x82 x83 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x9. i = Checkcast x9 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 10. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
A total of 11 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (11 subgoals):
 1. \<And>x81 x82 x83. i = Putstatic x81 x82 x83 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x9. i = Checkcast x9 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 10. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
A total of 11 subgoals...
[PROOF STEP]
case (Putstatic C1 F1 D1)
[PROOF STATE]
proof (state)
this:
i = Putstatic C1 F1 D1

goal (11 subgoals):
 1. \<And>x81 x82 x83. i = Putstatic x81 x82 x83 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x9. i = Checkcast x9 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 10. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
A total of 11 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
i = Putstatic C1 F1 D1
[PROOF STEP]
obtain D' b t where lets: "field P D1 F1 = (D',b,t)"
[PROOF STATE]
proof (prove)
using this:
i = Putstatic C1 F1 D1

goal (1 subgoal):
 1. (\<And>D' b t. field P D1 F1 = (D', b, t) \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(cases "field P D1 F1")
[PROOF STATE]
proof (state)
this:
field P D1 F1 = (D', b, t)

goal (11 subgoals):
 1. \<And>x81 x82 x83. i = Putstatic x81 x82 x83 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x9. i = Checkcast x9 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 10. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
A total of 11 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
field P D1 F1 = (D', b, t)
[PROOF STEP]
have field: "\<And>b' t'. P \<turnstile> C1 has F1,b':t' in D1 \<Longrightarrow> (D', b, t) = (D1, b', t')"
[PROOF STATE]
proof (prove)
using this:
field P D1 F1 = (D', b, t)

goal (1 subgoal):
 1. \<And>b' t'. P \<turnstile> C1 has F1,b':t' in D1 \<Longrightarrow> (D', b, t) = (D1, b', t')
[PROOF STEP]
using field_def2 has_field_idemp has_field_sees
[PROOF STATE]
proof (prove)
using this:
field P D1 F1 = (D', b, t)
?P \<turnstile> ?C sees ?F,?b:?T in ?D \<Longrightarrow> field ?P ?C ?F = (?D, ?b, ?T)
?P \<turnstile> ?C has ?F,?b:?T in ?D \<Longrightarrow> ?P \<turnstile> ?D has ?F,?b:?T in ?D
?P \<turnstile> ?C has ?F,?b:?T in ?C \<Longrightarrow> ?P \<turnstile> ?C sees ?F,?b:?T in ?C

goal (1 subgoal):
 1. \<And>b' t'. P \<turnstile> C1 has F1,b':t' in D1 \<Longrightarrow> (D', b, t) = (D1, b', t')
[PROOF STEP]
by fastforce
[PROOF STATE]
proof (state)
this:
P \<turnstile> C1 has F1,?b':?t' in D1 \<Longrightarrow> (D', b, t) = (D1, ?b', ?t')

goal (11 subgoals):
 1. \<And>x81 x82 x83. i = Putstatic x81 x82 x83 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x9. i = Checkcast x9 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 10. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
A total of 11 subgoals...
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
proof(cases b)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. b = Static \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. b = NonStatic \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case NonStatic
[PROOF STATE]
proof (state)
this:
b = NonStatic

goal (2 subgoals):
 1. b = Static \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. b = NonStatic \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
b = NonStatic
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
b = NonStatic

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_Putstatic_NoField exec_step_ind_Putstatic_NonStatic
        field lets Putstatic exec_instr StepI
[PROOF STATE]
proof (prove)
using this:
b = NonStatic
\<nexists>t b. ?P \<turnstile> ?C has ?F,b:t in ?D \<Longrightarrow> exec_step_ind (StepI (Putstatic ?C ?F ?D)) ?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)
?P \<turnstile> ?C has ?F,NonStatic:?t in ?D \<Longrightarrow> exec_step_ind (StepI (Putstatic ?C ?F ?D)) ?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)
P \<turnstile> C1 has F1,?b':?t' in D1 \<Longrightarrow> (D', b, t) = (D1, ?b', ?t')
field P D1 F1 = (D', b, t)
i = Putstatic C1 F1 D1
exec_instr i P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_input P C M pc ics = StepI i

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by(auto split: if_split_asm) fastforce
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (1 subgoal):
 1. b = Static \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. b = Static \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case Static
[PROOF STATE]
proof (state)
this:
b = Static

goal (1 subgoal):
 1. b = Static \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) 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_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
proof(cases "ics = Called []")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. ics = Called [] \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. ics \<noteq> Called [] \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
ics = Called []

goal (2 subgoals):
 1. ics = Called [] \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. ics \<noteq> Called [] \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
ics = Called []
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
ics = Called []

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_Putstatic_NoField
          exec_step_ind_Putstatic_Called exec_step_ind_Putstatic_Init
          Static field lets Putstatic exec_instr StepI ics
[PROOF STATE]
proof (prove)
using this:
ics = Called []
\<nexists>t b. ?P \<turnstile> ?C has ?F,b:t in ?D \<Longrightarrow> exec_step_ind (StepI (Putstatic ?C ?F ?D)) ?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)
\<lbrakk>(?D', ?b, ?t) = field ?P ?D ?F; ?P \<turnstile> ?C has ?F,Static:?t in ?D; the (?sh ?D') = (?sfs, ?i)\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Putstatic ?C ?F ?D)) ?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)))
\<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Putstatic ?C ?F ?D)) ?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)
b = Static
P \<turnstile> C1 has F1,?b':?t' in D1 \<Longrightarrow> (D', b, t) = (D1, ?b', ?t')
field P D1 F1 = (D', b, t)
i = Putstatic C1 F1 D1
exec_instr i P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_input P C M pc ics = StepI i
ics = Called [] \<or> ics = No_ics

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by(cases "the(sh D1)", auto split: if_split_asm) metis
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (1 subgoal):
 1. ics \<noteq> Called [] \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. ics \<noteq> Called [] \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
ics \<noteq> Called []

goal (1 subgoal):
 1. ics \<noteq> Called [] \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
ics \<noteq> Called []
[PROOF STEP]
have nCalled: "\<forall>Cs. ics \<noteq> Called Cs"
[PROOF STATE]
proof (prove)
using this:
ics \<noteq> Called []

goal (1 subgoal):
 1. \<forall>Cs. ics \<noteq> Called Cs
[PROOF STEP]
using ics
[PROOF STATE]
proof (prove)
using this:
ics \<noteq> Called []
ics = Called [] \<or> ics = No_ics

goal (1 subgoal):
 1. \<forall>Cs. ics \<noteq> Called Cs
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<forall>Cs. ics \<noteq> Called Cs

goal (1 subgoal):
 1. ics \<noteq> Called [] \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) 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_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
proof(cases "sh D1")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. sh D1 = None \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>a. sh D1 = \<lfloor>a\<rfloor> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case None
[PROOF STATE]
proof (state)
this:
sh D1 = None

goal (2 subgoals):
 1. sh D1 = None \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>a. sh D1 = \<lfloor>a\<rfloor> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
sh D1 = None
[PROOF STEP]
have nDone: "\<forall>sfs. sh D1 \<noteq> Some(sfs, Done)"
[PROOF STATE]
proof (prove)
using this:
sh D1 = None

goal (1 subgoal):
 1. \<forall>sfs. sh D1 \<noteq> \<lfloor>(sfs, Done)\<rfloor>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<forall>sfs. sh D1 \<noteq> \<lfloor>(sfs, Done)\<rfloor>

goal (2 subgoals):
 1. sh D1 = None \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>a. sh D1 = \<lfloor>a\<rfloor> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<forall>sfs. sh D1 \<noteq> \<lfloor>(sfs, Done)\<rfloor>
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
\<forall>sfs. sh D1 \<noteq> \<lfloor>(sfs, Done)\<rfloor>

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_Putstatic_NoField
            exec_step_ind_Putstatic_Init[where sh=sh, OF _ _ nDone nCalled]
            field lets None False Static Putstatic exec_instr StepI ics
[PROOF STATE]
proof (prove)
using this:
\<forall>sfs. sh D1 \<noteq> \<lfloor>(sfs, Done)\<rfloor>
\<nexists>t b. ?P \<turnstile> ?C has ?F,b:t in ?D \<Longrightarrow> exec_step_ind (StepI (Putstatic ?C ?F ?D)) ?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)
\<lbrakk>(D1, ?b, ?t) = field ?P ?D ?F; ?P \<turnstile> ?C has ?F,Static:?t in ?D\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Putstatic ?C ?F ?D)) ?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 D1 []) # ?frs, sh)
P \<turnstile> C1 has F1,?b':?t' in D1 \<Longrightarrow> (D', b, t) = (D1, ?b', ?t')
field P D1 F1 = (D', b, t)
sh D1 = None
ics \<noteq> Called []
b = Static
i = Putstatic C1 F1 D1
exec_instr i P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_input P C M pc ics = StepI i
ics = Called [] \<or> ics = No_ics

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by(auto split: if_split_asm) metis
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (1 subgoal):
 1. \<And>a. sh D1 = \<lfloor>a\<rfloor> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>a. sh D1 = \<lfloor>a\<rfloor> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case (Some a)
[PROOF STATE]
proof (state)
this:
sh D1 = \<lfloor>a\<rfloor>

goal (1 subgoal):
 1. \<And>a. sh D1 = \<lfloor>a\<rfloor> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
sh D1 = \<lfloor>a\<rfloor>
[PROOF STEP]
obtain sfs i where sfsi: "a=(sfs,i)"
[PROOF STATE]
proof (prove)
using this:
sh D1 = \<lfloor>a\<rfloor>

goal (1 subgoal):
 1. (\<And>sfs i. a = (sfs, i) \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(cases a)
[PROOF STATE]
proof (state)
this:
a = (sfs, i)

goal (1 subgoal):
 1. \<And>a. sh D1 = \<lfloor>a\<rfloor> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) 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_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_Putstatic_NoField
            exec_step_ind_Putstatic_Init sfsi False Static Some field lets Putstatic exec_instr
[PROOF STATE]
proof (prove)
using this:
\<nexists>t b. ?P \<turnstile> ?C has ?F,b:t in ?D \<Longrightarrow> exec_step_ind (StepI (Putstatic ?C ?F ?D)) ?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)
\<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Putstatic ?C ?F ?D)) ?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 = (sfs, i)
ics \<noteq> Called []
b = Static
sh D1 = \<lfloor>a\<rfloor>
P \<turnstile> C1 has F1,?b':?t' in D1 \<Longrightarrow> (D', b, t) = (D1, ?b', ?t')
field P D1 F1 = (D', b, t)
i__ = Putstatic C1 F1 D1
exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh')

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
proof(cases "i = Done")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<lbrakk>\<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<nexists>t b. P \<turnstile> C has F,b:t in D \<Longrightarrow> exec_step_ind (StepI (Putstatic C F D)) 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); \<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Putstatic C F D)) 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 = (sfs, i); ics \<noteq> Called []; b = Static; sh D1 = \<lfloor>a\<rfloor>; \<And>b' t'. P \<turnstile> C1 has F1,b':t' in D1 \<Longrightarrow> (D', b, t) = (D1, b', t'); field P D1 F1 = (D', b, t); i__ = Putstatic C1 F1 D1; exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh'); i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<lbrakk>\<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<nexists>t b. P \<turnstile> C has F,b:t in D \<Longrightarrow> exec_step_ind (StepI (Putstatic C F D)) 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); \<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Putstatic C F D)) 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 = (sfs, i); ics \<noteq> Called []; b = Static; sh D1 = \<lfloor>a\<rfloor>; \<And>b' t'. P \<turnstile> C1 has F1,b':t' in D1 \<Longrightarrow> (D', b, t) = (D1, b', t'); field P D1 F1 = (D', b, t); i__ = Putstatic C1 F1 D1; exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh'); i \<noteq> Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
i = Done

goal (2 subgoals):
 1. \<lbrakk>\<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<nexists>t b. P \<turnstile> C has F,b:t in D \<Longrightarrow> exec_step_ind (StepI (Putstatic C F D)) 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); \<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Putstatic C F D)) 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 = (sfs, i); ics \<noteq> Called []; b = Static; sh D1 = \<lfloor>a\<rfloor>; \<And>b' t'. P \<turnstile> C1 has F1,b':t' in D1 \<Longrightarrow> (D', b, t) = (D1, b', t'); field P D1 F1 = (D', b, t); i__ = Putstatic C1 F1 D1; exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh'); i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<lbrakk>\<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<nexists>t b. P \<turnstile> C has F,b:t in D \<Longrightarrow> exec_step_ind (StepI (Putstatic C F D)) 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); \<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Putstatic C F D)) 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 = (sfs, i); ics \<noteq> Called []; b = Static; sh D1 = \<lfloor>a\<rfloor>; \<And>b' t'. P \<turnstile> C1 has F1,b':t' in D1 \<Longrightarrow> (D', b, t) = (D1, b', t'); field P D1 F1 = (D', b, t); i__ = Putstatic C1 F1 D1; exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh'); i \<noteq> Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
i = Done
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
i = Done

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_Putstatic_NoField
              exec_step_ind_Putstatic_Done[OF _ _ nCalled] exec_step_ind_Putstatic_Init
              sfsi False Static Some field lets Putstatic exec_instr StepI ics
[PROOF STATE]
proof (prove)
using this:
i = Done
\<nexists>t b. ?P \<turnstile> ?C has ?F,b:t in ?D \<Longrightarrow> exec_step_ind (StepI (Putstatic ?C ?F ?D)) ?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)
\<lbrakk>(?D', ?b, ?t) = field ?P ?D ?F; ?P \<turnstile> ?C has ?F,Static:?t in ?D; ?sh ?D' = \<lfloor>(?sfs, Done)\<rfloor>\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Putstatic ?C ?F ?D)) ?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)))
\<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Putstatic ?C ?F ?D)) ?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 = (sfs, i)
ics \<noteq> Called []
b = Static
sh D1 = \<lfloor>a\<rfloor>
P \<turnstile> C1 has F1,?b':?t' in D1 \<Longrightarrow> (D', b, t) = (D1, ?b', ?t')
field P D1 F1 = (D', b, t)
i__ = Putstatic C1 F1 D1
exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_input P C M pc ics = StepI i__
ics = Called [] \<or> ics = No_ics

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by(auto split: if_split_asm) metis
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (1 subgoal):
 1. \<lbrakk>\<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<nexists>t b. P \<turnstile> C has F,b:t in D \<Longrightarrow> exec_step_ind (StepI (Putstatic C F D)) 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); \<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Putstatic C F D)) 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 = (sfs, i); ics \<noteq> Called []; b = Static; sh D1 = \<lfloor>a\<rfloor>; \<And>b' t'. P \<turnstile> C1 has F1,b':t' in D1 \<Longrightarrow> (D', b, t) = (D1, b', t'); field P D1 F1 = (D', b, t); i__ = Putstatic C1 F1 D1; exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh'); i \<noteq> Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>\<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<nexists>t b. P \<turnstile> C has F,b:t in D \<Longrightarrow> exec_step_ind (StepI (Putstatic C F D)) 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); \<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Putstatic C F D)) 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 = (sfs, i); ics \<noteq> Called []; b = Static; sh D1 = \<lfloor>a\<rfloor>; \<And>b' t'. P \<turnstile> C1 has F1,b':t' in D1 \<Longrightarrow> (D', b, t) = (D1, b', t'); field P D1 F1 = (D', b, t); i__ = Putstatic C1 F1 D1; exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh'); i \<noteq> Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case nD: False
[PROOF STATE]
proof (state)
this:
i \<noteq> Done

goal (1 subgoal):
 1. \<lbrakk>\<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<nexists>t b. P \<turnstile> C has F,b:t in D \<Longrightarrow> exec_step_ind (StepI (Putstatic C F D)) 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); \<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Putstatic C F D)) 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 = (sfs, i); ics \<noteq> Called []; b = Static; sh D1 = \<lfloor>a\<rfloor>; \<And>b' t'. P \<turnstile> C1 has F1,b':t' in D1 \<Longrightarrow> (D', b, t) = (D1, b', t'); field P D1 F1 = (D', b, t); i__ = Putstatic C1 F1 D1; exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh'); i \<noteq> Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
i \<noteq> Done
[PROOF STEP]
have nDone: "\<forall>sfs. sh D1 \<noteq> Some(sfs, Done)"
[PROOF STATE]
proof (prove)
using this:
i \<noteq> Done

goal (1 subgoal):
 1. \<forall>sfs. sh D1 \<noteq> \<lfloor>(sfs, Done)\<rfloor>
[PROOF STEP]
using sfsi Some
[PROOF STATE]
proof (prove)
using this:
i \<noteq> Done
a = (sfs, i)
sh D1 = \<lfloor>a\<rfloor>

goal (1 subgoal):
 1. \<forall>sfs. sh D1 \<noteq> \<lfloor>(sfs, Done)\<rfloor>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<forall>sfs. sh D1 \<noteq> \<lfloor>(sfs, Done)\<rfloor>

goal (1 subgoal):
 1. \<lbrakk>\<And>P C F D h stk loc C\<^sub>0 M\<^sub>0 pc ics frs sh. \<nexists>t b. P \<turnstile> C has F,b:t in D \<Longrightarrow> exec_step_ind (StepI (Putstatic C F D)) 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); \<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Putstatic C F D)) 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 = (sfs, i); ics \<noteq> Called []; b = Static; sh D1 = \<lfloor>a\<rfloor>; \<And>b' t'. P \<turnstile> C1 has F1,b':t' in D1 \<Longrightarrow> (D', b, t) = (D1, b', t'); field P D1 F1 = (D', b, t); i__ = Putstatic C1 F1 D1; exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh'); i \<noteq> Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) 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_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using nD
[PROOF STATE]
proof (prove)
using this:
i \<noteq> Done

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
proof(cases i)
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. \<lbrakk>i \<noteq> Done; i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<lbrakk>i \<noteq> Done; i = Processing\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<lbrakk>i \<noteq> Done; i = Prepared\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<lbrakk>i \<noteq> Done; i = Error\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case Processing
[PROOF STATE]
proof (state)
this:
i = Processing

goal (4 subgoals):
 1. \<lbrakk>i \<noteq> Done; i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<lbrakk>i \<noteq> Done; i = Processing\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<lbrakk>i \<noteq> Done; i = Prepared\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<lbrakk>i \<noteq> Done; i = Error\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
i = Processing
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
i = Processing

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_Putstatic_NoField
                exec_step_ind_Putstatic_Init[where sh=sh, OF _ _ nDone nCalled]
                sfsi False Static Some field lets Putstatic exec_instr StepI ics
[PROOF STATE]
proof (prove)
using this:
i = Processing
\<nexists>t b. ?P \<turnstile> ?C has ?F,b:t in ?D \<Longrightarrow> exec_step_ind (StepI (Putstatic ?C ?F ?D)) ?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)
\<lbrakk>(D1, ?b, ?t) = field ?P ?D ?F; ?P \<turnstile> ?C has ?F,Static:?t in ?D\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Putstatic ?C ?F ?D)) ?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 D1 []) # ?frs, sh)
a = (sfs, i)
ics \<noteq> Called []
b = Static
sh D1 = \<lfloor>a\<rfloor>
P \<turnstile> C1 has F1,?b':?t' in D1 \<Longrightarrow> (D', b, t) = (D1, ?b', ?t')
field P D1 F1 = (D', b, t)
i__ = Putstatic C1 F1 D1
exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_input P C M pc ics = StepI i__
ics = Called [] \<or> ics = No_ics

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by(auto split: if_split_asm) metis
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (3 subgoals):
 1. \<lbrakk>i \<noteq> Done; i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<lbrakk>i \<noteq> Done; i = Prepared\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<lbrakk>i \<noteq> Done; i = Error\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<lbrakk>i \<noteq> Done; i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<lbrakk>i \<noteq> Done; i = Prepared\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<lbrakk>i \<noteq> Done; i = Error\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case Prepared
[PROOF STATE]
proof (state)
this:
i = Prepared

goal (3 subgoals):
 1. \<lbrakk>i \<noteq> Done; i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<lbrakk>i \<noteq> Done; i = Prepared\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<lbrakk>i \<noteq> Done; i = Error\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
i = Prepared
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
i = Prepared

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_Putstatic_NoField
                exec_step_ind_Putstatic_Init[where sh=sh, OF _ _ nDone nCalled]
                sfsi False Static Some field lets Putstatic exec_instr StepI ics
[PROOF STATE]
proof (prove)
using this:
i = Prepared
\<nexists>t b. ?P \<turnstile> ?C has ?F,b:t in ?D \<Longrightarrow> exec_step_ind (StepI (Putstatic ?C ?F ?D)) ?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)
\<lbrakk>(D1, ?b, ?t) = field ?P ?D ?F; ?P \<turnstile> ?C has ?F,Static:?t in ?D\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Putstatic ?C ?F ?D)) ?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 D1 []) # ?frs, sh)
a = (sfs, i)
ics \<noteq> Called []
b = Static
sh D1 = \<lfloor>a\<rfloor>
P \<turnstile> C1 has F1,?b':?t' in D1 \<Longrightarrow> (D', b, t) = (D1, ?b', ?t')
field P D1 F1 = (D', b, t)
i__ = Putstatic C1 F1 D1
exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_input P C M pc ics = StepI i__
ics = Called [] \<or> ics = No_ics

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by(auto split: if_split_asm) metis
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (2 subgoals):
 1. \<lbrakk>i \<noteq> Done; i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<lbrakk>i \<noteq> Done; i = Error\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<lbrakk>i \<noteq> Done; i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<lbrakk>i \<noteq> Done; i = Error\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case Error
[PROOF STATE]
proof (state)
this:
i = Error

goal (2 subgoals):
 1. \<lbrakk>i \<noteq> Done; i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<lbrakk>i \<noteq> Done; i = Error\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
i = Error
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
i = Error

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_Putstatic_NoField
                exec_step_ind_Putstatic_Init[where sh=sh, OF _ _ nDone nCalled]
                sfsi False Static Some field lets Putstatic exec_instr StepI ics
[PROOF STATE]
proof (prove)
using this:
i = Error
\<nexists>t b. ?P \<turnstile> ?C has ?F,b:t in ?D \<Longrightarrow> exec_step_ind (StepI (Putstatic ?C ?F ?D)) ?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)
\<lbrakk>(D1, ?b, ?t) = field ?P ?D ?F; ?P \<turnstile> ?C has ?F,Static:?t in ?D\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Putstatic ?C ?F ?D)) ?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 D1 []) # ?frs, sh)
a = (sfs, i)
ics \<noteq> Called []
b = Static
sh D1 = \<lfloor>a\<rfloor>
P \<turnstile> C1 has F1,?b':?t' in D1 \<Longrightarrow> (D', b, t) = (D1, ?b', ?t')
field P D1 F1 = (D', b, t)
i__ = Putstatic C1 F1 D1
exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_input P C M pc ics = StepI i__
ics = Called [] \<or> ics = No_ics

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by(auto split: if_split_asm) metis
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (1 subgoal):
 1. \<lbrakk>i \<noteq> Done; i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
qed(simp)
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

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

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

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

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

goal (10 subgoals):
 1. \<And>x9. i = Checkcast x9 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 10. i = Throw \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (10 subgoals):
 1. \<And>x9. i = Checkcast x9 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 10. i = Throw \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case Checkcast
[PROOF STATE]
proof (state)
this:
i = Checkcast x9_

goal (10 subgoals):
 1. \<And>x9. i = Checkcast x9 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 10. i = Throw \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
i = Checkcast x9_
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
i = Checkcast x9_

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_Checkcast exec_step_ind_Checkcast_Error exec_instr StepI
[PROOF STATE]
proof (prove)
using this:
i = Checkcast x9_
cast_ok ?P ?C ?h (hd ?stk) \<Longrightarrow> exec_step_ind (StepI (Checkcast ?C)) ?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)
\<not> cast_ok ?P ?C ?h (hd ?stk) \<Longrightarrow> exec_step_ind (StepI (Checkcast ?C)) ?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)
exec_instr i P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_input P C M pc ics = StepI i

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by(auto split: if_split_asm)
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (9 subgoals):
 1. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. i = Throw \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (9 subgoals):
 1. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. i = Throw \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case (Invoke M1 n)
[PROOF STATE]
proof (state)
this:
i = Invoke M1 n

goal (9 subgoals):
 1. \<And>x101 x102. i = Invoke x101 x102 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 9. i = Throw \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) 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_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
proof(cases "stk!n = Null")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. stk ! n = Null \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. stk ! n \<noteq> Null \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
stk ! n = Null

goal (2 subgoals):
 1. stk ! n = Null \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. stk ! n \<noteq> Null \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
stk ! n = Null
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
stk ! n = Null

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_Invoke_Null Invoke exec_instr StepI
[PROOF STATE]
proof (prove)
using this:
stk ! n = Null
?stk ! ?n = Null \<Longrightarrow> exec_step_ind (StepI (Invoke ?M ?n)) ?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)
i = Invoke M1 n
exec_instr i P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_input P C M pc ics = StepI i

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by clarsimp
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (1 subgoal):
 1. stk ! n \<noteq> Null \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. stk ! n \<noteq> Null \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
stk ! n \<noteq> Null

goal (1 subgoal):
 1. stk ! n \<noteq> Null \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
let ?C = "cname_of h (the_Addr (stk ! n))"
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. stk ! n \<noteq> Null \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
obtain D b Ts T m where method: "method P ?C M1 = (D,b,Ts,T,m)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<And>D b Ts T m. method P (cname_of h (the_Addr (stk ! n))) M1 = (D, b, Ts, T, m) \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(cases "method P ?C M1")
[PROOF STATE]
proof (state)
this:
method P (cname_of h (the_Addr (stk ! n))) M1 = (D, b, Ts, T, m)

goal (1 subgoal):
 1. stk ! n \<noteq> Null \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
method P (cname_of h (the_Addr (stk ! n))) M1 = (D, b, Ts, T, m)
[PROOF STEP]
obtain mxs mxl\<^sub>0 ins xt where "m = (mxs,mxl\<^sub>0,ins,xt)"
[PROOF STATE]
proof (prove)
using this:
method P (cname_of h (the_Addr (stk ! n))) M1 = (D, b, Ts, T, m)

goal (1 subgoal):
 1. (\<And>mxs mxl\<^sub>0 ins xt. m = (mxs, mxl\<^sub>0, ins, xt) \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(cases m)
[PROOF STATE]
proof (state)
this:
m = (mxs, mxl\<^sub>0, ins, xt)

goal (1 subgoal):
 1. stk ! n \<noteq> Null \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
m = (mxs, mxl\<^sub>0, ins, xt)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
m = (mxs, mxl\<^sub>0, ins, xt)

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_Invoke_NoMethod
        exec_step_ind_Invoke_Static exec_step_ind_Invoke method False Invoke exec_instr StepI
[PROOF STATE]
proof (prove)
using this:
m = (mxs, mxl\<^sub>0, ins, xt)
\<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invoke ?M ?n)) ?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)
\<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invoke ?M ?n)) ?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)
\<lbrakk>?ps = take ?n ?stk; ?r = ?stk ! ?n; ?C = cname_of ?h (the_Addr ?r); (?D, ?b, ?Ts, ?T, ?mxs, ?mxl\<^sub>0, ?ins, ?xt) = method ?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)\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invoke ?M ?n)) ?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)
method P (cname_of h (the_Addr (stk ! n))) M1 = (D, b, Ts, T, m)
stk ! n \<noteq> Null
i = Invoke M1 n
exec_instr i P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_input P C M pc ics = StepI i

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by(auto split: if_split_asm staticb.splits)
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

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

goal (8 subgoals):
 1. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. i = Throw \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (8 subgoals):
 1. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. i = Throw \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case (Invokestatic C1 M1 n)
[PROOF STATE]
proof (state)
this:
i = Invokestatic C1 M1 n

goal (8 subgoals):
 1. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. i = Throw \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
obtain D b Ts T m where lets: "method P C1 M1 = (D,b,Ts,T,m)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<And>D b Ts T m. method P C1 M1 = (D, b, Ts, T, m) \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(cases "method P C1 M1")
[PROOF STATE]
proof (state)
this:
method P C1 M1 = (D, b, Ts, T, m)

goal (8 subgoals):
 1. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. i = Throw \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
method P C1 M1 = (D, b, Ts, T, m)
[PROOF STEP]
obtain mxs mxl\<^sub>0 ins xt where m: "m = (mxs,mxl\<^sub>0,ins,xt)"
[PROOF STATE]
proof (prove)
using this:
method P C1 M1 = (D, b, Ts, T, m)

goal (1 subgoal):
 1. (\<And>mxs mxl\<^sub>0 ins xt. m = (mxs, mxl\<^sub>0, ins, xt) \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(cases m)
[PROOF STATE]
proof (state)
this:
m = (mxs, mxl\<^sub>0, ins, xt)

goal (8 subgoals):
 1. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. i = Throw \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
have method: "\<And>b' Ts' t' m' D'. P \<turnstile> C1 sees M1,b':Ts' \<rightarrow> t' = m' in D'
     \<Longrightarrow> (D,b,Ts,T,m) = (D',b',Ts',t',m')"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>b' Ts' t' m' D'. P \<turnstile> C1 sees M1, b' :  Ts'\<rightarrow>t' = m' in D' \<Longrightarrow> (D, b, Ts, T, m) = (D', b', Ts', t', m')
[PROOF STEP]
using lets
[PROOF STATE]
proof (prove)
using this:
method P C1 M1 = (D, b, Ts, T, m)

goal (1 subgoal):
 1. \<And>b' Ts' t' m' D'. P \<turnstile> C1 sees M1, b' :  Ts'\<rightarrow>t' = m' in D' \<Longrightarrow> (D, b, Ts, T, m) = (D', b', Ts', t', m')
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
P \<turnstile> C1 sees M1, ?b' :  ?Ts'\<rightarrow>?t' = ?m' in ?D' \<Longrightarrow> (D, b, Ts, T, m) = (?D', ?b', ?Ts', ?t', ?m')

goal (8 subgoals):
 1. \<And>x111 x112 x113. i = Invokestatic x111 x112 x113 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 8. i = Throw \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) 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_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
proof(cases b)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. b = Static \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. b = NonStatic \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case NonStatic
[PROOF STATE]
proof (state)
this:
b = NonStatic

goal (2 subgoals):
 1. b = Static \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. b = NonStatic \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
b = NonStatic
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
b = NonStatic

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_Invokestatic_NoMethod exec_step_ind_Invokestatic_NonStatic
        m method lets Invokestatic exec_instr StepI
[PROOF STATE]
proof (prove)
using this:
b = NonStatic
\<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invokestatic ?C ?M ?n)) ?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)
\<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invokestatic ?C ?M ?n)) ?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)
m = (mxs, mxl\<^sub>0, ins, xt)
P \<turnstile> C1 sees M1, ?b' :  ?Ts'\<rightarrow>?t' = ?m' in ?D' \<Longrightarrow> (D, b, Ts, T, m) = (?D', ?b', ?Ts', ?t', ?m')
method P C1 M1 = (D, b, Ts, T, m)
i = Invokestatic C1 M1 n
exec_instr i P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_input P C M pc ics = StepI i

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by(auto split: if_split_asm)
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (1 subgoal):
 1. b = Static \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. b = Static \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case Static
[PROOF STATE]
proof (state)
this:
b = Static

goal (1 subgoal):
 1. b = Static \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) 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_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
proof(cases "ics = Called []")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. ics = Called [] \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. ics \<noteq> Called [] \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
ics = Called []

goal (2 subgoals):
 1. ics = Called [] \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. ics \<noteq> Called [] \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
ics = Called []
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
ics = Called []

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_Invokestatic_NoMethod
          exec_step_ind_Invokestatic_Called exec_step_ind_Invokestatic_Init
          Static m method lets Invokestatic exec_instr StepI ics
[PROOF STATE]
proof (prove)
using this:
ics = Called []
\<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invokestatic ?C ?M ?n)) ?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)
\<lbrakk>?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; ?f' = ([], rev ?ps @ replicate ?mxl\<^sub>0 undefined, ?D, ?M, 0, No_ics)\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invokestatic ?C ?M ?n)) ?P ?h ?stk ?loc ?C\<^sub>0 ?M\<^sub>0 ?pc (Called ?Cs) ?frs ?sh (None, ?h, ?f' # (?stk, ?loc, ?C\<^sub>0, ?M\<^sub>0, ?pc, No_ics) # ?frs, ?sh)
\<lbrakk>(?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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invokestatic ?C ?M ?n)) ?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)
b = Static
m = (mxs, mxl\<^sub>0, ins, xt)
P \<turnstile> C1 sees M1, ?b' :  ?Ts'\<rightarrow>?t' = ?m' in ?D' \<Longrightarrow> (D, b, Ts, T, m) = (?D', ?b', ?Ts', ?t', ?m')
method P C1 M1 = (D, b, Ts, T, m)
i = Invokestatic C1 M1 n
exec_instr i P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_input P C M pc ics = StepI i
ics = Called [] \<or> ics = No_ics

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by(auto split: if_split_asm)
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (1 subgoal):
 1. ics \<noteq> Called [] \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. ics \<noteq> Called [] \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
ics \<noteq> Called []

goal (1 subgoal):
 1. ics \<noteq> Called [] \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
ics \<noteq> Called []
[PROOF STEP]
have nCalled: "\<forall>Cs. ics \<noteq> Called Cs"
[PROOF STATE]
proof (prove)
using this:
ics \<noteq> Called []

goal (1 subgoal):
 1. \<forall>Cs. ics \<noteq> Called Cs
[PROOF STEP]
using ics
[PROOF STATE]
proof (prove)
using this:
ics \<noteq> Called []
ics = Called [] \<or> ics = No_ics

goal (1 subgoal):
 1. \<forall>Cs. ics \<noteq> Called Cs
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<forall>Cs. ics \<noteq> Called Cs

goal (1 subgoal):
 1. ics \<noteq> Called [] \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) 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_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
proof(cases "sh D")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. sh D = None \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>a. sh D = \<lfloor>a\<rfloor> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case None
[PROOF STATE]
proof (state)
this:
sh D = None

goal (2 subgoals):
 1. sh D = None \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>a. sh D = \<lfloor>a\<rfloor> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
sh D = None
[PROOF STEP]
have nDone: "\<forall>sfs. sh D \<noteq> Some(sfs, Done)"
[PROOF STATE]
proof (prove)
using this:
sh D = None

goal (1 subgoal):
 1. \<forall>sfs. sh D \<noteq> \<lfloor>(sfs, Done)\<rfloor>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<forall>sfs. sh D \<noteq> \<lfloor>(sfs, Done)\<rfloor>

goal (2 subgoals):
 1. sh D = None \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>a. sh D = \<lfloor>a\<rfloor> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) 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_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_Invokestatic_NoMethod
            exec_step_ind_Invokestatic_Init[where sh=sh, OF _ _ nDone nCalled]
            method m lets None False Static Invokestatic exec_instr StepI ics
[PROOF STATE]
proof (prove)
using this:
\<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invokestatic ?C ?M ?n)) ?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)
\<lbrakk>(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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invokestatic ?C ?M ?n)) ?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)
P \<turnstile> C1 sees M1, ?b' :  ?Ts'\<rightarrow>?t' = ?m' in ?D' \<Longrightarrow> (D, b, Ts, T, m) = (?D', ?b', ?Ts', ?t', ?m')
m = (mxs, mxl\<^sub>0, ins, xt)
method P C1 M1 = (D, b, Ts, T, m)
sh D = None
ics \<noteq> Called []
b = Static
i = Invokestatic C1 M1 n
exec_instr i P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_input P C M pc ics = StepI i
ics = Called [] \<or> ics = No_ics

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by(auto split: if_split_asm)
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (1 subgoal):
 1. \<And>a. sh D = \<lfloor>a\<rfloor> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>a. sh D = \<lfloor>a\<rfloor> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case (Some a)
[PROOF STATE]
proof (state)
this:
sh D = \<lfloor>a\<rfloor>

goal (1 subgoal):
 1. \<And>a. sh D = \<lfloor>a\<rfloor> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
sh D = \<lfloor>a\<rfloor>
[PROOF STEP]
obtain sfs i where sfsi: "a=(sfs,i)"
[PROOF STATE]
proof (prove)
using this:
sh D = \<lfloor>a\<rfloor>

goal (1 subgoal):
 1. (\<And>sfs i. a = (sfs, i) \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(cases a)
[PROOF STATE]
proof (state)
this:
a = (sfs, i)

goal (1 subgoal):
 1. \<And>a. sh D = \<lfloor>a\<rfloor> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) 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_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_Invokestatic_NoMethod
            exec_step_ind_Invokestatic_Init sfsi False Static Some method lets Invokestatic exec_instr
[PROOF STATE]
proof (prove)
using this:
\<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invokestatic ?C ?M ?n)) ?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)
\<lbrakk>(?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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invokestatic ?C ?M ?n)) ?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 = (sfs, i)
ics \<noteq> Called []
b = Static
sh D = \<lfloor>a\<rfloor>
P \<turnstile> C1 sees M1, ?b' :  ?Ts'\<rightarrow>?t' = ?m' in ?D' \<Longrightarrow> (D, b, Ts, T, m) = (?D', ?b', ?Ts', ?t', ?m')
method P C1 M1 = (D, b, Ts, T, m)
i__ = Invokestatic C1 M1 n
exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh')

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
proof(cases "i = Done")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<lbrakk>\<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invokestatic C M n)) 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); \<And>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. \<lbrakk>(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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invokestatic C M n)) 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 = (sfs, i); ics \<noteq> Called []; b = Static; sh D = \<lfloor>a\<rfloor>; \<And>b' Ts' t' m' D'. P \<turnstile> C1 sees M1, b' :  Ts'\<rightarrow>t' = m' in D' \<Longrightarrow> (D, b, Ts, T, m) = (D', b', Ts', t', m'); method P C1 M1 = (D, b, Ts, T, m); i__ = Invokestatic C1 M1 n; exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh'); i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<lbrakk>\<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invokestatic C M n)) 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); \<And>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. \<lbrakk>(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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invokestatic C M n)) 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 = (sfs, i); ics \<noteq> Called []; b = Static; sh D = \<lfloor>a\<rfloor>; \<And>b' Ts' t' m' D'. P \<turnstile> C1 sees M1, b' :  Ts'\<rightarrow>t' = m' in D' \<Longrightarrow> (D, b, Ts, T, m) = (D', b', Ts', t', m'); method P C1 M1 = (D, b, Ts, T, m); i__ = Invokestatic C1 M1 n; exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh'); i \<noteq> Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
i = Done

goal (2 subgoals):
 1. \<lbrakk>\<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invokestatic C M n)) 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); \<And>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. \<lbrakk>(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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invokestatic C M n)) 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 = (sfs, i); ics \<noteq> Called []; b = Static; sh D = \<lfloor>a\<rfloor>; \<And>b' Ts' t' m' D'. P \<turnstile> C1 sees M1, b' :  Ts'\<rightarrow>t' = m' in D' \<Longrightarrow> (D, b, Ts, T, m) = (D', b', Ts', t', m'); method P C1 M1 = (D, b, Ts, T, m); i__ = Invokestatic C1 M1 n; exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh'); i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<lbrakk>\<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invokestatic C M n)) 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); \<And>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. \<lbrakk>(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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invokestatic C M n)) 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 = (sfs, i); ics \<noteq> Called []; b = Static; sh D = \<lfloor>a\<rfloor>; \<And>b' Ts' t' m' D'. P \<turnstile> C1 sees M1, b' :  Ts'\<rightarrow>t' = m' in D' \<Longrightarrow> (D, b, Ts, T, m) = (D', b', Ts', t', m'); method P C1 M1 = (D, b, Ts, T, m); i__ = Invokestatic C1 M1 n; exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh'); i \<noteq> Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
i = Done
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
i = Done

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_Invokestatic_NoMethod
              exec_step_ind_Invokestatic_Done[OF _ _ _ nCalled] exec_step_ind_Invokestatic_Init
              sfsi False Static Some m method lets Invokestatic exec_instr StepI ics
[PROOF STATE]
proof (prove)
using this:
i = Done
\<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invokestatic ?C ?M ?n)) ?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)
\<lbrakk>?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; ?sh ?D = \<lfloor>(?sfs, Done)\<rfloor>; ?f' = ([], rev ?ps @ replicate ?mxl\<^sub>0 undefined, ?D, ?M, 0, No_ics)\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invokestatic ?C ?M ?n)) ?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)
\<lbrakk>(?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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invokestatic ?C ?M ?n)) ?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 = (sfs, i)
ics \<noteq> Called []
b = Static
sh D = \<lfloor>a\<rfloor>
m = (mxs, mxl\<^sub>0, ins, xt)
P \<turnstile> C1 sees M1, ?b' :  ?Ts'\<rightarrow>?t' = ?m' in ?D' \<Longrightarrow> (D, b, Ts, T, m) = (?D', ?b', ?Ts', ?t', ?m')
method P C1 M1 = (D, b, Ts, T, m)
i__ = Invokestatic C1 M1 n
exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_input P C M pc ics = StepI i__
ics = Called [] \<or> ics = No_ics

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by(auto split: if_split_asm)
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (1 subgoal):
 1. \<lbrakk>\<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invokestatic C M n)) 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); \<And>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. \<lbrakk>(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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invokestatic C M n)) 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 = (sfs, i); ics \<noteq> Called []; b = Static; sh D = \<lfloor>a\<rfloor>; \<And>b' Ts' t' m' D'. P \<turnstile> C1 sees M1, b' :  Ts'\<rightarrow>t' = m' in D' \<Longrightarrow> (D, b, Ts, T, m) = (D', b', Ts', t', m'); method P C1 M1 = (D, b, Ts, T, m); i__ = Invokestatic C1 M1 n; exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh'); i \<noteq> Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>\<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invokestatic C M n)) 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); \<And>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. \<lbrakk>(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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invokestatic C M n)) 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 = (sfs, i); ics \<noteq> Called []; b = Static; sh D = \<lfloor>a\<rfloor>; \<And>b' Ts' t' m' D'. P \<turnstile> C1 sees M1, b' :  Ts'\<rightarrow>t' = m' in D' \<Longrightarrow> (D, b, Ts, T, m) = (D', b', Ts', t', m'); method P C1 M1 = (D, b, Ts, T, m); i__ = Invokestatic C1 M1 n; exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh'); i \<noteq> Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case nD: False
[PROOF STATE]
proof (state)
this:
i \<noteq> Done

goal (1 subgoal):
 1. \<lbrakk>\<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invokestatic C M n)) 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); \<And>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. \<lbrakk>(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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invokestatic C M n)) 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 = (sfs, i); ics \<noteq> Called []; b = Static; sh D = \<lfloor>a\<rfloor>; \<And>b' Ts' t' m' D'. P \<turnstile> C1 sees M1, b' :  Ts'\<rightarrow>t' = m' in D' \<Longrightarrow> (D, b, Ts, T, m) = (D', b', Ts', t', m'); method P C1 M1 = (D, b, Ts, T, m); i__ = Invokestatic C1 M1 n; exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh'); i \<noteq> Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
i \<noteq> Done
[PROOF STEP]
have nDone: "\<forall>sfs. sh D \<noteq> Some(sfs, Done)"
[PROOF STATE]
proof (prove)
using this:
i \<noteq> Done

goal (1 subgoal):
 1. \<forall>sfs. sh D \<noteq> \<lfloor>(sfs, Done)\<rfloor>
[PROOF STEP]
using sfsi Some
[PROOF STATE]
proof (prove)
using this:
i \<noteq> Done
a = (sfs, i)
sh D = \<lfloor>a\<rfloor>

goal (1 subgoal):
 1. \<forall>sfs. sh D \<noteq> \<lfloor>(sfs, Done)\<rfloor>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<forall>sfs. sh D \<noteq> \<lfloor>(sfs, Done)\<rfloor>

goal (1 subgoal):
 1. \<lbrakk>\<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invokestatic C M n)) 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); \<And>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. \<lbrakk>(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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invokestatic C M n)) 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 = (sfs, i); ics \<noteq> Called []; b = Static; sh D = \<lfloor>a\<rfloor>; \<And>b' Ts' t' m' D'. P \<turnstile> C1 sees M1, b' :  Ts'\<rightarrow>t' = m' in D' \<Longrightarrow> (D, b, Ts, T, m) = (D', b', Ts', t', m'); method P C1 M1 = (D, b, Ts, T, m); i__ = Invokestatic C1 M1 n; exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh'); i \<noteq> Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) 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_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using nD
[PROOF STATE]
proof (prove)
using this:
i \<noteq> Done

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
proof(cases i)
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. \<lbrakk>i \<noteq> Done; i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<lbrakk>i \<noteq> Done; i = Processing\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<lbrakk>i \<noteq> Done; i = Prepared\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<lbrakk>i \<noteq> Done; i = Error\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case Processing
[PROOF STATE]
proof (state)
this:
i = Processing

goal (4 subgoals):
 1. \<lbrakk>i \<noteq> Done; i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<lbrakk>i \<noteq> Done; i = Processing\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<lbrakk>i \<noteq> Done; i = Prepared\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<lbrakk>i \<noteq> Done; i = Error\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
i = Processing
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
i = Processing

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_Invokestatic_NoMethod
                exec_step_ind_Invokestatic_Init[where sh=sh, OF _ _ nDone nCalled]
                sfsi False Static Some m method lets Invokestatic exec_instr StepI ics
[PROOF STATE]
proof (prove)
using this:
i = Processing
\<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invokestatic ?C ?M ?n)) ?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)
\<lbrakk>(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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invokestatic ?C ?M ?n)) ?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 = (sfs, i)
ics \<noteq> Called []
b = Static
sh D = \<lfloor>a\<rfloor>
m = (mxs, mxl\<^sub>0, ins, xt)
P \<turnstile> C1 sees M1, ?b' :  ?Ts'\<rightarrow>?t' = ?m' in ?D' \<Longrightarrow> (D, b, Ts, T, m) = (?D', ?b', ?Ts', ?t', ?m')
method P C1 M1 = (D, b, Ts, T, m)
i__ = Invokestatic C1 M1 n
exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_input P C M pc ics = StepI i__
ics = Called [] \<or> ics = No_ics

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by(auto split: if_split_asm)
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (3 subgoals):
 1. \<lbrakk>i \<noteq> Done; i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<lbrakk>i \<noteq> Done; i = Prepared\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<lbrakk>i \<noteq> Done; i = Error\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<lbrakk>i \<noteq> Done; i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<lbrakk>i \<noteq> Done; i = Prepared\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<lbrakk>i \<noteq> Done; i = Error\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case Prepared
[PROOF STATE]
proof (state)
this:
i = Prepared

goal (3 subgoals):
 1. \<lbrakk>i \<noteq> Done; i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<lbrakk>i \<noteq> Done; i = Prepared\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<lbrakk>i \<noteq> Done; i = Error\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
i = Prepared
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
i = Prepared

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_Invokestatic_NoMethod
                exec_step_ind_Invokestatic_Init[where sh=sh, OF _ _ nDone nCalled]
                sfsi False Static Some m method lets Invokestatic exec_instr StepI ics
[PROOF STATE]
proof (prove)
using this:
i = Prepared
\<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invokestatic ?C ?M ?n)) ?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)
\<lbrakk>(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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invokestatic ?C ?M ?n)) ?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 = (sfs, i)
ics \<noteq> Called []
b = Static
sh D = \<lfloor>a\<rfloor>
m = (mxs, mxl\<^sub>0, ins, xt)
P \<turnstile> C1 sees M1, ?b' :  ?Ts'\<rightarrow>?t' = ?m' in ?D' \<Longrightarrow> (D, b, Ts, T, m) = (?D', ?b', ?Ts', ?t', ?m')
method P C1 M1 = (D, b, Ts, T, m)
i__ = Invokestatic C1 M1 n
exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_input P C M pc ics = StepI i__
ics = Called [] \<or> ics = No_ics

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by(auto split: if_split_asm)
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (2 subgoals):
 1. \<lbrakk>i \<noteq> Done; i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<lbrakk>i \<noteq> Done; i = Error\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<lbrakk>i \<noteq> Done; i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<lbrakk>i \<noteq> Done; i = Error\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case Error
[PROOF STATE]
proof (state)
this:
i = Error

goal (2 subgoals):
 1. \<lbrakk>i \<noteq> Done; i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<lbrakk>i \<noteq> Done; i = Error\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
i = Error
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
i = Error

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_Invokestatic_NoMethod
                exec_step_ind_Invokestatic_Init[where sh=sh, OF _ _ nDone nCalled]
                sfsi False Static Some m method lets Invokestatic exec_instr StepI ics
[PROOF STATE]
proof (prove)
using this:
i = Error
\<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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invokestatic ?C ?M ?n)) ?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)
\<lbrakk>(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\<rbrakk> \<Longrightarrow> exec_step_ind (StepI (Invokestatic ?C ?M ?n)) ?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 = (sfs, i)
ics \<noteq> Called []
b = Static
sh D = \<lfloor>a\<rfloor>
m = (mxs, mxl\<^sub>0, ins, xt)
P \<turnstile> C1 sees M1, ?b' :  ?Ts'\<rightarrow>?t' = ?m' in ?D' \<Longrightarrow> (D, b, Ts, T, m) = (?D', ?b', ?Ts', ?t', ?m')
method P C1 M1 = (D, b, Ts, T, m)
i__ = Invokestatic C1 M1 n
exec_instr i__ P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_input P C M pc ics = StepI i__
ics = Called [] \<or> ics = No_ics

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by(auto split: if_split_asm)
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (1 subgoal):
 1. \<lbrakk>i \<noteq> Done; i = Done\<rbrakk> \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
qed(simp)
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

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

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

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

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

goal (7 subgoals):
 1. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. i = Throw \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (7 subgoals):
 1. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. i = Throw \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case Return
[PROOF STATE]
proof (state)
this:
i = Return

goal (7 subgoals):
 1. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. i = Throw \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
obtain D b Ts T m where method: "method P C M = (D,b,Ts,T,m)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<And>D b Ts T m. method P C M = (D, b, Ts, T, m) \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(cases "method P C M")
[PROOF STATE]
proof (state)
this:
method P C M = (D, b, Ts, T, m)

goal (7 subgoals):
 1. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. i = Throw \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
method P C M = (D, b, Ts, T, m)
[PROOF STEP]
obtain mxs mxl\<^sub>0 ins xt where "m = (mxs,mxl\<^sub>0,ins,xt)"
[PROOF STATE]
proof (prove)
using this:
method P C M = (D, b, Ts, T, m)

goal (1 subgoal):
 1. (\<And>mxs mxl\<^sub>0 ins xt. m = (mxs, mxl\<^sub>0, ins, xt) \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(cases m)
[PROOF STATE]
proof (state)
this:
m = (mxs, mxl\<^sub>0, ins, xt)

goal (7 subgoals):
 1. i = Return \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 7. i = Throw \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
m = (mxs, mxl\<^sub>0, ins, xt)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
m = (mxs, mxl\<^sub>0, ins, xt)

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_step_ind_Return_Last_Init exec_step_ind_Return_Last
      exec_step_ind_Return_Init exec_step_ind_Return_NonStatic exec_step_ind_Return_Static
       method Return exec_instr StepI ics
[PROOF STATE]
proof (prove)
using this:
m = (mxs, mxl\<^sub>0, ins, xt)
exec_step_ind (StepI Return) ?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)))
?M\<^sub>0 \<noteq> clinit \<Longrightarrow> exec_step_ind (StepI Return) ?P ?h ?stk\<^sub>0 ?loc\<^sub>0 ?C\<^sub>0 ?M\<^sub>0 ?pc ?ics [] ?sh (None, ?h, [], ?sh)
(?D, ?b, ?Ts, ?T, ?m) = method ?P ?C\<^sub>0 clinit \<Longrightarrow> exec_step_ind (StepI Return) ?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)))
\<lbrakk>(?D, NonStatic, ?Ts, ?T, ?m) = method ?P ?C\<^sub>0 ?M\<^sub>0; ?M\<^sub>0 \<noteq> clinit\<rbrakk> \<Longrightarrow> exec_step_ind (StepI Return) ?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)
\<lbrakk>(?D, Static, ?Ts, ?T, ?m) = method ?P ?C\<^sub>0 ?M\<^sub>0; ?M\<^sub>0 \<noteq> clinit\<rbrakk> \<Longrightarrow> exec_step_ind (StepI Return) ?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)
method P C M = (D, b, Ts, T, m)
i = Return
exec_instr i P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_input P C M pc ics = StepI i
ics = Called [] \<or> ics = No_ics

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by(auto split: if_split_asm staticb.splits bool.splits list.splits)
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (6 subgoals):
 1. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. i = Throw \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (6 subgoals):
 1. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. i = Throw \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case Pop
[PROOF STATE]
proof (state)
this:
i = Pop

goal (6 subgoals):
 1. i = Pop \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 6. i = Throw \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
i = Pop
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
i = Pop

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_instr StepI exec_step_ind_Pop
[PROOF STATE]
proof (prove)
using this:
i = Pop
exec_instr i P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_input P C M pc ics = StepI i
exec_step_ind (StepI Pop) ?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 (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (5 subgoals):
 1. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. i = Throw \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (5 subgoals):
 1. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. i = Throw \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case IAdd
[PROOF STATE]
proof (state)
this:
i = IAdd

goal (5 subgoals):
 1. i = IAdd \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 5. i = Throw \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
i = IAdd
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
i = IAdd

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_instr StepI exec_step_ind_IAdd
[PROOF STATE]
proof (prove)
using this:
i = IAdd
exec_instr i P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_input P C M pc ics = StepI i
exec_step_ind (StepI IAdd) ?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 (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (4 subgoals):
 1. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. i = Throw \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. i = Throw \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case Goto
[PROOF STATE]
proof (state)
this:
i = Goto x15_

goal (4 subgoals):
 1. \<And>x15. i = Goto x15 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 4. i = Throw \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
i = Goto x15_
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
i = Goto x15_

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_instr StepI exec_step_ind_Goto
[PROOF STATE]
proof (prove)
using this:
i = Goto x15_
exec_instr i P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_input P C M pc ics = StepI i
exec_step_ind (StepI (Goto ?i)) ?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 (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (3 subgoals):
 1. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. i = Throw \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. i = Throw \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case CmpEq
[PROOF STATE]
proof (state)
this:
i = CmpEq

goal (3 subgoals):
 1. i = CmpEq \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 3. i = Throw \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
i = CmpEq
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
i = CmpEq

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_instr StepI exec_step_ind_CmpEq
[PROOF STATE]
proof (prove)
using this:
i = CmpEq
exec_instr i P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_input P C M pc ics = StepI i
exec_step_ind (StepI CmpEq) ?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 (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (2 subgoals):
 1. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. i = Throw \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. i = Throw \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case (IfFalse x17)
[PROOF STATE]
proof (state)
this:
i = IfFalse x17

goal (2 subgoals):
 1. \<And>x17. i = IfFalse x17 \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
 2. i = Throw \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
i = IfFalse x17
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
i = IfFalse x17

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_instr StepI exec_step_ind_IfFalse_nFalse exec_step_ind_IfFalse_False
       exec_instr StepI
[PROOF STATE]
proof (prove)
using this:
i = IfFalse x17
exec_instr i P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_input P C M pc ics = StepI i
hd ?stk \<noteq> Bool False \<Longrightarrow> exec_step_ind (StepI (IfFalse ?i)) ?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)
hd ?stk = Bool False \<Longrightarrow> exec_step_ind (StepI (IfFalse ?i)) ?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)
exec_instr i P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_input P C M pc ics = StepI i

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by(auto split: val.splits staticb.splits)
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

goal (1 subgoal):
 1. i = Throw \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. i = Throw \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
case Throw
[PROOF STATE]
proof (state)
this:
i = Throw

goal (1 subgoal):
 1. i = Throw \<Longrightarrow> exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
i = Throw
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
i = Throw

goal (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
using exec_instr StepI exec_step_ind_Throw exec_step_ind_Throw_Null
[PROOF STATE]
proof (prove)
using this:
i = Throw
exec_instr i P h stk loc C M pc ics frs sh = (xp', h', frs', sh')
exec_step_input P C M pc ics = StepI i
hd ?stk \<noteq> Null \<Longrightarrow> exec_step_ind (StepI Throw) ?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)
hd ?stk = Null \<Longrightarrow> exec_step_ind (StepI Throw) ?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 (1 subgoal):
 1. exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')
[PROOF STEP]
by(auto split: val.splits)
[PROOF STATE]
proof (state)
this:
exec_step_ind (exec_step_input P C M pc ics) P h stk loc C M pc ics frs sh (xp', h', frs', sh')

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

goal:
No subgoals!
[PROOF STEP]
qed